added keywords and research areas to idea submission
This commit is contained in:
parent
2d6e1416e8
commit
324a3fb46b
src/main/java/se/su/dsv/scipro/supervisor/panels
@ -17,6 +17,9 @@
|
||||
<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>Research area:</b> (set automatically using the research area value from your profile)</div>
|
||||
<div class="append-bottom"><span wicket:id="researchAreas"><span wicket:id="areaName"></span><br /></span></div>
|
||||
<div class="append-bottom" wicket:id="keywordPanel"></div>
|
||||
<div><b>Manually assign to students:</b></div>
|
||||
<div wicket:id="studentPanel" class="append-bottom"></div>
|
||||
<div class="right">
|
||||
|
@ -1,26 +1,41 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
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.basic.Label;
|
||||
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.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
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.Model;
|
||||
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.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ResearchArea;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.ApplicationPeriodDao;
|
||||
import se.su.dsv.scipro.keywords.KeywordContainer;
|
||||
import se.su.dsv.scipro.keywords.SelectKeywordsPanel;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao.TYPE;
|
||||
import se.su.dsv.scipro.match.dataobject.Keyword;
|
||||
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;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorProjectIdeaStartPage;
|
||||
|
||||
/**
|
||||
* The dialog panel where supervisors may create new project ideas for the students to pick from.
|
||||
@ -28,7 +43,7 @@ import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
* @author emil-siv
|
||||
*
|
||||
*/
|
||||
public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
public class SupervisorEditIdeaPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = -8553559034214432156L;
|
||||
|
||||
@ -37,17 +52,14 @@ public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
@SpringBean
|
||||
private ApplicationPeriodDao periodDao;
|
||||
|
||||
public abstract void onUpdate(AjaxRequestTarget target);
|
||||
public abstract boolean isEditable();
|
||||
private SupervisorService supervisorService;
|
||||
|
||||
public SupervisorEditIdeaPanel(String id, User creator, IModel<SupervisorIdea> model) {
|
||||
super(id, model);
|
||||
add(new IdeaForm("form", model, creator));
|
||||
}
|
||||
|
||||
private class IdeaForm extends Form {
|
||||
private class IdeaForm extends Form<SupervisorIdea> {
|
||||
|
||||
private static final long serialVersionUID = 5784218491663983845L;
|
||||
|
||||
@ -57,11 +69,14 @@ public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
private TextArea<String> requirementField, descriptionField;
|
||||
private RadioChoice<ProjectClass> level;
|
||||
private AddRemoveStudentsPanel studentsPanel;
|
||||
private KeywordContainer regularKwc;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
|
||||
public IdeaForm(String id, final IModel<SupervisorIdea> model, final User creator) {
|
||||
super(id, model);
|
||||
|
||||
final Employee supervisor = supervisorService.findByUser(creator);
|
||||
|
||||
add(wmc = new WebMarkupContainer("wmc"));
|
||||
|
||||
wmc.add(feedbackPanel = new FeedbackPanel("feedbackPanel"));
|
||||
@ -78,7 +93,36 @@ public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
descriptionField.setRequired(true);
|
||||
descriptionField.add(StringValidator.minimumLength(10)); // Description needs to be at least 10 characters
|
||||
|
||||
|
||||
final Set<ResearchArea> areas = supervisor.getResearchAreas();
|
||||
ListView<ResearchArea> areaList = new ListView<ResearchArea>("researchAreas", new ArrayList<ResearchArea>(areas)) {
|
||||
private static final long serialVersionUID = 1745649109195334927L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<ResearchArea> item) {
|
||||
item.add(new Label("areaName", item.getModelObject().getTitle()));
|
||||
}
|
||||
};
|
||||
wmc.add(areaList);
|
||||
|
||||
regularKwc = new KeywordContainer(new HashSet<Keyword>(model.getObject().getKeywords()));
|
||||
wmc.add(new SelectKeywordsPanel("keywordPanel", new Model<KeywordContainer>(regularKwc), TYPE.REGULAR, "Keywords:") {
|
||||
|
||||
private static final long serialVersionUID = -3244572955497357288L;
|
||||
|
||||
@Override
|
||||
public void onUpdateRemove(AjaxRequestTarget target, Keyword removedKeyword) {
|
||||
Set<Keyword> oldKeywords = new HashSet<Keyword>(regularKwc.getKeywordSet());
|
||||
oldKeywords.remove(removedKeyword);
|
||||
model.getObject().setKeywords(oldKeywords);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdateAdd(AjaxRequestTarget target, Keyword addedKeyword) {
|
||||
Set<Keyword> oldKeywords = new HashSet<Keyword>(regularKwc.getKeywordSet());
|
||||
oldKeywords.add(addedKeyword);
|
||||
model.getObject().setKeywords(oldKeywords);
|
||||
}
|
||||
});
|
||||
wmc.add(studentsPanel = new AddRemoveStudentsPanel("studentPanel", model.getObject().getAuthors()) {
|
||||
private static final long serialVersionUID = 8432765543881357453L;
|
||||
|
||||
@ -96,9 +140,11 @@ public abstract class SupervisorEditIdeaPanel extends Panel {
|
||||
target.addComponent(feedbackPanel);
|
||||
|
||||
try {
|
||||
ideaService.saveIdeaFromForm(model, creator, studentsPanel.getStudentSet());
|
||||
onUpdate(target);
|
||||
ideaService.saveSupervisorCreatedIdea(model, supervisor, studentsPanel.getStudentSet());
|
||||
setResponsePage(SupervisorProjectIdeaStartPage.class);
|
||||
getSession().info("Idea successfully submitted");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
System.out.println("Exception time!!!");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user