Save text while editing the template

Before when adding/removing points any text changes were lost.
This commit is contained in:
Andreas Svanberg 2024-10-21 10:09:52 +02:00
parent ffcd880384
commit 95d9e2658d

@ -1,6 +1,7 @@
package se.su.dsv.scipro.admin.pages.grading;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.GenericWebMarkupContainer;
@ -13,7 +14,6 @@ import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LambdaModel;
import org.apache.wicket.model.Model;
class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTemplate> {
EditingGradingTemplateComponentPanel(
@ -25,7 +25,11 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(new TextArea<>("note", LambdaModel.of(
editingGradingTemplateModel,
EditingGradingTemplate::getNote,
EditingGradingTemplate::setNote)));
EditingGradingTemplate::setNote)) {
{
add(new AutoSave());
}
});
add(new ListView<>("criteria", editingGradingTemplateModel.map(EditingGradingTemplate::getCriteria)) {
{
@ -48,11 +52,19 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(new TextField<>("title_sv", LambdaModel.of(
model,
EditingGradingTemplate.Criteria::getTitleSv,
EditingGradingTemplate.Criteria::setTitleSv)));
EditingGradingTemplate.Criteria::setTitleSv)) {
{
add(new AutoSave());
}
});
add(new TextField<>("title_en", LambdaModel.of(
model,
EditingGradingTemplate.Criteria::getTitleEn,
EditingGradingTemplate.Criteria::setTitleEn)));
EditingGradingTemplate.Criteria::setTitleEn)) {
{
add(new AutoSave());
}
});
add(new ListView<>("points", model.map(EditingGradingTemplate.Criteria::getPoints)) {
@Override
@ -88,12 +100,20 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
add(new TextArea<>("requirement_en", LambdaModel.of(
model,
EditingGradingTemplate.Criteria.Point::getRequirementEn,
EditingGradingTemplate.Criteria.Point::setRequirementEn)));
EditingGradingTemplate.Criteria.Point::setRequirementEn)) {
{
add(new AutoSave());
}
});
add(new TextArea<>("requirement_sv", LambdaModel.of(
model,
EditingGradingTemplate.Criteria.Point::getRequirementSv,
EditingGradingTemplate.Criteria.Point::setRequirementSv)));
EditingGradingTemplate.Criteria.Point::setRequirementSv)) {
{
add(new AutoSave());
}
});
add(new AjaxLink<>("remove") {
@Override
@ -106,4 +126,15 @@ class EditingGradingTemplateComponentPanel extends GenericPanel<EditingGradingTe
}
}
}
private static class AutoSave extends AjaxFormComponentUpdatingBehavior {
public AutoSave() {
super("keyup");
}
@Override
protected void onUpdate(AjaxRequestTarget target) {
// just trigger the ajax call is enough to update the model object
}
}
}