Merge branch 'develop' of ssh://git.dsv.su.se/git/scipro/scipro into develop
This commit is contained in:
commit
3186597bdc
src/main
java/se/su/dsv/scipro
SciProApplication.java
admin
pages/match
panels
datatables
projectidea
supervisoridea
match/dataobject
project/panels
springdata
serviceimpls
services
supervisor/pages
webapp/css
@ -154,6 +154,7 @@ public class SciProApplication extends RepositoryApplication implements IThemabl
|
||||
mountBookmarkablePage("admin/projectpartner", AdminProjectPartnerPage.class);
|
||||
mountBookmarkablePage("admin/checklist", AdminCheckListPage.class);
|
||||
mountBookmarkablePage("admin/match/projectideas", AdminManageProjectIdeaPage.class);
|
||||
mountBookmarkablePage("admin/match/studentideapopup", AdminIdeaPopupPage.class);
|
||||
mountBookmarkablePage("admin/match/keywords", AdminKeywordPage.class);
|
||||
mountBookmarkablePage("admin/match/exemptions", AdminExemptionPage.class);
|
||||
mountBookmarkablePage("admin/match/supervisors", AdminSupervisorSettingsPage.class);
|
||||
|
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<wicket:remove>
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="../../../../../../webapp/css/scipro.css" />
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="../../../../../../webapp/css/blueprint/screen.css" />
|
||||
</wicket:remove>
|
||||
<body>
|
||||
<wicket:extend>
|
||||
<div wicket:id="matchPanel"></div>
|
||||
</wicket:extend>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,28 @@
|
||||
package se.su.dsv.scipro.admin.pages.match;
|
||||
|
||||
import org.apache.wicket.PageParameters;
|
||||
import org.apache.wicket.markup.html.CSSPackageResource;
|
||||
|
||||
import se.su.dsv.scipro.admin.panels.AdminManualMatchPopupPanel;
|
||||
import se.su.dsv.scipro.basepages.BasePage;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
|
||||
@Authorization(authorizedRoles = { Roles.ADMIN, Roles.SYSADMIN})
|
||||
public class AdminIdeaPopupPage extends BasePage {
|
||||
|
||||
public AdminIdeaPopupPage(){
|
||||
super();
|
||||
setUp();
|
||||
}
|
||||
|
||||
public AdminIdeaPopupPage(PageParameters pp){
|
||||
super(pp);
|
||||
setUp();
|
||||
}
|
||||
|
||||
private void setUp(){
|
||||
add(CSSPackageResource.getHeaderContribution("css/popup.css", "screen, projection"));
|
||||
add(new AdminManualMatchPopupPanel("matchPanel"));
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<!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">
|
||||
<h2>Project ideas submitted by students</h2>
|
||||
<form wicket:id="filterForm">
|
||||
<div class="span-6">
|
||||
<label>Filter by idea title:</label><br />
|
||||
<input type="text" wicket:id="titleFilter" />
|
||||
<br/>
|
||||
<label>Filter by supervisor:</label>
|
||||
<br/>
|
||||
<input wicket:id="supervisorFilter"/>
|
||||
</div>
|
||||
<div class="span-6">
|
||||
<label>Filter by created between:</label><br />
|
||||
<div class="span-6" wicket:id="dateFilter"></div>
|
||||
</div>
|
||||
<div class="span-10">
|
||||
<div class="span-10" wicket:id="unitFilter"></div>
|
||||
<div class="span-10" wicket:id="areaFilter"></div>
|
||||
</div>
|
||||
<div class="span-8 append-bottom">
|
||||
<div wicket:id="statusFilter"></div>
|
||||
</div>
|
||||
</form>
|
||||
<div wicket:id="feedback"></div>
|
||||
<div wicket:id="dataTable"></div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,321 @@
|
||||
package se.su.dsv.scipro.admin.panels;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
|
||||
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.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
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.markup.repeater.Item;
|
||||
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.joda.time.DateTime;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.admin.panels.match.EmployeeAutoCompleteDivPanel;
|
||||
import se.su.dsv.scipro.components.DatePickerPanel;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.datatables.DateColumn;
|
||||
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
|
||||
import se.su.dsv.scipro.match.dataobject.Availability;
|
||||
import se.su.dsv.scipro.match.dataobject.Match;
|
||||
import se.su.dsv.scipro.match.dataobject.Match.Status;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormAreaPanel;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormCheckBoxPanel;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormUnitPanel;
|
||||
import se.su.dsv.scipro.reusable.EmployeeAutoComplete;
|
||||
import se.su.dsv.scipro.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectIdeaService;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||
|
||||
public class AdminManualMatchPopupPanel extends Panel {
|
||||
private static final long serialVersionUID = 4793881695608689835L;
|
||||
|
||||
@SpringBean
|
||||
private ProjectIdeaService projectIdeaService;
|
||||
@SpringBean
|
||||
private SupervisorService supervisorService;
|
||||
@SpringBean
|
||||
private ProjectClassService projectClassService;
|
||||
@SpringBean
|
||||
private MatchDao matchDao;
|
||||
private Availability bachelorAvailability;
|
||||
private Availability masterAvailability;
|
||||
private ProjectIdeaService.FilterParams params;
|
||||
private GenericDataPanel<ProjectIdea> genericDataPanel;
|
||||
|
||||
public AdminManualMatchPopupPanel(String id) {
|
||||
super(id);
|
||||
WebMarkupContainer container = new WebMarkupContainer("container");
|
||||
FeedbackPanel feedback = new FeedbackPanel("feedback");
|
||||
container.setOutputMarkupId(true);
|
||||
feedback.setOutputMarkupId(true);
|
||||
container.add(feedback);
|
||||
container.add(new FilterForm("filterForm"));
|
||||
add(container);
|
||||
|
||||
addDataTable(container, feedback);
|
||||
}
|
||||
|
||||
private void addDataTable(final WebMarkupContainer container, final FeedbackPanel feedback) {
|
||||
final ProjectClass bachelor = projectClassService.getProjectClass(ProjectClass.BACHELOR);
|
||||
final ProjectClass master = projectClassService.getProjectClass(ProjectClass.MASTER);
|
||||
container.add(genericDataPanel = new GenericDataPanel<ProjectIdea>("dataTable") {
|
||||
private static final long serialVersionUID = -8870992640544682269L;
|
||||
|
||||
@Override
|
||||
public Iterator<ProjectIdea> getIterator() {
|
||||
return projectIdeaService.findAll(params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return SafeLongToIntService.safeLongToInt(projectIdeaService.countAll(params));
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericService<ProjectIdea, Long> getService() {
|
||||
return projectIdeaService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSortString() {
|
||||
return "dateCreated";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IColumn[] getColumns() {
|
||||
IColumn[] columns = new IColumn[17];
|
||||
columns[0] = new DateColumn<ProjectIdea>(Model.of("Date created"), "dateCreated", "dateCreated");
|
||||
columns[1] = new PropertyColumn<ProjectIdea>(Model.of("Level"), "projectClass", "projectClass");
|
||||
columns[2] = new PropertyColumn<ProjectIdea>(Model.of("Title"), "title", "title");
|
||||
columns[3] = new PropertyColumn<ProjectIdea>(Model.of("Research area"), "researchArea.title", "researchArea");
|
||||
columns[4] = new PropertyColumn<ProjectIdea>(Model.of("Keywords"), "keywords");
|
||||
columns[5] = new PropertyColumn<ProjectIdea>(Model.of("Authors"), "authors");
|
||||
columns[6] = new PropertyColumn<ProjectIdea>(Model.of("What?"), "watson.what");
|
||||
columns[7] = new PropertyColumn<ProjectIdea>(Model.of("Why?"), "watson.why");
|
||||
columns[8] = new PropertyColumn<ProjectIdea>(Model.of("Theoretically how?"), "watson.theoryHow");
|
||||
columns[9] = new PropertyColumn<ProjectIdea>(Model.of("Practically how?"), "watson.practicalHow");
|
||||
columns[10] = new PropertyColumn<ProjectIdea>(Model.of("Status"), "match.status");
|
||||
columns[11] = new AbstractColumn<ProjectIdea>(Model.of("Matched to")) {
|
||||
private static final long serialVersionUID = 3528926412798195365L;
|
||||
|
||||
@Override
|
||||
public void populateItem(Item<ICellPopulator<ProjectIdea>> item, String s, IModel<ProjectIdea> ideaModel) {
|
||||
final ProjectIdea pi = ideaModel.getObject();
|
||||
item.add(new EmployeeAutoCompleteDivPanel(s, new Model<Employee>(pi.getMatch().getSupervisor())) {
|
||||
private static final long serialVersionUID = -2882302901258128862L;
|
||||
|
||||
@Override
|
||||
public void onNewEmployeeSelection(AjaxRequestTarget target, Employee newSelection) {
|
||||
matchDao.confirmToSuperviseIdea(SciProSession.get().getUser(), newSelection, pi.getMatch());
|
||||
info("Supervisor changed to "+ newSelection.getNameAsString()+ " on idea '"+pi.getTitle()+"'");
|
||||
target.addComponent(feedback);
|
||||
target.addComponent(container);
|
||||
}
|
||||
}.setEnabled(pi.getProject()==null));
|
||||
}
|
||||
};
|
||||
columns[12] = new PropertyColumn<ProjectIdea>(Model.of("Supervisor unit"), "match.supervisor.unit");
|
||||
columns[13] = new AbstractColumn<ProjectIdea>(Model.of("Supervisor target bachelor")){
|
||||
private static final long serialVersionUID = -5738067174876825903L;
|
||||
|
||||
@Override
|
||||
public void populateItem(Item<ICellPopulator<ProjectIdea>> item, String componentId, IModel<ProjectIdea> rowModel) {
|
||||
ProjectIdea idea = rowModel.getObject();
|
||||
if(idea.getMatch().getSupervisor()!=null){
|
||||
Employee supervisor = idea.getMatch().getSupervisor();
|
||||
bachelorAvailability = supervisorService.getAvailability(supervisor, bachelor);
|
||||
item.add(new Label(componentId, bachelorAvailability.getNumCapable()+""));
|
||||
//If target numbers is supposed to be changed through this view, use this instead:
|
||||
//item.add(new EmployeeProjectLimitsInputPanel(componentId, bachelorAvailability, container, feedback));
|
||||
} else {
|
||||
item.add(new Label(componentId,"-"));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
columns[14] = new AbstractColumn<ProjectIdea>(Model.of("Supervisor target master")){
|
||||
private static final long serialVersionUID = -2718705268854089171L;
|
||||
|
||||
@Override
|
||||
public void populateItem(Item<ICellPopulator<ProjectIdea>> item, String componentId, IModel<ProjectIdea> rowModel) {
|
||||
ProjectIdea idea = rowModel.getObject();
|
||||
if(idea.getMatch().getSupervisor()!=null){
|
||||
Employee supervisor = idea.getMatch().getSupervisor();
|
||||
masterAvailability = supervisorService.getAvailability(supervisor, master);
|
||||
item.add(new Label(componentId, masterAvailability.getNumCapable()+""));
|
||||
//If target numbers is supposed to be changed through this view, use this instead:
|
||||
//item.add(new EmployeeProjectLimitsInputPanel(componentId, masterAvailability, container, feedback));
|
||||
} else {
|
||||
item.add(new Label(componentId,"-"));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
columns[15] = new AbstractColumn<ProjectIdea>(Model.of("Supervisor current bachelor")){
|
||||
private static final long serialVersionUID = 7556136224226199136L;
|
||||
|
||||
@Override
|
||||
public void populateItem(Item<ICellPopulator<ProjectIdea>> item, String componentId, IModel<ProjectIdea> rowModel) {
|
||||
ProjectIdea idea = rowModel.getObject();
|
||||
if(idea.getMatch().getSupervisor()!=null){
|
||||
item.add(new Label(componentId, bachelorAvailability.getNumMatched()+""));
|
||||
} else {
|
||||
item.add(new Label(componentId,"-"));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
columns[16] = new AbstractColumn<ProjectIdea>(Model.of("Supervisor current master")){
|
||||
private static final long serialVersionUID = 9196927881074281835L;
|
||||
|
||||
@Override
|
||||
public void populateItem(Item<ICellPopulator<ProjectIdea>> item, String componentId, IModel<ProjectIdea> rowModel) {
|
||||
ProjectIdea idea = rowModel.getObject();
|
||||
if(idea.getMatch().getSupervisor()!=null){
|
||||
item.add(new Label(componentId, masterAvailability.getNumMatched()+""));
|
||||
} else {
|
||||
item.add(new Label(componentId,"-"));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
return columns;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private class FilterForm extends Form<Void> {
|
||||
|
||||
private static final long serialVersionUID = 3583440875631610379L;
|
||||
private String titleString;
|
||||
|
||||
public FilterForm(String id) {
|
||||
super(id);
|
||||
params = new ProjectIdeaService.FilterParams();
|
||||
|
||||
// DATE FILTERING
|
||||
DateTime start = new DateTime();
|
||||
start = start.minusMonths(12);
|
||||
params.setCreatedAfter(start.toDate());
|
||||
params.setCreatedBefore(new Date());
|
||||
final DatePickerPanel datePanel = new DatePickerPanel("dateFilter", start.toDate(), null) {
|
||||
private static final long serialVersionUID = -411662653140866688L;
|
||||
|
||||
@Override
|
||||
public void updateStartDate(AjaxRequestTarget target) {
|
||||
params.setCreatedAfter(getStartDate());
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEndDate(AjaxRequestTarget target) {
|
||||
params.setCreatedBefore(getEndDate());
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
};
|
||||
add(datePanel);
|
||||
|
||||
// SUPERVISOR FILTERING
|
||||
add(new EmployeeAutoComplete("supervisorFilter") {
|
||||
private static final long serialVersionUID = -3364194384925083087L;
|
||||
|
||||
@Override
|
||||
protected void action(AjaxRequestTarget pTarget, Employee newSelection) {
|
||||
params.setSupervisor(newSelection);
|
||||
pTarget.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
});
|
||||
|
||||
// TITLE FILTERING
|
||||
TextField<String> titleField = new TextField<String>("titleFilter", new PropertyModel<String>(this, "titleString"));
|
||||
titleField.add(new OnChangeAjaxBehavior() {
|
||||
private static final long serialVersionUID = -4986728044099984432L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
if(titleString!=null&&titleString.length() >= 3){
|
||||
params.setTitleContains(titleString);
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
} else {
|
||||
params.setTitleContains(null);
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
add(titleField);
|
||||
|
||||
// AREA FILTERING
|
||||
final FilterFormAreaPanel areaFilter = new FilterFormAreaPanel("areaFilter", false) {
|
||||
private static final long serialVersionUID = 8805181785173288876L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
params.setResearchArea(getArea());
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
};
|
||||
add(areaFilter);
|
||||
|
||||
//UNIT FILTERING (based on supervisors unit since no units are connected to ideas
|
||||
final FilterFormUnitPanel unitFilter = new FilterFormUnitPanel("unitFilter", true) {
|
||||
private static final long serialVersionUID = -8806554969942119990L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
if(getOption().equals("None")){
|
||||
params.setUnit(null);
|
||||
params.setNoUnit(true);
|
||||
} else {
|
||||
params.setUnit(getUnit());
|
||||
params.setNoUnit(false);
|
||||
}
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
};
|
||||
add(unitFilter);
|
||||
|
||||
//STATUS FILTERING
|
||||
final List<Match.Status> statusList = Arrays.asList(new Match.Status[]{Match.Status.CONFIRMED, Match.Status.INACTIVE, Match.Status.REFUSED, Match.Status.REJECTED, Match.Status.UNMATCHED});
|
||||
final FilterFormCheckBoxPanel<Match.Status> statusFilter = new FilterFormCheckBoxPanel<Match.Status>("statusFilter", null, "status") {
|
||||
private static final long serialVersionUID = -6425599815722740075L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
if(!getSelection().isEmpty()){
|
||||
params.setStatuses(getSelection());
|
||||
}
|
||||
target.addComponent(genericDataPanel.getWMC()); }
|
||||
|
||||
@Override
|
||||
protected List<Status> choices() {
|
||||
return statusList;
|
||||
}
|
||||
};
|
||||
params.setStatuses(statusFilter.getSelection());
|
||||
add(statusFilter);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -9,13 +9,13 @@
|
||||
|
||||
<div wicket:id="wmc">
|
||||
|
||||
<div><b>Filter by project idea title or supervisor name:</b></div>
|
||||
<div><b>Filter by project idea title or supervisor name:</b><span class="right"><a href="#" target="_blank" wicket:id="popupLink">Open student ideas administration in a new window</a></span></div>
|
||||
<div wicket:id="fsp"></div>
|
||||
<div><b>Filter by dates:</b></div>
|
||||
<div wicket:id="dates"></div>
|
||||
<div><b>Filter by status:</b></div>
|
||||
<div wicket:id="statusPanel"></div>
|
||||
|
||||
|
||||
<!--<div>Filter by title or creator:</div>-->
|
||||
<!--<div wicket:id="filterStringPanel"></div>-->
|
||||
<!--<div><input wicket:id="filterbox" type="checkbox"/> <span wicket:id="filterboxLabel"></span></div>-->
|
||||
|
@ -1,12 +1,15 @@
|
||||
package se.su.dsv.scipro.datatables.projectidea;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
|
||||
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.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.markup.repeater.Item;
|
||||
@ -15,31 +18,30 @@ 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.SciProSession;
|
||||
import se.su.dsv.scipro.admin.pages.match.AdminIdeaPopupPage;
|
||||
import se.su.dsv.scipro.admin.panels.match.EmployeeAutoCompleteDivPanel;
|
||||
import se.su.dsv.scipro.admin.panels.match.ProjectIdeaActionPanel;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.datatables.*;
|
||||
import se.su.dsv.scipro.datatables.ClickableIconColumn;
|
||||
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
||||
import se.su.dsv.scipro.datatables.DateColumn;
|
||||
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
||||
import se.su.dsv.scipro.icons.ImageIcon;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
|
||||
import se.su.dsv.scipro.match.dataobject.Match;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.panel.MatchStatusFilterPanel;
|
||||
import se.su.dsv.scipro.reusable.DatesPanel;
|
||||
import se.su.dsv.scipro.reusable.EmployeeAutoComplete;
|
||||
import se.su.dsv.scipro.reusable.FilterStringPanel;
|
||||
import se.su.dsv.scipro.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.MatchService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectIdeaService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectService;
|
||||
import se.su.dsv.scipro.supervisor.panels.WatsonInfoPanel;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* User: fred
|
||||
* Date: 6/8/12
|
||||
@ -105,6 +107,22 @@ public class ProjectIdeaDataPanel extends Panel {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
//POPUP PAGE LINK
|
||||
wmc.add(new Link<Void>("popupLink"){
|
||||
private static final long serialVersionUID = 1643452640078681127L;
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
setResponsePage(AdminIdeaPopupPage.class);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
wmc.add(dataPanel = new GenericDataPanel<ProjectIdea>("dataTable") {
|
||||
@Override
|
||||
public GenericService getService() {
|
||||
|
@ -94,6 +94,11 @@ public class AdminSupervisorIdeaCrudPanel extends Panel {
|
||||
return "dateCreated";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getSortDirection() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IColumn[] getColumns() {
|
||||
IColumn[] columns = new IColumn[8];
|
||||
|
@ -111,7 +111,7 @@ public class ProjectIdea extends DomainObject {
|
||||
private List<Match> matchHistory = new ArrayList<Match>();
|
||||
|
||||
@OneToOne(optional = true)
|
||||
@QueryInit({"supervisor.user"})
|
||||
@QueryInit({"supervisor.user","supervisor.unit"})
|
||||
private Match match;
|
||||
|
||||
@Override
|
||||
|
@ -26,6 +26,7 @@ import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
|
||||
import se.su.dsv.scipro.match.dataobject.Idea.IdeaStatus;
|
||||
import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormCheckBoxPanel;
|
||||
import se.su.dsv.scipro.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||
@ -96,6 +97,11 @@ public class ProjectIdeaOverviewPanel extends Panel {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return SafeLongToIntService.safeLongToInt(ideaService.countByStatusAndCapabilities(IdeaStatus.WAITING, params));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<SupervisorIdea> getIterator() {
|
||||
return ideaService.findByStatusAndCapabilities(IdeaStatus.WAITING, params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package se.su.dsv.scipro.springdata.serviceimpls;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -22,12 +23,15 @@ import se.su.dsv.scipro.data.dataobjects.GeneralSystemSettings;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectFollower;
|
||||
import se.su.dsv.scipro.data.dataobjects.ResearchArea;
|
||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||
import se.su.dsv.scipro.data.dataobjects.Unit;
|
||||
import se.su.dsv.scipro.data.enums.ProjectTeamMemberRoles;
|
||||
import se.su.dsv.scipro.match.dataobject.Match;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdeaFirstMeeting;
|
||||
import se.su.dsv.scipro.match.dataobject.QProjectIdea;
|
||||
import se.su.dsv.scipro.match.dataobject.QSupervisorIdea;
|
||||
import se.su.dsv.scipro.springdata.repos.ProjectIdeaRepo;
|
||||
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
|
||||
import se.su.dsv.scipro.springdata.services.GeneralSystemSettingsService;
|
||||
@ -97,12 +101,25 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
return projectIdeaRepo.findAll(projectCreated(false).and(isMatchedTo(employee)).and(isMatchStatus(Match.Status.CONFIRMED)), pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ProjectIdea> findAll(FilterParams params, Pageable pageable) {
|
||||
if(params!=null)
|
||||
return projectIdeaRepo.findAll(fromParams(params), pageable);
|
||||
else
|
||||
return projectIdeaRepo.findAll(pageable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectIdea> findIdeasWithoutProjects() {
|
||||
Iterable<ProjectIdea> iterable = projectIdeaRepo.findAll(projectCreated(false).and(isMatchStatus(Match.Status.CONFIRMED)));
|
||||
return constructList(iterable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countAll(FilterParams params) {
|
||||
return projectIdeaRepo.count(fromParams(params));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countByAuthor(Student author) {
|
||||
return projectIdeaRepo.count(isAuthor(author));
|
||||
@ -206,6 +223,28 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
return reloadedIdea;
|
||||
}
|
||||
|
||||
private BooleanBuilder fromParams(FilterParams params) {
|
||||
BooleanBuilder bb = new BooleanBuilder();
|
||||
if(params.getLevels()!=null)
|
||||
bb.and(levelFilter(params.getLevels()));
|
||||
if(params.getStatuses()!=null)
|
||||
bb.and(statusFilter(params.getStatuses()));
|
||||
if(params.getSupervisor()!=null)
|
||||
bb.and(isMatchedTo(params.getSupervisor()));
|
||||
if(params.getCreatedAfter()!=null)
|
||||
bb.and(startedBetween(params.getCreatedAfter(), params.getCreatedBefore()));
|
||||
if(params.getTitleContains()!=null&¶ms.getTitleContains().length()>=3)
|
||||
bb.and(projectIdeaTitleContains(params.getTitleContains()));
|
||||
if(params.getResearchArea()!=null)
|
||||
bb.and(byArea(params.getResearchArea()));
|
||||
if(params.getUnit()!=null)
|
||||
bb.and(bySupervisorUnit(params.getUnit()));
|
||||
if(params.isNoUnit())
|
||||
bb.and(hasNoUnit());
|
||||
System.out.println(bb.getArgs());
|
||||
return bb;
|
||||
}
|
||||
|
||||
private BooleanExpression matchDateAfter(Date matchDateAfter) {
|
||||
if (matchDateAfter!=null)
|
||||
return QProjectIdea.projectIdea.match.dateCreated.after(matchDateAfter);
|
||||
@ -213,6 +252,22 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
return null;
|
||||
}
|
||||
|
||||
private BooleanExpression hasNoUnit() {
|
||||
return QProjectIdea.projectIdea.match.supervisor.unit.isNull();
|
||||
}
|
||||
|
||||
private BooleanExpression byArea(ResearchArea area) {
|
||||
return QProjectIdea.projectIdea.researchArea.eq(area);
|
||||
}
|
||||
|
||||
private BooleanExpression bySupervisorUnit(Unit unit) {
|
||||
return QProjectIdea.projectIdea.match.supervisor.unit.eq(unit);
|
||||
}
|
||||
|
||||
private BooleanExpression startedBetween(Date from, Date to) {
|
||||
return QProjectIdea.projectIdea.dateCreated.between(from, to);
|
||||
}
|
||||
|
||||
private BooleanExpression projectCreated(boolean isCreated) {
|
||||
if(isCreated)
|
||||
return QProjectIdea.projectIdea.project.isNotNull();
|
||||
@ -272,7 +327,26 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private BooleanBuilder statusFilter(Collection<Match.Status> statuses){
|
||||
Set<Match.Status> statusSet = new HashSet<Match.Status>(statuses);
|
||||
return statusFilter(statusSet);
|
||||
}
|
||||
|
||||
private BooleanBuilder levelFilter(Collection<ProjectClass> levels) {
|
||||
BooleanBuilder e = new BooleanBuilder();
|
||||
if(levels!=null && !levels.isEmpty()){
|
||||
for (ProjectClass level : levels) {
|
||||
e.or(isProjectClass(level));
|
||||
}
|
||||
return e;
|
||||
}
|
||||
else {
|
||||
e.and(QProjectIdea.projectIdea.projectClass.isNull());
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
private BooleanExpression isMatchedTo(Employee employee){
|
||||
return QProjectIdea.projectIdea.match.supervisor.eq(employee);
|
||||
}
|
||||
|
@ -530,6 +530,11 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
|
||||
return supervisorIdeaRepo.count(byStatus(status).and(predicateFromParams(params)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countByStatusAndCapabilities(IdeaStatus status, FilterParams params) {
|
||||
return supervisorIdeaRepo.count(byStatus(status).and(capabilityFilter(params.getLevels())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countIdeasWithoutProjects(Employee supervisor) {
|
||||
return supervisorIdeaRepo.count(bySupervisor(supervisor).and(projectCreated(false)).and(byStatus(IdeaStatus.TAKEN).or(byStatus(IdeaStatus.COMPLETED))));
|
||||
|
@ -1,5 +1,7 @@
|
||||
package se.su.dsv.scipro.springdata.services;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@ -9,7 +11,9 @@ import org.springframework.data.domain.Pageable;
|
||||
|
||||
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.Student;
|
||||
import se.su.dsv.scipro.data.dataobjects.Unit;
|
||||
import se.su.dsv.scipro.match.dataobject.Match;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
|
||||
@ -24,9 +28,11 @@ public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, Qu
|
||||
public Page<ProjectIdea> findByMatchedTo(Employee employee, Pageable pageable);
|
||||
public Page<ProjectIdea> findByAuthor(Student author, Pageable pageable);
|
||||
public Page<ProjectIdea> findIdeasWithoutProjects(Employee employee, Pageable pageable);
|
||||
public Page<ProjectIdea> findAll(FilterParams params, Pageable pageable);
|
||||
|
||||
public List<ProjectIdea> findIdeasWithoutProjects();
|
||||
|
||||
public Long countAll(FilterParams params);
|
||||
public Long countByAuthor(Student author);
|
||||
public Long countActiveByAuthor(Student author);
|
||||
public Long count(Set<Match.Status> statusSet, String filterString, Date fromDate, Date toDate);
|
||||
@ -41,4 +47,73 @@ public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, Qu
|
||||
|
||||
public ProjectIdea createProject(ProjectIdea idea);
|
||||
public ProjectIdea saveMeeting(ProjectIdea idea, Date date, String desc);
|
||||
|
||||
public static class FilterParams implements Serializable {
|
||||
private static final long serialVersionUID = 2633928991852477368L;
|
||||
private Date createdAfter;
|
||||
private Date createdBefore;
|
||||
private String titleContains;
|
||||
private Employee supervisor;
|
||||
private ResearchArea researchArea;
|
||||
private Unit unit;
|
||||
private Collection<Match.Status> statuses;
|
||||
private Collection<ProjectClass> levels;
|
||||
private boolean noUnit;
|
||||
|
||||
public void setCreatedAfter(Date createdAfter) {
|
||||
this.createdAfter = createdAfter;
|
||||
}
|
||||
public Date getCreatedAfter() {
|
||||
return createdAfter;
|
||||
}
|
||||
public void setCreatedBefore(Date createdBefore) {
|
||||
this.createdBefore = createdBefore;
|
||||
}
|
||||
public Date getCreatedBefore() {
|
||||
return createdBefore;
|
||||
}
|
||||
public void setTitleContains(String titleContains) {
|
||||
this.titleContains = titleContains;
|
||||
}
|
||||
public String getTitleContains() {
|
||||
return titleContains;
|
||||
}
|
||||
public void setSupervisor(Employee supervisor) {
|
||||
this.supervisor = supervisor;
|
||||
}
|
||||
public Employee getSupervisor() {
|
||||
return supervisor;
|
||||
}
|
||||
public void setResearchArea(ResearchArea researchArea) {
|
||||
this.researchArea = researchArea;
|
||||
}
|
||||
public ResearchArea getResearchArea() {
|
||||
return researchArea;
|
||||
}
|
||||
public void setUnit(Unit unit) {
|
||||
this.unit = unit;
|
||||
}
|
||||
public Unit getUnit() {
|
||||
return unit;
|
||||
}
|
||||
public void setNoUnit(boolean noUnit) {
|
||||
this.noUnit = noUnit;
|
||||
}
|
||||
public boolean isNoUnit() {
|
||||
return noUnit;
|
||||
}
|
||||
public void setStatuses(Collection<Match.Status> statuses) {
|
||||
this.statuses = statuses;
|
||||
}
|
||||
public Collection<Match.Status> getStatuses() {
|
||||
return statuses;
|
||||
}
|
||||
public void setLevels(Collection<ProjectClass> levels) {
|
||||
this.levels = levels;
|
||||
}
|
||||
public Collection<ProjectClass> getLevels() {
|
||||
return levels;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ public interface SupervisorIdeaService extends GenericService<SupervisorIdea, Lo
|
||||
Long countIdeas(IdeaStatus status, Employee supervisor, ProjectClass pc);
|
||||
Long count(FilterParams params);
|
||||
Long countByStatusAndParams(IdeaStatus status, FilterParams params);
|
||||
Long countByStatusAndCapabilities(IdeaStatus status, FilterParams params);
|
||||
Long countIdeasWithoutProjects(Employee supervisor);
|
||||
|
||||
void saveSupervisorCreatedIdea(SupervisorIdea idea, Employee creator, SortedSet<Student> students, ResearchArea researchArea, Set<Keyword> keywords, boolean newIdea);
|
||||
|
@ -11,7 +11,13 @@
|
||||
</div>
|
||||
|
||||
<!--<div class="prepend-top span-24">-->
|
||||
<div>
|
||||
<div class="prepend-top">
|
||||
<form wicket:id="filterForm">
|
||||
<div class="span-24">
|
||||
<div class="span-6" wicket:id="levelFilter"></div>
|
||||
<div class="span-10" wicket:id="areaFilter"></div>
|
||||
</div>
|
||||
</form>
|
||||
<div wicket:id="dataPanel"></div>
|
||||
</div>
|
||||
</wicket:extend>
|
||||
|
@ -1,12 +1,15 @@
|
||||
package se.su.dsv.scipro.supervisor.pages;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
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.form.Form;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
@ -18,17 +21,21 @@ import org.springframework.data.domain.PageRequest;
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.components.menuhighlighting.MenuHighlightSupervisorProjectIdea;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
|
||||
import se.su.dsv.scipro.datatables.ClickableTitleColumn;
|
||||
import se.su.dsv.scipro.datatables.GenericDataPanel;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.MatchDao;
|
||||
import se.su.dsv.scipro.match.dataobject.Match;
|
||||
import se.su.dsv.scipro.match.dataobject.ProjectIdea;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormAreaPanel;
|
||||
import se.su.dsv.scipro.match.panel.FilterFormCheckBoxPanel;
|
||||
import se.su.dsv.scipro.reusable.SafeLongToIntService;
|
||||
import se.su.dsv.scipro.security.auth.Authorization;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.springdata.services.EmployeeService;
|
||||
import se.su.dsv.scipro.springdata.services.GenericService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectClassService;
|
||||
import se.su.dsv.scipro.springdata.services.ProjectIdeaService;
|
||||
import se.su.dsv.scipro.supervisor.panels.WatsonInfoPanel;
|
||||
|
||||
@ -42,7 +49,10 @@ public class SupervisorAllStudentIdeasPage extends AbstractSupervisorProjectIdea
|
||||
@SpringBean
|
||||
private MatchDao matchDao;
|
||||
@SpringBean
|
||||
private SafeLongToIntService safeLongToIntService;
|
||||
private ProjectClassService projectClassService;
|
||||
|
||||
private ProjectIdeaService.FilterParams params;
|
||||
private GenericDataPanel<ProjectIdea> genericDataPanel;
|
||||
private Dialog dialog;
|
||||
|
||||
public SupervisorAllStudentIdeasPage(final PageParameters pp) {
|
||||
@ -58,10 +68,12 @@ public class SupervisorAllStudentIdeasPage extends AbstractSupervisorProjectIdea
|
||||
dialog.add(new EmptyPanel("watson"));
|
||||
dialog.add(new EmptyPanel("interestLink"));
|
||||
add(dialog);
|
||||
add(new FilterForm("filterForm"));
|
||||
add(genericDataPanel = new GenericDataPanel<ProjectIdea>("dataPanel") {
|
||||
private static final long serialVersionUID = 3608529853945788462L;
|
||||
|
||||
add(new GenericDataPanel<ProjectIdea>("dataPanel") {
|
||||
@Override
|
||||
public GenericService getService() {
|
||||
@Override
|
||||
public GenericService<ProjectIdea, Long> getService() {
|
||||
return projectIdeaService;
|
||||
}
|
||||
|
||||
@ -76,13 +88,17 @@ public class SupervisorAllStudentIdeasPage extends AbstractSupervisorProjectIdea
|
||||
columns = new IColumn[5];
|
||||
columns[0] = new PropertyColumn<ScheduleTemplate>(Model.of("Level"), "projectClass", "projectClass");
|
||||
columns[1] = new ClickableTitleColumn<ProjectIdea>(Model.of("Title"), "title", "title") {
|
||||
@Override
|
||||
private static final long serialVersionUID = -1262998078334461130L;
|
||||
|
||||
@Override
|
||||
protected void onClick(final IModel<ProjectIdea> clicked, AjaxRequestTarget target) {
|
||||
dialog.replace(new WatsonInfoPanel("watson", clicked.getObject(), false));
|
||||
|
||||
AjaxLink<Void> interestLink;
|
||||
dialog.replace(interestLink = new AjaxLink<Void>("interestLink") {
|
||||
@Override
|
||||
private static final long serialVersionUID = -4096126257468826185L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
Employee supervisor = employeeService.findByUser(getUser());
|
||||
matchDao.confirmToSuperviseIdea(getUser(), supervisor, clicked.getObject().getMatch());
|
||||
@ -107,16 +123,61 @@ public class SupervisorAllStudentIdeasPage extends AbstractSupervisorProjectIdea
|
||||
|
||||
@Override
|
||||
public Iterator<ProjectIdea> getIterator() {
|
||||
return projectIdeaService.find(Match.Status.UNMATCHED, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
//return projectIdeaService.find(Match.Status.UNMATCHED, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
return projectIdeaService.findAll(params, new PageRequest(getTable().getCurrentPage(), getTable().getRowsPerPage(), getSort())).iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return safeLongToIntService.safeLongToInt(projectIdeaService.countProjectIdeaByMatchStatus(Match.Status.UNMATCHED));
|
||||
return SafeLongToIntService.safeLongToInt(projectIdeaService.countAll(params));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private class FilterForm extends Form<Void> {
|
||||
private static final long serialVersionUID = -5617866782172392049L;
|
||||
|
||||
public FilterForm(String id) {
|
||||
super(id);
|
||||
params = new ProjectIdeaService.FilterParams();
|
||||
//ONLY TAKE UNMATCHED IDEAS IN PARAMS
|
||||
List<Match.Status> unmatched = Arrays.asList(new Match.Status[]{Match.Status.UNMATCHED});
|
||||
params.setStatuses(unmatched);
|
||||
//PROJECT LEVEL FILTERING
|
||||
final FilterFormCheckBoxPanel<ProjectClass> levelFilter = new FilterFormCheckBoxPanel<ProjectClass>("levelFilter", null, "level") {
|
||||
private static final long serialVersionUID = -6477237173142198302L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
if (!getSelection().isEmpty()) {
|
||||
params.setLevels(getSelection());
|
||||
}
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ProjectClass> choices() {
|
||||
return projectClassService.findAllActive();
|
||||
}
|
||||
};
|
||||
params.setLevels(levelFilter.getSelection());
|
||||
add(levelFilter);
|
||||
|
||||
//RESEARCH AREA FILTERING
|
||||
final FilterFormAreaPanel areaFilter = new FilterFormAreaPanel("areaFilter", false) {
|
||||
private static final long serialVersionUID = 2213213403070359265L;
|
||||
|
||||
@Override
|
||||
public void ajaxUpdate(AjaxRequestTarget target) {
|
||||
params.setResearchArea(getArea());
|
||||
target.addComponent(genericDataPanel.getWMC());
|
||||
}
|
||||
};
|
||||
add(areaFilter);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
2
src/main/webapp/css/popup.css
Normal file
2
src/main/webapp/css/popup.css
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
.container {width:2500px;margin:0;}
|
Loading…
x
Reference in New Issue
Block a user