feat: student profile FAB, recycle bin requirements count fix, and persistent sticky table header

This commit is contained in:
ssbg04 committed 2026-08-27 22:28:16 +08:00
1 parent 3e0af305e2
commit 4d585f3a6d
8 files changed
+220 -181

No files matched your search

@@ -61,6 +61,7 @@ exports.getStats = (req, res) => {
WHERE d.student_id = s.id
AND d.requirement_id = dr.id
AND d.status IN ('Completed', 'Archived')
AND d.deleted_at IS NULL
)
)
`).get(userId).count;
@@ -93,6 +94,7 @@ exports.getStats = (req, res) => {
WHERE d.student_id = s.id
AND d.requirement_id = dr.id
AND d.status IN ('Completed', 'Archived')
AND d.deleted_at IS NULL
)
)
`).get(userId).count;
@@ -118,6 +120,7 @@ exports.getStats = (req, res) => {
WHERE d.student_id = s.id
AND d.requirement_id = dr.id
AND d.status IN ('Completed', 'Archived')
AND d.deleted_at IS NULL
)
)
`).get().count;
@@ -140,6 +143,7 @@ exports.getStats = (req, res) => {
WHERE d.student_id = s.id
AND d.requirement_id = dr.id
AND d.status IN ('Completed', 'Archived')
AND d.deleted_at IS NULL
)
)
`).get().count;
+2 -2
View File
@@ -204,7 +204,7 @@ exports.getEnrollmentByGrade = (req, res) => {
exports.getDocumentStatus = (req, res) => {
try {
const rows = db.prepare(`
SELECT status, COUNT(*) as count FROM documents GROUP BY status
SELECT status, COUNT(*) as count FROM documents WHERE deleted_at IS NULL GROUP BY status
`).all();
const result = { Completed: 0, Archived: 0 };
rows.forEach(r => { if (r.status in result) result[r.status] = r.count; });
@@ -242,7 +242,7 @@ exports.getExportData = (req, res) => {
// Document status breakdown
const docStatusRows = db.prepare(`
SELECT status, COUNT(*) as count FROM documents GROUP BY status
SELECT status, COUNT(*) as count FROM documents WHERE deleted_at IS NULL GROUP BY status
`).all();
const documentStatus = { Completed: 0, Archived: 0 };
docStatusRows.forEach(r => { if (r.status in documentStatus) documentStatus[r.status] = r.count; });
@@ -324,7 +324,7 @@ exports.getMissingRequirements = (req, res) => {
)
AND dr.id NOT IN (
SELECT requirement_id FROM documents
WHERE student_id = ? AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL
WHERE student_id = ? AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL AND deleted_at IS NULL
)
ORDER BY dr.category ASC, dr.name ASC
`).all(studentId, studentId);
@@ -338,6 +338,7 @@ exports.getMissingRequirements = (req, res) => {
JOIN documents d ON d.requirement_id = dr.id
WHERE d.student_id = ?
AND d.status IN ('Completed', 'Archived')
AND d.deleted_at IS NULL
AND dr.category IN (
SELECT DISTINCT CASE WHEN grade_level <= 10 THEN 'JHS' ELSE 'SHS' END
FROM enrollments WHERE student_id = ?
+2 -2
View File
@@ -288,7 +288,7 @@ exports.getAllStudents = (req, res) => {
)
AND dr.id NOT IN (
SELECT requirement_id FROM documents
WHERE student_id = s.id AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL
WHERE student_id = s.id AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL AND deleted_at IS NULL
)
) as missing_count
FROM students s
@@ -327,7 +327,7 @@ exports.getAllStudents = (req, res) => {
)
AND dr.id NOT IN (
SELECT requirement_id FROM documents
WHERE student_id = ? AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL
WHERE student_id = ? AND status IN ('Completed', 'Archived') AND requirement_id IS NOT NULL AND deleted_at IS NULL
)
`).all(student.id, student.id);