First impl. of sorting on name with spring data api.
This commit is contained in:
parent
5d95b54be6
commit
13428ff5ef
src/main/java/se/su/dsv/scipro/admin/panels/match
@ -18,7 +18,11 @@
|
||||
<table wicket:id="table" class="rounded-corner">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th><th>Research Areas</th><th class="rounded-right-top">Regular keywords</th>
|
||||
<th class="rounded-left-top"><a href="#" wicket:id="nameSortLink">Name</a></th>
|
||||
<th>Research Areas</th>
|
||||
<th class="rounded-right-top">
|
||||
<a href="#" wicket:id="numberOfRegularsSortLink">Regular keywords</a>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -1,7 +1,6 @@
|
||||
package se.su.dsv.scipro.admin.panels.match;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
|
||||
@ -9,21 +8,22 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.markup.repeater.Item;
|
||||
import org.apache.wicket.markup.repeater.data.DataView;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.dataproviders.QueryableDataProvider;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.SupervisorDaoParams;
|
||||
import se.su.dsv.scipro.match.dataobject.Keyword;
|
||||
import se.su.dsv.scipro.springdata.services.SupervisorService;
|
||||
|
||||
public class AdminSupervisorKeywordPanel extends Panel {
|
||||
|
||||
@ -32,6 +32,9 @@ public class AdminSupervisorKeywordPanel extends Panel {
|
||||
@SpringBean
|
||||
private SupervisorDao supervisorDao;
|
||||
|
||||
@SpringBean
|
||||
private SupervisorService supervisorService;
|
||||
|
||||
public AdminSupervisorKeywordPanel(String str) {
|
||||
super(str);
|
||||
Dialog dialog = new Dialog("detailsDialog");
|
||||
@ -39,10 +42,12 @@ public class AdminSupervisorKeywordPanel extends Panel {
|
||||
WebMarkupContainer tableContainer = new WebMarkupContainer("table");
|
||||
SupervisorDaoParams params = new SupervisorDaoParams();
|
||||
params.setSortOn("user.lastName", Sort.ASCENDING);
|
||||
params.setSortOn("keywords.size()", Sort.ASCENDING);
|
||||
TextField<String> supervisorField = new TextField<String>("supervisorField", new Model<String>());
|
||||
setUpTable(dialog, tableContainer, params);
|
||||
setUpFiltering(tableContainer, params, supervisorField);
|
||||
}
|
||||
//addSortLink("numberOfRegulars", "keywords.size()", tableContainer, params);
|
||||
}
|
||||
|
||||
private void setUpFiltering(WebMarkupContainer tableContainer, SupervisorDaoParams params, TextField<String> supervisorField) {
|
||||
FilterForm form = new FilterForm(tableContainer, params, supervisorField);
|
||||
@ -58,15 +63,46 @@ public class AdminSupervisorKeywordPanel extends Panel {
|
||||
dialog.add(new EmptyPanel("dialogContent"));
|
||||
add(dialog.setOutputMarkupId(true));
|
||||
}
|
||||
|
||||
private void addSortLink(String markup, final String sortField, final WebMarkupContainer allContainer, final SupervisorDaoParams params) {
|
||||
final AjaxLink<Void> sortLink = new AjaxLink<Void>(markup + "SortLink") {
|
||||
|
||||
private static final long serialVersionUID = -8463105615994034854L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (params.getDirection().equals(Sort.ASCENDING)) {
|
||||
params.setSortOn(sortField, Sort.DESCENDING);
|
||||
} else {
|
||||
params.setSortOn(sortField, Sort.ASCENDING);
|
||||
}
|
||||
target.addComponent(allContainer);
|
||||
}
|
||||
};
|
||||
allContainer.add(sortLink);
|
||||
}
|
||||
|
||||
private void setUpTable(final Dialog dialog, final WebMarkupContainer tableContainer, final SupervisorDaoParams params) {
|
||||
QueryableDataProvider<Employee, SupervisorDaoParams> provider = new QueryableDataProvider<Employee, SupervisorDaoParams>(supervisorDao, params);
|
||||
DataView<Employee> dataView = new DataView<Employee>("supervisorList", provider, 1000) {
|
||||
final StringBuffer definedSortOrder = new StringBuffer();
|
||||
definedSortOrder.append("user.firstName");
|
||||
final StringBuffer definedSortDirection = new StringBuffer();
|
||||
definedSortDirection.append("ASC");
|
||||
|
||||
|
||||
|
||||
final ListView<Employee> dataView = new ListView<Employee>("supervisorList", new LoadableDetachableModel<List<Employee>>() {
|
||||
private static final long serialVersionUID = -2395796971679213814L;
|
||||
|
||||
@Override
|
||||
protected List<Employee> load() {
|
||||
return supervisorService.findAllEmployees(new org.springframework.data.domain.Sort(definedSortOrder.toString()));
|
||||
}
|
||||
}) {
|
||||
|
||||
private static final long serialVersionUID = 3572766096237883198L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(Item<Employee> item) {
|
||||
protected void populateItem(ListItem<Employee> item) {
|
||||
final Employee supervisor = item.getModelObject();
|
||||
List<Keyword> areaKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.RESEARCH_AREA.toDbName());
|
||||
List<Keyword> regularKeywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.REGULAR.toDbName());
|
||||
@ -98,20 +134,40 @@ public class AdminSupervisorKeywordPanel extends Panel {
|
||||
}
|
||||
};
|
||||
final AjaxLink<Void> nameSortLink = new AjaxLink<Void>("nameSortLink") {
|
||||
|
||||
private static final long serialVersionUID = -6459164267551936706L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if(params.getDirection().equals(Sort.ASCENDING)) {
|
||||
params.setSortOn("user.lastName", Sort.DESCENDING);
|
||||
org.springframework.data.domain.Sort sortOrder;
|
||||
if(definedSortDirection.toString().equals("ASC")) {
|
||||
sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.DESC, "user.lastName");
|
||||
definedSortDirection.delete(0, definedSortDirection.length()-1);
|
||||
definedSortDirection.append("DESC");
|
||||
} else {
|
||||
params.setSortOn("user.lastName", Sort.ASCENDING);
|
||||
sortOrder = new org.springframework.data.domain.Sort(org.springframework.data.domain.Sort.Direction.ASC, "user.lastName");
|
||||
definedSortDirection.delete(0, definedSortDirection.length()-1);
|
||||
definedSortDirection.append("ASC");
|
||||
}
|
||||
dataView.setDefaultModelObject(supervisorService.findAllEmployees(sortOrder));
|
||||
target.addComponent(tableContainer);
|
||||
}
|
||||
};
|
||||
tableContainer.add(nameSortLink);
|
||||
|
||||
final AjaxLink<Void> numberOfRegularsSortLink = new AjaxLink<Void>("numberOfRegularsSortLink") {
|
||||
|
||||
private static final long serialVersionUID = 5809993580126828318L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if(params.getDirection().equals(Sort.ASCENDING)) {
|
||||
params.setSortOn("keywords.size", Sort.DESCENDING);
|
||||
} else {
|
||||
params.setSortOn("keywords.size", Sort.ASCENDING);
|
||||
}
|
||||
target.addComponent(tableContainer);
|
||||
}
|
||||
};
|
||||
tableContainer.add(numberOfRegularsSortLink);
|
||||
tableContainer.add(dataView);
|
||||
add(tableContainer.setOutputMarkupId(true));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user