From 1d3daa5226a1142d7fa573673d80d34de8f10587 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Mon, 21 Oct 2024 15:31:40 +0200 Subject: [PATCH] Add new criteria to grading templates --- .../admin/pages/grading/EditingGradingTemplate.java | 9 +++++++-- .../grading/EditingGradingTemplateComponentPanel.html | 4 ++++ .../grading/EditingGradingTemplateComponentPanel.java | 10 ++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java index d9c67bf6f0..29f6d272d5 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java @@ -56,6 +56,10 @@ class EditingGradingTemplate implements Serializable { .sum(); } + public void addCriteria() { + this.criteria.add(new Criteria()); + } + class Criteria implements Serializable { enum Flag { OPPOSITION, REFLECTION @@ -63,13 +67,12 @@ class EditingGradingTemplate implements Serializable { private String titleSv; private String titleEn; - private List<Point> points; + private List<Point> points = new ArrayList<>(); private Flag flag; Criteria(GradingCriterionTemplate criteria) { this.titleSv = criteria.getTitle(); this.titleEn = criteria.getTitleEn(); - this.points = new ArrayList<>(); for (var point : criteria.getGradingCriterionPointTemplates()) { if (point.getPoint() == 0) continue;; Point editingPoint = new Point(point); @@ -77,6 +80,8 @@ class EditingGradingTemplate implements Serializable { } } + private Criteria() {} + public String getTitleSv() { return titleSv; } diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.html b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.html index bcb83d5840..ff2529f89c 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.html +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.html @@ -130,6 +130,10 @@ </fieldset> </div> </div> + + <div class="mb-3"> + <button class="btn btn-sm btn-outline-success" wicket:id="add_criteria">Add new criteria</button> + </div> </wicket:panel> </body> </html> \ No newline at end of file diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java index 73e3b61c6a..beba710b8c 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java @@ -28,6 +28,8 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe { super(id, editingGradingTemplateModel); + setOutputMarkupId(true); + TextField<LocalDate> validFromField = new RequiredTextField<>("valid_from", LambdaModel.of(editingGradingTemplateModel, EditingGradingTemplate::getValidFrom, @@ -59,6 +61,14 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe item.add(new CriteriaEditingPanel("criteria", item.getModel())); } }); + + add(new AjaxLink<>("add_criteria") { + @Override + public void onClick(AjaxRequestTarget target) { + editingGradingTemplateModel.getObject().addCriteria(); + target.add(EditingGradingTemplateComponentPanel.this); + } + }); } class CriteriaEditingPanel extends GenericWebMarkupContainer<EditingGradingTemplate.Criteria> {