Show icons in the root node in sidebar treeviews.

This commit is contained in:
Jan Böhmer 2022-08-13 02:18:32 +02:00
parent 90da7d71b9
commit 18f41e14e6
4 changed files with 51 additions and 4 deletions

View file

@ -66,7 +66,7 @@ export default class extends Controller {
levels: 1, levels: 1,
showTags: this._showTags, showTags: this._showTags,
data: data, data: data,
showIcon: false, showIcon: true,
onNodeSelected: (event) => { onNodeSelected: (event) => {
const node = event.detail.node; const node = event.detail.node;
if (node.href) { if (node.href) {

View file

@ -60,6 +60,8 @@ final class TreeViewNode implements JsonSerializable
private $id; private $id;
private $icon;
/** /**
* Creates a new TreeView node with the given parameters. * Creates a new TreeView node with the given parameters.
* *
@ -233,6 +235,24 @@ final class TreeViewNode implements JsonSerializable
return $this; return $this;
} }
/**
* @return string|null
*/
public function getIcon(): ?string
{
return $this->icon;
}
/**
* @param string|null $icon
*/
public function setIcon(?string $icon): void
{
$this->icon = $icon;
}
public function jsonSerialize(): array public function jsonSerialize(): array
{ {
$ret = [ $ret = [
@ -259,6 +279,10 @@ final class TreeViewNode implements JsonSerializable
$ret['selectable'] = false; $ret['selectable'] = false;
} }
if ($this->icon != null) {
$ret['icon'] = $this->icon;
}
return $ret; return $ret;
} }
} }

View file

@ -156,6 +156,8 @@ class TreeViewGenerator
if (($mode === 'list_parts_root' || $mode === 'devices') && $this->rootNodeEnabled) { if (($mode === 'list_parts_root' || $mode === 'devices') && $this->rootNodeEnabled) {
$root_node = new TreeViewNode($this->entityClassToRootNodeString($class), null, $generic); $root_node = new TreeViewNode($this->entityClassToRootNodeString($class), null, $generic);
$root_node->setExpanded($this->rootNodeExpandedByDefault); $root_node->setExpanded($this->rootNodeExpandedByDefault);
$root_node->setIcon($this->entityClassToRootNodeIcon($class));
$generic = [$root_node]; $generic = [$root_node];
} }
@ -182,6 +184,27 @@ class TreeViewGenerator
} }
} }
protected function entityClassToRootNodeIcon(string $class): ?string
{
$icon = "fa-fw fa-treeview fa-solid ";
switch ($class) {
case Category::class:
return $icon . 'fa-tags';
case Storelocation::class:
return $icon . 'fa-cube';
case Footprint::class:
return $icon . 'fa-microchip';
case Manufacturer::class:
return $icon . 'fa-industry';
case Supplier::class:
return $icon . 'fa-truck';
case Device::class:
return $icon . 'fa-archive';
default:
return null;
}
}
/** /**
* /** * /**
* Gets a tree of TreeViewNode elements. The root elements has $parent as parent. * Gets a tree of TreeViewNode elements. The root elements has $parent as parent.

View file

@ -1345,9 +1345,9 @@
integrity sha512-Q8kGjqwPqER+CtpQudbH+3Zgs2X4zb6pBAlr6NsKTXadg45pAOvxI9i4QpuHbwSzR2+x87HUm+rot9F/Pe8rxA== integrity sha512-Q8kGjqwPqER+CtpQudbH+3Zgs2X4zb6pBAlr6NsKTXadg45pAOvxI9i4QpuHbwSzR2+x87HUm+rot9F/Pe8rxA==
"@jbtronics/bs-treeview@^1.0.1": "@jbtronics/bs-treeview@^1.0.1":
version "1.0.3" version "1.0.4"
resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.3.tgz#19a176fc84fbee5c7cc86c190ee351f480bdaf3d" resolved "https://registry.yarnpkg.com/@jbtronics/bs-treeview/-/bs-treeview-1.0.4.tgz#aecd128c295ebd1af904d9a77f17dbf77a772b8f"
integrity sha512-9KU5bnrZr5saEfkTvUY5/sg1AS1tf5OvDiQmjHSnfygtVW77FI91jyuMOmn/7gGwPypPYI354wlMVvlgf9HroA== integrity sha512-ofhMY+4w0xYHcMPyw53EzWABzrzX2ecm50hhD9Kbb6h1/XsmLzVvHLIG9FYJ3eaIR0nTYF9a5L7mS14Qr/JChQ==
"@jridgewell/gen-mapping@^0.1.0": "@jridgewell/gen-mapping@^0.1.0":
version "0.1.1" version "0.1.1"