From c0bfd1fed309bc66b67a0edd906f4f325cc576e1 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 6 Feb 2018 10:47:02 +0100 Subject: [PATCH] OO-3281: hanlde the special of the "Show all" filter --- .../table/TreeNodeFlexiCellRenderer.java | 18 ++++++++++++++++-- .../ui/TaxonomyTreeTableController.java | 3 ++- .../taxonomy/ui/TaxonomyTreeTableModel.java | 17 ++++++++++++----- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java index e670a5ba5fd..57e4c5c072f 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/TreeNodeFlexiCellRenderer.java @@ -19,6 +19,9 @@ */ package org.olat.core.gui.components.form.flexible.impl.elements.table; +import java.util.List; + +import org.olat.core.gui.components.form.flexible.elements.FlexiTableFilter; import org.olat.core.gui.components.form.flexible.impl.Form; import org.olat.core.gui.components.form.flexible.impl.FormJSHelper; import org.olat.core.gui.components.form.flexible.impl.NameValuePair; @@ -70,9 +73,20 @@ public class TreeNodeFlexiCellRenderer implements FlexiCellRenderer { private boolean isFlat(FlexiTableElementImpl ftE) { return flatBySearchAndFilter - && (StringHelper.containsNonWhitespace(ftE.getQuickSearchString()) || !ftE.getSelectedFilters().isEmpty()); + && (StringHelper.containsNonWhitespace(ftE.getQuickSearchString()) || isFiltered(ftE.getSelectedFilters())); + } + + private boolean isFiltered(List<FlexiTableFilter> filters) { + if(filters == null || filters.isEmpty()) return false; + + boolean filtered = true; + for(FlexiTableFilter filter:filters) { + if(filter.isShowAll()) { + filtered &= false; + } + } + return filtered; } - private void renderIndented(Renderer renderer, StringOutput target, Object cellValue, int row, FlexiTableComponent source, URLBuilder ubu, Translator translator) { diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java index 2d300e02532..90a431570c4 100644 --- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java +++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java @@ -161,7 +161,8 @@ public class TaxonomyTreeTableController extends FormBasicController implements resources.add(new FlexiTableFilter(type.getDisplayName(), type.getKey().toString())); } resources.add(new FlexiTableFilter(translate("filter.no.level.type"), "-")); - resources.add(new FlexiTableFilter(translate("show.all"), "-", true)); + resources.add(FlexiTableFilter.SPACER); + resources.add(new FlexiTableFilter(translate("show.all"), "all", true)); return resources; } diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java index 5beae0ab87e..6733489d1fc 100644 --- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java +++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableModel.java @@ -61,21 +61,28 @@ implements FilterableFlexiTableModel { if(filters != null && filters.size() > 0 && filters.get(0) != null) { Set<Long> typeKeys = new HashSet<>(); boolean noType = false; + boolean showAll = false; for(FlexiTableFilter filter:filters) { if("-".equals(filter.getFilter())) { noType = true; } else if(StringHelper.isLong(filter.getFilter())) { typeKeys.add(new Long(filter.getFilter())); + } else if(filter.isShowAll()) { + showAll = true; } } - List<TaxonomyLevelRow> filteredRows = new ArrayList<>(backupRows.size()); - for(TaxonomyLevelRow row:backupRows) { - if(accept(row, typeKeys, noType)) { - filteredRows.add(row); + if(showAll) { + setUnfilteredObjects(); + } else { + List<TaxonomyLevelRow> filteredRows = new ArrayList<>(backupRows.size()); + for(TaxonomyLevelRow row:backupRows) { + if(accept(row, typeKeys, noType)) { + filteredRows.add(row); + } } + setFilteredObjects(filteredRows); } - setFilteredObjects(filteredRows); } else { setUnfilteredObjects(); } -- GitLab