diff --git a/assets/css/app.css b/assets/css/app.css index 69c97bad..dd35ffd2 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -513,6 +513,11 @@ span.highlight { padding-bottom: 3px; } +.treeview .badge { + margin-left: auto; + line-height: 1.42857143; +} + /***************************** * Pagination bar *****************************/ diff --git a/assets/ts_src/event_listeners.ts b/assets/ts_src/event_listeners.ts index b882ee7b..3bd34fa0 100644 --- a/assets/ts_src/event_listeners.ts +++ b/assets/ts_src/event_listeners.ts @@ -140,6 +140,11 @@ $(document).on("ajaxUI:start ajaxUI:reload", function() { enableLinks: false, showIcon: false, showBorder: true, + showTags: true, + //@ts-ignore + wrapNode: true, + //@ts-ignore + tagsClass: 'badge badge-secondary badge-pill pull-right', expandIcon: "fas fa-plus fa-fw fa-treeview", collapseIcon: "fas fa-minus fa-fw fa-treeview", onNodeSelected: function(event, data) { if(data.href) { diff --git a/src/Helpers/TreeViewNode.php b/src/Helpers/TreeViewNode.php index 3758ead2..d78f829e 100644 --- a/src/Helpers/TreeViewNode.php +++ b/src/Helpers/TreeViewNode.php @@ -42,6 +42,8 @@ class TreeViewNode protected $state; + protected $tags; + /** * Creates a new TreeView node with the given parameters. * @param string $text The text that is shown in the node. (e.g. the name of the node) @@ -144,4 +146,21 @@ class TreeViewNode return $this; } + public function getTags() : ?array + { + return $this->tags; + } + + public function addTag(string $new_tag) : self + { + //Lazy loading tags + if ($this->tags == null) { + $this->tags = array(); + } + + $this->tags[] = $new_tag; + + return $this; + } + } diff --git a/src/Services/TreeBuilder.php b/src/Services/TreeBuilder.php index 3fb7babf..2797a9d7 100644 --- a/src/Services/TreeBuilder.php +++ b/src/Services/TreeBuilder.php @@ -84,6 +84,10 @@ class TreeBuilder $tree_node = new TreeViewNode($element->getName(), $href, $children_nodes); + if($children_nodes != null) { + $tree_node->addTag((string) count($children_nodes)); + } + //Check if we need to select the current part if ($selectedElement !== null && $element->getID() === $selectedElement->getID()) { $tree_node->setSelected(true); diff --git a/templates/AdminPages/EntityAdminBase.html.twig b/templates/AdminPages/EntityAdminBase.html.twig index 33957ffd..aae3f11e 100644 --- a/templates/AdminPages/EntityAdminBase.html.twig +++ b/templates/AdminPages/EntityAdminBase.html.twig @@ -4,6 +4,7 @@