Save text while editing the template
Before when adding/removing points any text changes were lost.
This commit is contained in:
parent
ffcd880384
commit
95d9e2658d
43
view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplateComponentPanel.java
43
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user