/
evernotenkai
/
DataBaseXJavaProject
Обзор
Документация
Войти
/
evernotenkai
/
DataBaseXJavaProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app/ui/teacher/TeacherSubmissionsView.java
102 строки
5 KB
Makson4ik
Весь проект с src db и прочим делом
12 май 2026, 22:43
12 май 2026, 22:43
431f4aa
Код
Авторство
О чём код?
package app.ui.teacher; import app.model.SubmissionItem; import app.service.LmsService; import app.ui.components.NumericField; import app.ui.components.PageHeader; import app.util.Dialogs; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.geometry.Insets; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; public class TeacherSubmissionsView extends VBox { private final TableView<SubmissionItem> table = new TableView<SubmissionItem>(); public TeacherSubmissionsView(LmsService service, int teacherId) { getStyleClass().add("content-root"); setSpacing(18); getChildren().add(new PageHeader("Работы студентов", "Проверяй отправленные работы и выставляй оценки.")); TableColumn<SubmissionItem, String> c1 = new TableColumn<SubmissionItem, String>("Задание"); c1.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getAssignmentTitle())); c1.setPrefWidth(200); TableColumn<SubmissionItem, String> c2 = new TableColumn<SubmissionItem, String>("Студент"); c2.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getStudentName())); c2.setPrefWidth(180); TableColumn<SubmissionItem, String> c3 = new TableColumn<SubmissionItem, String>("Дата"); c3.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getSubmissionDate())); c3.setPrefWidth(110); TableColumn<SubmissionItem, String> c4 = new TableColumn<SubmissionItem, String>("Комментарий"); c4.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getContentNote())); c4.setPrefWidth(260); TableColumn<SubmissionItem, String> c5 = new TableColumn<SubmissionItem, String>("Статус"); c5.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getStatus())); c5.setPrefWidth(110); TableColumn<SubmissionItem, String> c6 = new TableColumn<SubmissionItem, String>("Оценка"); c6.setCellValueFactory(v -> new SimpleStringProperty(v.getValue().getGradeValue() == null ? "" : String.valueOf(v.getValue().getGradeValue()))); c6.setPrefWidth(100); table.getColumns().addAll(c1, c2, c3, c4, c5, c6); reload(service, teacherId); VBox form = new VBox(10); form.getStyleClass().addAll("card", "surface"); form.setPadding(new Insets(18)); form.getChildren().add(new Label("Проверка выбранной работы")); TextField submissionId = new TextField(); submissionId.setPromptText("ID работы"); submissionId.setEditable(false); NumericField grade = new NumericField(1, 100); grade.setPromptText("1..100"); TextArea comment = new TextArea(); comment.setPromptText("Комментарий преподавателя"); comment.setPrefRowCount(4); Button save = new Button("Сохранить оценку"); save.getStyleClass().add("primary-btn"); save.setOnAction(e -> { try { if (submissionId.getText().trim().isEmpty()) { Dialogs.info("Проверка", "Выбери работу в таблице"); return; } Integer gradeValue = grade.getIntValue(); if (gradeValue == null) { Dialogs.info("Проверка", "Укажи оценку от 1 до 100."); return; } service.upsertGrade(Integer.parseInt(submissionId.getText()), gradeValue.intValue(), comment.getText()); reload(service, teacherId); Dialogs.info("Успех", "Оценка сохранена"); } catch (Exception ex) { Dialogs.error("Ошибка оценки", ex); } }); table.getSelectionModel().selectedItemProperty().addListener((obs, o, item) -> { if (item == null) { submissionId.clear(); grade.clear(); comment.clear(); return; } submissionId.setText(String.valueOf(item.getId())); grade.setText(item.getGradeValue() == null ? "" : String.valueOf(item.getGradeValue())); comment.setText(item.getTeacherComment() == null ? "" : item.getTeacherComment()); }); form.getChildren().addAll(submissionId, grade, comment, save); HBox row = new HBox(18, table, form); getChildren().add(row); } private void reload(LmsService service, int teacherId) { table.setItems(FXCollections.observableArrayList(service.findTeacherSubmissions(teacherId))); } }