From 90f106e8f23785ba46b6e0c00d546f671f4e78ab Mon Sep 17 00:00:00 2001 From: Anton Pankov Date: Tue, 11 Jun 2019 09:59:39 +0100 Subject: [PATCH 1/2] HideFromTree method with predicate added to Folder Configuration. --- .../Configuration/FluidityContainerTreeItemConfig.cs | 5 ++++- src/Fluidity/Configuration/FluidityFolderConfig.cs | 12 ++++++++++++ src/Fluidity/Web/Trees/FluidityTreeController.cs | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Fluidity/Configuration/FluidityContainerTreeItemConfig.cs b/src/Fluidity/Configuration/FluidityContainerTreeItemConfig.cs index 0cb49c9..c106409 100644 --- a/src/Fluidity/Configuration/FluidityContainerTreeItemConfig.cs +++ b/src/Fluidity/Configuration/FluidityContainerTreeItemConfig.cs @@ -26,6 +26,9 @@ public abstract class FluidityContainerTreeItemConfig : FluidityTreeItemConfig protected ConcurrentDictionary _treeItems; internal IReadOnlyDictionary TreeItems => _treeItems; + protected Func _isVisibleInTree; + internal Func IsVisibleInTree => _isVisibleInTree; + /// /// Initializes a new instance of the class. /// @@ -36,8 +39,8 @@ protected FluidityContainerTreeItemConfig(string name, string icon = null) _alias = name.ToSafeAlias(true); _name = name; _icon = icon ?? "icon-folder"; - _treeItems = new ConcurrentDictionary(); + _isVisibleInTree = () => true; } /// diff --git a/src/Fluidity/Configuration/FluidityFolderConfig.cs b/src/Fluidity/Configuration/FluidityFolderConfig.cs index 4bde34f..73762a7 100644 --- a/src/Fluidity/Configuration/FluidityFolderConfig.cs +++ b/src/Fluidity/Configuration/FluidityFolderConfig.cs @@ -4,6 +4,7 @@ // using System; +using System.Linq.Expressions; namespace Fluidity.Configuration { @@ -49,5 +50,16 @@ public FluidityFolderConfig SetIconColor(string color) _iconColor = color; return this; } + + /// + /// Hides the folder from the section tree. + /// + /// + /// The folder configuration. + public FluidityFolderConfig HideFromTree(Expression> whereClause) + { + _isVisibleInTree = whereClause; + return this; + } } } \ No newline at end of file diff --git a/src/Fluidity/Web/Trees/FluidityTreeController.cs b/src/Fluidity/Web/Trees/FluidityTreeController.cs index 7d06f6f..8fdfdef 100644 --- a/src/Fluidity/Web/Trees/FluidityTreeController.cs +++ b/src/Fluidity/Web/Trees/FluidityTreeController.cs @@ -88,7 +88,7 @@ protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection var currentItemConfig = alias == "-1" ? TreeConfig : TreeConfig.FlattenedTreeItems[alias]; var currentFolderConfig = currentItemConfig as FluidityContainerTreeItemConfig; - if (currentFolderConfig != null) + if (currentFolderConfig != null && currentFolderConfig.IsVisibleInTree.Invoke()) { // Render the folder contents foreach (var treeItem in currentFolderConfig.TreeItems.Values.OrderBy(x => x.Ordinal)) From b5794674a56f8669e9627f8af688f91df1b1e589 Mon Sep 17 00:00:00 2001 From: Anton Pankov Date: Tue, 11 Jun 2019 10:07:27 +0100 Subject: [PATCH 2/2] IsVisibleInTree check moved on lower level. --- src/Fluidity/Configuration/FluidityFolderConfig.cs | 2 +- src/Fluidity/Web/Trees/FluidityTreeController.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Fluidity/Configuration/FluidityFolderConfig.cs b/src/Fluidity/Configuration/FluidityFolderConfig.cs index 73762a7..88812e3 100644 --- a/src/Fluidity/Configuration/FluidityFolderConfig.cs +++ b/src/Fluidity/Configuration/FluidityFolderConfig.cs @@ -56,7 +56,7 @@ public FluidityFolderConfig SetIconColor(string color) /// /// /// The folder configuration. - public FluidityFolderConfig HideFromTree(Expression> whereClause) + public FluidityFolderConfig HideFromTree(Func whereClause) { _isVisibleInTree = whereClause; return this; diff --git a/src/Fluidity/Web/Trees/FluidityTreeController.cs b/src/Fluidity/Web/Trees/FluidityTreeController.cs index 8fdfdef..2459750 100644 --- a/src/Fluidity/Web/Trees/FluidityTreeController.cs +++ b/src/Fluidity/Web/Trees/FluidityTreeController.cs @@ -88,13 +88,13 @@ protected override TreeNodeCollection GetTreeNodes(string id, FormDataCollection var currentItemConfig = alias == "-1" ? TreeConfig : TreeConfig.FlattenedTreeItems[alias]; var currentFolderConfig = currentItemConfig as FluidityContainerTreeItemConfig; - if (currentFolderConfig != null && currentFolderConfig.IsVisibleInTree.Invoke()) + if (currentFolderConfig != null) { // Render the folder contents foreach (var treeItem in currentFolderConfig.TreeItems.Values.OrderBy(x => x.Ordinal)) { var folderTreeItem = treeItem as FluidityFolderConfig; - if (folderTreeItem != null) + if (folderTreeItem != null && folderTreeItem.IsVisibleInTree.Invoke()) { // Render folder var node = CreateTreeNode(