Added filter to hide removed students.

This commit is contained in:
Andrew Lalis 2025-02-20 09:47:13 -05:00
parent 0a0bbe22c9
commit 1d4d98665d
1 changed files with 15 additions and 4 deletions

View File

@ -30,6 +30,7 @@ enum TableView {
const students: Ref<EntriesResponseStudent[]> = ref([]) const students: Ref<EntriesResponseStudent[]> = ref([])
const sortingChoice: Ref<string> = ref('name') const sortingChoice: Ref<string> = ref('name')
const selectedView: Ref<TableView> = ref(TableView.FULL) const selectedView: Ref<TableView> = ref(TableView.FULL)
const hideRemovedStudents: Ref<boolean> = ref(false)
const lastSaveState: Ref<string | null> = ref(null) const lastSaveState: Ref<string | null> = ref(null)
const lastSaveStateTimestamp: Ref<number> = ref(0) const lastSaveStateTimestamp: Ref<number> = ref(0)
@ -216,6 +217,13 @@ function getVisibleDates(): string[] {
return [] return []
} }
function getVisibleStudents(): EntriesResponseStudent[] {
if (hideRemovedStudents.value === true) {
return students.value.filter(s => !s.removed && s.classId === props.classId)
}
return students.value
}
function getVisibleStudentEntries(student: EntriesResponseStudent): Record<string, Entry | null> { function getVisibleStudentEntries(student: EntriesResponseStudent): Record<string, Entry | null> {
if (selectedView.value === TableView.FULL) return student.entries if (selectedView.value === TableView.FULL) return student.entries
if (selectedView.value === TableView.TODAY) { if (selectedView.value === TableView.TODAY) {
@ -267,6 +275,12 @@ defineExpose({
<option :value="TableView.WHITEBOARD">Whiteboard View</option> <option :value="TableView.WHITEBOARD">Whiteboard View</option>
<option :value="TableView.TODAY">Today View</option> <option :value="TableView.TODAY">Today View</option>
</select> </select>
<span>
<input type="checkbox" id="show-removed-students-checkbox" v-model="hideRemovedStudents" />
<label for="show-removed-students-checkbox" style="display: inline; font-size: small;">Hide Removed
Students</label>
</span>
</div> </div>
<p v-if="selectedView === TableView.GRADING"> <p v-if="selectedView === TableView.GRADING">
@ -285,16 +299,13 @@ defineExpose({
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="(student, idx) in students" :key="student.id" style="height: 2em;"> <tr v-for="(student, idx) in getVisibleStudents()" :key="student.id" style="height: 2em;">
<td v-if="selectedView !== TableView.WHITEBOARD" style="text-align: right; padding-right: 0.5em;">{{ idx + 1 <td v-if="selectedView !== TableView.WHITEBOARD" style="text-align: right; padding-right: 0.5em;">{{ idx + 1
}}.</td> }}.</td>
<StudentNameCell :student="student" :class-id="classId" /> <StudentNameCell :student="student" :class-id="classId" />
<!-- Desk Number: -->
<td v-if="assignedDesks" v-text="student.deskNumber"></td> <td v-if="assignedDesks" v-text="student.deskNumber"></td>
<!-- A cell for each entry in the table's date range: -->
<EntryTableCell v-for="(entry, date) in getVisibleStudentEntries(student)" :key="date" <EntryTableCell v-for="(entry, date) in getVisibleStudentEntries(student)" :key="date"
v-model="student.entries[date]" :date-str="date" :last-save-state-timestamp="lastSaveStateTimestamp" /> v-model="student.entries[date]" :date-str="date" :last-save-state-timestamp="lastSaveStateTimestamp" />
<!-- Score cell: -->
<StudentScoreCell :score="student.score" v-if="selectedView !== TableView.WHITEBOARD" /> <StudentScoreCell :score="student.score" v-if="selectedView !== TableView.WHITEBOARD" />
</tr> </tr>
</tbody> </tbody>