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();
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user