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 eb0f54cbe..4ae238cad 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 @@ -55,12 +55,26 @@ public class FilterUtils { public static void writeProjectsStartDate(Date date) { Sessions.getCurrent().setAttribute("companyFilterStartDate", date); + Sessions.getCurrent().setAttribute("companyFilterStartDateChanged", + true); + } + + public static boolean hasProjectsStartDateChanged() { + return Sessions.getCurrent().hasAttribute( + "companyFilterStartDateChanged"); } public static void writeProjectsEndDate(Date date) { Sessions.getCurrent().setAttribute("companyFilterEndDate", date); + Sessions.getCurrent().setAttribute("companyFilterEndDateChanged", true); } + public static boolean hasProjectsEndDateChanged() { + return Sessions.getCurrent() + .hasAttribute("companyFilterEndDateChanged"); + } + + public static void writeProjectsParameters(List parameters) { Sessions.getCurrent().setAttribute("companyFilterLabel", parameters); } @@ -113,10 +127,22 @@ public class FilterUtils { public static void writeResourceLoadsStartDate(LocalDate date) { Sessions.getCurrent().setAttribute("resourceLoadStartDate", date); + Sessions.getCurrent() + .setAttribute("resourceLoadStartDateChanged", true); + } + + public static boolean hasResourceLoadsStartDateChanged() { + return Sessions.getCurrent().hasAttribute( + "resourceLoadStartDateChanged"); } public static void writeResourceLoadsEndDate(LocalDate date) { Sessions.getCurrent().setAttribute("resourceLoadEndDate", date); + Sessions.getCurrent().setAttribute("resourceLoadEndDateChanged", true); + } + + public static boolean hasResourceLoadsEndDateChanged() { + return Sessions.getCurrent().hasAttribute("resourceLoadEndDateChanged"); } public static void writeResourceLoadsParameters(List parameters) { 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 0aae5e922..c614af9d1 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 @@ -257,12 +257,14 @@ public class OrderCRUDController extends GenericForwardComposer { // Calculate filter based on user preferences if (user != null) { if ((startDate == null) + && !FilterUtils.hasProjectsStartDateChanged() && (user.getProjectsFilterPeriodSince() != null)) { startDate = new LocalDate() .minusMonths(user.getProjectsFilterPeriodSince()) .toDateTimeAtStartOfDay().toDate(); } if ((endDate == null) + && !FilterUtils.hasProjectsEndDateChanged() && (user.getProjectsFilterPeriodTo() != null)) { endDate = new LocalDate() .plusMonths(user.getProjectsFilterPeriodTo()) 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 b4118dd0f..f8c18114d 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 @@ -144,22 +144,17 @@ public class CompanyPlanningController implements Composer { checkIncludeOrderElements = (Checkbox) filterComponent .getFellow("checkIncludeOrderElements"); filterComponent.setVisible(true); - checkCreationPermissions(); } private void loadPredefinedBandboxFilter() { + User user = model.getUser(); List sessionFilterPairs = FilterUtils .readProjectsParameters(); if (sessionFilterPairs != null) { bdFilters.addSelectedElements(sessionFilterPairs); - return; - } - - User user = model.getUser(); - // Calculate filter based on user preferences - if ((user != null) && (user.getProjectsFilterLabel() != null)) { + } else if ((user != null) && (user.getProjectsFilterLabel() != null)) { bdFilters.clear(); bdFilters.addSelectedElement(new FilterPair( TaskGroupFilterEnum.Label, user.getProjectsFilterLabel() @@ -169,13 +164,15 @@ public class CompanyPlanningController implements Composer { // Calculate filter based on user preferences if (user != null) { - if (filterStartDate.getValue() == null + if ((filterStartDate.getValue() == null) + && !FilterUtils.hasProjectsStartDateChanged() && (user.getProjectsFilterPeriodSince() != null)) { filterStartDate.setValue(new LocalDate() .minusMonths(user.getProjectsFilterPeriodSince()) .toDateTimeAtStartOfDay().toDate()); } if (filterFinishDate.getValue() == null + && !FilterUtils.hasProjectsEndDateChanged() && (user.getProjectsFilterPeriodTo() != null)) { filterFinishDate.setValue(new LocalDate() .plusMonths(user.getProjectsFilterPeriodTo()) @@ -348,10 +345,12 @@ public class CompanyPlanningController implements Composer { TaskGroupPredicate predicate = model .getDefaultPredicate(includeOrderElements); //show filter dates calculated by default on screen - if(model.getFilterStartDate() != null) { + if (model.getFilterStartDate() != null + && !FilterUtils.hasProjectsStartDateChanged()) { filterStartDate.setValue(model.getFilterStartDate()); } - if(model.getFilterFinishDate() != null) { + if (model.getFilterFinishDate() != null + && !FilterUtils.hasProjectsEndDateChanged()) { filterFinishDate.setValue(model.getFilterFinishDate()); } predicate.setFilters(listFilters); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java index b4b6207cb..e09711e46 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resourceload/ResourceLoadController.java @@ -324,7 +324,8 @@ public class ResourceLoadController implements Composer { // Calculate filter based on user preferences if (user != null) { - if (startDate == null) { + if (startDate == null + && !FilterUtils.hasResourceLoadsStartDateChanged()) { if (user.getResourcesLoadFilterPeriodSince() != null) { startDate = new LocalDate().minusMonths(user .getResourcesLoadFilterPeriodSince()); @@ -333,7 +334,8 @@ public class ResourceLoadController implements Composer { startDate = new LocalDate().minusDays(1); } } - if ((endDate == null) + if ((endDate == null) + && !FilterUtils.hasResourceLoadsEndDateChanged() && (user.getResourcesLoadFilterPeriodTo() != null)) { endDate = new LocalDate().plusMonths(user .getResourcesLoadFilterPeriodTo());