diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java index 589e5224f..b75fc4b19 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/tabs/MultipleTabsPlannerController.java @@ -34,6 +34,7 @@ import org.navalplanner.web.planner.CompanyPlanningController; import org.navalplanner.web.planner.IOrderPlanningGate; import org.navalplanner.web.planner.OrderPlanningController; import org.navalplanner.web.planner.tabs.CreatedOnDemandTab.IComponentCreator; +import org.navalplanner.web.resourceload.ResourceLoadController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -52,7 +53,6 @@ import org.zkoss.zk.ui.util.Composer; import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zul.Button; import org.zkoss.zul.Div; -import org.zkoss.zul.Label; /** * Creates and handles several tabs @@ -118,6 +118,9 @@ public class MultipleTabsPlannerController implements Composer { @Autowired private OrderPlanningController orderPlanningController; + @Autowired + private ResourceLoadController resourceLoadController; + private IComponentCreator ordersTabCreator = new IComponentCreator() { private org.zkoss.zk.ui.Component result; @@ -228,16 +231,32 @@ public class MultipleTabsPlannerController implements Composer { } private ITab createOrderResourcesLoadTab() { - return new CreatedOnDemandTab(RESOURCE_LOAD_VIEW, new IComponentCreator() { + IComponentCreator componentCreator = new IComponentCreator() { @Override public org.zkoss.zk.ui.Component create( org.zkoss.zk.ui.Component parent) { - return withUpAndDownButton(new Label( - "on resource load view. mode: " - + mode.getType())); + Map arguments = new HashMap(); + arguments.put("resourceLoadController", + resourceLoadController); + return Executions.createComponents( + "/resourceload/_resourceloadfororder.zul", + parent, + arguments); } - }); + }; + return new CreatedOnDemandTab(RESOURCE_LOAD_VIEW, componentCreator) { + private Order currentOrder; + + @Override + protected void afterShowAction() { + if (mode.isOf(ModeType.ORDER) + && mode.getOrder() != currentOrder) { + currentOrder = mode.getOrder(); + resourceLoadController.filterBy(currentOrder); + } + } + }; } private ITab createGlobalResourcesLoadTab() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java index 696384549..ba6479603 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java @@ -22,7 +22,7 @@ package org.navalplanner.web.resourceload; import java.util.List; -import org.navalplanner.web.planner.PlanningState; +import org.navalplanner.business.orders.entities.Order; import org.zkoss.ganttz.data.resourceload.LoadTimelinesGroup; import org.zkoss.ganttz.util.Interval; @@ -30,7 +30,7 @@ public interface IResourceLoadModel { void initGlobalView(); - void initGlobalView(PlanningState filterBy); + void initGlobalView(Order filterBy); List getLoadTimeLines(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java index 120f307ad..dad538e56 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java @@ -25,7 +25,7 @@ import java.util.Arrays; import java.util.List; import org.apache.commons.lang.Validate; -import org.navalplanner.web.planner.PlanningState; +import org.navalplanner.business.orders.entities.Order; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -33,7 +33,7 @@ import org.springframework.stereotype.Component; import org.zkoss.ganttz.resourceload.ResourcesLoadPanel; import org.zkoss.ganttz.resourceload.ResourcesLoadPanel.IToolbarCommand; import org.zkoss.ganttz.timetracker.TimeTracker; -import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zk.ui.util.Composer; /** * Controller for global resourceload view @@ -41,14 +41,14 @@ import org.zkoss.zk.ui.util.GenericForwardComposer; */ @Component @Scope(BeanDefinition.SCOPE_PROTOTYPE) -public class ResourceLoadController extends GenericForwardComposer { +public class ResourceLoadController implements Composer { @Autowired private IResourceLoadModel resourceLoadModel; private List commands = new ArrayList(); - private PlanningState filterBy; + private Order filterBy; public ResourceLoadController() { } @@ -80,7 +80,7 @@ public class ResourceLoadController extends GenericForwardComposer { new TimeTracker(resourceLoadModel.getViewInterval())); } - public void filterBy(PlanningState planningState) { - this.filterBy = planningState; + public void filterBy(Order order) { + this.filterBy = order; } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java index b055fcab6..dc94400fe 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java @@ -34,6 +34,8 @@ import java.util.Map; import java.util.Set; import java.util.Map.Entry; +import org.navalplanner.business.orders.daos.IOrderDAO; +import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.daos.IResourceAllocationDAO; import org.navalplanner.business.planner.entities.GenericResourceAllocation; import org.navalplanner.business.planner.entities.ResourceAllocation; @@ -43,7 +45,6 @@ import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.Resource; -import org.navalplanner.web.planner.PlanningState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -61,13 +62,16 @@ public class ResourceLoadModel implements IResourceLoadModel { @Autowired private IResourceDAO resourcesDAO; + @Autowired + private IOrderDAO orderDAO; + @Autowired private IResourceAllocationDAO resourceAllocationDAO; private List loadTimeLines; private Interval viewInterval; - private PlanningState filterBy; + private Order filterBy; @Override @Transactional(readOnly = true) @@ -82,8 +86,9 @@ public class ResourceLoadModel implements IResourceLoadModel { @Override @Transactional(readOnly = true) - public void initGlobalView(PlanningState filterBy) { + public void initGlobalView(Order filterBy) { this.filterBy = filterBy; + orderDAO.save(filterBy); initGlobalView(); } @@ -105,7 +110,7 @@ public class ResourceLoadModel implements IResourceLoadModel { if (filter()) { return resourceAllocationDAO .findGenericAllocationsByCriterionFor(justTasks(filterBy - .getTasksToSave())); + .getAssociatedTasks())); } else { return resourceAllocationDAO.findGenericAllocationsByCriterion(); @@ -125,9 +130,8 @@ public class ResourceLoadModel implements IResourceLoadModel { } private List resourcesForActiveTasks() { - filterBy.reassociateResourcesWithSession(resourcesDAO); - return resourcesDAO - .findResourcesRelatedTo(justTasks(filterBy.getTasksToSave())); + return resourcesDAO.findResourcesRelatedTo(justTasks(filterBy + .getAssociatedTasks())); } private List justTasks(Collection tasks) { diff --git a/navalplanner-webapp/src/main/webapp/resourceload/resourceloadfororder.zul b/navalplanner-webapp/src/main/webapp/resourceload/_resourceloadfororder.zul similarity index 100% rename from navalplanner-webapp/src/main/webapp/resourceload/resourceloadfororder.zul rename to navalplanner-webapp/src/main/webapp/resourceload/_resourceloadfororder.zul