diff --git a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java index 4e8686484e..7616d8db97 100644 --- a/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java +++ b/view/src/main/java/se/su/dsv/scipro/grading/TemplatePanel.java @@ -11,6 +11,7 @@ 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 org.apache.wicket.model.LoadableDetachableModel; import se.su.dsv.scipro.project.Project; import se.su.dsv.scipro.report.GradeLimit; import se.su.dsv.scipro.report.GradingReportTemplate; @@ -45,13 +46,18 @@ public class TemplatePanel extends Panel { public TemplatePanel(String id, final IModel<Project> projectIModel) { super(id, projectIModel); - final DegreeType degreeType = projectIModel.getObject().getProjectType().getDegreeType(); + Project project = projectIModel.getObject(); + final DegreeType degreeType = project.getProjectType().getDegreeType(); + + IModel<GradingReportTemplate> grtModel = LoadableDetachableModel.of(() -> + gradingReportTemplateService.getCurrentTemplate(projectIModel.getObject().getProjectType(), + projectIModel.getObject().getStartDate())); final WebMarkupContainer upto16 = new WebMarkupContainer("upto2016") { @Override protected void onConfigure() { super.onConfigure(); - setVisibilityAllowed( + setVisibilityAllowed(grtModel.getObject() == null && GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) == GradingCategory.UP_TO_2016 ); @@ -64,7 +70,7 @@ public class TemplatePanel extends Panel { @Override protected void onConfigure() { super.onConfigure(); - setVisibilityAllowed( + setVisibilityAllowed(grtModel.getObject() == null && GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) == GradingCategory.BETWEEN_2017_202410 ); @@ -73,15 +79,11 @@ public class TemplatePanel extends Panel { addTemplates(degreeType, between2017_202410); add(between2017_202410); - final GradeLimitsContainer from202411 = new GradeLimitsContainer("from202411", projectIModel) { + final GradeLimitsContainer from202411 = new GradeLimitsContainer("from202411", grtModel) { @Override protected void onConfigure() { super.onConfigure(); - - setVisibilityAllowed( - GradingCategory.fromProjectStartDate(projectIModel.getObject().getStartDate()) == - GradingCategory.FROM_202411 - ); + setVisibilityAllowed(grtModel.getObject() != null); } }; add(from202411); @@ -117,9 +119,7 @@ public class TemplatePanel extends Panel { ); } - private List<GradeWithPointRange> getGradeWithPointRanges(Project project) { - GradingReportTemplate grt = gradingReportTemplateService.getCurrentTemplate(project.getProjectType(), - project.getStartDate()); + private List<GradeWithPointRange> getGradeWithPointRanges(GradingReportTemplate grt) { GradeLimit[] gradeLimits = grt.getGradeLimits().toArray(GradeLimit[]::new); List<GradeWithPointRange> list = new ArrayList<>(); @@ -138,11 +138,9 @@ public class TemplatePanel extends Panel { private class GradeLimitsContainer extends WebMarkupContainer { - public GradeLimitsContainer(String id, IModel<Project> projectIModel) { - super(id, projectIModel); - IModel<List<GradeWithPointRange>> list = projectIModel.map(project -> - getGradeWithPointRanges(project) - ); + public GradeLimitsContainer(String id, IModel<GradingReportTemplate> grtModel) { + super(id, grtModel); + IModel<List<GradeWithPointRange>> list = grtModel.map(TemplatePanel.this::getGradeWithPointRanges); add( new ListView<>("gradewithlimits_list", list) {