research area and unit filtering on match - supervisor settings now uses new filter panel to save space

This commit is contained in:
Emil Siverhall 2012-03-26 13:43:17 +02:00
parent a1be79e4e5
commit 97e72bb6b4
5 changed files with 45 additions and 36 deletions

@ -5,26 +5,31 @@
<wicket:panel>
<form wicket:id="form">
<h5 class="peer-title append-bottom">Manage supervisors</h5>
<div class="span-22 last">
<div class="span-14">
<label for="supervisorField">Search using supervisor name:</label><br />
<input style="width:300px;" wicket:id="supervisorField" type="text" /><br />
<label for="keywordField">Search on keywords used by supervisor:</label><br />
<input style="width:300px;" wicket:id="keywordField" type="text" />
<div class="span-22 prepend-top append-bottom last">
<div class="span-5">
</div>
<div class="span-8 last">
<label>DO NOT TOUCH unless you know what you're doing!</label>
<div><button wicket:id="resetAllBachelorButton">Reset all supervisor Bachelor count numbers</button></div>
<div><button wicket:id="resetAllMasterButton">Reset all supervisor Master count numbers</button></div>
</div>
<div class="span-20">
<div class="span-8">
<label for="unitPanel">Filter by unit:</label><br />
<span wicket:id="unitPanel"></span>
</div>
<div class="span-5">
<div class="span-10">
<label for="researchAreaPanel">Filter by research area:</label>
<span wicket:id="researchAreaPanel"></span>
</div>
<div class="span-5 last append-bottom">
<label>Filter</label>
</div>
<div class="span-5 last">
<div class="append-bottom"><input wicket:id="filterButton" type="submit" /></div>
<label>DO NOT TOUCH unless you know what you're doing!</label>
<div><button wicket:id="resetAllBachelorButton">Reset all supervisor Bachelor count numbers</button></div>
<div><button wicket:id="resetAllMasterButton">Reset all supervisor Master count numbers</button></div>
</div>
</div>

