Force synchronization of filter changes when switching between loaded perspectives
Either in the Company view/Projects list perspectives and the Project Gantt/WBS ones, their filter values are synchronized when shitching between them. All the perspectives were loading the rigth session values when they were loaded for the first time, but needed to be updated after changes in the filter values to actualize the widgets on the sibling perspective. FEA: ItEr77S15FilteringEnhancements
This commit is contained in:
parent
9ba7d7c285
commit
bd86dfd183
5 changed files with 70 additions and 47 deletions
|
|
@ -221,4 +221,17 @@ public class FilterUtils {
|
|||
return Sessions.getCurrent() != null;
|
||||
}
|
||||
|
||||
public static boolean hasOrderWBSFiltersChanged(Order order) {
|
||||
return sessionExists()
|
||||
&& (Sessions.getCurrent().getAttribute(
|
||||
order.getCode() + "-orderWBSFilterChanged") != null)
|
||||
&& ((Boolean) Sessions.getCurrent().getAttribute(
|
||||
order.getCode() + "-orderWBSFilterChanged"));
|
||||
}
|
||||
|
||||
public static void writeOrderWBSFiltersChanged(Order order, boolean changed) {
|
||||
Sessions.getCurrent().setAttribute(
|
||||
order.getCode() + "-orderWBSFilterChanged", changed);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -274,49 +274,19 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
filterFinishDate.setValue(endDate);
|
||||
|
||||
loadLabels();
|
||||
|
||||
FilterUtils.writeProjectPlanningFilterChanged(false);
|
||||
}
|
||||
|
||||
private void loadLabels() {
|
||||
List<FilterPair> sessionFilterPairs = FilterUtils
|
||||
List<FilterPair> sessionFilters = FilterUtils
|
||||
.readProjectsParameters();
|
||||
// Allow labels when list is empty
|
||||
if (sessionFilterPairs != null) {
|
||||
for (FilterPair filterPair : sessionFilterPairs) {
|
||||
|
||||
FilterPair toadd;
|
||||
TaskGroupFilterEnum type = (TaskGroupFilterEnum) filterPair
|
||||
.getType();
|
||||
switch (type) {
|
||||
case Label:
|
||||
toadd = new FilterPair(OrderFilterEnum.Label,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case Criterion:
|
||||
toadd = new FilterPair(OrderFilterEnum.Criterion,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case ExternalCompany:
|
||||
toadd = new FilterPair(OrderFilterEnum.ExternalCompany,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case State:
|
||||
toadd = new FilterPair(OrderFilterEnum.State,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
|
||||
break;
|
||||
default:
|
||||
toadd = new FilterPair(OrderFilterEnum.Label,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
}
|
||||
bdFilters.addSelectedElement(toadd);
|
||||
}
|
||||
if (sessionFilters != null) {
|
||||
bdFilters.addSelectedElements(toOrderFilterEnum(sessionFilters));
|
||||
return;
|
||||
}
|
||||
|
||||
User user = orderModel.getUser();
|
||||
|
||||
// Calculate filter based on user preferences
|
||||
if ((user != null) && (user.getProjectsFilterLabel() != null)) {
|
||||
bdFilters.addSelectedElement(new FilterPair(OrderFilterEnum.Label,
|
||||
|
|
@ -325,6 +295,39 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
private List<FilterPair> toOrderFilterEnum(List<FilterPair> filterPairs) {
|
||||
List<FilterPair> result = new ArrayList<FilterPair>();
|
||||
for (FilterPair filterPair : filterPairs) {
|
||||
FilterPair toadd;
|
||||
TaskGroupFilterEnum type = (TaskGroupFilterEnum) filterPair
|
||||
.getType();
|
||||
switch (type) {
|
||||
case Label:
|
||||
toadd = new FilterPair(OrderFilterEnum.Label,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case Criterion:
|
||||
toadd = new FilterPair(OrderFilterEnum.Criterion,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case ExternalCompany:
|
||||
toadd = new FilterPair(OrderFilterEnum.ExternalCompany,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
case State:
|
||||
toadd = new FilterPair(OrderFilterEnum.State,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
default:
|
||||
toadd = new FilterPair(OrderFilterEnum.Label,
|
||||
filterPair.getPattern(), filterPair.getValue());
|
||||
break;
|
||||
}
|
||||
result.add(toadd);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void setupGlobalButtons() {
|
||||
Hbox perspectiveButtonsInsertionPoint = (Hbox) page
|
||||
.getFellow("perspectiveButtonsInsertionPoint");
|
||||
|
|
|
|||
|
|
@ -637,7 +637,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
result.add(toTasKElementFilterEnum(filterPair));
|
||||
}
|
||||
FilterUtils.writeOrderParameters(order, result);
|
||||
|
||||
FilterUtils.writeOrderWBSFiltersChanged(order, true);
|
||||
}
|
||||
|
||||
private FilterPair toTasKElementFilterEnum(FilterPair each) {
|
||||
|
|
|
|||
|
|
@ -230,7 +230,11 @@ public class OrderPlanningController implements Composer {
|
|||
}
|
||||
}
|
||||
|
||||
private void importOrderFiltersFromSession() {
|
||||
public void importOrderFiltersFromSession() {
|
||||
importOrderFiltersFromSession(false);
|
||||
}
|
||||
|
||||
public void importOrderFiltersFromSession(boolean forceReload) {
|
||||
filterNameOrderElement.setValue(FilterUtils.readOrderTaskName(order));
|
||||
filterStartDateOrderElement.setValue(FilterUtils
|
||||
.readOrderStartDate(order));
|
||||
|
|
@ -238,11 +242,9 @@ public class OrderPlanningController implements Composer {
|
|||
.readOrderEndDate(order));
|
||||
List<FilterPair> sessionFilterPairs = FilterUtils
|
||||
.readOrderParameters(order);
|
||||
if (sessionFilterPairs != null
|
||||
&& bdFiltersOrderElement.getSelectedElements().isEmpty()) {
|
||||
for (Object each : sessionFilterPairs) {
|
||||
bdFiltersOrderElement.addSelectedElement(each);
|
||||
}
|
||||
if ((sessionFilterPairs != null)
|
||||
&& (bdFiltersOrderElement.getSelectedElements().isEmpty() || forceReload)) {
|
||||
bdFiltersOrderElement.addSelectedElements(sessionFilterPairs);
|
||||
}
|
||||
if (FilterUtils.readOrderInheritance(order) != null) {
|
||||
labelsWithoutInheritance.setChecked(FilterUtils
|
||||
|
|
@ -272,9 +274,18 @@ public class OrderPlanningController implements Composer {
|
|||
|
||||
public void onApplyFilter() {
|
||||
filterByPredicate(createPredicate());
|
||||
List<FilterPair> listFilters = (List<FilterPair>) bdFiltersOrderElement
|
||||
.getSelectedElements();
|
||||
FilterUtils.writeOrderParameters(order, listFilters);
|
||||
}
|
||||
|
||||
private TaskElementPredicate createPredicate() {
|
||||
|
||||
if (FilterUtils.hasOrderWBSFiltersChanged(order)) {
|
||||
importOrderFiltersFromSession(true);
|
||||
FilterUtils.writeOrderWBSFiltersChanged(order, false);
|
||||
}
|
||||
|
||||
List<FilterPair> listFilters = (List<FilterPair>) bdFiltersOrderElement
|
||||
.getSelectedElements();
|
||||
Date startDate = filterStartDateOrderElement.getValue();
|
||||
|
|
@ -289,10 +300,7 @@ public class OrderPlanningController implements Composer {
|
|||
FilterUtils.writeOrderTaskName(order, name);
|
||||
FilterUtils.writeOrderStartDate(order, startDate);
|
||||
FilterUtils.writeOrderEndDate(order, finishDate);
|
||||
|
||||
// Peding to change
|
||||
FilterUtils.writeOrderInheritance(order, ignoreLabelsInheritance);
|
||||
FilterUtils.writeOrderParameters(order, listFilters);
|
||||
return new TaskElementPredicate(listFilters, startDate, finishDate,
|
||||
name, ignoreLabelsInheritance);
|
||||
}
|
||||
|
|
@ -354,7 +362,7 @@ public class OrderPlanningController implements Composer {
|
|||
&& (filterStartDateOrderElement.getValue() != null)
|
||||
&& (finishDate.compareTo(filterStartDateOrderElement
|
||||
.getValue()) < 0)) {
|
||||
filterFinishDateOrderElement.setValue(null);
|
||||
filterFinishDateOrderElement.setRawValue(null);
|
||||
throw new WrongValueException(comp,
|
||||
_("must be after start date"));
|
||||
}
|
||||
|
|
@ -373,7 +381,7 @@ public class OrderPlanningController implements Composer {
|
|||
&& (filterFinishDateOrderElement.getValue() != null)
|
||||
&& (startDate.compareTo(filterFinishDateOrderElement
|
||||
.getValue()) > 0)) {
|
||||
filterStartDateOrderElement.setValue(null);
|
||||
filterStartDateOrderElement.setRawValue(null);
|
||||
throw new WrongValueException(comp,
|
||||
_("must be lower than end date"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -126,7 +126,6 @@ public class OrdersTabCreator {
|
|||
protected void afterShowAction() {
|
||||
if (checkFiltersChanged()) {
|
||||
orderCRUDController.readSessionFilterDates();
|
||||
orderCRUDController.onApplyFilter();
|
||||
setFiltersUnchanged();
|
||||
}
|
||||
orderCRUDController.goToList();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue