Merge branch 'ajaxRefactoring' into develop
This commit is contained in:
commit
c684abaabf
src/main/java/se/su/dsv/scipro
@ -3,33 +3,42 @@
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<div wicket:id="detailsDialog">
|
||||
<div wicket:id="dialogContent"></div>
|
||||
</div>
|
||||
<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 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 class="span-5 last">
|
||||
<div class="prepend-top"><input wicket:id="filterButton" type="submit" /></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<div wicket:id="container">
|
||||
<span class="right">Supervisors per page: <select wicket:id="itemsPerPage"></select></span>
|
||||
<div class="span-22 last">
|
||||
<table class="rounded-corner">
|
||||
<thead>
|
||||
@ -49,10 +58,8 @@
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr wicket:id="dataView">
|
||||
<td wicket:id="supervisor"></td>
|
||||
<td><a href="#" wicket:id="detailsLink"><span wicket:id="supervisor"></span></a></td>
|
||||
<td wicket:id="unit"></td>
|
||||
<!--<td wicket:id="targetBachelor"></td>
|
||||
<td wicket:id="targetMaster"></td>-->
|
||||
<td><select wicket:id="targetBachelor"></select></td>
|
||||
<td><select wicket:id="targetMaster"></select></td>
|
||||
<td><span wicket:id="currentBachelor"></span> (<span wicket:id="bachelorDate"></span>)</td>
|
||||
@ -65,7 +72,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div wicket:id="nav"></div>
|
||||
<div class="span-15 last" wicket:id="nav"></div>
|
||||
</div>
|
||||
|
||||
</wicket:panel>
|
||||
|
@ -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;
|
||||
|
||||
@ -16,6 +17,7 @@ import org.apache.wicket.markup.html.form.Form;
|
||||
import org.apache.wicket.markup.html.form.IChoiceRenderer;
|
||||
import org.apache.wicket.markup.html.form.TextField;
|
||||
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
|
||||
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;
|
||||
@ -24,9 +26,12 @@ import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.model.PropertyModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.components.ItemsPerPageChoice;
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
import se.su.dsv.scipro.dataproviders.QueryableDataProvider;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordDao;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordTypeDao;
|
||||
@ -46,7 +51,7 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
private SupervisorDao supervisorDao;
|
||||
|
||||
@SpringBean
|
||||
ProjectClassDao projectClassDao;
|
||||
private ProjectClassDao projectClassDao;
|
||||
|
||||
@SpringBean
|
||||
private KeywordDao keywordDao;
|
||||
@ -55,76 +60,102 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
private KeywordTypeDao keywordTypeDao;
|
||||
|
||||
private WebMarkupContainer container;
|
||||
//private SupervisorDataProvider provider;
|
||||
private Label emptyLabel;
|
||||
private SupervisorDaoParams params;
|
||||
private QueryableDataProvider<Employee, SupervisorDaoParams> provider;
|
||||
|
||||
private Component feedbackPanel;
|
||||
|
||||
private DataView<Employee> dataView;
|
||||
|
||||
private Dialog dialog;
|
||||
|
||||
private ItemsPerPageChoice itemsPerPageChoice;
|
||||
|
||||
public AdminManageSupervisorPanel(String id, final Component feedbackPanel__){
|
||||
super(id);
|
||||
feedbackPanel= feedbackPanel__;
|
||||
dialogSetup();
|
||||
dataViewSetup();
|
||||
FilterForm form = new FilterForm("form");
|
||||
add(form);
|
||||
}
|
||||
|
||||
private void dialogSetup() {
|
||||
dialog = new Dialog("detailsDialog");
|
||||
dialog.setModal(true);
|
||||
dialog.setAutoOpen(false);
|
||||
dialog.setWidth(885);
|
||||
dialog.add(new EmptyPanel("dialogContent"));
|
||||
dialog.setOutputMarkupId(true);
|
||||
add(dialog);
|
||||
}
|
||||
|
||||
private void dataViewSetup(){
|
||||
|
||||
container = new WebMarkupContainer("container");
|
||||
|
||||
//Add info for the user should there be no events to display.
|
||||
emptyLabel = new Label("emptyLabel", "No events to show.");
|
||||
container.add(emptyLabel);
|
||||
emptyLabel = new Label("emptyLabel", "No supervisors matched your search criteria.");
|
||||
emptyLabel.setOutputMarkupId(true); //Needs to be AJAX-enabled.
|
||||
container.setOutputMarkupId(true);
|
||||
//container.add(dataView);
|
||||
add(container);
|
||||
params = new SupervisorDaoParams();
|
||||
updateListView();
|
||||
emptyLabel.setVisible(provider.size()==0); //Rule for the empty label
|
||||
provider = new QueryableDataProvider<Employee, SupervisorDaoParams>(
|
||||
supervisorDao, params);
|
||||
loadUserDataView(provider);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
private void updateListView() {
|
||||
container.removeAll();
|
||||
provider = new QueryableDataProvider<Employee, SupervisorDaoParams>(
|
||||
supervisorDao, params);
|
||||
loadUserDataView(provider);
|
||||
|
||||
|
||||
};
|
||||
};*/
|
||||
|
||||
public void loadUserDataView(IDataProvider<Employee> provider) {
|
||||
DataView<Employee> dataView = new DataView<Employee>("dataView", provider) {
|
||||
dataView = new DataView<Employee>("dataView", provider) {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(final Item<Employee> item) {
|
||||
final Employee supervisor = item.getModelObject();
|
||||
List<Keyword> keywords = supervisor.getKeywords().getFiltered("Unit");
|
||||
List<Keyword> keywords = supervisor.getKeywords().getFiltered(KeywordTypeDao.TYPE.UNIT.toDbName());
|
||||
String unit = "";
|
||||
if (!keywords.isEmpty()) {
|
||||
unit += keywords.get(0).getKeyword();
|
||||
}
|
||||
|
||||
Availability bachelorAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass("BACHELOR"));
|
||||
Availability masterAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass("MASTER"));
|
||||
Availability bachelorAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass(ProjectClass.BACHELOR));
|
||||
Availability masterAvalibality = supervisorDao.getAvailability(supervisor, projectClassDao.getProjectClass(ProjectClass.MASTER));
|
||||
|
||||
item.add(new AdminSupervisorDetailsPanel("supervisor", item.getModel(), feedbackPanel));
|
||||
final AjaxLink<Void> detailsLink = new AjaxLink<Void>("detailsLink") {
|
||||
|
||||
private static final long serialVersionUID = 1340379052190115333L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
dialog.setTitle("Details for: " + supervisor.getNameAsString());
|
||||
dialog.replace(new AdminSupervisorDetailsPanel("dialogContent", item.getModel(), feedbackPanel));
|
||||
target.addComponent(dialog);
|
||||
dialog.open(target);
|
||||
}
|
||||
|
||||
};
|
||||
detailsLink.add(new Label("supervisor", supervisor.getNameAsString()));
|
||||
item.add(detailsLink);
|
||||
item.add(new Label("unit", new Model<String>(unit)));
|
||||
item.add(createDropDown(new Model<Availability>(bachelorAvalibality), "numCapable", "targetBachelor"));
|
||||
item.add(createDropDown(new Model<Availability>(masterAvalibality), "numCapable", "targetMaster"));
|
||||
|
||||
item.add(new Label("currentBachelor", new Model<Integer>((bachelorAvalibality.getNumMatched().intValue()))));
|
||||
if (supervisor.getCountFromDate(projectClassDao.getProjectClass("BACHELOR")) != null) {
|
||||
if (supervisor.getCountFromDate(projectClassDao.getProjectClass(ProjectClass.BACHELOR)) != null) {
|
||||
item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("bachelorDate", supervisor.getCountFromDate(projectClassDao.getProjectClass("BACHELOR"))));
|
||||
} else {
|
||||
item.add(new Label("bachelorDate", "no date"));
|
||||
}
|
||||
|
||||
item.add(new Label("currentMaster", new Model<Integer>(masterAvalibality.getNumMatched().intValue())));
|
||||
if (supervisor.getCountFromDate(projectClassDao.getProjectClass("MASTER")) != null) {
|
||||
if (supervisor.getCountFromDate(projectClassDao.getProjectClass(ProjectClass.MASTER)) != null) {
|
||||
item.add(new DateFormatter(DateFormatter.FORMAT.EXTENDED).createFormattedDateLabel("masterDate", supervisor.getCountFromDate(projectClassDao.getProjectClass("MASTER"))));
|
||||
} else {
|
||||
item.add(new Label("masterDate", "no date"));
|
||||
@ -133,6 +164,21 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
}
|
||||
};
|
||||
dataView.setItemsPerPage(10);
|
||||
emptyLabel.setVisible(dataView.getItemCount()==0);
|
||||
itemsPerPageChoice = new ItemsPerPageChoice("itemsPerPage");
|
||||
itemsPerPageChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
|
||||
|
||||
private static final long serialVersionUID = 4143017524829639803L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
dataView.setItemsPerPage(itemsPerPageChoice.getModelObject());
|
||||
target.addComponent(container);
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
container.add(itemsPerPageChoice);
|
||||
container.add(dataView);
|
||||
container.add(emptyLabel);
|
||||
container.add(new PagingNavigator("nav", dataView));
|
||||
@ -191,7 +237,7 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private TextField<String> supervisorField, keywordField;
|
||||
private FilterFormKeywordPanel unitPanel, researchAreaPanel;
|
||||
private FilterKeywordDropdownPanel researchAreaPanel, unitPanel;
|
||||
|
||||
public FilterForm(String id) {
|
||||
super(id);
|
||||
@ -200,6 +246,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 +258,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,26 +276,24 @@ 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);
|
||||
add(unitPanel);
|
||||
add(researchAreaPanel);
|
||||
|
||||
|
||||
add(filterButton);
|
||||
|
||||
AjaxLink resetAllBachelor = new AjaxLink("resetAllBachelorButton"){
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
supervisorDao.resetCountFromDate(projectClassDao.getProjectClass("BACHELOR"));
|
||||
supervisorDao.resetCountFromDate(projectClassDao.getProjectClass(ProjectClass.BACHELOR));
|
||||
target.addComponent(container);
|
||||
}
|
||||
};
|
||||
@ -253,7 +305,7 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
AjaxLink resetAllMaster = new AjaxLink("resetAllMasterButton"){
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
supervisorDao.resetCountFromDate(projectClassDao.getProjectClass("MASTER"));
|
||||
supervisorDao.resetCountFromDate(projectClassDao.getProjectClass(ProjectClass.MASTER));
|
||||
target.addComponent(container);
|
||||
}
|
||||
};
|
||||
|
@ -2,10 +2,7 @@
|
||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<body>
|
||||
<wicket:panel>
|
||||
<a href="#" wicket:id="dialogLink">
|
||||
<span wicket:id="linkLabel"></span>
|
||||
</a>
|
||||
<div wicket:id="dialog">
|
||||
<div>
|
||||
<a href="#" wicket:id="detailsLink">Project idea details</a>
|
||||
|
|
||||
<a href="#" wicket:id="profileLink">Profile</a>
|
||||
|
@ -3,12 +3,9 @@ package se.su.dsv.scipro.match.panel;
|
||||
import org.apache.wicket.Component;
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
import org.odlabs.wiquery.ui.dialog.Dialog;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.UserDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.Employee;
|
||||
@ -22,18 +19,14 @@ public class AdminSupervisorDetailsPanel extends Panel {
|
||||
|
||||
@SpringBean
|
||||
private UserDao userDao;
|
||||
|
||||
@SpringBean
|
||||
private SupervisorDao supervisorDao;
|
||||
|
||||
|
||||
@SpringBean
|
||||
private UserProfilePanelFactory factory;
|
||||
|
||||
private Panel detailsPanel;
|
||||
private Panel profilePanel;
|
||||
private Panel currentPanel;
|
||||
private Dialog dialog;
|
||||
private AjaxFallbackLink<Void> detailsLink;
|
||||
private AjaxFallbackLink<Void> profileLink;
|
||||
|
||||
@ -43,27 +36,6 @@ public class AdminSupervisorDetailsPanel extends Panel {
|
||||
final User supervisor = userDao.reLoad(model.getObject().getUser());
|
||||
if (supervisor != null) {
|
||||
|
||||
dialog = new Dialog("dialog");
|
||||
|
||||
dialog.setTitle("Details for " + supervisor.getFullName());
|
||||
dialog.setWidth(885);
|
||||
add(dialog);
|
||||
|
||||
AjaxLink<Void> dialogLink = new AjaxLink<Void>("dialogLink") {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
if (target != null) {
|
||||
dialog.open(target);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
dialogLink.add(new Label("linkLabel", supervisor.getFullName()));
|
||||
add(dialogLink);
|
||||
|
||||
detailsPanel = new SupervisedProjectsPanel("mainPanel", model, feedBackPanel);
|
||||
profilePanel = factory.createUserProfilePanelForUser("mainPanel",model.getObject().getUser());
|
||||
currentPanel = detailsPanel;
|
||||
@ -92,7 +64,7 @@ public class AdminSupervisorDetailsPanel extends Panel {
|
||||
}
|
||||
};
|
||||
detailsLink.setOutputMarkupId(true);
|
||||
dialog.add(detailsLink);
|
||||
add(detailsLink);
|
||||
|
||||
profileLink = new AjaxFallbackLink<Void>("profileLink") {
|
||||
|
||||
@ -119,9 +91,9 @@ public class AdminSupervisorDetailsPanel extends Panel {
|
||||
}
|
||||
};
|
||||
profileLink.setOutputMarkupId(true);
|
||||
dialog.add(profileLink);
|
||||
add(profileLink);
|
||||
|
||||
dialog.add(currentPanel);
|
||||
add(currentPanel);
|
||||
} else {
|
||||
this.setVisible(false);
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html
|
||||
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<wicket:panel>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</wicket:panel>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,99 @@
|
||||
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;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.DropDownChoice;
|
||||
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.IModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.spring.injection.annot.SpringBean;
|
||||
|
||||
import se.su.dsv.scipro.icons.ImageObject;
|
||||
import se.su.dsv.scipro.match.dao.interfaces.KeywordDao;
|
||||
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 {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 8862892008428526067L;
|
||||
|
||||
@SpringBean
|
||||
private KeywordDao keywordDao;
|
||||
@SpringBean
|
||||
private KeywordTypeDao keywordTypeDao;
|
||||
|
||||
private List<Keyword> remoteKeywords, selected;
|
||||
|
||||
public FilterKeywordDropdownPanel(String id, KeywordTypeDao.TYPE type) {
|
||||
super(id);
|
||||
final WebMarkupContainer container = new WebMarkupContainer("container");
|
||||
container.setOutputMarkupId(true);
|
||||
|
||||
KeywordType kwType = keywordTypeDao.findByType(type);
|
||||
KeywordDao.Params params = new KeywordDao.Params();
|
||||
params.setType(kwType);
|
||||
params.setIncludeDeleted(true);
|
||||
remoteKeywords = keywordDao.getKeywordList(params);
|
||||
selected = new ArrayList<Keyword>();
|
||||
IModel<Keyword> model = new Model<Keyword>();
|
||||
final DropDownChoice<Keyword> dropdown = new DropDownChoice<Keyword>("dropdown",model, remoteKeywords);
|
||||
dropdown.add(new AjaxFormComponentUpdatingBehavior("onchange"){
|
||||
|
||||
private static final long serialVersionUID = 1027524203735088565L;
|
||||
|
||||
@Override
|
||||
protected void onUpdate(AjaxRequestTarget target) {
|
||||
selected.add(dropdown.getModelObject());
|
||||
target.addComponent(container);
|
||||
}
|
||||
|
||||
});
|
||||
ListView<Keyword> listView = new ListView<Keyword>("listView", selected) {
|
||||
|
||||
private static final long serialVersionUID = -1999361159123892309L;
|
||||
|
||||
@Override
|
||||
protected void populateItem(final ListItem<Keyword> item) {
|
||||
item.add(new Label("name", item.getModelObject().getKeyword()));
|
||||
final ImageObject removeIcon = new ImageObject("removeIcon", ImageObject.SIXTEEN + ImageObject.DELETE);
|
||||
final AjaxLink<Void> remove = new AjaxLink<Void>("removeLink") {
|
||||
|
||||
private static final long serialVersionUID = -5129451036772812285L;
|
||||
|
||||
@Override
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
selected.remove(item.getModelObject());
|
||||
target.addComponent(container);
|
||||
}
|
||||
};
|
||||
remove.add(removeIcon);
|
||||
item.add(remove);
|
||||
add(item);
|
||||
}
|
||||
};
|
||||
;
|
||||
container.add(dropdown);
|
||||
container.add(listView);
|
||||
add(container);
|
||||
}
|
||||
|
||||
public List<Keyword> getSelectedKeywords(){
|
||||
return this.selected;
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
dropdown.nullValid=Choose one or more:
|
||||
dropdown.null=Choose one or more:
|
@ -1,5 +1,6 @@
|
||||
package se.su.dsv.scipro.supervisor.panels;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@ -7,11 +8,11 @@ import java.util.Set;
|
||||
|
||||
import org.apache.wicket.ajax.AjaxRequestTarget;
|
||||
import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
|
||||
import org.apache.wicket.ajax.markup.html.AjaxLink;
|
||||
import org.apache.wicket.markup.html.WebMarkupContainer;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.form.Radio;
|
||||
import org.apache.wicket.markup.html.form.RadioGroup;
|
||||
import org.apache.wicket.markup.html.link.Link;
|
||||
import org.apache.wicket.markup.html.list.ListItem;
|
||||
import org.apache.wicket.markup.html.list.ListView;
|
||||
import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
|
||||
@ -20,9 +21,6 @@ import org.apache.wicket.markup.repeater.data.DataView;
|
||||
import org.apache.wicket.model.CompoundPropertyModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
|
||||
import edu.emory.mathcs.backport.java.util.Arrays;
|
||||
|
||||
import se.su.dsv.scipro.SciProSession;
|
||||
import se.su.dsv.scipro.data.dataobjects.Project;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.enums.ProjectStatus;
|
||||
@ -99,10 +97,11 @@ public class SupervisorProjectsOverviewPanel extends Panel {
|
||||
headerMap.put("dateCreated", "Date created");
|
||||
for(final SortSpecifier spec : dataProvider.getAvailableSortSpecifiers(sortFields)){
|
||||
final String fieldBaseName = spec.getFieldName();
|
||||
final Link<Void> link = new Link<Void>(fieldBaseName+"Sort"){
|
||||
private static final long serialVersionUID = 1L;
|
||||
final AjaxLink<Void> link = new AjaxLink<Void>(fieldBaseName+"Sort"){
|
||||
private static final long serialVersionUID = 2456771709235781591L;
|
||||
|
||||
@Override
|
||||
public void onClick(){
|
||||
public void onClick(AjaxRequestTarget target) {
|
||||
SortSpecifier current = dataProvider.getSortSpecifier();
|
||||
if(!spec.equals(current)){
|
||||
dataProvider.setSortSpecifier(spec);
|
||||
@ -110,8 +109,10 @@ public class SupervisorProjectsOverviewPanel extends Panel {
|
||||
}else{
|
||||
dataProvider.setAscendingOrder(!dataProvider.isAscendingOrder());
|
||||
}
|
||||
target.addComponent(wmc);
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
link.add(new Label(fieldBaseName+"Label",headerMap.get(fieldBaseName)));
|
||||
wmc.add(link);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user