Allow supervisors to request improvements from final seminar opponents #78
@ -34,6 +34,20 @@
|
|||||||
<button wicket:id="submit" type="submit" class="btn btn-sm btn-success">
|
<button wicket:id="submit" type="submit" class="btn btn-sm btn-success">
|
||||||
<wicket:message key="submit"/>
|
<wicket:message key="submit"/>
|
||||||
</button>
|
</button>
|
||||||
|
<a class="btn btn-outline-secondary btn-sm" wicket:id="request_improvements">
|
||||||
|
Request improvements
|
||||||
|
</a>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<form wicket:id="request_improvements">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label" wicket:for="feedback_to_opponent">
|
||||||
|
Provide feedback to the opponent on how to improve the opposition
|
||||||
|
</label>
|
||||||
|
<textarea class="form-control" wicket:id="feedback_to_opponent" rows="8"></textarea>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-sm btn-success">Request improvements</button>
|
||||||
|
<a class="btn btn-outline-secondary btn-sm" wicket:id="cancel">Cancel</a>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div wicket:id="gradeContainer">
|
<div wicket:id="gradeContainer">
|
||||||
|
@ -6,6 +6,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||||
|
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||||
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
|
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
|
||||||
import org.apache.wicket.feedback.FencedFeedbackPanel;
|
import org.apache.wicket.feedback.FencedFeedbackPanel;
|
||||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||||
@ -22,6 +23,7 @@ import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
|||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
import org.apache.wicket.model.IModel;
|
import org.apache.wicket.model.IModel;
|
||||||
import org.apache.wicket.model.LambdaModel;
|
import org.apache.wicket.model.LambdaModel;
|
||||||
|
import org.apache.wicket.model.Model;
|
||||||
import org.apache.wicket.model.ResourceModel;
|
import org.apache.wicket.model.ResourceModel;
|
||||||
import org.apache.wicket.validation.validator.RangeValidator;
|
import org.apache.wicket.validation.validator.RangeValidator;
|
||||||
import org.apache.wicket.validation.validator.StringValidator;
|
import org.apache.wicket.validation.validator.StringValidator;
|
||||||
@ -75,6 +77,9 @@ public class SeminarOppositionPanel extends Panel {
|
|||||||
private final WebMarkupContainer oppositionContainer;
|
private final WebMarkupContainer oppositionContainer;
|
||||||
private final ListView<FinalSeminarOpposition> opponents;
|
private final ListView<FinalSeminarOpposition> opponents;
|
||||||
|
|
||||||
|
private FinalSeminarOppositionForm gradeForm;
|
||||||
|
private RequestImprovementsForm requestImprovementsForm;
|
||||||
|
|
||||||
public SeminarOppositionPanel(String id, final IModel<FinalSeminar> seminar) {
|
public SeminarOppositionPanel(String id, final IModel<FinalSeminar> seminar) {
|
||||||
super(id, seminar);
|
super(id, seminar);
|
||||||
this.seminar = seminar;
|
this.seminar = seminar;
|
||||||
@ -107,6 +112,12 @@ public class SeminarOppositionPanel extends Panel {
|
|||||||
|
|
||||||
private ListView<FinalSeminarOpposition> getOpponentsList(final IModel<List<FinalSeminarOpposition>> oppositions) {
|
private ListView<FinalSeminarOpposition> getOpponentsList(final IModel<List<FinalSeminarOpposition>> oppositions) {
|
||||||
return new ListView<>(OPPONENTS, oppositions) {
|
return new ListView<>(OPPONENTS, oppositions) {
|
||||||
|
{
|
||||||
|
// Need to reuse child list items since they contain form components
|
||||||
|
// and if they're recreated all the state and error messages are lost
|
||||||
|
setReuseItems(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void populateItem(final ListItem<FinalSeminarOpposition> item) {
|
protected void populateItem(final ListItem<FinalSeminarOpposition> item) {
|
||||||
final FinalSeminarOpposition opposition = item.getModelObject();
|
final FinalSeminarOpposition opposition = item.getModelObject();
|
||||||
@ -121,7 +132,14 @@ public class SeminarOppositionPanel extends Panel {
|
|||||||
|
|
||||||
item.add(getRemoveLink(item.getModel()));
|
item.add(getRemoveLink(item.getModel()));
|
||||||
|
|
||||||
item.add(getFinalSeminarOppositionForm(item));
|
gradeForm = getFinalSeminarOppositionForm(item);
|
||||||
|
gradeForm.setOutputMarkupPlaceholderTag(true);
|
||||||
|
item.add(gradeForm);
|
||||||
|
|
||||||
|
requestImprovementsForm = new RequestImprovementsForm("request_improvements", item.getModel());
|
||||||
|
requestImprovementsForm.setVisible(false);
|
||||||
|
requestImprovementsForm.setOutputMarkupPlaceholderTag(true);
|
||||||
|
item.add(requestImprovementsForm);
|
||||||
|
|
||||||
if (gradingModuleIsOnForProjectType()) {
|
if (gradingModuleIsOnForProjectType()) {
|
||||||
item.add(new SeminarOppositionReportPanel("report", item.getModel()));
|
item.add(new SeminarOppositionReportPanel("report", item.getModel()));
|
||||||
@ -277,6 +295,23 @@ public class SeminarOppositionPanel extends Panel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
add(
|
||||||
|
new AjaxLink<Void>("request_improvements") {
|
||||||
|
@Override
|
||||||
|
public void onClick(AjaxRequestTarget target) {
|
||||||
|
requestImprovementsForm.setVisible(true);
|
||||||
|
target.add(requestImprovementsForm);
|
||||||
|
gradeForm.setVisible(false);
|
||||||
|
target.add(gradeForm);
|
||||||
|
target.appendJavaScript(
|
||||||
|
"document.getElementById('" +
|
||||||
|
requestImprovementsForm.get("feedback_to_opponent").getMarkupId() +
|
||||||
|
"').focus();"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -298,4 +333,34 @@ public class SeminarOppositionPanel extends Panel {
|
|||||||
private boolean hasSubmittedOppositionReport(FinalSeminarOpposition opposition) {
|
private boolean hasSubmittedOppositionReport(FinalSeminarOpposition opposition) {
|
||||||
return oppositionReportService.findOrCreateReport(opposition).isSubmitted();
|
return oppositionReportService.findOrCreateReport(opposition).isSubmitted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class RequestImprovementsForm extends Form<FinalSeminarOpposition> {
|
||||||
|
|
||||||
|
private final Model<String> feedbackToOpponentModel = new Model<>();
|
||||||
|
|
||||||
|
public RequestImprovementsForm(String id, IModel<FinalSeminarOpposition> model) {
|
||||||
|
super(id, model);
|
||||||
|
TextArea<String> feedbackToOpponentField = new TextArea<>("feedback_to_opponent", feedbackToOpponentModel);
|
||||||
|
feedbackToOpponentField.setRequired(true);
|
||||||
|
add(feedbackToOpponentField);
|
||||||
|
|
||||||
|
add(
|
||||||
|
new AjaxLink<Void>("cancel") {
|
||||||
|
@Override
|
||||||
|
public void onClick(AjaxRequestTarget target) {
|
||||||
|
requestImprovementsForm.setVisible(false);
|
||||||
|
target.add(requestImprovementsForm);
|
||||||
|
gradeForm.setVisible(true);
|
||||||
|
target.add(gradeForm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onSubmit() {
|
||||||
|
System.out.println("Request improvements submitted");
|
||||||
|
System.out.println("Feedback to opponent: " + feedbackToOpponentModel.getObject());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user