@ -1,6 +1,7 @@
package se.su.dsv.scipro.match.panel;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ -132,6 +133,7 @@ public class AdminManageSupervisorPanel extends Panel {
}
};
dataView.setItemsPerPage(10);
emptyLabel.setVisible(dataView.getItemCount()==0);
container.add(dataView);
container.add(emptyLabel);
container.add(new PagingNavigator("nav", dataView));
@ -190,8 +192,7 @@ public class AdminManageSupervisorPanel extends Panel {
private static final long serialVersionUID = 1L;
private TextField<String> supervisorField, keywordField;
private FilterFormKeywordPanel unitPanel;
private FilterKeywordDropdownPanel researchAreaPanel;
private FilterKeywordDropdownPanel researchAreaPanel, unitPanel;
public FilterForm(String id) {
super(id);
@ -200,6 +201,11 @@ public class AdminManageSupervisorPanel extends Panel {
add(supervisorField);
add(keywordField);
researchAreaPanel = new FilterKeywordDropdownPanel("researchAreaPanel", KeywordTypeDao.TYPE.RESEARCH_AREA);
unitPanel = new FilterKeywordDropdownPanel("unitPanel", KeywordTypeDao.TYPE.UNIT);
add(unitPanel);
add(researchAreaPanel);
AjaxButton filterButton = new AjaxButton("filterButton", new Model<String>("Filter")) {
private static final long serialVersionUID = 1L;
@ -207,10 +213,13 @@ public class AdminManageSupervisorPanel extends Panel {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
//container.removeAll();
//params = new SupervisorDaoParams();
List<Keyword> keywords = unitPanel.getSelectedKeywords();
keywords.addAll(researchAreaPanel.getSelectedKeywords());
Set<Keyword> keywords = new HashSet<Keyword>();
if(unitPanel.getSelectedKeywords()!=null&&!unitPanel.getSelectedKeywords().isEmpty()){
keywords.addAll(unitPanel.getSelectedKeywords());
}
if(researchAreaPanel.getSelectedKeywords()!=null&&!researchAreaPanel.getSelectedKeywords().isEmpty()) {
keywords.addAll(researchAreaPanel.getSelectedKeywords());
}
KeywordType kwType = keywordTypeDao.findByType(KeywordTypeDao.TYPE.REGULAR);
Set<Keyword> tmpWords = keywordDao.getKeywords(kwType, true);
@ -222,22 +231,17 @@ public class AdminManageSupervisorPanel extends Panel {
if(!keywords.isEmpty()){
params.setKeywords(keywords);
} else {
params.setKeywords(null);
}
params.setNameLike(supervisorField.getModelObject());
emptyLabel.setVisible(dataView.getItemCount()==0); //Rule for the empty label
target.addComponent(container);
/* loadUserDataView(new QueryableDataProvider<Employee, SupervisorDaoParams>(
supervisorDao, params));*/
}
};
unitPanel = new FilterFormKeywordPanel("unitPanel", KeywordTypeDao.TYPE.UNIT);
//researchAreaPanel = new FilterFormKeywordPanel("researchAreaPanel", KeywordTypeDao.TYPE.RESEARCH_AREA);
researchAreaPanel = new FilterKeywordDropdownPanel("researchAreaPanel", KeywordTypeDao.TYPE.RESEARCH_AREA);
add(unitPanel);
add(researchAreaPanel);
add(filterButton);

@ -10,9 +10,8 @@
<div wicket:id="container">
<select wicket:id="dropdown"></select>
<div wicket:id="listView">
<span wicket:id="name"></span><a href="#" wicket:id="removeLink"><img wicket:id="removeIcon" /></a>
<span wicket:id="name"></span>&nbsp;<a href="#" wicket:id="removeLink"><img wicket:id="removeIcon" /></a>
</div>
<!-- <div wicket:id="selectedChoices"></div> -->
</div>
</wicket:panel>
</body>

@ -1,7 +1,9 @@
package se.su.dsv.scipro.match.panel;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
@ -22,6 +24,10 @@ import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
import se.su.dsv.scipro.match.dataobject.Keyword;
import se.su.dsv.scipro.match.dataobject.KeywordType;
/**
* Keyword filtering component that takes a Keyword type in the constructor.
* The component is a multiple choice dropdown, where the selected choices is being rendered underneath the choice component.
*/
public class FilterKeywordDropdownPanel extends Panel {
@ -29,14 +35,11 @@ public class FilterKeywordDropdownPanel extends Panel {
@SpringBean
private KeywordDao keywordDao;
@SpringBean
private KeywordTypeDao keywordTypeDao;
private List<Keyword> remoteKeywords, selected;
private final DropDownChoice<Keyword> dropdown;
public FilterKeywordDropdownPanel(String id, KeywordTypeDao.TYPE type) {
super(id);
final WebMarkupContainer container = new WebMarkupContainer("container");
@ -47,10 +50,9 @@ public class FilterKeywordDropdownPanel extends Panel {
params.setType(kwType);
params.setIncludeDeleted(true);
remoteKeywords = keywordDao.getKeywordList(params);
final List<Keyword> selected = new ArrayList<Keyword>();
selected = new ArrayList<Keyword>();
IModel<Keyword> model = new Model<Keyword>();
dropdown = new DropDownChoice<Keyword>("dropdown",model, remoteKeywords);
//dropdown.setModel(Model.of(keywords.get(0)));
final DropDownChoice<Keyword> dropdown = new DropDownChoice<Keyword>("dropdown",model, remoteKeywords);
dropdown.add(new AjaxFormComponentUpdatingBehavior("onchange"){
private static final long serialVersionUID = 1027524203735088565L;
@ -58,7 +60,6 @@ public class FilterKeywordDropdownPanel extends Panel {
@Override
protected void onUpdate(AjaxRequestTarget target) {
selected.add(dropdown.getModelObject());
System.out.println(selected);
target.addComponent(container);
}
@ -93,6 +94,6 @@ public class FilterKeywordDropdownPanel extends Panel {
}
public List<Keyword> getSelectedKeywords(){
return selected;
return this.selected;
}
}

@ -1,2 +1,2 @@
dropdown.nullValid=Choose research area(s)
dropdown.null=Choose research area(s)
dropdown.nullValid=Choose one or more:
dropdown.null=Choose one or more: