diff --git a/src/components/ScoreManager.tsx b/src/components/ScoreManager.tsx index 69f2fab..36fdffb 100644 --- a/src/components/ScoreManager.tsx +++ b/src/components/ScoreManager.tsx @@ -88,6 +88,7 @@ export const ScoreManager: React.FC<{ canEdit: boolean }> = ({ canEdit }) => { const [submitLoading, setSubmitLoading] = useState(false) const [form] = Form.useForm() const [messageApi, contextHolder] = message.useMessage() + const selectedStudentNames = Form.useWatch("student_name", form) as string[] | undefined const emitDataUpdated = (category: "events" | "students" | "reasons" | "all") => { window.dispatchEvent(new CustomEvent("ss:data-updated", { detail: { category } })) @@ -202,6 +203,17 @@ export const ScoreManager: React.FC<{ canEdit: boolean }> = ({ canEdit }) => { } } + const handleSelectAllStudents = () => { + form.setFieldValue( + "student_name", + students.map((s) => s.name) + ) + } + + const handleClearSelectedStudents = () => { + form.setFieldValue("student_name", []) + } + const handleUndo = async (uuid: string) => { if (!(window as any).api) return if (!canEdit) { @@ -265,13 +277,37 @@ export const ScoreManager: React.FC<{ canEdit: boolean }> = ({ canEdit }) => {
- matchStudentName(getOptionLabel(option), input)} + options={students.map((s) => ({ label: s.name, value: s.name }))} + /> + + + + + {t("score.selectedCount", { + selected: selectedStudentNames?.length ?? 0, + total: students.length, + })} + + + diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index e0dd003..2840d99 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -468,6 +468,9 @@ "undoFailed": "Undo failed", "recentRecords": "Recent Records", "pleaseSelectStudent": "Please select or search student", + "selectAllStudents": "Whole Class", + "clearSelectedStudents": "Clear", + "selectedCount": "Selected {{selected}} / {{total}}", "points": "Points", "addPoints": "Add", "deductPoints": "Deduct", diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index 622999e..75f581f 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -468,6 +468,9 @@ "undoFailed": "撤销失败", "recentRecords": "最近记录", "pleaseSelectStudent": "请选择或搜索学生", + "selectAllStudents": "全班", + "clearSelectedStudents": "清空", + "selectedCount": "已选 {{selected}} / {{total}} 人", "points": "分数", "addPoints": "加分", "deductPoints": "扣分",