Skip to content
Snippets Groups Projects
Commit d970dc3e authored by Kevin Thaller's avatar Kevin Thaller
Browse files

Merge remote-tracking branch 'origin/dennis_local' into grademanager_v1.0-kev-local

# Conflicts:
#	.idea/workspace.xml
#	src/main/java/de/thdeg/grademanager/model/Student.java
parents c3b64ca1 eff0390d
No related branches found
No related tags found
No related merge requests found
...@@ -4,14 +4,9 @@ ...@@ -4,14 +4,9 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment=""> <list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="grades can now be added for every course">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/JpaService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/JpaService.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentGradesController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentGradesController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentStatsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentStatsController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/SwitchWindowHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/SwitchWindowHelper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/CoursesOfStudy.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/CoursesOfStudy.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/EnrollmentProperty.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/EnrollmentProperty.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Student.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
...@@ -63,7 +58,7 @@ ...@@ -63,7 +58,7 @@
} }
}</component> }</component>
<component name="RunManager"> <component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true"> <configuration name="de.thdeg.grademanager.gui.Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="de.thdeg.grademanager.gui.Main" /> <option name="MAIN_CLASS_NAME" value="de.thdeg.grademanager.gui.Main" />
<module name="notenmanager" /> <module name="notenmanager" />
<extension name="coverage"> <extension name="coverage">
...@@ -78,7 +73,7 @@ ...@@ -78,7 +73,7 @@
</configuration> </configuration>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="Application.Main" /> <item itemvalue="Application.de.thdeg.grademanager.gui.Main" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
...@@ -168,14 +163,28 @@ ...@@ -168,14 +163,28 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1655889406510</updated> <updated>1655889406510</updated>
</task> </task>
<task id="LOCAL-00012" summary="add enrollment-table to student-stats screen"> <task id="LOCAL-00012" summary="clean up">
<created>1655899491916</created> <created>1655900828972</created>
<option name="number" value="00012" /> <option name="number" value="00012" />
<option name="presentableId" value="LOCAL-00012" /> <option name="presentableId" value="LOCAL-00012" />
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1655899491916</updated> <updated>1655900828972</updated>
</task> </task>
<option name="localTasksCounter" value="13" /> <task id="LOCAL-00013" summary="new window for grades">
<created>1655904634462</created>
<option name="number" value="00013" />
<option name="presentableId" value="LOCAL-00013" />
<option name="project" value="LOCAL" />
<updated>1655904634462</updated>
</task>
<task id="LOCAL-00014" summary="grades can now be added for every course">
<created>1655910063769</created>
<option name="number" value="00014" />
<option name="presentableId" value="LOCAL-00014" />
<option name="project" value="LOCAL" />
<updated>1655910063769</updated>
</task>
<option name="localTasksCounter" value="15" />
<servers /> <servers />
</component> </component>
<component name="Vcs.Log.Tabs.Properties"> <component name="Vcs.Log.Tabs.Properties">
...@@ -213,7 +222,10 @@ ...@@ -213,7 +222,10 @@
<MESSAGE value="bug fix no duplicate (multiple) courses in CourseModificationController + CoursesOfStudyDetailsController anymore" /> <MESSAGE value="bug fix no duplicate (multiple) courses in CourseModificationController + CoursesOfStudyDetailsController anymore" />
<MESSAGE value="add enrollment methods" /> <MESSAGE value="add enrollment methods" />
<MESSAGE value="add logic (average + median)" /> <MESSAGE value="add logic (average + median)" />
<MESSAGE value="add enrollment-table to student-stats screen" /> <MESSAGE value="update for student courses and grades" />
<option name="LAST_COMMIT_MESSAGE" value="add enrollment-table to student-stats screen" /> <MESSAGE value="clean up" />
<MESSAGE value="new window for grades" />
<MESSAGE value="grades can now be added for every course" />
<option name="LAST_COMMIT_MESSAGE" value="grades can now be added for every course" />
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -3,31 +3,32 @@ package de.thdeg.grademanager.gui; ...@@ -3,31 +3,32 @@ package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService; import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Course; import de.thdeg.grademanager.model.Course;
import de.thdeg.grademanager.model.Student; import de.thdeg.grademanager.model.Student;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.ListView; import javafx.scene.control.ListView;
import javafx.scene.input.MouseEvent;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
public class StudentCoursesGradesController { public class StudentCoursesController {
private static Student student; private static Student student;
public static void setStudent(Student student) { public static void setStudent(Student student) {
StudentCoursesGradesController.student = student; StudentCoursesController.student = student;
} }
@FXML @FXML
protected ListView<Course> availableCoursesListView; protected ListView<Course> coursesListView;
@FXML
protected ListView<Course> selectedCoursesListView;
@FXML @FXML
protected void initialize() { protected void initialize() {
initEnrollmentsForCoursesOfStudy(); if (student.getCoursesOfStudy() != null) {
coursesListView.setItems(FXCollections.observableList(student.getCoursesOfStudy().getCourses()));
}
initEnrollmentsForCoursesOfStudy();
} }
private void initEnrollmentsForCoursesOfStudy(){ private void initEnrollmentsForCoursesOfStudy(){
...@@ -40,6 +41,13 @@ public class StudentCoursesGradesController { ...@@ -40,6 +41,13 @@ public class StudentCoursesGradesController {
jpaService.runInTransaction(entityManager -> {entityManager.merge(s); return null;}); jpaService.runInTransaction(entityManager -> {entityManager.merge(s); return null;});
} }
@FXML
protected void onCourseClick(MouseEvent event) throws IOException {
StudentGradesController.setStudent(student);
StudentGradesController.setCourse(coursesListView.getSelectionModel().getSelectedItem());
SwitchWindowHelper.switchTo("Student Grades", event);
}
@FXML @FXML
protected void switchToStudentDetails(ActionEvent event) throws IOException { protected void switchToStudentDetails(ActionEvent event) throws IOException {
StudentDetailsController.setStudent(student); StudentDetailsController.setStudent(student);
......
package de.thdeg.grademanager.gui; package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService; import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Course;
import de.thdeg.grademanager.model.CoursesOfStudy; import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.Student; import de.thdeg.grademanager.model.Student;
import de.thdeg.grademanager.model.enumeration.Gender; import de.thdeg.grademanager.model.enumeration.Gender;
...@@ -11,10 +10,8 @@ import javafx.collections.ObservableList; ...@@ -11,10 +10,8 @@ import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import java.io.IOException; import java.io.IOException;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import static de.thdeg.grademanager.gui.MainController.coursesOfStudyList; import static de.thdeg.grademanager.gui.MainController.coursesOfStudyList;
...@@ -154,9 +151,9 @@ public class StudentDetailsController { ...@@ -154,9 +151,9 @@ public class StudentDetailsController {
} }
@FXML @FXML
protected void switchToStudentCoursesGrades(ActionEvent event) throws IOException { protected void switchToStudentCourses(ActionEvent event) throws IOException {
StudentCoursesGradesController.setStudent(student); StudentCoursesController.setStudent(student);
SwitchWindowHelper.switchTo("Student Courses and Grades", event); SwitchWindowHelper.switchTo("Student Courses", event);
} }
@FXML @FXML
......
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Course;
import de.thdeg.grademanager.model.Enrollment;
import de.thdeg.grademanager.model.Student;
import de.thdeg.grademanager.model.enumeration.Mark;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ComboBox;
import java.io.IOException;
import java.util.Set;
public class StudentGradesController {
protected Mark mark;
@FXML
protected ComboBox<Mark> markComboBox;
ObservableList<Mark> markList = FXCollections.observableArrayList(Mark.values());
private static Student student;
public static void setStudent(Student student) {
StudentGradesController.student = student;
}
private static Course course;
public static void setCourse(Course course) {
StudentGradesController.course = course;
}
@FXML
protected void initialize() {
markComboBox.setItems(markList);
Set<Enrollment> enrollments = student.getEnrollments();
for (Enrollment e: enrollments) {
if(course.getId() == e.getCourse().getId()){
if(e.getGrade() != null){
markComboBox.setPromptText(String.valueOf(e.getGrade()));
}
}
}
}
@FXML
protected void onSaveButtonClick(ActionEvent event) throws IOException {
if (markComboBox.getValue() != null) {
mark = markComboBox.getValue();
Set<Enrollment> enrollments = student.getEnrollments();
for (Enrollment e : enrollments) {
if (course.getId() == e.getCourse().getId()) {
e.setGrade(mark.getMark());
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {
entityManager.merge(e);
return null;
});
initialize();
}
}
}
SwitchWindowHelper.switchTo("Student Courses", event);
}
@FXML
protected void switchToStudentCourses(ActionEvent event) throws IOException {
SwitchWindowHelper.switchTo("Student Courses", event);
}
}
...@@ -63,8 +63,10 @@ public class SwitchWindowHelper { ...@@ -63,8 +63,10 @@ public class SwitchWindowHelper {
return "course-modification.fxml"; return "course-modification.fxml";
case "Student Stats": case "Student Stats":
return "student-stats.fxml"; return "student-stats.fxml";
case "Student Courses and Grades": case "Student Courses":
return "student-courses-grades.fxml"; return "student-courses.fxml";
case "Student Grades":
return "student-grades.fxml";
} }
return ""; return "";
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?> <?import javafx.scene.text.Text?>
<BorderPane prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.thdeg.grademanager.gui.StudentCoursesGradesController"> <BorderPane prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.thdeg.grademanager.gui.StudentCoursesController">
<top> <top>
<VBox fillWidth="false" prefHeight="42.0" prefWidth="600.0" BorderPane.alignment="CENTER"> <VBox fillWidth="false" prefHeight="42.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children> <children>
...@@ -29,26 +29,18 @@ ...@@ -29,26 +29,18 @@
<children> <children>
<HBox alignment="CENTER" prefHeight="74.0" prefWidth="600.0"> <HBox alignment="CENTER" prefHeight="74.0" prefWidth="600.0">
<children> <children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Kurszuweisung"> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Notenzuweisung">
<font> <font>
<Font size="24.0" /> <Font size="24.0" />
</font> </font>
</Text> </Text>
</children> </children>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="133.0" prefWidth="600.0"> <HBox alignment="CENTER" prefHeight="340.0" prefWidth="600.0">
<children> <children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Wählbare Kurse:" wrappingWidth="100.99883961677551" /> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Kurse:" wrappingWidth="40.19885563850403" />
<Region prefHeight="99.0" prefWidth="18.0" /> <Region prefHeight="99.0" prefWidth="18.0" />
<ListView fx:id="availableCoursesListView" editable="true" prefHeight="133.0" prefWidth="270.0" /> <ListView fx:id="coursesListView" editable="true" onMouseClicked="#onCourseClick" prefHeight="133.0" prefWidth="270.0" />
</children>
</HBox>
<Region prefHeight="44.0" prefWidth="200.0" />
<HBox alignment="CENTER" layoutX="10.0" layoutY="84.0" prefHeight="133.0" prefWidth="600.0">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Zugewiesene Kurse:" />
<Region prefHeight="99.0" prefWidth="18.0" />
<ListView fx:id="selectedCoursesListView" editable="true" prefHeight="133.0" prefWidth="270.0" />
</children> </children>
</HBox> </HBox>
</children> </children>
......
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
<children> <children>
<ComboBox fx:id="coursesOfStudyComboBox" onAction="#assignCoursesOfStudy" prefHeight="30.0" prefWidth="189.0" promptText="Studiengang zuweisen" /> <ComboBox fx:id="coursesOfStudyComboBox" onAction="#assignCoursesOfStudy" prefHeight="30.0" prefWidth="189.0" promptText="Studiengang zuweisen" />
<Region prefHeight="52.0" prefWidth="42.0" /> <Region prefHeight="52.0" prefWidth="42.0" />
<Button layoutX="263.0" layoutY="16.0" mnemonicParsing="false" onAction="#switchToStudentCoursesGrades" prefHeight="26.0" prefWidth="153.0" text="Kurse + Noten zuweisen" /> <Button layoutX="263.0" layoutY="16.0" mnemonicParsing="false" onAction="#switchToStudentCourses" prefHeight="26.0" prefWidth="153.0" text="Noten zuweisen" />
<Region layoutX="194.0" layoutY="10.0" prefHeight="52.0" prefWidth="46.0" /> <Region layoutX="194.0" layoutY="10.0" prefHeight="52.0" prefWidth="46.0" />
<Button mnemonicParsing="false" onAction="#switchToStudentStats" prefHeight="26.0" prefWidth="127.0" text="Statistiken anzeigen" /> <Button mnemonicParsing="false" onAction="#switchToStudentStats" prefHeight="26.0" prefWidth="127.0" text="Statistiken anzeigen" />
</children> </children>
......
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.thdeg.grademanager.gui.StudentGradesController">
<top>
<VBox fillWidth="false" prefHeight="46.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children>
<ButtonBar buttonMinWidth="30.0" prefHeight="40.0" prefWidth="200.0">
<buttons>
<Button alignment="CENTER" minWidth="22.0" mnemonicParsing="false" onAction="#switchToStudentCourses" prefHeight="26.0" text="←" />
<Button alignment="CENTER" disable="true" layoutX="31.0" layoutY="17.0" minWidth="22.0" mnemonicParsing="false" prefHeight="26.0" text="→" />
<Region prefHeight="200.0" prefWidth="200.0" />
</buttons>
</ButtonBar>
</children>
</VBox>
</top>
<left>
<Label fx:id="welcomeText" BorderPane.alignment="CENTER" />
</left>
<center>
<VBox prefHeight="400.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<children>
<HBox alignment="CENTER" prefHeight="51.0" prefWidth="600.0">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Noteneingabe">
<font>
<Font size="24.0" />
</font>
</Text>
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="66.0" prefWidth="600.0">
<children>
<Label prefHeight="20.0" prefWidth="36.0" text="Note">
<HBox.margin>
<Insets left="25.0" />
</HBox.margin>
<font>
<Font size="14.0" />
</font>
</Label>
<Region prefHeight="38.0" prefWidth="69.0" />
<ComboBox fx:id="markComboBox" prefHeight="26.0" prefWidth="278.0" />
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="54.0" prefWidth="600.0">
<children>
<Button defaultButton="true" mnemonicParsing="false" onAction="#onSaveButtonClick" text="Speichern" />
</children>
</HBox>
</children>
</VBox>
</center>
</BorderPane>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment