Merge branch 'allStudentIdeasFiltering' into develop
This commit is contained in:
commit
cb1a88da0e
src/main/java/se/su/dsv/scipro
springdata
supervisor/pages
@ -31,6 +31,7 @@ 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;
|
||||
@ -224,6 +225,8 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
|
||||
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)
|
||||
@ -238,6 +241,7 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
bb.and(bySupervisorUnit(params.getUnit()));
|
||||
if(params.isNoUnit())
|
||||
bb.and(hasNoUnit());
|
||||
System.out.println(bb.getArgs());
|
||||
return bb;
|
||||
}
|
||||
|
||||
@ -329,6 +333,20 @@ public class ProjectIdeaServiceImpl extends AbstractQueryService<ProjectIdea, Lo
|
||||
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);
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, Qu
|
||||
private ResearchArea researchArea;
|
||||
private Unit unit;
|
||||
private Collection<Match.Status> statuses;
|
||||
private Collection<ProjectClass> levels;
|
||||
private boolean noUnit;
|
||||
|
||||
public void setCreatedAfter(Date createdAfter) {
|
||||
@ -107,6 +108,12 @@ public interface ProjectIdeaService extends GenericService<ProjectIdea,Long>, Qu
|
||||
public Collection<Match.Status> getStatuses() {
|
||||
return statuses;
|
||||
}
|
||||
public void setLevels(Collection<ProjectClass> levels) {
|
||||
this.levels = levels;
|
||||
}
|
||||
public Collection<ProjectClass> getLevels() {
|
||||
return levels;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user