2984 PO 7) Add mininum point requirement to grading basis

This commit is contained in:
Andreas Svanberg 2023-09-13 10:02:42 +02:00
parent 19efe7b343
commit 8a0529e98a
4 changed files with 20 additions and 7 deletions

@ -18,6 +18,8 @@ import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import se.su.dsv.scipro.components.BootstrapRadioChoice;
import se.su.dsv.scipro.components.DateLabel;
import se.su.dsv.scipro.components.LargeModalWindow;
@ -28,6 +30,7 @@ import se.su.dsv.scipro.finalseminar.FinalSeminarOpposition;
import se.su.dsv.scipro.finalseminar.FinalSeminarService;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.reflection.ReflectionService;
import se.su.dsv.scipro.report.AbstractGradingCriterion;
import se.su.dsv.scipro.report.GradingCriterion;
import se.su.dsv.scipro.report.GradingCriterionPoint;
import se.su.dsv.scipro.report.SupervisorGradingReport;
@ -63,7 +66,10 @@ public class CriteriaPanel extends GenericPanel<SupervisorGradingReport> {
grading.setOutputMarkupId(true);
item.add(grading);
item.add(new Label(TITLE, item.getModel().map(isSwedish ? GradingCriterion::getTitle : GradingCriterion::getTitleEn)));
grading.add(new Label(MAX_POINTS, getPointsString(item.getModelObject())));
grading.add(new Label(MAX_POINTS,
new StringResourceModel(
"point_requirement",
item.getModel().map(AbstractGradingCriterion::getPointsRequiredToPass))));
IModel<List<GradingCriterionPoint>> gradingCriterionPoints = item.getModel().map(GradingCriterion::getGradingCriterionPoints);
RadioChoice<GradingCriterionPoint> pointsRadioChoice = new BootstrapRadioChoice<>(
@ -223,10 +229,6 @@ public class CriteriaPanel extends GenericPanel<SupervisorGradingReport> {
}
}
private String getPointsString(GradingCriterion criterion) {
return "(*" + criterion.getPointsRequiredToPass() + "* is required to pass)";
}
private static final class GradingCriterionPointsModelConverter implements IModel<GradingCriterionPoint> {
private final IModel<GradingCriterion> criterionIModel;

@ -23,14 +23,19 @@
<legend wicket:id="title">
[U1 Abstract]
</legend>
<div wicket:id="points"></div>
<!-- pass/fail criteria: render checkbox -->
<div class="form-check" wicket:enclosure="pf">
<input type="checkbox" class="form-check-input" wicket:id="pf">
<label class="form-check-label" wicket:for="pf">
<div wicket:id="pfCriteria"></div>
</label>
</div>
<!-- other criteria: render radio buttons -->
<wicket:enclosure child="points">
<strong>Points: </strong> <span wicket:id="point_requirement"></span>
<div wicket:id="points"></div>
</wicket:enclosure>
</fieldset>
<div>
<label class="col-form-label" wicket:for="overall_motivation">

@ -16,6 +16,7 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import se.su.dsv.scipro.components.BootstrapRadioChoice;
import se.su.dsv.scipro.components.ScrollSneakBehavior;
import se.su.dsv.scipro.grading.GradingBasis.Assessment;
@ -55,6 +56,10 @@ public class GradingBasisPanel extends GenericPanel<Project> {
protected void populateItem(ListItem<Assessment> item) {
IModel<Criterion> criteriaModel = item.getModel().map(Assessment::criterion);
item.add(new Label("title", criteriaModel.map(Criterion::title)));
item.add(new Label("point_requirement",
new StringResourceModel(
"point_requirement",
criteriaModel.map(Criterion::minimumPoints))));
IModel<List<Requirement>> requirements = criteriaModel.map(Criterion::requirements);
RadioChoice<Requirement> pointsRadioChoice = new BootstrapRadioChoice<>(

@ -0,0 +1 @@
point_requirement=(*${}* is required to pass)