added new page to supervisor - project ideas where only the current supervisors ideas that have authors is displayed. from here, the supervisor may add a first meeting date to the idea
This commit is contained in:
parent
944087b07f
commit
f6732d5a09
src/main/java/se/su/dsv/scipro/supervisor
@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div wicket:id="feedback"></div>
|
||||
<div wicket:id="availabilityPanel" class="append-bottom"></div>
|
||||
<div class="prepend-top" wicket:id="ideaPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,25 @@
|
||||
package se.su.dsv.scipro.supervisor.pages;
|
||||
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.panel.FeedbackPanel;
|
||||
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.supervisor.panels.SupervisorAvailabilityPanel;
|
||||
import se.su.dsv.scipro.supervisor.panels.SupervisorMatchedSupervisorIdeasPanel;
|
||||
|
||||
@Authorization(authorizedRoles={Roles.SYSADMIN})
|
||||
public class SupervisorMySupervisorIdeasPage extends AbstractSupervisorProjectIdeaPage {
|
||||
|
||||
private FeedbackPanel feedbackPanel;
|
||||
|
||||
public SupervisorMySupervisorIdeasPage(PageParameters pp) {
|
||||
super(pp);
|
||||
add(feedbackPanel = new FeedbackPanel("feedback"));
|
||||
feedbackPanel.setOutputMarkupId(true);
|
||||
add(new SupervisorAvailabilityPanel("availabilityPanel", getUser()));
|
||||
add(new SupervisorMatchedSupervisorIdeasPanel("ideaPanel", getUser()));
|
||||
|
||||
}
|
||||
}
|
18
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedSupervisorIdeasPanel.html
Normal file
18
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedSupervisorIdeasPanel.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!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="dialog">
|
||||
<div wicket:id="dialogPanel"></div>
|
||||
</div>
|
||||
<div wicket:id="feedback"></div>
|
||||
<form wicket:id="form">
|
||||
<div class="span-5" wicket:id="levelFilter"></div>
|
||||
</form>
|
||||
<div class="span-24 prepend-top" wicket:id="dataPanel"></div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
164
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedSupervisorIdeasPanel.java
Normal file
164
src/main/java/se/su/dsv/scipro/supervisor/panels/SupervisorMatchedSupervisorIdeasPanel.java
Normal file
@ -0,0 +1,164 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
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.EmptyPanel;
|
||||
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.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.datatables.BooleanIconColumn;
|
||||
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
||||
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
||||
import se.su.dsv.scipro.icons.ImageObject;
|
||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormProjectClass;
|
||||
import se.su.dsv.scipro.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||
|
||||
public class SupervisorMatchedSupervisorIdeasPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private SupervisorIdeaService ideaService;
|
||||
@SpringBean
|
||||
private SupervisorService supervisorService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
private SupervisorIdeaService.FilterParams params;
|
||||
private Dialog dialog;
|
||||
|
||||
private static final long serialVersionUID = -9010467449322120267L;
|
||||
|
||||
public SupervisorMatchedSupervisorIdeasPanel(String id, final User supervisor) {
|
||||
super(id);
|
||||
FeedbackPanel feedback = new FeedbackPanel("feedback");
|
||||
feedback.setOutputMarkupId(true);
|
||||
add(feedback);
|
||||
addDialog();
|
||||
addDataTable(supervisor, feedback);
|
||||
add(new FilterForm("form", supervisor));
|
||||
}
|
||||
|
||||
private void addDialog() {
|
||||
dialog = new Dialog("dialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.setWidth(450);
|
||||
dialog.setHeight(600);
|
||||
dialog.add(new EmptyPanel("dialogPanel"));
|
||||
add(dialog);
|
||||
}
|
||||
|
||||
private void addDataTable(final User supervisor, final FeedbackPanel feedback) {
|
||||
add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return SafeLongToIntService.safeLongToInt(ideaService.countByStatusAndParams(IdeaStatus.TAKEN, params));
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = -4539188306454725307L;
|
||||
|
||||
@Override
|
||||
public Iterator<SupervisorIdea> getIterator() {
|
||||
return ideaService.findByStatusAndParams(IdeaStatus.TAKEN, params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericService<SupervisorIdea, Long> getService() {
|
||||
return ideaService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSortString() {
|
||||
return "dateCreated";
|
||||
}
|
||||
|
||||
@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 ClickableTitleColumn<SupervisorIdea>(Model.of("Title"), "title", "title") {
|
||||
private static final long serialVersionUID = 4667741924987868274L;
|
||||
|
||||
@Override
|
||||
protected void onClick(final IModel<SupervisorIdea> ideaModel,
|
||||
AjaxRequestTarget target) {
|
||||
dialog.replace(new SupervisorIdeaDetailsPanel("dialogPanel", ideaModel){
|
||||
private static final long serialVersionUID = -1970068053928444580L;
|
||||
|
||||
@Override
|
||||
public void updateTarget(AjaxRequestTarget target, SupervisorIdea idea) {
|
||||
dialog.close(target);
|
||||
info("Meeting details saved");
|
||||
ideaModel.setObject(idea);
|
||||
target.addComponent(feedback);
|
||||
target.addComponent(getWMC());
|
||||
}
|
||||
|
||||
});
|
||||
dialog.setTitle("Selected supervisor project idea");
|
||||
target.addComponent(dialog);
|
||||
dialog.open(target);
|
||||
}
|
||||
};
|
||||
columns[3] = new PropertyColumn<SupervisorIdea>(Model.of("Author(s)"), "ideaParticipations");
|
||||
columns[4] = new BooleanIconColumn<SupervisorIdea>(Model.of("First meeting added?"), ImageObject.CHECK, ImageObject.DELETE){
|
||||
|
||||
private static final long serialVersionUID = -6759283830735306302L;
|
||||
|
||||
@Override
|
||||
protected boolean booleanValue(IModel<SupervisorIdea> ideaModel) {
|
||||
return ideaModel.getObject().getFirstMeeting()!=null;
|
||||
}
|
||||
|
||||
};
|
||||
return columns;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
private class FilterForm extends Form<Void> {
|
||||
|
||||
private static final long serialVersionUID = 6581597176580961782L;
|
||||
|
||||
public FilterForm(String id, User user) {
|
||||
super(id);
|
||||
params = new SupervisorIdeaService.FilterParams();
|
||||
|
||||
//FILTERING ON PROJECT CLASS:
|
||||
final FilterFormProjectClass levelFilter = new FilterFormProjectClass("levelFilter", null) {
|
||||
private static final long serialVersionUID = -7758850229259608443L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
if(!getProjectClasses().isEmpty()){
|
||||
params.setLevels(getProjectClasses());
|
||||
}
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
params.setLevels(levelFilter.getProjectClasses());
|
||||
Employee supervisor = supervisorService.findByUser(user);
|
||||
params.setSupervisor(supervisor);
|
||||
add(levelFilter);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -5,9 +5,6 @@
|
||||
</head>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="dialogPanel"></div>
|
||||
</div>
|
||||
<div wicket:id="feedback"></div>
|
||||
<form wicket:id="form">
|
||||
<div class="span-5" wicket:id="levelFilter"></div>
|
||||
|
@ -8,23 +8,21 @@ import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
|
||||
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.EmptyPanel;
|
||||
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.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.datatables.ClickableIconColumn;
|
||||
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
||||
import se.su.dsv.scipro.datatables.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.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||
@ -38,7 +36,6 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
private SupervisorService supervisorService;
|
||||
private GenericDataPanel<SupervisorIdea> genericDataPanel;
|
||||
private SupervisorIdeaService.FilterParams params;
|
||||
private Dialog dialog;
|
||||
|
||||
private static final long serialVersionUID = -9010467449322120267L;
|
||||
|
||||
@ -47,20 +44,9 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
FeedbackPanel feedback = new FeedbackPanel("feedback");
|
||||
feedback.setOutputMarkupId(true);
|
||||
add(feedback);
|
||||
addDialog();
|
||||
addDataTable(supervisor, feedback);
|
||||
add(new FilterForm("form", supervisor));
|
||||
}
|
||||
|
||||
private void addDialog() {
|
||||
dialog = new Dialog("dialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.setWidth(450);
|
||||
dialog.setHeight(600);
|
||||
dialog.add(new EmptyPanel("dialogPanel"));
|
||||
add(dialog);
|
||||
}
|
||||
|
||||
private void addDataTable(final User supervisor, final FeedbackPanel feedback) {
|
||||
add(genericDataPanel = new GenericDataPanel<SupervisorIdea>("dataPanel") {
|
||||
@ -72,6 +58,11 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
return ideaService.findAll(params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize(){
|
||||
return SafeLongToIntService.safeLongToInt(ideaService.count(params));
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericService<SupervisorIdea, Long> getService() {
|
||||
return ideaService;
|
||||
@ -87,29 +78,7 @@ public class SupervisorProjectIdeaOverviewPanel extends Panel {
|
||||
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 ClickableTitleColumn<SupervisorIdea>(Model.of("Title"), "title", "title") {
|
||||
private static final long serialVersionUID = 4667741924987868274L;
|
||||
|
||||
@Override
|
||||
protected void onClick(final IModel<SupervisorIdea> ideaModel,
|
||||
AjaxRequestTarget target) {
|
||||
dialog.replace(new SupervisorIdeaDetailsPanel("dialogPanel", ideaModel){
|
||||
private static final long serialVersionUID = -1970068053928444580L;
|
||||
|
||||
@Override
|
||||
public void updateTarget(AjaxRequestTarget target, SupervisorIdea idea) {
|
||||
dialog.close(target);
|
||||
info("Meeting details saved");
|
||||
ideaModel.setObject(idea);
|
||||
target.addComponent(feedback);
|
||||
}
|
||||
|
||||
});
|
||||
dialog.setTitle("Selected supervisor project idea");
|
||||
target.addComponent(dialog);
|
||||
dialog.open(target);
|
||||
}
|
||||
};
|
||||
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) {
|
||||
|
@ -10,6 +10,7 @@ import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightSupervisorProje
|
||||
import se.su.dsv.scipro.supervisor.pages.AbstractSupervisorProjectIdeaPage;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorInterestPage;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorMyProjectIdeasPage;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorMySupervisorIdeasPage;
|
||||
import se.su.dsv.scipro.supervisor.pages.SupervisorProjectIdeaStartPage;
|
||||
|
||||
public class SupervisorProjectIdeaTabMenuPanel extends AbstractMenuPanel{
|
||||
@ -24,6 +25,7 @@ public class SupervisorProjectIdeaTabMenuPanel extends AbstractMenuPanel{
|
||||
protected List<MenuItem> getItemList() {
|
||||
List<MenuItem> items = new ArrayList<MenuItem>();
|
||||
items.add(new MenuItem("Supervisor project ideas", SupervisorProjectIdeaStartPage.class, MenuHighlightSupervisorProjectIdea.class));
|
||||
items.add(new MenuItem("My matched supervisor project ideas", SupervisorMySupervisorIdeasPage.class));
|
||||
items.add(new MenuItem("Unmatched student project ideas", SupervisorInterestPage.class));
|
||||
items.add(new MenuItem("My matched student project ideas", SupervisorMyProjectIdeasPage.class));
|
||||
return items;
|
||||
|
Loading…
x
Reference in New Issue
Block a user