ItEr60S18CambiosPantallaArbolPedido: Performance improvements in Order window
* Speed up loading time of 'Order' by 2x aprox * Speed up loading time of 'Order Element Tree' by 5x aprox
This commit is contained in:
parent
e3cb41434b
commit
4bb7e1ffd4
2 changed files with 65 additions and 40 deletions
|
|
@ -93,6 +93,7 @@ import org.zkoss.zul.SimpleListModel;
|
|||
import org.zkoss.zul.Tab;
|
||||
import org.zkoss.zul.Tabbox;
|
||||
import org.zkoss.zul.Tabpanel;
|
||||
import org.zkoss.zul.Tree;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.Vbox;
|
||||
import org.zkoss.zul.api.Listbox;
|
||||
|
|
@ -177,6 +178,8 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
|
||||
private Window editWindow;
|
||||
|
||||
private Window editOrderElementWindow;
|
||||
|
||||
private Window listWindow;
|
||||
|
||||
private Tab selectedTab;
|
||||
|
|
@ -237,29 +240,36 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
.getFellow("checkIncludeOrderElements");
|
||||
}
|
||||
|
||||
private void addEditWindowIfNeeded() {
|
||||
private void initEditOrderElementWindow() {
|
||||
final Component parent = listWindow.getParent();
|
||||
|
||||
Map<String, Object> editOrderElementArgs = new HashMap<String, Object>();
|
||||
editOrderElementArgs.put("top_id", "editOrderElement");
|
||||
editOrderElementWindow = (Window) Executions.createComponents(
|
||||
"/orders/_editOrderElement.zul", parent, editOrderElementArgs);
|
||||
|
||||
Util.createBindingsFor(editOrderElementWindow);
|
||||
Util.reloadBindings(editOrderElementWindow);
|
||||
}
|
||||
|
||||
private void addEditWindow() {
|
||||
if (editWindow != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
listWindow.setVisible(false);
|
||||
cachedOnlyOneVisible = null;
|
||||
|
||||
Map<String, Object> editWindowArgs = new HashMap<String, Object>();
|
||||
editWindowArgs.put("top_id", editWindowArgs);
|
||||
Component parent = listWindow.getParent();
|
||||
listWindow.setVisible(false);
|
||||
cachedOnlyOneVisible = null;
|
||||
editWindow = (Window) Executions.createComponents(
|
||||
"/orders/_edition.zul",
|
||||
parent, editWindowArgs);
|
||||
"/orders/_edition.zul", parent, editWindowArgs);
|
||||
|
||||
bindListOrderStatusSelectToOnStatusChange();
|
||||
Map<String, Object> editOrderElementArgs = new HashMap<String, Object>();
|
||||
editOrderElementArgs.put("top_id", "editOrderElement");
|
||||
Component editOrderElement = Executions.createComponents(
|
||||
"/orders/_editOrderElement.zul",
|
||||
parent, editOrderElementArgs);
|
||||
|
||||
Util.createBindingsFor(editWindow);
|
||||
Util.reloadBindings(editWindow);
|
||||
Util.createBindingsFor(editOrderElement);
|
||||
Util.reloadBindings(editOrderElement);
|
||||
}
|
||||
|
||||
private void bindListOrderStatusSelectToOnStatusChange() {
|
||||
|
|
@ -274,26 +284,44 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
|
||||
public void setupOrderElementTreeController() throws Exception {
|
||||
if (!confirmLastTab())
|
||||
if (!confirmLastTab()) {
|
||||
return;
|
||||
}
|
||||
setCurrentTab();
|
||||
|
||||
if (orderElementTreeController == null) {
|
||||
// Create order element edit window
|
||||
OrderElementController orderElementController = new OrderElementController();
|
||||
if (editOrderElementWindow == null) {
|
||||
initEditOrderElementWindow();
|
||||
}
|
||||
orderElementController.doAfterCompose(self
|
||||
.getFellow("editOrderElement"));
|
||||
|
||||
// Prepare tree, attach edit window to tree
|
||||
orderElementTreeController = new OrderElementTreeController(
|
||||
orderModel, orderElementController, messagesForUser);
|
||||
|
||||
TreeComponent orderElementsTree = (TreeComponent) editWindow
|
||||
.getFellow("orderElementTree");
|
||||
orderElementTreeController.setTreeComponent(orderElementsTree);
|
||||
orderElementsTree.useController(orderElementTreeController);
|
||||
orderElementTreeController.setReadOnly(readOnly);
|
||||
redraw(orderElementsTree);
|
||||
|
||||
setTreeRenderer(orderElementsTree);
|
||||
reloadTree(orderElementsTree);
|
||||
}
|
||||
}
|
||||
|
||||
private void reloadTree(TreeComponent orderElementsTree) {
|
||||
final Tree tree = (Tree) orderElementsTree.getFellowIfAny("tree");
|
||||
tree.setModel(orderElementTreeController.getTreeModel());
|
||||
}
|
||||
|
||||
private void setTreeRenderer(TreeComponent orderElementsTree) {
|
||||
final Tree tree = (Tree) orderElementsTree.getFellowIfAny("tree");
|
||||
tree.setTreeitemRenderer(orderElementTreeController.getRenderer());
|
||||
}
|
||||
|
||||
/*
|
||||
* Operations to do before to change the selected tab
|
||||
*/
|
||||
|
|
@ -311,11 +339,6 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void redraw(Component comp) {
|
||||
Util.createBindingsFor(comp);
|
||||
Util.reloadBindings(comp);
|
||||
}
|
||||
|
||||
private IOrderElementModel getOrderElementModel() {
|
||||
final Order order = (Order) orderModel.getOrder();
|
||||
return orderModel.getOrderElementModel(order);
|
||||
|
|
@ -493,7 +516,7 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
return (Order) orderModel.getOrder();
|
||||
}
|
||||
|
||||
public void saveAndContinue() {
|
||||
public void saveAndContinue() {
|
||||
Order order = (Order) orderModel.getOrder();
|
||||
final boolean isNewObject = order.isNewObject();
|
||||
setCurrentTab();
|
||||
|
|
@ -527,7 +550,7 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void saveAndExit() {
|
||||
|
|
@ -538,7 +561,7 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean save() {
|
||||
private boolean save() {
|
||||
if (manageOrderElementAdvancesController != null) {
|
||||
selectTab("tabAdvances");
|
||||
if (!manageOrderElementAdvancesController.save()) {
|
||||
|
|
@ -759,25 +782,29 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
|
||||
public void initEdit(Order order) {
|
||||
if(orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName())) {
|
||||
orderModel.initEdit(order);
|
||||
addEditWindowIfNeeded();
|
||||
initialStatus = order.getState();
|
||||
updateDisabilitiesOnInterface();
|
||||
showEditWindow(_("Edit order"));
|
||||
}
|
||||
else {
|
||||
if (!orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName())) {
|
||||
try {
|
||||
Messagebox.show(_("You don't have read access to this order"),
|
||||
Messagebox.show(_("Sorry, you do not have permissions to access this order"),
|
||||
_("Information"), Messagebox.OK, Messagebox.INFORMATION);
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
if (editWindow != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
orderModel.initEdit(order);
|
||||
addEditWindow();
|
||||
initialStatus = order.getState();
|
||||
updateDisabilitiesOnInterface();
|
||||
showEditWindow(_("Edit order"));
|
||||
}
|
||||
|
||||
|
||||
private void showEditWindow(String title) {
|
||||
addEditWindowIfNeeded();
|
||||
addEditWindow();
|
||||
initializeTabs();
|
||||
editWindow.setTitle(title);
|
||||
showWindow(editWindow);
|
||||
|
|
@ -798,14 +825,14 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
Util.createBindingsFor(tabPanel);
|
||||
Util.reloadBindings(tabPanel);
|
||||
}
|
||||
|
||||
|
||||
private void initializeTabs() {
|
||||
final IOrderElementModel orderElementModel = getOrderElementModel();
|
||||
|
||||
if(orderElementTreeController != null){
|
||||
if (orderElementTreeController != null){
|
||||
TreeComponent orderElementsTree = (TreeComponent) editWindow
|
||||
.getFellow("orderElementTree");
|
||||
redraw(orderElementsTree);
|
||||
.getFellow("orderElementTree");
|
||||
reloadTree(orderElementsTree);
|
||||
}
|
||||
if (assignedHoursController != null) {
|
||||
assignedHoursController.openWindow(orderElementModel);
|
||||
|
|
|
|||
|
|
@ -48,8 +48,6 @@
|
|||
<tree id="tree" height="440px" multiple="false" droppable="true"
|
||||
onDrop="treeController.move(self, event.dragged)"
|
||||
onSelect="treeController.updateControlButtons(event)"
|
||||
model="@{treeController.treeModel}"
|
||||
treeitemRenderer="@{treeController.renderer}" pageSize="10"
|
||||
sclass="orderTree"
|
||||
zclass="z-dottree">
|
||||
<treecols sizable="true">
|
||||
|
|
@ -59,4 +57,4 @@
|
|||
</tree>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</zk>
|
||||
</zk>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue