added project status filtering
This commit is contained in:
parent
f268a0ddc2
commit
7b04f29218
src/main/java/se/su/dsv/scipro
@ -6,61 +6,75 @@
|
||||
</head>
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div class="span-22 last" wicket:id="settingsContainer">
|
||||
<label>Title: </label>
|
||||
<div wicket:id="filterStringPanel"></div>
|
||||
<label>Created between: </label>
|
||||
<div wicket:id="filterDatesPanel"></div>
|
||||
<label>Level: </label>
|
||||
<div wicket:id="filterProjectClassPanel"></div>
|
||||
</div>
|
||||
|
||||
<div class="right"><button wicket:id="newLink">Create new project</button></div>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="panel"></div>
|
||||
</div>
|
||||
|
||||
<div class="span-22 last" wicket:id="dataviewContainer">
|
||||
<table class="rounded-corner" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="rounded-left-top"><a href="#" wicket:id="titleSort">Title</a></th>
|
||||
<!-- <th>Title</th> -->
|
||||
<th>Level</th>
|
||||
<th>Author(s)</th>
|
||||
<th>Supervisor</th>
|
||||
<th>Reviewer</th>
|
||||
<th>Status</th>
|
||||
<th class="rounded-right-top">Edit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="7" class="rounded-foot"> </td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody wicket:id="dataview">
|
||||
<tr>
|
||||
<td wicket:id="projectTitle">Other role</td>
|
||||
<td wicket:id="projectLevel">Other role</td>
|
||||
<td wicket:id="authorsLabel">Other role</td>
|
||||
<td wicket:id="headsupervisorLabel">Other role</td>
|
||||
<td wicket:id="reviewerLabel">Other role</td>
|
||||
<td wicket:id="statusLabel">Other role</td>
|
||||
<!-- <td wicket:id="editLabel">Other role</td> -->
|
||||
<td><a href="#" wicket:id="testLink">Edit</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td wicket:id="emptyLabel" colspan="7"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div wicket:id="nav"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="span-22 last" wicket:id="settingsContainer">
|
||||
<label>Title: </label>
|
||||
<div wicket:id="filterStringPanel"></div>
|
||||
<label>Created between: </label>
|
||||
<div wicket:id="filterDatesPanel"></div>
|
||||
|
||||
<div class="span-20">
|
||||
<div class="span-4">
|
||||
<label>Level: </label>
|
||||
<div wicket:id="filterProjectClassPanel"></div>
|
||||
</div>
|
||||
<div class="span-4 last">
|
||||
<label>Status: </label>
|
||||
<div wicket:id="filterProjectStatusPanel"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="right">
|
||||
<button wicket:id="newLink">Create new project</button>
|
||||
</div>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="panel"></div>
|
||||
</div>
|
||||
|
||||
<div class="span-22 last" wicket:id="dataviewContainer">
|
||||
<table class="rounded-corner">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="rounded-left-top"><a href="#"
|
||||
wicket:id="titleSort">Title</a></th>
|
||||
<!-- <th>Title</th> -->
|
||||
<th>Level</th>
|
||||
<th>Author(s)</th>
|
||||
<th>Supervisor</th>
|
||||
<th>Reviewer</th>
|
||||
<th>Status</th>
|
||||
<th class="rounded-right-top">Edit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="7" class="rounded-foot"> </td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody wicket:id="dataview">
|
||||
<tr>
|
||||
<td wicket:id="projectTitle">Other role</td>
|
||||
<td wicket:id="projectLevel">Other role</td>
|
||||
<td wicket:id="authorsLabel">Other role</td>
|
||||
<td wicket:id="headsupervisorLabel">Other role</td>
|
||||
<td wicket:id="reviewerLabel">Other role</td>
|
||||
<td wicket:id="statusLabel">Other role</td>
|
||||
<!-- <td wicket:id="editLabel">Other role</td> -->
|
||||
<td><a href="#" wicket:id="testLink">Edit</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td wicket:id="emptyLabel" colspan="7"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div wicket:id="nav"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -13,18 +13,17 @@ 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.CompoundPropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.admin.pages.ProjectManagementPage;
|
||||
import se.su.dsv.scipro.admin.panels.NewEditProjectPanel;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.Dao.SortableParams.Sort;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.dataproviders.NewProjectDataProvider;
|
||||
import se.su.dsv.scipro.reusable.DatesPanel;
|
||||
import se.su.dsv.scipro.reusable.FilterProjectClassPanel;
|
||||
import se.su.dsv.scipro.reusable.FilterProjectStatusPanel;
|
||||
import se.su.dsv.scipro.reusable.FilterStringPanel;
|
||||
|
||||
public class ProjectManagementPanel extends Panel {
|
||||
@ -181,6 +180,17 @@ public class ProjectManagementPanel extends Panel {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
settingsContainer.add(new FilterProjectStatusPanel("filterProjectStatusPanel"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onUpdateFilter(AjaxRequestTarget target) {
|
||||
params.setProjectStatuses(getSelectedProjectStatuses());
|
||||
ajaxRefresh(target);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private void sortSetup(){
|
||||
|
@ -0,0 +1,17 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<form wicket:id="form">
|
||||
<div wicket:id="list">
|
||||
<div>
|
||||
<span wicket:id="name"></span> <input wicket:id="check"
|
||||
type="checkbox" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,125 @@
|
||||
package se.su.dsv.scipro.reusable;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
|
||||
import se.su.dsv.scipro.data.enums.ProjectStatus;
|
||||
|
||||
public abstract class FilterProjectStatusPanel extends Panel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private ProjectStatusForm form;
|
||||
|
||||
public Collection<ProjectStatus> getSelectedProjectStatuses(){
|
||||
return form.selectedProjectStatuses;
|
||||
}
|
||||
|
||||
public FilterProjectStatusPanel(String id) {
|
||||
super(id);
|
||||
form = new ProjectStatusForm("form");
|
||||
add(form);
|
||||
}
|
||||
|
||||
/**
|
||||
* Override this method to do something.
|
||||
*/
|
||||
public abstract void onUpdateFilter(AjaxRequestTarget target);
|
||||
|
||||
private class ProjectStatusForm extends Form{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Collection<ProjectStatus> selectedProjectStatuses;
|
||||
|
||||
public Collection<ProjectStatus> getSelectedProjectStatuses(){
|
||||
return selectedProjectStatuses;
|
||||
}
|
||||
|
||||
public ProjectStatusForm(String id) {
|
||||
super(id);
|
||||
|
||||
ArrayList<Wrapper> wrapperCollection = new ArrayList<Wrapper>();
|
||||
for (ProjectStatus ps : ProjectStatus.values()){
|
||||
wrapperCollection.add(new Wrapper(ps));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
selectedProjectStatuses = new HashSet<ProjectStatus>();
|
||||
|
||||
ListView<Wrapper> listView = new ListView<Wrapper>("list", wrapperCollection){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
protected void populateItem(ListItem<Wrapper> item) {
|
||||
final Wrapper wrapper = (Wrapper) item.getModelObject();
|
||||
item.add(new Label("name", wrapper.getProjectStatus().toString()));
|
||||
item.add(new AjaxCheckBox("check", new PropertyModel<Boolean>(wrapper, "selected")){
|
||||
private static final long serialVersionUID = 1L;
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
if (getModelObject() == true){
|
||||
|
||||
selectedProjectStatuses.add(wrapper.getProjectStatus());
|
||||
|
||||
onUpdateFilter(target);
|
||||
|
||||
}
|
||||
else if (getModelObject() == false){
|
||||
|
||||
selectedProjectStatuses.remove(wrapper.getProjectStatus());
|
||||
|
||||
onUpdateFilter(target);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
listView.setReuseItems(true);
|
||||
add(listView);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class Wrapper implements Serializable {
|
||||
|
||||
private final ProjectStatus projectStatus;
|
||||
private Boolean selected = Boolean.FALSE;
|
||||
|
||||
public Wrapper(ProjectStatus projectStatus){
|
||||
this.projectStatus = projectStatus;
|
||||
}
|
||||
|
||||
public boolean getSelected(){
|
||||
return selected;
|
||||
}
|
||||
|
||||
public void setSelected(boolean selected){
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
public ProjectStatus getProjectStatus(){
|
||||
return projectStatus;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user