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

@ -60,6 +60,8 @@ final class TreeViewNode implements JsonSerializable
private $id;
private $icon;
/**
* Creates a new TreeView node with the given parameters.
*
@ -233,6 +235,24 @@ final class TreeViewNode implements JsonSerializable
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
{
$ret = [
@ -259,6 +279,10 @@ final class TreeViewNode implements JsonSerializable
$ret['selectable'] = false;
}
if ($this->icon != null) {
$ret['icon'] = $this->icon;
}
return $ret;
}
}

View file

@ -156,6 +156,8 @@ class TreeViewGenerator
if (($mode === 'list_parts_root' || $mode === 'devices') && $this->rootNodeEnabled) {
$root_node = new TreeViewNode($this->entityClassToRootNodeString($class), null, $generic);
$root_node->setExpanded($this->rootNodeExpandedByDefault);
$root_node->setIcon($this->entityClassToRootNodeIcon($class));
$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.