3249 Allow saving general criteria before filling in overall motivation
This commit is contained in:
parent
9ede3a270d
commit
cb2d389881
core/src/main/java/se/su/dsv/scipro/report
view/src/main/java/se/su/dsv/scipro/grading
@ -109,4 +109,8 @@ public class SupervisorGradingReport extends GradingReport {
|
||||
public void setMotivation(String motivation) {
|
||||
this.motivation = motivation;
|
||||
}
|
||||
|
||||
public boolean hasProvidedOverallMotivation() {
|
||||
return getMotivation() != null && !getMotivation().isBlank();
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@
|
||||
</p>
|
||||
<textarea class="form-control" rows="10" wicket:id="overall_motivation"></textarea>
|
||||
</div>
|
||||
<wicket:enclosure child="grading_basis_requirements_not_met">
|
||||
<wicket:container wicket:id="grading_basis_missing">
|
||||
<h4 class="mt-3">Criteria not met</h4>
|
||||
<ul>
|
||||
<li wicket:id="grading_basis_requirements_not_met">
|
||||
@ -61,8 +61,11 @@
|
||||
<span wicket:id="required_points"></span> required to pass
|
||||
</wicket:message>
|
||||
</li>
|
||||
<li wicket:id="overall_motivation_missing">
|
||||
Overall motivation not filled in
|
||||
</li>
|
||||
</ul>
|
||||
</wicket:enclosure>
|
||||
</wicket:container>
|
||||
<wicket:enclosure child="save">
|
||||
<div class="position-sticky bottom-0 bg-white py-3 d-flex">
|
||||
<button class="btn btn-success me-3" wicket:id="save">
|
||||
|
@ -98,7 +98,16 @@ public class GradingBasisPanel extends GenericPanel<Project> {
|
||||
assessment.getPoints(),
|
||||
0) < assessment.criterion().minimumPoints())
|
||||
.toList());
|
||||
add(new AutoHidingListView<>("grading_basis_requirements_not_met", criteriaNotMet) {
|
||||
WebMarkupContainer gradingBasisMissing = new WebMarkupContainer("grading_basis_missing") {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
String overallMotivation = gradingBasis.getObject().getOverallMotivation();
|
||||
setVisible(!criteriaNotMet.getObject().isEmpty() || overallMotivation == null || overallMotivation.isBlank());
|
||||
}
|
||||
};
|
||||
add(gradingBasisMissing);
|
||||
gradingBasisMissing.add(new AutoHidingListView<>("grading_basis_requirements_not_met", criteriaNotMet) {
|
||||
@Override
|
||||
protected void populateItem(ListItem<Assessment> item) {
|
||||
IModel<Criterion> criterion = item.getModel().map(Assessment::criterion);
|
||||
@ -108,12 +117,19 @@ public class GradingBasisPanel extends GenericPanel<Project> {
|
||||
item.add(new Label("required_points", criterion.map(Criterion::minimumPoints)));
|
||||
}
|
||||
});
|
||||
gradingBasisMissing.add(new WebMarkupContainer("overall_motivation_missing") {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
String overallMotivation = gradingBasis.getObject().getOverallMotivation();
|
||||
setVisible(overallMotivation == null || overallMotivation.isBlank());
|
||||
}
|
||||
});
|
||||
|
||||
IModel<String> overallMotivation = LambdaModel.of(gradingBasis,
|
||||
GradingBasis::getOverallMotivation,
|
||||
GradingBasis::setOverallMotivation);
|
||||
TextArea<String> overallMotivationField = new TextArea<>("overall_motivation", overallMotivation);
|
||||
overallMotivationField.setRequired(true);
|
||||
add(overallMotivationField);
|
||||
|
||||
add(new Label("rejection_comment", gradingBasis.map(GradingBasis::rejectionComment)) {
|
||||
|
@ -38,17 +38,18 @@
|
||||
<li wicket:id="status_plagiarism"></li>
|
||||
<li>
|
||||
<div wicket:id="status_grading_basis">></div>
|
||||
<wicket:enclosure child="grading_basis_requirements_not_met">
|
||||
<ul>
|
||||
<li wicket:id="grading_basis_requirements_not_met">
|
||||
<wicket:message key="criteria_not_met">
|
||||
<span wicket:id="title">[U1 title]</span>
|
||||
<span wicket:id="given_points"></span>/<span wicket:id="maximum_points"></span>
|
||||
<span wicket:id="required_points"></span> required to pass
|
||||
</wicket:message>
|
||||
</li>
|
||||
</ul>
|
||||
</wicket:enclosure>
|
||||
<ul wicket:id="grading_basis_missing">
|
||||
<li wicket:id="grading_basis_requirements_not_met">
|
||||
<wicket:message key="criteria_not_met">
|
||||
<span wicket:id="title">[U1 title]</span>
|
||||
<span wicket:id="given_points"></span>/<span wicket:id="maximum_points"></span>
|
||||
<span wicket:id="required_points"></span> required to pass
|
||||
</wicket:message>
|
||||
</li>
|
||||
<li wicket:id="grading_basis_overall_motivation_missing">
|
||||
Overall motivation not filled in
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<div wicket:id="status_individual_assessment"></div>
|
||||
|
@ -84,7 +84,15 @@ public class IndividualAuthorAssessment extends GenericPanel<User> {
|
||||
|
||||
add(new UserLabel("author_name", authorModel));
|
||||
|
||||
add(new AutoHidingListView<>("grading_basis_requirements_not_met", gradingBasisCriterionNotMet) {
|
||||
WebMarkupContainer gradingBasisMissing = new WebMarkupContainer("grading_basis_missing") {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
setVisible(!hasFilledInGradingBasis.getObject());
|
||||
}
|
||||
};
|
||||
add(gradingBasisMissing);
|
||||
gradingBasisMissing.add(new AutoHidingListView<>("grading_basis_requirements_not_met", gradingBasisCriterionNotMet) {
|
||||
@Override
|
||||
protected void populateItem(ListItem<GradingCriterion> item) {
|
||||
item.add(new Label("title", item.getModel().map(GradingCriterion::getTitle)));
|
||||
@ -93,6 +101,13 @@ public class IndividualAuthorAssessment extends GenericPanel<User> {
|
||||
item.add(new Label("required_points", item.getModel().map(GradingCriterion::getPointsRequiredToPass)));
|
||||
}
|
||||
});
|
||||
gradingBasisMissing.add(new WebMarkupContainer("grading_basis_overall_motivation_missing") {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
setVisible(!gradingReport.getObject().hasProvidedOverallMotivation());
|
||||
}
|
||||
});
|
||||
add(new AutoHidingListView<>("individual_assessment_requirements_not_met", individualCriterionNotMet) {
|
||||
@Override
|
||||
protected void populateItem(ListItem<GradingCriterion> item) {
|
||||
@ -164,7 +179,7 @@ public class IndividualAuthorAssessment extends GenericPanel<User> {
|
||||
boolean criteriaMet = supervisorGradingReport.getProjectCriteria()
|
||||
.stream()
|
||||
.allMatch(GradingCriterion::meetsMinimumPointRequirement);
|
||||
return criteriaMet && supervisorGradingReport.hasProvidedRejectionFeedback();
|
||||
return criteriaMet && supervisorGradingReport.hasProvidedRejectionFeedback() && supervisorGradingReport.hasProvidedOverallMotivation();
|
||||
}
|
||||
|
||||
private void redGreen(String id, IModel<Boolean> finished, String redTextKey, String greenTextKey) {
|
||||
|
@ -163,7 +163,7 @@ public class SupervisorGradingReportPage extends AbstractSupervisorProjectDetail
|
||||
boolean criteriaMet = supervisorGradingReport.getProjectCriteria()
|
||||
.stream()
|
||||
.allMatch(GradingCriterion::meetsMinimumPointRequirement);
|
||||
return criteriaMet && supervisorGradingReport.hasProvidedRejectionFeedback();
|
||||
return criteriaMet && supervisorGradingReport.hasProvidedRejectionFeedback() && supervisorGradingReport.hasProvidedOverallMotivation();
|
||||
}
|
||||
|
||||
private boolean individualCriteriaDone(SupervisorGradingReport supervisorGradingReport) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user