97: Get grade with limits from database instead of hardcoding in UI-layer
This commit is contained in:
parent
1b6fd8a17b
commit
655e6a3420
view/src/main/java/se/su/dsv/scipro/grading
@ -3,65 +3,13 @@
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<wicket:container wicket:id="from202411">
|
||||
<div wicket:id="bachelorContainer">
|
||||
<div class="card mb-3 bg-light">
|
||||
<div class="card-body p-2">
|
||||
<p>
|
||||
<strong>Conversion from points to grades is done according to the following schema:</strong>
|
||||
</p>
|
||||
|
||||
<p>[A] 31-29</p>
|
||||
|
||||
<p>[B] 28-26</p>
|
||||
|
||||
<p>[C] 25-22</p>
|
||||
|
||||
<p>[D] 21-19</p>
|
||||
|
||||
<p>[E] 18-16</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div wicket:id="master15Container">
|
||||
<div class="card mb-3 bg-light">
|
||||
<div class="card-body p-2">
|
||||
<p>
|
||||
<strong>Conversion from points to grades is done according to the following schema:</strong>
|
||||
</p>
|
||||
|
||||
<p>[A] 33-31</p>
|
||||
|
||||
<p>[B] 30-28</p>
|
||||
|
||||
<p>[C] 27-24</p>
|
||||
|
||||
<p>[D] 23-21</p>
|
||||
|
||||
<p>[E] 20-19</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div wicket:id="master30Container">
|
||||
<div class="card mb-3 bg-light">
|
||||
<div class="card-body p-2">
|
||||
<p>
|
||||
<strong>Conversion from points to grades is done according to the following schema:</strong>
|
||||
</p>
|
||||
|
||||
<p>[A] 37-35</p>
|
||||
|
||||
<p>[B] 34-32</p>
|
||||
|
||||
<p>[C] 31-28</p>
|
||||
|
||||
<p>[D] 27-25</p>
|
||||
|
||||
<p>[E] 25-23</p>
|
||||
|
||||
<div class="card mb-3 bg-light">
|
||||
<div class="card-body p-2">
|
||||
<p>
|
||||
<strong>Conversion from points to grades is done according to the following schema:</strong>
|
||||
</p>
|
||||
<div wicket:id="gradewithlimits_list">
|
||||
<p wicket:id="gradewithlimits"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,11 +1,23 @@
|
||||
package se.su.dsv.scipro.grading;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.report.GradeLimit;
|
||||
import se.su.dsv.scipro.report.GradingCriterionTemplate;
|
||||
import se.su.dsv.scipro.report.GradingReportTemplate;
|
||||
import se.su.dsv.scipro.system.DegreeType;
|
||||
import se.su.dsv.scipro.system.ProjectType;
|
||||
|
||||
public class TemplatePanel extends Panel {
|
||||
|
||||
@ -30,6 +42,9 @@ public class TemplatePanel extends Panel {
|
||||
}
|
||||
}
|
||||
|
||||
@Inject
|
||||
private GradingReportTemplateService gradingReportTemplateService;
|
||||
|
||||
public TemplatePanel(String id, final IModel<Project> projectIModel) {
|
||||
super(id, projectIModel);
|
||||
final DegreeType degreeType = projectIModel.getObject().getProjectType().getDegreeType();
|
||||
@ -60,17 +75,17 @@ public class TemplatePanel extends Panel {
|
||||
addTemplates(degreeType, between2017_202410);
|
||||
add(between2017_202410);
|
||||
|
||||
final WebMarkupContainer from202411 = new WebMarkupContainer("from202411") {
|
||||
final GradeLimitsContainer from202411 = new GradeLimitsContainer("from202411", projectIModel) {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
|
||||
setVisibilityAllowed(
|
||||
GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) ==
|
||||
GradingCategory.FROM_202411
|
||||
);
|
||||
}
|
||||
};
|
||||
addTemplates(degreeType, from202411);
|
||||
add(from202411);
|
||||
}
|
||||
|
||||
@ -103,4 +118,77 @@ public class TemplatePanel extends Panel {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private List<GradeWithPointRange> getGradeWithPointRanges(ProjectType projectType) {
|
||||
GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(projectType);
|
||||
GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new);
|
||||
List<GradeWithPointRange> list = Arrays.stream(gradeLimits)
|
||||
.map(gradeLimit -> new GradeWithPointRange(gradeLimit.getGrade(), gradeLimit.getLowerLimit()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (int i = 1; i < list.size(); i++) {
|
||||
list.get(i).setUpperLimit(gradeLimits[i - 1].getLowerLimit() - 1);
|
||||
}
|
||||
|
||||
list
|
||||
.get(0)
|
||||
.setUpperLimit(
|
||||
grt.getCriteria().stream().map(GradingCriterionTemplate::getMaxPoints).reduce(0, Integer::sum)
|
||||
);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private class GradeWithPointRange implements Serializable {
|
||||
|
||||
private String grade;
|
||||
private int lowerLimit;
|
||||
private int upperLimit;
|
||||
|
||||
public GradeWithPointRange(String grade, int lowerLimit) {
|
||||
this.grade = grade;
|
||||
this.lowerLimit = lowerLimit;
|
||||
}
|
||||
|
||||
public String getGrade() {
|
||||
return grade;
|
||||
}
|
||||
|
||||
public int getLowerLimit() {
|
||||
return lowerLimit;
|
||||
}
|
||||
|
||||
public int getUpperLimit() {
|
||||
return upperLimit;
|
||||
}
|
||||
|
||||
public void setUpperLimit(int upperLimit) {
|
||||
this.upperLimit = upperLimit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "[" + grade + "]: " + lowerLimit + " - " + upperLimit;
|
||||
}
|
||||
}
|
||||
|
||||
private class GradeLimitsContainer extends WebMarkupContainer {
|
||||
|
||||
public GradeLimitsContainer(String id, IModel<Project> projectIModel) {
|
||||
super(id, projectIModel);
|
||||
List<GradeWithPointRange> list = getGradeWithPointRanges(projectIModel.getObject().getProjectType());
|
||||
|
||||
add(
|
||||
new ListView<>("gradewithlimits_list", list) {
|
||||
@Override
|
||||
protected void populateItem(ListItem<GradeWithPointRange> item) {
|
||||
GradeWithPointRange gpr = item.getModelObject();
|
||||
String s = "[" + gpr.getGrade() + "] " + gpr.getLowerLimit() + " - " + gpr.getUpperLimit();
|
||||
item.add(new Label("gradewithlimits", s));
|
||||
add(item);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user