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();
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);
}

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

@ -8,7 +8,7 @@
<wicket:panel>
<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="statusView">
<input type="checkbox" wicket:id="statusCheckBox"></input>

@ -8,7 +8,7 @@
<wicket:panel>
<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="statusView">
<input type="checkbox" wicket:id="statusCheckBox"></input>

@ -6,15 +6,17 @@
<div class="span-24 prepend-top last">
<form wicket:id="form">
<div class="span-6">
<label>Filter by requesting author:</label>
<div class="span-5">
<label>Filter by requesting author</label>
<br />
<input wicket:id="filterAuthor" />
<br />
</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">
<label>Show only my projects:</label>
<label>Show only my projects</label>
<br />
<input type="checkbox" wicket:id="supervisorCheckBox" />
<br />

@ -3,6 +3,7 @@
*/
package se.su.dsv.scipro.peer.panels;
import java.util.Date;
import java.util.Iterator;
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.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.joda.time.DateTime;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
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.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student;
@ -137,6 +140,28 @@ public class PeerRequestListPanel extends Panel {
};
params.setStatuses(statusFilter.getSelectedStatuses());
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>()) {
private static final long serialVersionUID = -7624763782876907386L;

@ -6,15 +6,17 @@
<div class="span-24 prepend-top last">
<form wicket:id="form">
<div class="span-6">
<label>Filter by reviewing author:</label>
<div class="span-5">
<label>Filter by reviewing author</label>
<br/>
<input wicket:id="filterAuthor"/>
<br/>
</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">
<label>Show only my projects:</label>
<label>Show only my projects</label>
<br>
<input type="checkbox" wicket:id="supervisorCheckBox"/>
<br>

@ -3,6 +3,7 @@
*/
package se.su.dsv.scipro.peer.panels;
import java.util.Date;
import java.util.Iterator;
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.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.joda.time.DateTime;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
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.data.dataobjects.Employee;
import se.su.dsv.scipro.data.dataobjects.Student;
@ -159,6 +162,27 @@ public class PeerReviewListPanel extends Panel {
}
};
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>()) {
private static final long serialVersionUID = -6475334474261478489L;

@ -2,6 +2,7 @@ package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
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){
BooleanBuilder e = new BooleanBuilder();
if(statuses!=null && !statuses.isEmpty()){
@ -150,7 +158,8 @@ public class PeerRequestServiceImpl extends AbstractQueryService<PeerRequest, Lo
private Predicate predicateFromParams(FilterParams params) {
return isRequester(params.getAuthor())
.and(statusFilter(params.getStatuses()))
.and(supervisorIs(params.getSupervisor()));
.and(supervisorIs(params.getSupervisor()))
.and(createdBetween(params.getCreatedAfter(), params.getCreatedBefore()));
}
@Transactional ( readOnly = false )

@ -1,6 +1,7 @@
package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@ -55,7 +56,8 @@ public class PeerReviewServiceImpl extends AbstractQueryService<PeerReview, Long
private Predicate predicateFromParams(FilterParams params) {
return reviewerIs(params.getAuthor())
.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){
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.
private List<PeerReview> constructList(Iterable<PeerReview> reviews) {

@ -2,6 +2,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 org.springframework.data.domain.Page;
@ -36,6 +37,8 @@ public interface PeerRequestService extends GenericService<PeerRequest, Long>, Q
private Employee supervisor;
private Student author;
private Collection<RequestStatus> statuses;
private Date createdAfter;
private Date createdBefore;
public void setSupervisor(Employee supervisor) {
this.supervisor = supervisor;
@ -55,6 +58,18 @@ public interface PeerRequestService extends GenericService<PeerRequest, Long>, Q
public Student getAuthor() {
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;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springframework.data.domain.Page;
@ -39,6 +40,8 @@ public interface PeerReviewService extends GenericService<PeerReview, Long>, Que
private boolean includeCompleted;
private boolean includeAborted;
private boolean includeInProgress;
private Date createdAfter;
private Date createdBefore;
public void setIncludeCompleted(boolean includeCompleted) {
this.includeCompleted = includeCompleted;
@ -80,5 +83,21 @@ public interface PeerReviewService extends GenericService<PeerReview, Long>, Que
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;
}
}
}