added ajax date filtering to all peers lists

This commit is contained in:
Emil Siverhall 2012-05-28 10:56:06 +02:00
parent db5d7ce1bb
commit 2592aebdb1
12 changed files with 138 additions and 19 deletions

@ -144,7 +144,19 @@ public class AdminMailPanel extends Panel {
DateTime start = new DateTime(); DateTime start = new DateTime();
start = start.minusMonths(6); start = start.minusMonths(6);
dpp = new DatePickerPanel("datePanel", start.toDate(), null); dpp = new DatePickerPanel("datePanel", start.toDate(), null) {
private static final long serialVersionUID = 8199436051263013307L;
@Override
public void updateStartDate(AjaxRequestTarget target) {
updateUserSet(target);
}
@Override
public void updateEndDate(AjaxRequestTarget target) {
updateUserSet(target);
}
};
add(dpp); add(dpp);
} }

@ -11,11 +11,7 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
public abstract class DatePickerPanel extends Panel{
public class DatePickerPanel extends Panel{
private static final long serialVersionUID = -5607127520132313062L; private static final long serialVersionUID = -5607127520132313062L;
@ -74,6 +70,7 @@ public class DatePickerPanel extends Panel{
@Override @Override
protected void onUpdate(AjaxRequestTarget target) { protected void onUpdate(AjaxRequestTarget target) {
setStartDate(startDtf.getModelObject()); setStartDate(startDtf.getModelObject());
updateStartDate(target);
} }
}; };
@ -85,7 +82,7 @@ public class DatePickerPanel extends Panel{
@Override @Override
protected void onUpdate(AjaxRequestTarget target) { protected void onUpdate(AjaxRequestTarget target) {
setEndDate(endDtf.getModelObject()); setEndDate(endDtf.getModelObject());
updateEndDate(target);
} }
}; };
@ -128,4 +125,8 @@ public class DatePickerPanel extends Panel{
//model.getObject().setEndDate(dpm.getEndDate()); //model.getObject().setEndDate(dpm.getEndDate());
endDtf.setModelObject(dpm.getEndDate()); endDtf.setModelObject(dpm.getEndDate());
} }
public abstract void updateStartDate(AjaxRequestTarget target);
public abstract void updateEndDate(AjaxRequestTarget target);
} }

@ -8,7 +8,7 @@
<wicket:panel> <wicket:panel>
<div wicket:id="container"> <div wicket:id="container">
<label for="checkGroup">Filter by status:</label> <label for="checkGroup">Filter by status</label>
<div wicket:id="checkGroup"> <div wicket:id="checkGroup">
<div wicket:id="statusView"> <div wicket:id="statusView">
<input type="checkbox" wicket:id="statusCheckBox"></input> <input type="checkbox" wicket:id="statusCheckBox"></input>

@ -8,7 +8,7 @@
<wicket:panel> <wicket:panel>
<div wicket:id="container"> <div wicket:id="container">
<label for="checkGroup">Filter by status:</label> <label for="checkGroup">Filter by status</label>
<div wicket:id="checkGroup"> <div wicket:id="checkGroup">
<div wicket:id="statusView"> <div wicket:id="statusView">
<input type="checkbox" wicket:id="statusCheckBox"></input> <input type="checkbox" wicket:id="statusCheckBox"></input>

@ -6,15 +6,17 @@
<div class="span-24 prepend-top last"> <div class="span-24 prepend-top last">
<form wicket:id="form"> <form wicket:id="form">
<div class="span-6"> <div class="span-5">
<label>Filter by requesting author:</label> <label>Filter by requesting author</label>
<br /> <br />
<input wicket:id="filterAuthor" /> <input wicket:id="filterAuthor" />
<br /> <br />
</div> </div>
<div class="span-6" wicket:id="statusFilter"></div> <div class="span-5" wicket:id="statusFilter"></div>
<label>Request created between</label><br />
<div class="span-6" wicket:id="datePanel"></div>
<div class="span-10" wicket:id="supervisorContainer"> <div class="span-10" wicket:id="supervisorContainer">
<label>Show only my projects:</label> <label>Show only my projects</label>
<br /> <br />
<input type="checkbox" wicket:id="supervisorCheckBox" /> <input type="checkbox" wicket:id="supervisorCheckBox" />
<br /> <br />

