diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/FilterUtils.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/FilterUtils.java index a204e04b7..0c24a5b4c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/FilterUtils.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/FilterUtils.java @@ -72,8 +72,8 @@ public class FilterUtils { writeProjectsParameters(parameters); } - public static void writeProjectFilterChanged(boolean b) { - Sessions.getCurrent().setAttribute("companyFilterChanged", true); + public static void writeProjectFilterChanged(boolean changed) { + Sessions.getCurrent().setAttribute("companyFilterChanged", changed); } public static boolean hasProjectFilterChanged() { @@ -82,6 +82,18 @@ public class FilterUtils { "companyFilterChanged")); } + public static void writeProjectPlanningFilterChanged(boolean changed) { + Sessions.getCurrent().setAttribute("companyFilterPlanningChanged", + changed); + } + + public static boolean hasProjectPlanningFilterChanged() { + return (Sessions.getCurrent().getAttribute( + "companyFilterPlanningChanged") != null) + && ((Boolean) Sessions.getCurrent().getAttribute( + "companyFilterPlanningChanged")); + } + // Resources load filter public static LocalDate readResourceLoadsStartDate() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/components/bandboxsearch/BandboxMultipleSearch.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/components/bandboxsearch/BandboxMultipleSearch.java index 23ef5ddc9..6d5c57850 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/components/bandboxsearch/BandboxMultipleSearch.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/components/bandboxsearch/BandboxMultipleSearch.java @@ -389,4 +389,13 @@ public class BandboxMultipleSearch extends HtmlMacroComponent { return heightBbox; } + public void addSelectedElements(List sessionFilterPairs) { + selectedFilters.clear(); + for (FilterPair filterPair : sessionFilterPairs) { + addFilter(filterPair); + } + updateselectedFiltersText(); + updateBandboxValue(); + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java index 0680c96b4..d241f45d2 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderCRUDController.java @@ -280,7 +280,8 @@ public class OrderCRUDController extends GenericForwardComposer { private void loadLabels() { List sessionFilterPairs = FilterUtils .readProjectsParameters(); - if (sessionFilterPairs != null && !sessionFilterPairs.isEmpty()) { + // Allow labels when list is empty + if (sessionFilterPairs != null) { for (FilterPair filterPair : sessionFilterPairs) { FilterPair toadd; @@ -1496,6 +1497,7 @@ public class OrderCRUDController extends GenericForwardComposer { public void onApplyFilter() { OrderPredicate predicate = createPredicate(); storeSessionVariables(); + FilterUtils.writeProjectFilterChanged(true); if (predicate != null && checkIncludeOrderElements.isChecked()) { // Force reload conversation state in oderModel getOrders(); @@ -1509,7 +1511,6 @@ public class OrderCRUDController extends GenericForwardComposer { FilterUtils.writeProjectsFilter(filterStartDate.getValue(), filterFinishDate.getValue(), getSelectedBandboxAsTaskGroupFilters()); - FilterUtils.writeProjectFilterChanged(true); } private List getSelectedBandboxAsTaskGroupFilters() { @@ -1872,6 +1873,7 @@ public class OrderCRUDController extends GenericForwardComposer { public void readSessionFilterDates() { filterStartDate.setValue(FilterUtils.readProjectsStartDate()); filterFinishDate.setValue(FilterUtils.readProjectsEndDate()); + loadLabels(); } private Popup jirasyncPopup; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java index 365616499..b4118dd0f 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningController.java @@ -152,11 +152,8 @@ public class CompanyPlanningController implements Composer { private void loadPredefinedBandboxFilter() { List sessionFilterPairs = FilterUtils .readProjectsParameters(); - if (sessionFilterPairs != null && !sessionFilterPairs.isEmpty()) { - bdFilters.clear(); - for (FilterPair filterPair : sessionFilterPairs) { - bdFilters.addSelectedElement(filterPair); - } + if (sessionFilterPairs != null) { + bdFilters.addSelectedElements(sessionFilterPairs); return; } @@ -323,7 +320,7 @@ public class CompanyPlanningController implements Composer { }; } - public void readSessionVariables() { + public void readSessionVariablesIntoComponents() { filterStartDate.setValue(FilterUtils.readProjectsStartDate()); filterFinishDate.setValue(FilterUtils.readProjectsEndDate()); loadPredefinedBandboxFilter(); @@ -332,10 +329,14 @@ public class CompanyPlanningController implements Composer { public void onApplyFilter() { FilterUtils.writeProjectsFilter(filterStartDate.getValue(), filterFinishDate.getValue(), bdFilters.getSelectedElements()); - FilterUtils.writeProjectFilterChanged(true); + FilterUtils.writeProjectPlanningFilterChanged(true); filterByPredicate(createPredicate()); } + public void loadSessionFiltersIntoBandbox() { + bdFilters.addSelectedElements(FilterUtils.readProjectsParameters()); + } + private TaskGroupPredicate createPredicate() { List listFilters = (List) bdFilters .getSelectedElements(); @@ -368,6 +369,11 @@ public class CompanyPlanningController implements Composer { planner.invalidate(); } + public void setPredicate() { + model.setConfigurationToPlanner(planner, additional, + doubleClickCommand, createPredicate()); + } + public void setTabsController(MultipleTabsPlannerController tabsController) { this.tabsController = tabsController; } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningController.java index a149fb19a..7d7418381 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/order/OrderPlanningController.java @@ -236,10 +236,12 @@ public class OrderPlanningController implements Composer { .readOrderStartDate(order)); filterFinishDateOrderElement.setValue(FilterUtils .readOrderEndDate(order)); - if (FilterUtils.readOrderParameters(order) != null) { - bdFiltersOrderElement.clear(); - for (Object each : FilterUtils.readOrderParameters(order)) { - bdFiltersOrderElement.addSelectedElement(each); + List sessionFilterPairs = FilterUtils + .readOrderParameters(order); + if (sessionFilterPairs != null + && bdFiltersOrderElement.getSelectedElements().isEmpty()) { + for (Object each : sessionFilterPairs) { + bdFiltersOrderElement.addSelectedElement(each); } } if (FilterUtils.readOrderInheritance(order) != null) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java index 6d9840540..f2dee5bbe 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java @@ -115,24 +115,21 @@ public class OrdersTabCreator { private boolean checkFiltersChanged() { return (FilterUtils.sessionExists() && FilterUtils - .hasProjectFilterChanged()); + .hasProjectPlanningFilterChanged()); } private void setFiltersUnchanged() { FilterUtils.writeProjectFilterChanged(false); - // Sessions.getCurrent() - // .getAttribute("companyFilterChanged", true); } @Override protected void afterShowAction() { - - orderCRUDController.goToList(); if (checkFiltersChanged()) { orderCRUDController.readSessionFilterDates(); orderCRUDController.onApplyFilter(); + setFiltersUnchanged(); } - setFiltersUnchanged(); + orderCRUDController.goToList(); if (breadcrumbs.getChildren() != null) { breadcrumbs.getChildren().clear(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/PlanningTabCreator.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/PlanningTabCreator.java index 2a871302b..09aa3903e 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/PlanningTabCreator.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/PlanningTabCreator.java @@ -213,17 +213,16 @@ public class PlanningTabCreator { } private void setFiltersUnchanged() { - // True?? - FilterUtils.writeProjectFilterChanged(false); + FilterUtils.writeProjectPlanningFilterChanged(false); } @Override protected void afterShowAction() { if (checkFiltersChanged()) { - companyPlanningController.readSessionVariables(); - companyPlanningController.onApplyFilter(); + companyPlanningController + .readSessionVariablesIntoComponents(); + setFiltersUnchanged(); } - setFiltersUnchanged(); companyPlanningController.setConfigurationForPlanner(); breadcrumbs.getChildren().clear();