mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-20 17:15:51 +02:00
Put sidebar trees under a root node.
This commit is contained in:
parent
e05d707918
commit
c6970505c7
5 changed files with 44 additions and 10 deletions
|
@ -84,7 +84,7 @@ class TreeController extends AbstractController
|
|||
*/
|
||||
public function categoryTree(?Category $category = null): JsonResponse
|
||||
{
|
||||
$tree = $this->treeGenerator->getTreeView(Category::class, $category);
|
||||
$tree = $this->treeGenerator->getTreeView(Category::class, $category, 'list_parts_root');
|
||||
|
||||
return new JsonResponse($tree);
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ class TreeController extends AbstractController
|
|||
*/
|
||||
public function footprintTree(?Footprint $footprint = null): JsonResponse
|
||||
{
|
||||
$tree = $this->treeGenerator->getTreeView(Footprint::class, $footprint);
|
||||
$tree = $this->treeGenerator->getTreeView(Footprint::class, $footprint, 'list_parts_root');
|
||||
|
||||
return new JsonResponse($tree);
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ class TreeController extends AbstractController
|
|||
*/
|
||||
public function locationTree(?Storelocation $location = null): JsonResponse
|
||||
{
|
||||
$tree = $this->treeGenerator->getTreeView(Storelocation::class, $location);
|
||||
$tree = $this->treeGenerator->getTreeView(Storelocation::class, $location, 'list_parts_root');
|
||||
|
||||
return new JsonResponse($tree);
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ class TreeController extends AbstractController
|
|||
*/
|
||||
public function manufacturerTree(?Manufacturer $manufacturer = null): JsonResponse
|
||||
{
|
||||
$tree = $this->treeGenerator->getTreeView(Manufacturer::class, $manufacturer);
|
||||
$tree = $this->treeGenerator->getTreeView(Manufacturer::class, $manufacturer, 'list_parts_root');
|
||||
|
||||
return new JsonResponse($tree);
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ class TreeController extends AbstractController
|
|||
*/
|
||||
public function supplierTree(?Supplier $supplier = null): JsonResponse
|
||||
{
|
||||
$tree = $this->treeGenerator->getTreeView(Supplier::class, $supplier);
|
||||
$tree = $this->treeGenerator->getTreeView(Supplier::class, $supplier, 'list_parts_root');
|
||||
|
||||
return new JsonResponse($tree);
|
||||
}
|
||||
|
|
|
@ -204,6 +204,18 @@ final class TreeViewNode implements JsonSerializable
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function setExpanded(?bool $selected): self
|
||||
{
|
||||
//Lazy loading of state, so it does not need to get serialized and transfered, when it is empty.
|
||||
if (null === $this->state) {
|
||||
$this->state = new TreeViewNodeState();
|
||||
}
|
||||
|
||||
$this->state->setExpanded(true);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getTags(): ?array
|
||||
{
|
||||
return $this->tags;
|
||||
|
|
|
@ -66,9 +66,10 @@ final class TreeViewNodeState implements JsonSerializable
|
|||
return $this->disabled;
|
||||
}
|
||||
|
||||
public function setDisabled(?bool $disabled): void
|
||||
public function setDisabled(?bool $disabled): self
|
||||
{
|
||||
$this->disabled = $disabled;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getExpanded(): ?bool
|
||||
|
@ -76,9 +77,10 @@ final class TreeViewNodeState implements JsonSerializable
|
|||
return $this->expanded;
|
||||
}
|
||||
|
||||
public function setExpanded(?bool $expanded): void
|
||||
public function setExpanded(?bool $expanded): self
|
||||
{
|
||||
$this->expanded = $expanded;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getSelected(): ?bool
|
||||
|
@ -86,9 +88,10 @@ final class TreeViewNodeState implements JsonSerializable
|
|||
return $this->selected;
|
||||
}
|
||||
|
||||
public function setSelected(?bool $selected): void
|
||||
public function setSelected(?bool $selected): self
|
||||
{
|
||||
$this->selected = $selected;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function jsonSerialize()
|
||||
|
|
|
@ -47,6 +47,7 @@ use App\Entity\Base\AbstractNamedDBElement;
|
|||
use App\Entity\Base\AbstractStructuralDBElement;
|
||||
use App\Helpers\Trees\TreeViewNode;
|
||||
use App\Helpers\Trees\TreeViewNodeIterator;
|
||||
use App\Helpers\Trees\TreeViewNodeState;
|
||||
use App\Repository\StructuralDBElementRepository;
|
||||
use App\Services\EntityURLGenerator;
|
||||
use App\Services\UserCacheKeyGenerator;
|
||||
|
@ -84,12 +85,14 @@ class TreeViewGenerator
|
|||
*
|
||||
* @return TreeViewNode[] an array of TreeViewNode[] elements of the root elements
|
||||
*/
|
||||
public function getTreeView(string $class, ?AbstractStructuralDBElement $parent = null, string $href_type = 'list_parts', ?AbstractDBElement $selectedElement = null): array
|
||||
public function getTreeView(string $class, ?AbstractStructuralDBElement $parent = null, string $mode = 'list_parts', ?AbstractDBElement $selectedElement = null): array
|
||||
{
|
||||
$head = [];
|
||||
|
||||
$href_type = $mode;
|
||||
|
||||
//When we use the newEdit type, add the New Element node.
|
||||
if ('newEdit' === $href_type) {
|
||||
if ('newEdit' === $mode) {
|
||||
//Generate the url for the new node
|
||||
$href = $this->urlGenerator->createURL(new $class());
|
||||
$new_node = new TreeViewNode($this->translator->trans('entity.tree.new'), $href);
|
||||
|
@ -105,6 +108,10 @@ class TreeViewGenerator
|
|||
$href_type = 'edit';
|
||||
}
|
||||
|
||||
if ($mode === 'list_parts_root') {
|
||||
$href_type = 'list_parts';
|
||||
}
|
||||
|
||||
$generic = $this->getGenericTree($class, $parent);
|
||||
$treeIterator = new TreeViewNodeIterator($generic);
|
||||
$recursiveIterator = new \RecursiveIteratorIterator($treeIterator, \RecursiveIteratorIterator::SELF_FIRST);
|
||||
|
@ -129,6 +136,12 @@ class TreeViewGenerator
|
|||
}
|
||||
}
|
||||
|
||||
if ($mode === 'list_parts_root') {
|
||||
$root_node = new TreeViewNode($this->translator->trans('tree.root_node.text'), null, $generic);
|
||||
$root_node->setExpanded(true);
|
||||
$generic = [$root_node];
|
||||
}
|
||||
|
||||
return array_merge($head, $generic);
|
||||
}
|
||||
|
||||
|
|
|
@ -9321,5 +9321,11 @@ Element 3</target>
|
|||
<target>Your password needs to be changed! Please set a new password.</target>
|
||||
</segment>
|
||||
</unit>
|
||||
<unit id="uEMvuw8" name="tree.root_node.text">
|
||||
<segment>
|
||||
<source>tree.root_node.text</source>
|
||||
<target>Root node</target>
|
||||
</segment>
|
||||
</unit>
|
||||
</file>
|
||||
</xliff>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue