added form to make supervisors able to submit project ideas according to mockups. still needs a lot of work to be useful according to new match3 logic
This commit is contained in:
parent
ebb7a2ab9c
commit
17aaa1bd28
src/main/java/se/su/dsv/scipro/supervisor
@ -3,6 +3,12 @@
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div wicket:id="feedback"></div>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="editPanel"></div>
|
||||
</div>
|
||||
<a href="#" wicket:id="createIdeaLink">Create new</a>
|
||||
<div class="prepend-top" wicket:id="dataPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +1,108 @@
|
||||
package se.su.dsv.scipro.supervisor.pages;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.datatables.project.GenericDataPanel;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
import se.su.dsv.scipro.supervisor.panels.SupervisorEditIdeaPanel;
|
||||
|
||||
public class SupervisorProjectIdeaStartPage extends AbstractSupervisorProjectIdeaPage {
|
||||
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
private Dialog dialog;
|
||||
|
||||
public SupervisorProjectIdeaStartPage(PageParameters pp) {
|
||||
super(pp);
|
||||
add(feedbackPanel = new FeedbackPanel("feedback"));
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
addFormDialog();
|
||||
addDataTable();
|
||||
}
|
||||
|
||||
private void addFormDialog() {
|
||||
dialog = new Dialog("dialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.setWidth(500);
|
||||
dialog.setHeight(675);
|
||||
dialog.add(new EmptyPanel("editPanel"));
|
||||
add(dialog);
|
||||
|
||||
AjaxLink<Void> newLink = new AjaxLink<Void>("createIdeaLink"){
|
||||
|
||||
private static final long serialVersionUID = 8361361680142892340L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
dialog.replace(new SupervisorEditIdeaPanel("editPanel", getUser(), new Model<SupervisorIdea>(new SupervisorIdea())) {
|
||||
|
||||
private static final long serialVersionUID = -7322701624342450588L;
|
||||
|
||||
@Override
|
||||
public void onUpdate(AjaxRequestTarget target) {
|
||||
dialog.close(target);
|
||||
info("Project idea successfully created");
|
||||
target.addComponent(feedbackPanel);
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEditable() {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
dialog.setTitle("Create new supervisor project idea");
|
||||
target.addComponent(dialog);
|
||||
dialog.open(target);
|
||||
}
|
||||
|
||||
};
|
||||
add(newLink);
|
||||
}
|
||||
|
||||
private void addDataTable() {
|
||||
add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
|
||||
|
||||
private static final long serialVersionUID = -4539188306454725307L;
|
||||
|
||||
@Override
|
||||
public GenericService<SupervisorIdea, Long> getService() {
|
||||
return ideaService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSortString() {
|
||||
return "title";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IColumn[] getColumns() {
|
||||
IColumn[] columns = new IColumn[5];
|
||||
columns[0] = new PropertyColumn<SupervisorIdea>(Model.of("Date"), "dateCreated", "dateCreated");
|
||||
columns[1] = new PropertyColumn<SupervisorIdea>(Model.of("Level"), "projectClass", "projectClass");
|
||||
columns[2] = new PropertyColumn<SupervisorIdea>(Model.of("Title"), "title", "title");
|
||||
columns[3] = new PropertyColumn<SupervisorIdea>(Model.of("Creator"), "creator.user.lastName", "creator");
|
||||
columns[4] = new PropertyColumn<SupervisorIdea>(Model.of("Taken"), "taken");
|
||||
|
||||
return columns;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
6
src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProjectIdeaStartPage.properties
Normal file
6
src/main/java/se/su/dsv/scipro/supervisor/pages/SupervisorProjectIdeaStartPage.properties
Normal file
@ -0,0 +1,6 @@
|
||||
descriptionField.Required=You need to describe the project idea
|
||||
descriptionField.StringValidator.minimum=The description needs to be at least ${minimum} characters
|
||||
requirementField.Required=You need to write some prerequisites
|
||||
level.Required=The project idea needs a suitable project level
|
||||
titleField.Required=The project idea needs a title
|
||||
titleField.StringValidator.minimum=The title needs to be at least ${minimum} characters
|
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<form wicket:id="form">
|
||||
<div wicket:id="wmc">
|
||||
<div wicket:id="feedbackPanel"></div>
|
||||
<div><b>Level:</b></div>
|
||||
<div class="append-bottom"><span wicket:id="level"></span></div>
|
||||
<div><b>Required prerequisites:</b></div>
|
||||
<div class="append-bottom"><textarea rows="3" wicket:id="requirementField"></textarea></div>
|
||||
<div><b>Title:</b></div>
|
||||
<div class="append-bottom"><input wicket:id="titleField"/></div>
|
||||
<div><b>Description:</b></div>
|
||||
<div class="append-bottom"><textarea wicket:id="descriptionField"></textarea></div>
|
||||
<div><b>Manually assign to students:</b></div>
|
||||
<div wicket:id="studentPanel" class="append-bottom"></div>
|
||||
<div class="right">
|
||||
<button wicket:id="saveButton">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,115 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.RadioChoice;
|
||||
import org.apache.wicket.markup.html.form.TextArea;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.apache.wicket.validation.validator.StringValidator;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.reusable.AddRemoveStudentsPanel;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
|
||||
/**
|
||||
* The dialog panel where supervisors may create new project ideas for the students to pick from.
|
||||
*
|
||||
* @author emil-siv
|
||||
*
|
||||
*/
|
||||
public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = -8553559034214432156L;
|
||||
|
||||
@SpringBean
|
||||
private ProjectClassService levelService;
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
@SpringBean
|
||||
private ApplicationPeriodDao periodDao;
|
||||
|
||||
public abstract void onUpdate(AjaxRequestTarget target);
|
||||
public abstract boolean isEditable();
|
||||
|
||||
public SupervisorEditIdeaPanel(String id, User creator, IModel<SupervisorIdea> model) {
|
||||
super(id, model);
|
||||
add(new IdeaForm("form", model, creator));
|
||||
}
|
||||
|
||||
private class IdeaForm extends Form {
|
||||
|
||||
private static final long serialVersionUID = 5784218491663983845L;
|
||||
|
||||
private WebMarkupContainer wmc;
|
||||
|
||||
private TextField<String> titleField;
|
||||
private TextArea<String> requirementField, descriptionField;
|
||||
private RadioChoice<ProjectClass> level;
|
||||
private AddRemoveStudentsPanel studentsPanel;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
|
||||
public IdeaForm(String id, final IModel<SupervisorIdea> model, final User creator) {
|
||||
super(id, model);
|
||||
|
||||
add(wmc = new WebMarkupContainer("wmc"));
|
||||
|
||||
wmc.add(feedbackPanel = new FeedbackPanel("feedbackPanel"));
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
|
||||
wmc.add(level = new RadioChoice<ProjectClass>("level", new PropertyModel<ProjectClass>(model.getObject(), "projectClass"), levelService.findAllActive()));
|
||||
level.setRequired(true);
|
||||
wmc.add(requirementField = new TextArea<String>("requirementField", new PropertyModel<String>(model, "requirements")));
|
||||
requirementField.setRequired(true);
|
||||
wmc.add(titleField = new TextField<String>("titleField", new PropertyModel<String>(model, "title")));
|
||||
titleField.setRequired(true);
|
||||
titleField.add(StringValidator.minimumLength(5)); // Title needs to be at least 5 characters
|
||||
wmc.add(descriptionField = new TextArea<String>("descriptionField", new PropertyModel<String>(model, "description")));
|
||||
descriptionField.setRequired(true);
|
||||
descriptionField.add(StringValidator.minimumLength(10)); // Description needs to be at least 10 characters
|
||||
|
||||
|
||||
wmc.add(studentsPanel = new AddRemoveStudentsPanel("studentPanel", model.getObject().getAuthors()) {
|
||||
private static final long serialVersionUID = 8432765543881357453L;
|
||||
|
||||
@Override
|
||||
public void onUpdate(AjaxRequestTarget target) {
|
||||
//do nothing
|
||||
}
|
||||
});
|
||||
|
||||
wmc.add(new AjaxButton("saveButton") {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
|
||||
target.addComponent(feedbackPanel);
|
||||
|
||||
try {
|
||||
ideaService.saveIdeaFromForm(model, creator, studentsPanel.getStudentSet());
|
||||
onUpdate(target);
|
||||
} catch (Exception e) {
|
||||
System.out.println("Exception time!!!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onError(AjaxRequestTarget target, Form<?> form) {
|
||||
target.addComponent(feedbackPanel);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user