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:
Emil Siverhall 2012-03-26 15:02:56 +02:00
parent 97e72bb6b4
commit f2a7405354
5 changed files with 66 additions and 49 deletions

@ -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);
}