fixed bug that made dialog close when sorting project dataview. a lot of refactoring of the use of dialogs to make the page load much faster
This commit is contained in:
parent
97e72bb6b4
commit
f2a7405354
src/main/java/se/su/dsv/scipro
@ -3,6 +3,9 @@
|
||||
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">
|
||||
@ -35,6 +38,7 @@
|
||||
|
||||
</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>
|
||||
@ -54,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>
|
||||
@ -70,7 +72,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div wicket:id="nav"></div>
|
||||
<div class="span-15 last" wicket:id="nav"></div>
|
||||
</div>
|
||||
|
||||
</wicket:panel>
|
||||
|
@ -17,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;
|
||||
@ -25,7 +26,9 @@ 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;
|
||||
@ -65,21 +68,35 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
|
||||
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 supervisors matched your search criteria.");
|
||||
//container.add(emptyLabel);
|
||||
emptyLabel.setOutputMarkupId(true); //Needs to be AJAX-enabled.
|
||||
container.setOutputMarkupId(true);
|
||||
add(container);
|
||||
@ -111,7 +128,21 @@ public class AdminManageSupervisorPanel extends Panel {
|
||||
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"));
|
||||
@ -134,6 +165,20 @@ 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));
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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