diff --git a/src/main/services/AutoScoreService.ts b/src/main/services/AutoScoreService.ts index 7d19ced..6570b35 100644 --- a/src/main/services/AutoScoreService.ts +++ b/src/main/services/AutoScoreService.ts @@ -432,7 +432,9 @@ export class AutoScoreService extends Service { break } case 'set_student_status': { - this.logger.info(`Set student status action: ${action.value} (not implemented - student type has no status field)`) + this.logger.info( + `Set student status action: ${action.value} (not implemented - student type has no status field)` + ) break } default: diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index 3d502a8..4b47fee 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -7,12 +7,12 @@ import { Wizard } from './components/Wizard' import { ThemeProvider } from './contexts/ThemeContext' import { ThemeEditorProvider } from './contexts/ThemeEditorContext' import { ThemeEditor } from './components/ThemeEditor' -import { useTheme } from './contexts/ThemeContext'; +import { useTheme } from './contexts/ThemeContext' function MainContent(): React.JSX.Element { const navigate = useNavigate() const location = useLocation() - const { currentTheme } = useTheme(); + const { currentTheme } = useTheme() useEffect(() => { if (!(window as any).api) return diff --git a/src/renderer/src/components/AutoScoreManager.tsx b/src/renderer/src/components/AutoScoreManager.tsx index 2d6e14d..832b412 100644 --- a/src/renderer/src/components/AutoScoreManager.tsx +++ b/src/renderer/src/components/AutoScoreManager.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import { useState, useEffect } from 'react' import { AddIcon, MoveIcon } from 'tdesign-icons-react' import { allTriggers, allActions, triggerRegistry, actionRegistry } from './com.automatically' import type { TriggerItem, ActionItem } from './com.automatically/types' @@ -278,9 +278,7 @@ export const AutoScoreManager: React.FC = () => { } const handleTriggerChange = (id: number, eventName: string) => { - setTriggerList((prev) => - prev.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t)) - ) + setTriggerList((prev) => prev.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t))) } const handleTriggerValueChange = (id: number, value: string) => { @@ -310,9 +308,7 @@ export const AutoScoreManager: React.FC = () => { } const handleActionChange = (id: number, eventName: string) => { - setActionList((prev) => - prev.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a)) - ) + setActionList((prev) => prev.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a))) } const handleActionValueChange = (id: number, value: string) => { @@ -565,7 +561,10 @@ export const AutoScoreManager: React.FC = () => { if (editingRuleId !== null) { const values = form.getFieldsValue(true) as unknown as AutoScoreRuleFormValues const studentNames = Array.isArray(values.studentNames) ? values.studentNames : [] - const triggersPayload = triggerList.map((t) => ({ event: t.eventName, value: t.value })) + const triggersPayload = triggerList.map((t) => ({ + event: t.eventName, + value: t.value + })) const actionsPayload = actionList.map((a) => ({ event: a.eventName, value: a.value, diff --git a/src/renderer/src/components/Code.tsx b/src/renderer/src/components/Code.tsx index 2683f9f..b004348 100644 --- a/src/renderer/src/components/Code.tsx +++ b/src/renderer/src/components/Code.tsx @@ -1,40 +1,40 @@ -import { useEffect } from "react"; +import { useEffect } from 'react' -import Prism from "prismjs"; -import { useTheme } from '../contexts/ThemeContext'; +import Prism from 'prismjs' +import { useTheme } from '../contexts/ThemeContext' // 预先导入所有主题 -import "prismjs/themes/prism-coy.min.css"; -import "prismjs/themes/prism-okaidia.min.css"; +import 'prismjs/themes/prism-coy.min.css' +import 'prismjs/themes/prism-okaidia.min.css' const Code = ({ code, language }) => { - const { currentTheme } = useTheme(); + const { currentTheme } = useTheme() - useEffect(() => { - // 重新高亮代码 - Prism.highlightAll(); - }, [currentTheme, code, language]); + useEffect(() => { + // 重新高亮代码 + Prism.highlightAll() + }, [currentTheme, code, language]) - // 根据主题设置不同的类名 - const isDark = currentTheme?.mode === 'dark'; + // 根据主题设置不同的类名 + const isDark = currentTheme?.mode === 'dark' - return ( -
-
-                {code}
-            
-
- ); -}; + return ( +
+
+        {code}
+      
+
+ ) +} -export default Code; \ No newline at end of file +export default Code diff --git a/src/renderer/src/components/com.automatically/ActionItem.tsx b/src/renderer/src/components/com.automatically/ActionItem.tsx index 83d3d35..2ee06d4 100644 --- a/src/renderer/src/components/com.automatically/ActionItem.tsx +++ b/src/renderer/src/components/com.automatically/ActionItem.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { Button, Select } from 'tdesign-react' import { Delete1Icon } from 'tdesign-icons-react' import { actionRegistry, allActions } from './registry' @@ -12,12 +11,12 @@ interface ActionItemProps { onReasonChange: (id: number, reason: string) => void } -const ActionItem: React.FC = ({ - item, - onDelete, - onChange, - onValueChange, - onReasonChange +const ActionItem: React.FC = ({ + item, + onDelete, + onChange, + onValueChange, + onReasonChange }) => { const definition = actionRegistry.get(item.eventName) const Component = definition?.component diff --git a/src/renderer/src/components/com.automatically/TriggerItem.tsx b/src/renderer/src/components/com.automatically/TriggerItem.tsx index cd9729f..e40c7f9 100644 --- a/src/renderer/src/components/com.automatically/TriggerItem.tsx +++ b/src/renderer/src/components/com.automatically/TriggerItem.tsx @@ -31,10 +31,7 @@ const TriggerItem: React.FC = ({ item, onDelete, onChange, onV onChange={(value) => onChange(item.id, value as string)} /> {Component && ( - onValueChange(item.id, value)} - /> + onValueChange(item.id, value)} /> )} ) diff --git a/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx b/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx index 62f1631..f622731 100644 --- a/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx +++ b/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { Input } from 'tdesign-react' import type { ActionComponentProps } from '../types' @@ -7,7 +6,12 @@ export const label = '添加分数' export const description = '为学生添加分数' export const hasReason = true -const AddScoreAction: React.FC = ({ value, reason, onChange, onReasonChange }) => { +const AddScoreAction: React.FC = ({ + value, + reason, + onChange, + onReasonChange +}) => { return ( <> actionRegistry.register(def)) -export { - AddScoreAction, - AddTagAction, - SendNotificationAction, - SetStudentStatusAction -} +export { AddScoreAction, AddTagAction, SendNotificationAction, SetStudentStatusAction } diff --git a/src/renderer/src/components/com.automatically/index.ts b/src/renderer/src/components/com.automatically/index.ts index 35af83f..6174c33 100644 --- a/src/renderer/src/components/com.automatically/index.ts +++ b/src/renderer/src/components/com.automatically/index.ts @@ -2,16 +2,21 @@ import './triggers' import './actions' export { triggerRegistry, actionRegistry, allTriggers, allActions } from './registry' -export type { - TriggerComponentProps, - ActionComponentProps, - TriggerDefinition, +export type { + TriggerComponentProps, + ActionComponentProps, + TriggerDefinition, ActionDefinition, TriggerItem, - ActionItem + ActionItem } from './types' export { default as TriggerItemComponent } from './TriggerItem' export { default as ActionItemComponent } from './ActionItem' export { IntervalTimeTrigger, StudentTagTrigger, RandomTimeTrigger } from './triggers' -export { AddScoreAction, AddTagAction, SendNotificationAction, SetStudentStatusAction } from './actions' +export { + AddScoreAction, + AddTagAction, + SendNotificationAction, + SetStudentStatusAction +} from './actions' diff --git a/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx index b466c05..3ec2dfc 100644 --- a/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx +++ b/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { InputNumber } from 'tdesign-react' import type { TriggerComponentProps } from '../types' @@ -22,7 +21,7 @@ const IntervalTimeTrigger: React.FC = ({ value, onChange const numValue = value ? parseInt(value, 10) : undefined const handleChange = (v: any) => { - const numV = typeof v === 'number' ? v : (v ? Number(v) : undefined) + const numV = typeof v === 'number' ? v : v ? Number(v) : undefined onChange(numV !== undefined && numV !== null && !isNaN(numV) ? String(numV) : '') } diff --git a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx index afb6f13..e27ab32 100644 --- a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx +++ b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx @@ -1,4 +1,3 @@ -import React from 'react' import { InputNumber, Row, Col } from 'tdesign-react' import type { TriggerComponentProps } from '../types' @@ -33,7 +32,7 @@ const RandomTimeTrigger: React.FC = ({ value, onChange }) } catch {} const handleChange = (key: keyof RandomTimeConfig, v: any) => { - const numV = typeof v === 'number' ? v : (v ? Number(v) : undefined) + const numV = typeof v === 'number' ? v : v ? Number(v) : undefined const newConfig = { ...config, [key]: numV ?? (key === 'minHour' ? 0 : 23) } onChange(JSON.stringify(newConfig)) } diff --git a/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx index 741e0ab..1c66ef6 100644 --- a/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx +++ b/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import { useState, useEffect } from 'react' import { Select } from 'tdesign-react' import type { TriggerComponentProps } from '../types' diff --git a/src/renderer/src/components/com.automatically/triggers/index.ts b/src/renderer/src/components/com.automatically/triggers/index.ts index 6251240..0d8128c 100644 --- a/src/renderer/src/components/com.automatically/triggers/index.ts +++ b/src/renderer/src/components/com.automatically/triggers/index.ts @@ -1,23 +1,23 @@ import { triggerRegistry } from '../registry' import type { TriggerDefinition } from '../types' -import IntervalTimeTrigger, { - eventName as intervalEventName, - label as intervalLabel, +import IntervalTimeTrigger, { + eventName as intervalEventName, + label as intervalLabel, description as intervalDescription, triggerLogic as intervalTriggerLogic } from './IntervalTimeTrigger' -import StudentTagTrigger, { - eventName as studentTagEventName, - label as studentTagLabel, +import StudentTagTrigger, { + eventName as studentTagEventName, + label as studentTagLabel, description as studentTagDescription, triggerLogic as studentTagTriggerLogic } from './StudentTagTrigger' -import RandomTimeTrigger, { - eventName as randomTimeEventName, - label as randomTimeLabel, +import RandomTimeTrigger, { + eventName as randomTimeEventName, + label as randomTimeLabel, description as randomTimeDescription, triggerLogic as randomTimeTriggerLogic } from './RandomTimeTrigger' @@ -48,8 +48,4 @@ const triggerDefinitions: TriggerDefinition[] = [ triggerDefinitions.forEach((def) => triggerRegistry.register(def)) -export { - IntervalTimeTrigger, - StudentTagTrigger, - RandomTimeTrigger -} +export { IntervalTimeTrigger, StudentTagTrigger, RandomTimeTrigger } diff --git a/src/renderer/src/components/com.automatically/types.ts b/src/renderer/src/components/com.automatically/types.ts index 47ccbb8..3ddd79d 100644 --- a/src/renderer/src/components/com.automatically/types.ts +++ b/src/renderer/src/components/com.automatically/types.ts @@ -17,7 +17,11 @@ export interface TriggerLogic { label: string description: string validate: (value: string) => { valid: boolean; message?: string } - calculateNextTime?: (value: string, lastExecuted: Date | undefined, now: Date) => { delayMs: number; nextExecuteTime: Date } + calculateNextTime?: ( + value: string, + lastExecuted: Date | undefined, + now: Date + ) => { delayMs: number; nextExecuteTime: Date } check?: (context: any, value: string) => { shouldExecute: boolean; message?: string } } diff --git a/src/renderer/src/services/AutoScoreService.ts b/src/renderer/src/services/AutoScoreService.ts index 3b92c8a..2ccefd5 100644 --- a/src/renderer/src/services/AutoScoreService.ts +++ b/src/renderer/src/services/AutoScoreService.ts @@ -79,9 +79,7 @@ export class AutoScoreService extends Service { } updateTriggerEvent(triggerList: TriggerItem[], id: number, eventName: string): TriggerItem[] { - return triggerList.map((t) => - t.id === id ? { ...t, eventName, value: '' } : t - ) + return triggerList.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t)) } updateTriggerValue(triggerList: TriggerItem[], id: number, value: string): TriggerItem[] { @@ -104,9 +102,7 @@ export class AutoScoreService extends Service { } updateActionEvent(actionList: ActionItem[], id: number, eventName: string): ActionItem[] { - return actionList.map((a) => - a.id === id ? { ...a, eventName, value: '' } : a - ) + return actionList.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a)) } updateActionValue(actionList: ActionItem[], id: number, value: string): ActionItem[] { diff --git a/src/shared/triggers/RandomTimeTrigger.ts b/src/shared/triggers/RandomTimeTrigger.ts index ddab590..05e9db4 100644 --- a/src/shared/triggers/RandomTimeTrigger.ts +++ b/src/shared/triggers/RandomTimeTrigger.ts @@ -42,7 +42,7 @@ export const randomTimeTrigger: TriggerLogic = { const randomHour = Math.floor(Math.random() * (maxHour - minHour + 1)) + minHour const randomMinute = Math.floor(Math.random() * 60) - let targetDate = new Date(now) + const targetDate = new Date(now) targetDate.setHours(randomHour, randomMinute, 0, 0) if (targetDate.getTime() <= now.getTime()) {