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 30 additions and 22 deletions
Showing only changes of commit 556abce723 - Show all commits

View File

@ -13,7 +13,7 @@
<label class="form-label" wicket:for="valid_from"> <label class="form-label" wicket:for="valid_from">
Valid from Valid from
</label> </label>
<input type="text" class="form-control" wicket:id="valid_from"> <input required type="text" class="form-control" wicket:id="valid_from">
<small class="text-muted"> <small class="text-muted">
When does this grading template take effect. When does this grading template take effect.
</small> </small>
@ -38,7 +38,7 @@
</p> </p>
<div class="mb-3"> <div class="mb-3">
<label class="form-label" wicket:for="default_grade">Default grade</label> <label class="form-label" wicket:for="default_grade">Default grade</label>
<input type="text" class="form-control" wicket:id="default_grade"> <input required type="text" class="form-control" wicket:id="default_grade">
<small class="text-muted">The grade they receive if they do not meet the minimum points for any other grade.</small> <small class="text-muted">The grade they receive if they do not meet the minimum points for any other grade.</small>
</div> </div>
@ -72,13 +72,13 @@
<label class="form-label" wicket:for="title_en"> <label class="form-label" wicket:for="title_en">
Title (english) Title (english)
</label> </label>
<input class="form-control" wicket:id="title_en" type="text"> <input required class="form-control" wicket:id="title_en" type="text">
</div> </div>
<div class="col"> <div class="col">
<label class="form-label" wicket:for="title_sv"> <label class="form-label" wicket:for="title_sv">
Title (swedish) Title (swedish)
</label> </label>
<input class="form-control" wicket:id="title_sv" type="text"> <input required class="form-control" wicket:id="title_sv" type="text">
</div> </div>
</div> </div>
@ -103,13 +103,13 @@
<label wicket:for="requirement_en"> <label wicket:for="requirement_en">
Requirement (english) Requirement (english)
</label> </label>
<textarea rows="4" class="form-control" wicket:id="requirement_en"></textarea> <textarea required rows="4" class="form-control" wicket:id="requirement_en"></textarea>
</div> </div>
<div> <div>
<label wicket:for="requirement_sv"> <label wicket:for="requirement_sv">
Requirement (swedish) Requirement (swedish)
</label> </label>
<textarea rows="4" class="form-control" wicket:id="requirement_sv"></textarea> <textarea required rows="4" class="form-control" wicket:id="requirement_sv"></textarea>
</div> </div>
</div> </div>
</fieldset> </fieldset>

View File

@ -9,6 +9,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.EnumChoiceRenderer; import org.apache.wicket.markup.html.form.EnumChoiceRenderer;
import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.NumberTextField; import org.apache.wicket.markup.html.form.NumberTextField;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListItem;
@ -29,7 +30,7 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
{ {
super(id, editingGradingTemplateModel); super(id, editingGradingTemplateModel);
TextField<LocalDate> validFromField = new TextField<>("valid_from", TextField<LocalDate> validFromField = new RequiredTextField<>("valid_from",
LambdaModel.of(editingGradingTemplateModel, LambdaModel.of(editingGradingTemplateModel,
EditingGradingTemplate::getValidFrom, EditingGradingTemplate::getValidFrom,
EditingGradingTemplate::setValidFrom), EditingGradingTemplate::setValidFrom),
@ -68,7 +69,7 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
setOutputMarkupId(true); setOutputMarkupId(true);
add(new TextField<>("title_sv", LambdaModel.of( add(new RequiredTextField<>("title_sv", LambdaModel.of(
model, model,
EditingGradingTemplate.Criteria::getTitleSv, EditingGradingTemplate.Criteria::getTitleSv,
EditingGradingTemplate.Criteria::setTitleSv)) { EditingGradingTemplate.Criteria::setTitleSv)) {
@ -76,7 +77,7 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(new AutoSave()); add(new AutoSave());
} }
}); });
add(new TextField<>("title_en", LambdaModel.of( add(new RequiredTextField<>("title_en", LambdaModel.of(
model, model,
EditingGradingTemplate.Criteria::getTitleEn, EditingGradingTemplate.Criteria::getTitleEn,
EditingGradingTemplate.Criteria::setTitleEn)) { EditingGradingTemplate.Criteria::setTitleEn)) {
@ -106,6 +107,10 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(flagChoice); add(flagChoice);
add(new ListView<>("points", model.map(EditingGradingTemplate.Criteria::getPoints)) { add(new ListView<>("points", model.map(EditingGradingTemplate.Criteria::getPoints)) {
{
setReuseItems(true);
}
@Override @Override
protected void populateItem(ListItem<EditingGradingTemplate.Criteria.Point> item) { protected void populateItem(ListItem<EditingGradingTemplate.Criteria.Point> item) {
item.add(new PointEditingPanel("point", item)); item.add(new PointEditingPanel("point", item));
@ -138,23 +143,21 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(new Label("point", () -> item.getIndex() + 1)); add(new Label("point", () -> item.getIndex() + 1));
add(new TextArea<>("requirement_en", LambdaModel.of( TextArea<String> englishRequirement = new TextArea<>("requirement_en", LambdaModel.of(
model, model,
EditingGradingTemplate.Criteria.Point::getRequirementEn, EditingGradingTemplate.Criteria.Point::getRequirementEn,
EditingGradingTemplate.Criteria.Point::setRequirementEn)) { EditingGradingTemplate.Criteria.Point::setRequirementEn));
{ englishRequirement.setRequired(true);
add(new AutoSave()); englishRequirement.add(new AutoSave());
} add(englishRequirement);
});
add(new TextArea<>("requirement_sv", LambdaModel.of( TextArea<String> swedishRequirement = new TextArea<>("requirement_sv", LambdaModel.of(
model, model,
EditingGradingTemplate.Criteria.Point::getRequirementSv, EditingGradingTemplate.Criteria.Point::getRequirementSv,
EditingGradingTemplate.Criteria.Point::setRequirementSv)) { EditingGradingTemplate.Criteria.Point::setRequirementSv));
{ swedishRequirement.setRequired(true);
add(new AutoSave()); swedishRequirement.add(new AutoSave());
} add(swedishRequirement);
});
add(new AjaxLink<>("remove") { add(new AjaxLink<>("remove") {
@Override @Override
@ -174,7 +177,7 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
setOutputMarkupId(true); setOutputMarkupId(true);
add(new TextField<>("default_grade", LambdaModel.of( add(new RequiredTextField<>("default_grade", LambdaModel.of(
model, model,
GradeLimits::getDefaultGrade, GradeLimits::getDefaultGrade,
GradeLimits::setDefaultGrade)) { GradeLimits::setDefaultGrade)) {

View File

@ -1,3 +1,8 @@
Flag.OPPOSITION=Final seminar opposition Flag.OPPOSITION=Final seminar opposition
Flag.REFLECTION=Reflection Flag.REFLECTION=Reflection
max_points_available=The maximum number of points available is ${max_points_available} with the below criteria. max_points_available=The maximum number of points available is ${max_points_available} with the below criteria.
default_grade.Required=You must set the default grade.
title_sv.Required=You must set the swedish title for all criteria
title_en.Required=You must set the english title for all criteria
requirement_sv.Required=You must set the swedish requirement for every criteria point
requirement_en.Required=You must set the english requirement for every criteria point