From 50e8265b7444ac836c692df96ccc47c654f9fb25 Mon Sep 17 00:00:00 2001 From: kalugin66 Date: Wed, 1 Jul 2026 11:59:35 +0500 Subject: [PATCH] v3 --- public/style.css | 2 +- src/routes/api.js | 6 +++++- views/index.ejs | 18 ++++++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/public/style.css b/public/style.css index f4e2f50..1a4e3d2 100644 --- a/public/style.css +++ b/public/style.css @@ -6,7 +6,7 @@ body { color: #333; line-height: 1.5; } -.container { max-width: 960px; margin: 0 auto; padding: 20px; } +.container { max-width: 100%; margin: 0 auto; padding: 20px; } h1 { margin-bottom: 15px; } h2 { margin: 15px 0 8px; font-size: 16px; } diff --git a/src/routes/api.js b/src/routes/api.js index 7ec8926..d1d3cf8 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -91,7 +91,9 @@ router.get('/students', (req, res) => { SELECT s.*, COUNT(er.id) as exam_count, SUM(CASE WHEN s2.is_mandatory = 0 THEN 1 ELSE 0 END) as elective_count, - SUM(CASE WHEN s2.is_mandatory = 1 AND er.grade IS NOT NULL THEN 1 ELSE 0 END) as mandatory_grades + SUM(CASE WHEN s2.is_mandatory = 1 AND er.grade IS NOT NULL THEN 1 ELSE 0 END) as mandatory_grades, + SUM(CASE WHEN s2.is_mandatory = 1 AND er.grade IS NOT NULL AND er.grade < 3 THEN 1 ELSE 0 END) as low_grades, + GROUP_CONCAT(s2.name || ' ' || CAST(er.grade AS TEXT), ' / ') as subjects_list FROM students s LEFT JOIN exam_results er ON er.student_id = s.id LEFT JOIN subjects s2 ON s2.code = er.subject_code @@ -129,6 +131,8 @@ router.get('/students', (req, res) => { )`); } else if (filter === 'secondyear') { havingClause = 'HAVING elective_count = 0 AND COUNT(er.id) = 1'; + } else if (filter === 'lowgrade') { + havingClause = 'HAVING low_grades > 0'; } const wherePart = whereClauses.length ? 'WHERE ' + whereClauses.join(' AND ') : ''; diff --git a/views/index.ejs b/views/index.ejs index 6714632..ad2ede1 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -63,6 +63,9 @@ +