@ -3,6 +3,7 @@
*/ */
package se.su.dsv.scipro.peer.panels; package se.su.dsv.scipro.peer.panels;
import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.AjaxRequestTarget;
@ -22,10 +23,12 @@ import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import org.joda.time.DateTime;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.components.DatePickerPanel;
import se.su.dsv.scipro.components.ItemsPerPageChoice; import se.su.dsv.scipro.components.ItemsPerPageChoice;
import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student; import se.su.dsv.scipro.data.dataobjects.Student;
@ -137,6 +140,28 @@ public class PeerRequestListPanel extends Panel {
}; };
params.setStatuses(statusFilter.getSelectedStatuses()); params.setStatuses(statusFilter.getSelectedStatuses());
add(statusFilter); add(statusFilter);
DateTime start = new DateTime();
start = start.minusMonths(12);
params.setCreatedAfter(start.toDate());
params.setCreatedBefore(new Date());
final DatePickerPanel datePanel = new DatePickerPanel("datePanel", start.toDate(), null) {
private static final long serialVersionUID = 1502923890365050302L;
@Override
public void updateStartDate(AjaxRequestTarget target) {
params.setCreatedAfter(getStartDate());
updateTarget(target, params);
}
@Override
public void updateEndDate(AjaxRequestTarget target) {
params.setCreatedBefore(getEndDate());
updateTarget(target, params);
}
};
add(datePanel);
final AjaxCheckBox supervisorProjects = new AjaxCheckBox("supervisorCheckBox", new Model<Boolean>()) { final AjaxCheckBox supervisorProjects = new AjaxCheckBox("supervisorCheckBox", new Model<Boolean>()) {
private static final long serialVersionUID = -7624763782876907386L; private static final long serialVersionUID = -7624763782876907386L;

@ -6,15 +6,17 @@
<div class="span-24 prepend-top last"> <div class="span-24 prepend-top last">
<form wicket:id="form"> <form wicket:id="form">
<div class="span-6"> <div class="span-5">
<label>Filter by reviewing author:</label> <label>Filter by reviewing author</label>
<br/> <br/>
<input wicket:id="filterAuthor"/> <input wicket:id="filterAuthor"/>
<br/> <br/>
</div> </div>
<div class="span-6" wicket:id="statusFilter"></div> <div class="span-5" wicket:id="statusFilter"></div>
<label>Review commenced between</label><br />
<div class="span-6" wicket:id="datePanel"></div>
<div class="span-10" wicket:id="supervisorContainer"> <div class="span-10" wicket:id="supervisorContainer">
<label>Show only my projects:</label> <label>Show only my projects</label>
<br> <br>
<input type="checkbox" wicket:id="supervisorCheckBox"/> <input type="checkbox" wicket:id="supervisorCheckBox"/>
<br> <br>

@ -3,6 +3,7 @@
*/ */
package se.su.dsv.scipro.peer.panels; package se.su.dsv.scipro.peer.panels;
import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import org.apache.wicket.PageParameters; import org.apache.wicket.PageParameters;
@ -23,10 +24,12 @@ import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel; import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model; import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringBean;
import org.joda.time.DateTime;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.SciProSession;
import se.su.dsv.scipro.components.DatePickerPanel;
import se.su.dsv.scipro.components.ItemsPerPageChoice; import se.su.dsv.scipro.components.ItemsPerPageChoice;
import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student; import se.su.dsv.scipro.data.dataobjects.Student;
@ -159,6 +162,27 @@ public class PeerReviewListPanel extends Panel {
} }
}; };
add(statusFilter); add(statusFilter);
DateTime start = new DateTime();
start = start.minusMonths(12);
params.setCreatedAfter(start.toDate());
params.setCreatedBefore(new Date());
final DatePickerPanel datePanel = new DatePickerPanel("datePanel", start.toDate(), null) {
private static final long serialVersionUID = -411662653140866688L;
@Override
public void updateStartDate(AjaxRequestTarget target) {
params.setCreatedAfter(getStartDate());
updateTarget(target, params);
}
@Override
public void updateEndDate(AjaxRequestTarget target) {
params.setCreatedBefore(getEndDate());
updateTarget(target, params);
}
};
add(datePanel);
final AjaxCheckBox supervisorProjects = new AjaxCheckBox("supervisorCheckBox", new Model<Boolean>()) { final AjaxCheckBox supervisorProjects = new AjaxCheckBox("supervisorCheckBox", new Model<Boolean>()) {
private static final long serialVersionUID = -6475334474261478489L; private static final long serialVersionUID = -6475334474261478489L;

@ -2,6 +2,7 @@ package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -132,6 +133,13 @@ public class PeerRequestServiceImpl extends AbstractQueryService<PeerRequest, Lo
} }
} }
private BooleanExpression createdBetween(Date from, Date to) {
if(from!=null&to!=null)
return QPeerRequest.peerRequest.dateCreated.between(from, to);
else
return null;
}
private BooleanBuilder statusFilter(Collection<RequestStatus> statuses){ private BooleanBuilder statusFilter(Collection<RequestStatus> statuses){
BooleanBuilder e = new BooleanBuilder(); BooleanBuilder e = new BooleanBuilder();
if(statuses!=null && !statuses.isEmpty()){ if(statuses!=null && !statuses.isEmpty()){
@ -150,7 +158,8 @@ public class PeerRequestServiceImpl extends AbstractQueryService<PeerRequest, Lo
private Predicate predicateFromParams(FilterParams params) { private Predicate predicateFromParams(FilterParams params) {
return isRequester(params.getAuthor()) return isRequester(params.getAuthor())
.and(statusFilter(params.getStatuses())) .and(statusFilter(params.getStatuses()))
.and(supervisorIs(params.getSupervisor())); .and(supervisorIs(params.getSupervisor()))
.and(createdBetween(params.getCreatedAfter(), params.getCreatedBefore()));
} }
@Transactional ( readOnly = false ) @Transactional ( readOnly = false )

@ -1,6 +1,7 @@
package se.su.dsv.scipro.springdata.serviceimpls; package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -55,7 +56,8 @@ public class PeerReviewServiceImpl extends AbstractQueryService<PeerReview, Long
private Predicate predicateFromParams(FilterParams params) { private Predicate predicateFromParams(FilterParams params) {
return reviewerIs(params.getAuthor()) return reviewerIs(params.getAuthor())
.and(statusFilter(params.isIncludeCompleted(), params.isIncludeAborted(), params.isIncludeInProgress())) .and(statusFilter(params.isIncludeCompleted(), params.isIncludeAborted(), params.isIncludeInProgress()))
.and(supervisorIs(params.getSupervisor())); .and(supervisorIs(params.getSupervisor()))
.and(startedBetween(params.getCreatedAfter(), params.getCreatedBefore()));
} }
@ -181,6 +183,14 @@ public class PeerReviewServiceImpl extends AbstractQueryService<PeerReview, Long
private BooleanExpression isSubmitted(boolean isSubmitted){ private BooleanExpression isSubmitted(boolean isSubmitted){
return QPeerReview.peerReview.submitted.eq(isSubmitted); return QPeerReview.peerReview.submitted.eq(isSubmitted);
} }
private BooleanExpression startedBetween(Date from, Date to) {
if(from!=null&&to!=null) {
return QPeerReview.peerReview.dateCreated.between(from, to);
}
else
return null;
}
//Construct a list from Iterable Object. //Construct a list from Iterable Object.
private List<PeerReview> constructList(Iterable<PeerReview> reviews) { private List<PeerReview> constructList(Iterable<PeerReview> reviews) {

@ -2,6 +2,7 @@ package se.su.dsv.scipro.springdata.services;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@ -36,6 +37,8 @@ public interface PeerRequestService extends GenericService<PeerRequest, Long>, Q
private Employee supervisor; private Employee supervisor;
private Student author; private Student author;
private Collection<RequestStatus> statuses; private Collection<RequestStatus> statuses;
private Date createdAfter;
private Date createdBefore;
public void setSupervisor(Employee supervisor) { public void setSupervisor(Employee supervisor) {
this.supervisor = supervisor; this.supervisor = supervisor;
@ -55,6 +58,18 @@ public interface PeerRequestService extends GenericService<PeerRequest, Long>, Q
public Student getAuthor() { public Student getAuthor() {
return author; return author;
} }
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;
}
} }
} }

@ -1,6 +1,7 @@
package se.su.dsv.scipro.springdata.services; package se.su.dsv.scipro.springdata.services;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@ -39,6 +40,8 @@ public interface PeerReviewService extends GenericService<PeerReview, Long>, Que
private boolean includeCompleted; private boolean includeCompleted;
private boolean includeAborted; private boolean includeAborted;
private boolean includeInProgress; private boolean includeInProgress;
private Date createdAfter;
private Date createdBefore;
public void setIncludeCompleted(boolean includeCompleted) { public void setIncludeCompleted(boolean includeCompleted) {
this.includeCompleted = includeCompleted; this.includeCompleted = includeCompleted;
@ -80,5 +83,21 @@ public interface PeerReviewService extends GenericService<PeerReview, Long>, Que
return author; return author;
} }
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;
}
} }
} }