added ajax date filtering to all peers lists
This commit is contained in:
parent
db5d7ce1bb
commit
2592aebdb1
src/main/java/se/su/dsv/scipro
admin/panels
components
peer/panels
FilterFormRequestStatusPanel.htmlFilterFormReviewStatusPanel.htmlPeerRequestListPanel.htmlPeerRequestListPanel.javaPeerReviewListPanel.htmlPeerReviewListPanel.java
springdata
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user