diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java index 0e530c153b..43bb0df75f 100644 --- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java @@ -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 + } + } }