diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/FilterFormRequestStatusPanel.java b/src/main/java/se/su/dsv/scipro/peer/panels/FilterFormRequestStatusPanel.java index 29c10cada5..402929a339 100644 --- a/src/main/java/se/su/dsv/scipro/peer/panels/FilterFormRequestStatusPanel.java +++ b/src/main/java/se/su/dsv/scipro/peer/panels/FilterFormRequestStatusPanel.java @@ -3,6 +3,8 @@ package se.su.dsv.scipro.peer.panels; import java.util.ArrayList; import java.util.List; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Check; @@ -15,7 +17,7 @@ import org.apache.wicket.model.CompoundPropertyModel; import se.su.dsv.scipro.peer.enums.RequestStatus; -public class FilterFormRequestStatusPanel extends Panel { +public abstract class FilterFormRequestStatusPanel extends Panel { private static final long serialVersionUID = 8862892008428526067L; @@ -50,6 +52,14 @@ public class FilterFormRequestStatusPanel extends Panel { }; checkGroup.add(statusView); checkGroup.setOutputMarkupId(true); + checkGroup.add(new AjaxFormChoiceComponentUpdatingBehavior(){ + + @Override + protected void onUpdate(AjaxRequestTarget target) { + ajaxUpdate(target); + } + + }); container.add(checkGroup); add(container); } @@ -65,4 +75,6 @@ public class FilterFormRequestStatusPanel extends Panel { public List<RequestStatus> getSelectedStatuses(){ return (List<RequestStatus>) checkGroup.getModelObject(); } + + public abstract void ajaxUpdate(AjaxRequestTarget target); } diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.html b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.html index 568640d52a..318374e249 100644 --- a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.html +++ b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.html @@ -6,10 +6,12 @@ <div class="span-24 prepend-top last"> <form wicket:id="form"> + <div class="span-6"> <label>Filter by requesting author:</label> <br /> <input wicket:id="filterAuthor" /> <br /> + </div> <div class="span-6" wicket:id="statusFilter"></div> <div class="span-10" wicket:id="supervisorContainer"> <label>Show only my projects:</label> @@ -17,9 +19,6 @@ <input type="checkbox" wicket:id="supervisorCheckBox" /> <br /> </div> - <div class="span-20 append-bottom"> - <input wicket:id="filterButton" type="submit" value="Filter" /> - </div> </form> <div class="span-24"> <span class="left">Requests found: <span wicket:id="countLabel"></span></span> diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java index cf7f391732..06e4f9f10c 100644 --- a/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java +++ b/src/main/java/se/su/dsv/scipro/peer/panels/PeerRequestListPanel.java @@ -7,7 +7,7 @@ import java.util.Iterator; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.ajax.markup.html.form.AjaxButton; +import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox; import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackHeadersToolbar; import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; @@ -16,7 +16,6 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColu import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; import org.apache.wicket.markup.html.basic.EnclosureContainer; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.AbstractReadOnlyModel; @@ -121,40 +120,50 @@ public class PeerRequestListPanel extends Panel { @Override protected void action(AjaxRequestTarget pTarget, Student newSelection) { params.setAuthor(newSelection); + updateTarget(pTarget, params); } }; add(authorField); - final FilterFormRequestStatusPanel statusFilter = new FilterFormRequestStatusPanel("statusFilter"); + final FilterFormRequestStatusPanel statusFilter = new FilterFormRequestStatusPanel("statusFilter") { + private static final long serialVersionUID = -6601997321551916230L; + + @Override + public void ajaxUpdate(AjaxRequestTarget target) { + if(!getSelectedStatuses().isEmpty()){ + params.setStatuses(getSelectedStatuses()); + } + updateTarget(target, params); + } + }; + params.setStatuses(statusFilter.getSelectedStatuses()); add(statusFilter); - final CheckBox supervisorProjects = new CheckBox("supervisorCheckBox", new Model<Boolean>()); + final AjaxCheckBox supervisorProjects = new AjaxCheckBox("supervisorCheckBox", new Model<Boolean>()) { + private static final long serialVersionUID = -7624763782876907386L; + + @Override + protected void onUpdate(AjaxRequestTarget target) { + if(this.getModelObject()){ + Employee supervisor = supervisorService.findByUser(SciProSession.get().getUser()); + params.setSupervisor(supervisor); + } else { + params.setSupervisor(null); + } + updateTarget(target, params); + } + + }; supervisorProjects.setDefaultModelObject(false); supervisorProjects.setVisible(isSupervisorView); EnclosureContainer cont = new EnclosureContainer("supervisorContainer", supervisorProjects); cont.add(supervisorProjects); add(cont); - - - add(new AjaxButton("filterButton") { //button to click for performing overriden method - private static final long serialVersionUID = 1L; - @Override - protected void onSubmit(AjaxRequestTarget target, Form<?> form) { - if(authorField.getInput().equals("")) - params.setAuthor(null); - if(!statusFilter.getSelectedStatuses().isEmpty()){ - params.setStatuses(statusFilter.getSelectedStatuses()); - } - if(supervisorProjects.getModelObject()){ - Employee supervisor = supervisorService.findByUser(SciProSession.get().getUser()); - params.setSupervisor(supervisor); - } else { - params.setSupervisor(null); - } - dataProvider.setFilterParams(params); - target.addComponent(table); - target.addComponent(countLabel); - } - }); - } + } + + private void updateTarget(AjaxRequestTarget pTarget, FilterParams params) { + dataProvider.setFilterParams(params); + pTarget.addComponent(table); + pTarget.addComponent(countLabel); + } } private class PeerRequestProvider extends SortableDataProvider<PeerRequest> { diff --git a/src/main/java/se/su/dsv/scipro/peer/panels/PeerReviewListPanel.html b/src/main/java/se/su/dsv/scipro/peer/panels/PeerReviewListPanel.html index a25813b0f0..b601ba03ce 100644 --- a/src/main/java/se/su/dsv/scipro/peer/panels/PeerReviewListPanel.html +++ b/src/main/java/se/su/dsv/scipro/peer/panels/PeerReviewListPanel.html @@ -12,8 +12,8 @@ <input wicket:id="filterAuthor"/> <br/> </div> - <div class="span-4" wicket:id="statusFilter"></div> - <div class="span-4" wicket:id="supervisorContainer"> + <div class="span-6" wicket:id="statusFilter"></div> + <div class="span-10" wicket:id="supervisorContainer"> <label>Show only my projects:</label> <br> <input type="checkbox" wicket:id="supervisorCheckBox"/> diff --git a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerRequestServiceImpl.java b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerRequestServiceImpl.java index 68004bc200..3f84e8a8a8 100644 --- a/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerRequestServiceImpl.java +++ b/src/main/java/se/su/dsv/scipro/springdata/serviceimpls/PeerRequestServiceImpl.java @@ -15,7 +15,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import se.su.dsv.scipro.SciProSession; import se.su.dsv.scipro.data.dataobjects.Employee; import se.su.dsv.scipro.data.dataobjects.Project; import se.su.dsv.scipro.data.dataobjects.ProjectClass; @@ -30,7 +29,6 @@ import se.su.dsv.scipro.springdata.services.PeerRequestService; import com.mysema.query.BooleanBuilder; import com.mysema.query.jpa.JPQLQuery; -import com.mysema.query.jpa.hibernate.HibernateQuery; import com.mysema.query.jpa.impl.JPAQuery; import com.mysema.query.types.Predicate; import com.mysema.query.types.expr.BooleanExpression;