some refactoring to first page of supervisor - project ideas
This commit is contained in:
parent
8088450860
commit
5339de38d2
src/main/java/se/su/dsv/scipro
match/panel
springdata/serviceimpls
supervisor
@ -0,0 +1,22 @@
|
||||
<!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>
|
||||
<div wicket:id="container">
|
||||
<label for="checkGroup">Filter on level</label>
|
||||
<div wicket:id="checkGroup">
|
||||
<div wicket:id="levelView">
|
||||
<input type="checkbox" wicket:id="levelCheckBox"></input>
|
||||
<span wicket:id="levelName"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,76 @@
|
||||
package se.su.dsv.scipro.match.panel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Check;
|
||||
import org.apache.wicket.markup.html.form.CheckGroup;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||
|
||||
|
||||
public abstract class FilterFormProjectClass extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 8862892008428526067L;
|
||||
|
||||
@SpringBean
|
||||
private ProjectClassService projectClassService;
|
||||
private List<ProjectClass> projectClassList;
|
||||
|
||||
private final CheckGroup<ProjectClass> checkGroup;
|
||||
|
||||
public FilterFormProjectClass(String id) {
|
||||
super(id);
|
||||
|
||||
projectClassList = projectClassService.findAllActive();
|
||||
CompoundPropertyModel<List<ProjectClass>> levelModel = new CompoundPropertyModel<List<ProjectClass>>(projectClassList);
|
||||
|
||||
checkGroup = new CheckGroup<ProjectClass>("checkGroup",new ArrayList<ProjectClass>(projectClassList));
|
||||
|
||||
final WebMarkupContainer container = new WebMarkupContainer("container");
|
||||
container.setOutputMarkupId(true);
|
||||
ListView<ProjectClass> levelView = new ListView<ProjectClass>("levelView", levelModel) {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(ListItem<ProjectClass> item) {
|
||||
|
||||
Check<ProjectClass> levelBox = new Check<ProjectClass>("levelCheckBox", item.getModel());
|
||||
item.add(levelBox);
|
||||
Label levelName = new Label("levelName", item.getModelObject().toString());
|
||||
item.add(levelName);
|
||||
|
||||
}
|
||||
};
|
||||
checkGroup.add(levelView);
|
||||
checkGroup.setOutputMarkupId(true);
|
||||
checkGroup.add(new AjaxFormChoiceComponentUpdatingBehavior(){
|
||||
private static final long serialVersionUID = 3198579482664645333L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
ajaxUpdate(target);
|
||||
}
|
||||
|
||||
});
|
||||
container.add(checkGroup);
|
||||
add(container);
|
||||
}
|
||||
|
||||
public List<ProjectClass> getProjectClasses(){
|
||||
return (List<ProjectClass>) checkGroup.getModelObject();
|
||||
}
|
||||
|
||||
public abstract void ajaxUpdate(AjaxRequestTarget target);
|
||||
}
|
@ -53,9 +53,12 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
||||
|
||||
SupervisorIdea idea = model.getObject();
|
||||
|
||||
idea.setIdeaStatus(IdeaStatus.WAITING);
|
||||
if(!students.isEmpty())
|
||||
if(!students.isEmpty()) {
|
||||
idea.setAuthors(students);
|
||||
idea.setIdeaStatus(IdeaStatus.TAKEN); //Should not be visible for selection if supervisor manually added students
|
||||
} else {
|
||||
idea.setIdeaStatus(IdeaStatus.WAITING);
|
||||
}
|
||||
idea.setCreator(creator);
|
||||
|
||||
idea = em.merge(idea);
|
||||
|
@ -3,9 +3,10 @@
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div class="info-box rounded-box last">This is a nice info box full of important information. Don't forget to read it. And then read it again.</div>
|
||||
<div wicket:id="feedback"></div>
|
||||
<button wicket:id="ideaLink">Create new</button>
|
||||
<div class="prepend-top" wicket:id="dataPanel"></div>
|
||||
<div class="prepend-top" wicket:id="ideaPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -2,99 +2,27 @@ package se.su.dsv.scipro.supervisor.pages;
|
||||
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
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.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.datatables.ClickableIconColumn;
|
||||
import se.su.dsv.scipro.datatables.project.GenericDataPanel;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
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.SupervisorProjectIdeaOverviewPanel;
|
||||
|
||||
public class SupervisorProjectIdeaStartPage extends AbstractSupervisorProjectIdeaPage {
|
||||
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
private FeedbackPanel feedbackPanel;
|
||||
|
||||
public SupervisorProjectIdeaStartPage(PageParameters pp) {
|
||||
super(pp);
|
||||
add(feedbackPanel = new FeedbackPanel("feedback"));
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
add(new SupervisorProjectIdeaOverviewPanel("ideaPanel", getUser()));
|
||||
addSubmissionPageLink();
|
||||
addDataTable();
|
||||
|
||||
}
|
||||
|
||||
private void addSubmissionPageLink() {
|
||||
BookmarkablePageLink<Void> ideaLink = new BookmarkablePageLink<Void>("ideaLink", SupervisorIdeaSubmissionPage.class);
|
||||
add(ideaLink);
|
||||
}
|
||||
|
||||
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 "dateCreated";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IColumn[] getColumns() {
|
||||
IColumn[] columns = new IColumn[7];
|
||||
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("Status"), "ideaStatus", "ideaStatus");
|
||||
columns[5] = new ClickableIconColumn<SupervisorIdea>(Model.of("Edit"), null, ImageIcon.ICON_EDIT) {
|
||||
private static final long serialVersionUID = 1498638150378921520L;
|
||||
|
||||
@Override
|
||||
protected void onClick(IModel<SupervisorIdea> clicked,
|
||||
AjaxRequestTarget target) {
|
||||
PageParameters pp = new PageParameters();
|
||||
pp.put("idea", clicked.getObject().getId());
|
||||
setResponsePage(SupervisorIdeaSubmissionPage.class, pp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldBeVisible(IModel<SupervisorIdea> ideaModel) {
|
||||
return ideaService.isIdeaEditable(ideaModel, getUser());
|
||||
}
|
||||
};
|
||||
columns[6] = new ClickableIconColumn<SupervisorIdea>(Model.of("Delete"), null, ImageIcon.ICON_DELETE) {
|
||||
private static final long serialVersionUID = 1718924441848355574L;
|
||||
@Override
|
||||
protected void onClick(IModel<SupervisorIdea> ideaModel,
|
||||
AjaxRequestTarget target) {
|
||||
ideaService.deleteWaitingIdea(ideaModel);
|
||||
target.addComponent(getWMC());
|
||||
}
|
||||
@Override
|
||||
public boolean shouldBeVisible(IModel<SupervisorIdea> ideaModel) {
|
||||
return ideaService.isIdeaEditable(ideaModel, getUser());
|
||||
}
|
||||
};
|
||||
|
||||
return columns;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -19,10 +19,11 @@
|
||||
<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 class="append-bottom span-22" wicket:id="keywordPanel"></div>
|
||||
<div class="append-bototm span-22"><b>Manually assign to students:</b>
|
||||
<div wicket:id="studentPanel" class="append-bottom"></div>
|
||||
<div class="right">
|
||||
</div>
|
||||
<div class="span-4">
|
||||
<button wicket:id="saveButton">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
|
14
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaOverviewPanel.html
Normal file
14
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaOverviewPanel.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!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="levelFilter"></div>
|
||||
</form>
|
||||
<div class="prepend-top" wicket:id="dataPanel"></div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
113
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaOverviewPanel.java
Normal file
113
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorProjectIdeaOverviewPanel.java
Normal file
@ -0,0 +1,113 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
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.form.Form;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.datatables.ClickableIconColumn;
|
||||
import se.su.dsv.scipro.datatables.project.GenericDataPanel;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorIdeaSubmissionPage;
|
||||
|
||||
public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
|
||||
private static final long serialVersionUID = -9010467449322120267L;
|
||||
|
||||
public SupervisorProjectIdeaOverviewPanel(String id, final User supervisor) {
|
||||
super(id);
|
||||
addDataTable(supervisor);
|
||||
add(new FilterForm("form"));
|
||||
}
|
||||
|
||||
private void addDataTable(final User supervisor) {
|
||||
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 "dateCreated";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IColumn[] getColumns() {
|
||||
IColumn[] columns = new IColumn[7];
|
||||
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("Status"), "ideaStatus", "ideaStatus");
|
||||
columns[5] = new ClickableIconColumn<SupervisorIdea>(Model.of("Edit"), null, ImageIcon.ICON_EDIT) {
|
||||
private static final long serialVersionUID = 1498638150378921520L;
|
||||
|
||||
@Override
|
||||
protected void onClick(IModel<SupervisorIdea> clicked,
|
||||
AjaxRequestTarget target) {
|
||||
PageParameters pp = new PageParameters();
|
||||
pp.put("idea", clicked.getObject().getId());
|
||||
setResponsePage(SupervisorIdeaSubmissionPage.class, pp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldBeVisible(IModel<SupervisorIdea> ideaModel) {
|
||||
return ideaService.isIdeaEditable(ideaModel, supervisor);
|
||||
}
|
||||
};
|
||||
columns[6] = new ClickableIconColumn<SupervisorIdea>(Model.of("Delete"), null, ImageIcon.ICON_DELETE) {
|
||||
private static final long serialVersionUID = 1718924441848355574L;
|
||||
@Override
|
||||
protected void onClick(IModel<SupervisorIdea> ideaModel,
|
||||
AjaxRequestTarget target) {
|
||||
ideaService.deleteWaitingIdea(ideaModel);
|
||||
target.addComponent(getWMC());
|
||||
}
|
||||
@Override
|
||||
public boolean shouldBeVisible(IModel<SupervisorIdea> ideaModel) {
|
||||
return ideaService.isIdeaEditable(ideaModel, supervisor);
|
||||
}
|
||||
};
|
||||
|
||||
return columns;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
private class FilterForm extends Form<Void> {
|
||||
|
||||
private static final long serialVersionUID = 6581597176580961782L;
|
||||
|
||||
public FilterForm(String id) {
|
||||
super(id);
|
||||
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter") {
|
||||
private static final long serialVersionUID = -7758850229259608443L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
System.out.println(getProjectClasses());
|
||||
}
|
||||
};
|
||||
add(levelFilter);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user