Merge branch 'project' into develop
This commit is contained in:
commit
8602d9e69a
src/main/java/se/su/dsv/scipro
data/dao
project/panels
reusable
@ -5,7 +5,6 @@ import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import se.su.dsv.scipro.data.dataobjects.CheckListTemplate;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.Log;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
@ -98,7 +97,6 @@ public interface ProjectDao extends Dao<Project>{
|
||||
// TODO: private Collection<DSVUnit> units;
|
||||
|
||||
// TODO: private Collection<DSVField> fields;
|
||||
|
||||
|
||||
public Date getDateCreated() {
|
||||
return dateCreated;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package se.su.dsv.scipro.data.dao.jpa;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -516,9 +517,8 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
|
||||
|
||||
private AbstractQuerySet<Project> createQuerySet(ProjectDao.Params params) {
|
||||
return new QuerySet()
|
||||
// .categories(params.getCategories())
|
||||
.filterString(params.getFilterString())
|
||||
// .creator(params.getCreator())
|
||||
.projectClasses(params.getProjectClasses())
|
||||
.createdAfter(params.getCreatedAfter())
|
||||
.createdBefore(params.getCreatedBefore())
|
||||
.sortField(params.getSortField(), params.getDirection())
|
||||
@ -541,6 +541,15 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
|
||||
return this;
|
||||
}
|
||||
|
||||
public QuerySet projectClasses(Collection<ProjectClass> projectClasses) {
|
||||
if (projectClasses != null && !projectClasses.isEmpty()) {
|
||||
getQuery().combine(
|
||||
new Query().where("_.projectClass IN (:projectClasses)")
|
||||
.parameter("projectClasses", projectClasses));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public QuerySet createdBefore(Date createdBefore) {
|
||||
if (createdBefore != null) {
|
||||
getQuery().combine(
|
||||
@ -558,28 +567,6 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
// public QuerySet creator(User user) {
|
||||
// if (user != null) {
|
||||
// getQuery().combine(
|
||||
// new Query()
|
||||
// .where("_.creator = :user")
|
||||
// .parameter("user", user));
|
||||
// }
|
||||
// return this;
|
||||
// }
|
||||
|
||||
// public QuerySet categories(Collection<ChecklistCategory> categories) {
|
||||
// if (categories != null && !categories.isEmpty()) {
|
||||
// getQuery().combine(
|
||||
// new Query()
|
||||
// .join("_.categories c")
|
||||
// .where("c IN (:categories)")
|
||||
// .parameter("categories", categories)
|
||||
// .distinct());
|
||||
// }
|
||||
// return this;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public Query initQuery() {
|
||||
|
@ -11,9 +11,11 @@
|
||||
<div wicket:id="filterStringPanel"></div>
|
||||
<label>Created between: </label>
|
||||
<div wicket:id="filterDatesPanel"></div>
|
||||
<label>Level: </label>
|
||||
<div wicket:id="filterProjectClassPanel"></div>
|
||||
</div>
|
||||
|
||||
<div><button wicket:id="newLink">Create new project</button></div>
|
||||
<div class="right"><button wicket:id="newLink">Create new project</button></div>
|
||||
<div wicket:id="dialog">
|
||||
<div wicket:id="panel"></div>
|
||||
</div>
|
||||
@ -22,14 +24,14 @@
|
||||
<table class="rounded-corner" >
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="#" wicket:id="titleSort">Title</a></th>
|
||||
<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>Edit</th>
|
||||
<th class="rounded-right-top">Edit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
|
@ -24,6 +24,7 @@ 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.FilterStringPanel;
|
||||
|
||||
public class ProjectManagementPanel extends Panel {
|
||||
@ -169,6 +170,17 @@ public class ProjectManagementPanel extends Panel {
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
settingsContainer.add(new FilterProjectClassPanel("filterProjectClassPanel"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onUpdateFilter(AjaxRequestTarget target) {
|
||||
params.setProjectClasses(getSelectedProjectClasses());
|
||||
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,131 @@
|
||||
package se.su.dsv.scipro.reusable;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
|
||||
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 org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
|
||||
public abstract class FilterProjectClassPanel extends Panel{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private ProjectClassForm projectClassForm;
|
||||
|
||||
public FilterProjectClassPanel(String id) {
|
||||
super(id);
|
||||
projectClassForm = new ProjectClassForm("form");
|
||||
add(projectClassForm);
|
||||
}
|
||||
|
||||
public Collection<ProjectClass> getSelectedProjectClasses(){
|
||||
return projectClassForm.getSelectedProjectClasses();
|
||||
}
|
||||
|
||||
/**
|
||||
* Override this method to do something.
|
||||
*/
|
||||
public abstract void onUpdateFilter(AjaxRequestTarget target);
|
||||
|
||||
private class ProjectClassForm extends Form {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@SpringBean
|
||||
private ProjectClassDao projectClassDao;
|
||||
private Collection<ProjectClass> selectedProjectClasses;
|
||||
|
||||
public Collection<ProjectClass> getSelectedProjectClasses(){
|
||||
return selectedProjectClasses;
|
||||
}
|
||||
|
||||
public ProjectClassForm(String id) {
|
||||
super(id);
|
||||
|
||||
ArrayList<Wrapper> wrapperCollection = new ArrayList<Wrapper>();
|
||||
for (ProjectClass pc : projectClassDao.findAll()){
|
||||
wrapperCollection.add(new Wrapper(pc));
|
||||
}
|
||||
|
||||
selectedProjectClasses = new HashSet<ProjectClass>();
|
||||
|
||||
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.getProjectClass().getName()));
|
||||
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){
|
||||
System.out.println("adding" + wrapper.getProjectClass().getName());
|
||||
selectedProjectClasses.add(wrapper.getProjectClass());
|
||||
|
||||
onUpdateFilter(target);
|
||||
|
||||
Iterator<ProjectClass> it = selectedProjectClasses.iterator();
|
||||
while (it.hasNext()) {
|
||||
System.out.println(it.next().getName());
|
||||
}
|
||||
|
||||
}
|
||||
else if (getModelObject() == false){
|
||||
System.out.println("removing" + wrapper.getProjectClass().getName());
|
||||
selectedProjectClasses.remove(wrapper.getProjectClass());
|
||||
|
||||
onUpdateFilter(target);
|
||||
|
||||
Iterator<ProjectClass> it = selectedProjectClasses.iterator();
|
||||
while (it.hasNext()) {
|
||||
System.out.println(it.next().getName());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
listView.setReuseItems(true);
|
||||
add(listView);
|
||||
}
|
||||
}
|
||||
|
||||
private class Wrapper implements Serializable {
|
||||
private final ProjectClass projectClass;
|
||||
private Boolean selected = Boolean.FALSE;
|
||||
|
||||
public Wrapper(ProjectClass projectClass){
|
||||
this.projectClass = projectClass;
|
||||
}
|
||||
|
||||
public boolean getSelected(){
|
||||
return selected;
|
||||
}
|
||||
|
||||
public void setSelected(boolean selected){
|
||||
this.selected = selected;
|
||||
}
|
||||
|
||||
public ProjectClass getProjectClass(){
|
||||
return projectClass;
|
||||
}
|
||||
|
||||
// public void setProjectClass(ProjectClass projectClass){
|
||||
// this.projectClass = projectClass;
|
||||
// }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user