Allows admins to manage grading report templates #14

Merged
niat8586 merged 41 commits from 3482-new-grading-criteria into develop 2024-10-30 10:05:23 +01:00
3 changed files with 21 additions and 2 deletions
Showing only changes of commit 1d3daa5226 - Show all commits

View File

@ -56,6 +56,10 @@ class EditingGradingTemplate implements Serializable {
.sum(); .sum();
} }
public void addCriteria() {
this.criteria.add(new Criteria());
}
class Criteria implements Serializable { class Criteria implements Serializable {
enum Flag { enum Flag {
OPPOSITION, REFLECTION OPPOSITION, REFLECTION
@ -63,13 +67,12 @@ class EditingGradingTemplate implements Serializable {
private String titleSv; private String titleSv;
private String titleEn; private String titleEn;
private List<Point> points; private List<Point> points = new ArrayList<>();
private Flag flag; private Flag flag;
Criteria(GradingCriterionTemplate criteria) { Criteria(GradingCriterionTemplate criteria) {
this.titleSv = criteria.getTitle(); this.titleSv = criteria.getTitle();
this.titleEn = criteria.getTitleEn(); this.titleEn = criteria.getTitleEn();
this.points = new ArrayList<>();
for (var point : criteria.getGradingCriterionPointTemplates()) { for (var point : criteria.getGradingCriterionPointTemplates()) {
if (point.getPoint() == 0) continue;; if (point.getPoint() == 0) continue;;
Point editingPoint = new Point(point); Point editingPoint = new Point(point);
@ -77,6 +80,8 @@ class EditingGradingTemplate implements Serializable {
} }
} }
private Criteria() {}
public String getTitleSv() { public String getTitleSv() {
return titleSv; return titleSv;
} }

View File

@ -130,6 +130,10 @@
</fieldset> </fieldset>
</div> </div>
</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> </wicket:panel>
</body> </body>
</html> </html>

View File

@ -28,6 +28,8 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
{ {
super(id, editingGradingTemplateModel); super(id, editingGradingTemplateModel);
setOutputMarkupId(true);
TextField<LocalDate> validFromField = new RequiredTextField<>("valid_from", TextField<LocalDate> validFromField = new RequiredTextField<>("valid_from",
LambdaModel.of(editingGradingTemplateModel, LambdaModel.of(editingGradingTemplateModel,
EditingGradingTemplate::getValidFrom, EditingGradingTemplate::getValidFrom,
@ -59,6 +61,14 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
item.add(new CriteriaEditingPanel("criteria", item.getModel())); 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> { class CriteriaEditingPanel extends GenericWebMarkupContainer<EditingGradingTemplate.Criteria> {