From edb46dff09623858b0642cf8c556ab1c9dba1043 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Sun, 31 May 2026 10:06:43 +0200 Subject: [PATCH] feat: Grade details --- .../ClassroomDetailController.java | 3 +- .../jzitnik/controllers/GradesController.java | 30 +++++++++++++++++++ .../controllers/TeacherProfileController.java | 3 +- src/main/resources/styles/grades.css | 9 +++++- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/main/java/cz/jzitnik/controllers/ClassroomDetailController.java b/src/main/java/cz/jzitnik/controllers/ClassroomDetailController.java index 35a6ac5..ee18df0 100644 --- a/src/main/java/cz/jzitnik/controllers/ClassroomDetailController.java +++ b/src/main/java/cz/jzitnik/controllers/ClassroomDetailController.java @@ -3,6 +3,7 @@ package cz.jzitnik.controllers; import cz.jzitnik.router.Route; import cz.jzitnik.router.Router; import cz.jzitnik.query.QueryOptions; +import cz.jzitnik.util.TimetableRenderer; import io.github.tomhula.jecnaapi.data.room.Room; import javafx.application.Platform; import javafx.fxml.FXML; @@ -93,7 +94,7 @@ public class ClassroomDetailController extends DashboardBaseController { if (timetableGrid != null) { if (room.getTimetable() != null) { - cz.jzitnik.util.TimetableRenderer.renderTimetable(timetableGrid, room.getTimetable()); + TimetableRenderer.renderTimetable(timetableGrid, room.getTimetable()); } else { timetableGrid.getChildren().clear(); timetableGrid.getColumnConstraints().clear(); diff --git a/src/main/java/cz/jzitnik/controllers/GradesController.java b/src/main/java/cz/jzitnik/controllers/GradesController.java index 0571c7d..cc1643b 100644 --- a/src/main/java/cz/jzitnik/controllers/GradesController.java +++ b/src/main/java/cz/jzitnik/controllers/GradesController.java @@ -275,6 +275,7 @@ public class GradesController extends DashboardBaseController { else badge.getStyleClass().add("grade-other"); // Tooltip + /* StringBuilder tooltipText = new StringBuilder(); if (desc != null && !desc.isEmpty()) { tooltipText.append(desc).append("\n"); @@ -290,9 +291,38 @@ public class GradesController extends DashboardBaseController { Tooltip tooltip = new Tooltip(tooltipText.toString().trim()); Tooltip.install(badge, tooltip); } + */ + + if (!isPredicted) { + badge.setOnMouseClicked(e -> showGradeDetailsDialog(desc, teacher, date)); + badge.getStyleClass().add("clickable-grade"); + } return badge; } + + private void showGradeDetailsDialog(String desc, String teacher, String date) { + Dialog dialog = new Dialog<>(); + dialog.setTitle("Detail známky"); + dialog.setHeaderText(null); + dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); + + VBox content = new VBox(10); + content.setPadding(new Insets(20)); + + if (desc != null && !desc.isEmpty()) { + content.getChildren().add(new Label("Popis: " + desc)); + } + if (teacher != null && !teacher.isEmpty()) { + content.getChildren().add(new Label("Učitel: " + teacher)); + } + if (date != null && !date.isEmpty()) { + content.getChildren().add(new Label("Datum: " + date)); + } + + dialog.getDialogPane().setContent(content); + dialog.show(); + } @FXML protected void onBackToDashboard() { diff --git a/src/main/java/cz/jzitnik/controllers/TeacherProfileController.java b/src/main/java/cz/jzitnik/controllers/TeacherProfileController.java index 7b9cd6c..f5408d3 100644 --- a/src/main/java/cz/jzitnik/controllers/TeacherProfileController.java +++ b/src/main/java/cz/jzitnik/controllers/TeacherProfileController.java @@ -4,6 +4,7 @@ import cz.jzitnik.router.Route; import cz.jzitnik.router.Router; import cz.jzitnik.query.QueryOptions; import cz.jzitnik.util.ImageFetcher; +import cz.jzitnik.util.TimetableRenderer; import io.github.tomhula.jecnaapi.data.schoolStaff.Teacher; import javafx.application.Platform; import javafx.fxml.FXML; @@ -117,7 +118,7 @@ public class TeacherProfileController extends DashboardBaseController { if (timetableGrid != null) { if (teacher.getTimetable() != null) { - cz.jzitnik.util.TimetableRenderer.renderTimetable(timetableGrid, teacher.getTimetable()); + TimetableRenderer.renderTimetable(timetableGrid, teacher.getTimetable()); } else { timetableGrid.getChildren().clear(); timetableGrid.getColumnConstraints().clear(); diff --git a/src/main/resources/styles/grades.css b/src/main/resources/styles/grades.css index 6868d94..ba4d322 100644 --- a/src/main/resources/styles/grades.css +++ b/src/main/resources/styles/grades.css @@ -67,4 +67,11 @@ .grade-3 { -fx-background-color: #d29922; } /* Primer Yellow */ .grade-4 { -fx-background-color: #f85149; } /* Primer Red */ .grade-5 { -fx-background-color: #da3633; -fx-border-color: #ff7b72; -fx-border-width: 1px; -fx-border-radius: 4px; } /* Darker Red */ -.grade-other { -fx-background-color: #6e7681; } /* Primer Gray */ \ No newline at end of file +.grade-other { -fx-background-color: #6e7681; } /* Primer Gray */ + +.clickable-grade { + -fx-cursor: hand; +} +.clickable-grade:hover { + -fx-opacity: 0.8; +} \ No newline at end of file