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 14 deletions
Showing only changes of commit 6bc04a0a58 - Show all commits

View File

@ -45,9 +45,9 @@
<wicket:container wicket:id="grade_limits"> <wicket:container wicket:id="grade_limits">
<div class="row align-items-center mb-3" wicket:id="grade_limit"> <div class="row align-items-center mb-3" wicket:id="grade_limit">
<div class="col"><label class="form-label" wicket:for="minimum">Minimum points</label></div> <div class="col"><label class="form-label" wicket:for="minimum">Minimum points</label></div>
<div class="col"><input type="number" class="form-control" min="1" wicket:id="minimum"></div> <div class="col"><input type="number" required class="form-control" min="1" wicket:id="minimum"></div>
<div class="col"><label class="form-label">Grade</label></div> <div class="col"><label class="form-label">Grade</label></div>
<div class="col"><input type="text" class="form-control" wicket:id="grade"></div> <div class="col"><input type="text" required class="form-control" wicket:id="grade"></div>
<div class="col-auto"><button class="btn btn-sm btn-outline-danger" wicket:id="remove">Remove</button></div> <div class="col-auto"><button class="btn btn-sm btn-outline-danger" wicket:id="remove">Remove</button></div>
</div> </div>
</wicket:container> </wicket:container>

View File

@ -224,6 +224,10 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
}); });
add(new ListView<>("grade_limits", model.map(GradeLimits::getGradeLimits)) { add(new ListView<>("grade_limits", model.map(GradeLimits::getGradeLimits)) {
{
setReuseItems(true);
}
@Override @Override
protected void populateItem(ListItem<GradeLimits.GradeLimit> item) { protected void populateItem(ListItem<GradeLimits.GradeLimit> item) {
item.add(new GradeLimitEditingPanel("grade_limit", item.getModel())); item.add(new GradeLimitEditingPanel("grade_limit", item.getModel()));
@ -243,22 +247,23 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
private class GradeLimitEditingPanel extends GenericWebMarkupContainer<GradeLimits.GradeLimit> { private class GradeLimitEditingPanel extends GenericWebMarkupContainer<GradeLimits.GradeLimit> {
public GradeLimitEditingPanel(String id, IModel<GradeLimits.GradeLimit> model) { public GradeLimitEditingPanel(String id, IModel<GradeLimits.GradeLimit> model) {
super(id, model); super(id, model);
add(new NumberTextField<>("minimum", LambdaModel.of(
NumberTextField<Integer> minimum = new NumberTextField<>("minimum", LambdaModel.of(
model, model,
GradeLimits.GradeLimit::getLowerLimit, GradeLimits.GradeLimit::getLowerLimit,
GradeLimits.GradeLimit::setLowerLimit), Integer.class) { GradeLimits.GradeLimit::setLowerLimit), Integer.class);
{ minimum.setRequired(true);
add(new AutoSave()); minimum.add(new AutoSave());
} add(minimum);
});
add(new TextField<>("grade", LambdaModel.of( TextField<String> grade = new TextField<>("grade", LambdaModel.of(
model, model,
GradeLimits.GradeLimit::getGrade, GradeLimits.GradeLimit::getGrade,
GradeLimits.GradeLimit::setGrade)) { GradeLimits.GradeLimit::setGrade));
{ grade.setRequired(true);
add(new AutoSave()); grade.add(new AutoSave());
} add(grade);
});
add(new AjaxLink<>("remove") { add(new AjaxLink<>("remove") {
@Override @Override
public void onClick(AjaxRequestTarget target) { public void onClick(AjaxRequestTarget target) {

View File

@ -8,3 +8,5 @@ requirement_sv.Required=You must set the swedish requirement for every criteria
requirement_en.Required=You must set the english requirement for every criteria point requirement_en.Required=You must set the english requirement for every criteria point
Type.PROJECT=Once per thesis Type.PROJECT=Once per thesis
Type.INDIVIDUAL=Individually for each author Type.INDIVIDUAL=Individually for each author
minimum.Required=You must set the minimum number of points for each grade
grade.Required=You must set the letter for each grade