mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +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
|
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);
|
return new JsonResponse($tree);
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ class TreeController extends AbstractController
|
||||||
*/
|
*/
|
||||||
public function footprintTree(?Footprint $footprint = null): JsonResponse
|
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);
|
return new JsonResponse($tree);
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ class TreeController extends AbstractController
|
||||||
*/
|
*/
|
||||||
public function locationTree(?Storelocation $location = null): JsonResponse
|
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);
|
return new JsonResponse($tree);
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,7 @@ class TreeController extends AbstractController
|
||||||
*/
|
*/
|
||||||
public function manufacturerTree(?Manufacturer $manufacturer = null): JsonResponse
|
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);
|
return new JsonResponse($tree);
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ class TreeController extends AbstractController
|
||||||
*/
|
*/
|
||||||
public function supplierTree(?Supplier $supplier = null): JsonResponse
|
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);
|
return new JsonResponse($tree);
|
||||||
}
|
}
|
||||||
|
|
|
@ -204,6 +204,18 @@ final class TreeViewNode implements JsonSerializable
|
||||||
return $this;
|
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
|
public function getTags(): ?array
|
||||||
{
|
{
|
||||||
return $this->tags;
|
return $this->tags;
|
||||||
|
|
|
@ -66,9 +66,10 @@ final class TreeViewNodeState implements JsonSerializable
|
||||||
return $this->disabled;
|
return $this->disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDisabled(?bool $disabled): void
|
public function setDisabled(?bool $disabled): self
|
||||||
{
|
{
|
||||||
$this->disabled = $disabled;
|
$this->disabled = $disabled;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getExpanded(): ?bool
|
public function getExpanded(): ?bool
|
||||||
|
@ -76,9 +77,10 @@ final class TreeViewNodeState implements JsonSerializable
|
||||||
return $this->expanded;
|
return $this->expanded;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setExpanded(?bool $expanded): void
|
public function setExpanded(?bool $expanded): self
|
||||||
{
|
{
|
||||||
$this->expanded = $expanded;
|
$this->expanded = $expanded;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSelected(): ?bool
|
public function getSelected(): ?bool
|
||||||
|
@ -86,9 +88,10 @@ final class TreeViewNodeState implements JsonSerializable
|
||||||
return $this->selected;
|
return $this->selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setSelected(?bool $selected): void
|
public function setSelected(?bool $selected): self
|
||||||
{
|
{
|
||||||
$this->selected = $selected;
|
$this->selected = $selected;
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function jsonSerialize()
|
public function jsonSerialize()
|
||||||
|
|
|
@ -47,6 +47,7 @@ use App\Entity\Base\AbstractNamedDBElement;
|
||||||
use App\Entity\Base\AbstractStructuralDBElement;
|
use App\Entity\Base\AbstractStructuralDBElement;
|
||||||
use App\Helpers\Trees\TreeViewNode;
|
use App\Helpers\Trees\TreeViewNode;
|
||||||
use App\Helpers\Trees\TreeViewNodeIterator;
|
use App\Helpers\Trees\TreeViewNodeIterator;
|
||||||
|
use App\Helpers\Trees\TreeViewNodeState;
|
||||||
use App\Repository\StructuralDBElementRepository;
|
use App\Repository\StructuralDBElementRepository;
|
||||||
use App\Services\EntityURLGenerator;
|
use App\Services\EntityURLGenerator;
|
||||||
use App\Services\UserCacheKeyGenerator;
|
use App\Services\UserCacheKeyGenerator;
|
||||||
|
@ -84,12 +85,14 @@ class TreeViewGenerator
|
||||||
*
|
*
|
||||||
* @return TreeViewNode[] an array of TreeViewNode[] elements of the root elements
|
* @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 = [];
|
$head = [];
|
||||||
|
|
||||||
|
$href_type = $mode;
|
||||||
|
|
||||||
//When we use the newEdit type, add the New Element node.
|
//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
|
//Generate the url for the new node
|
||||||
$href = $this->urlGenerator->createURL(new $class());
|
$href = $this->urlGenerator->createURL(new $class());
|
||||||
$new_node = new TreeViewNode($this->translator->trans('entity.tree.new'), $href);
|
$new_node = new TreeViewNode($this->translator->trans('entity.tree.new'), $href);
|
||||||
|
@ -105,6 +108,10 @@ class TreeViewGenerator
|
||||||
$href_type = 'edit';
|
$href_type = 'edit';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($mode === 'list_parts_root') {
|
||||||
|
$href_type = 'list_parts';
|
||||||
|
}
|
||||||
|
|
||||||
$generic = $this->getGenericTree($class, $parent);
|
$generic = $this->getGenericTree($class, $parent);
|
||||||
$treeIterator = new TreeViewNodeIterator($generic);
|
$treeIterator = new TreeViewNodeIterator($generic);
|
||||||
$recursiveIterator = new \RecursiveIteratorIterator($treeIterator, \RecursiveIteratorIterator::SELF_FIRST);
|
$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);
|
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>
|
<target>Your password needs to be changed! Please set a new password.</target>
|
||||||
</segment>
|
</segment>
|
||||||
</unit>
|
</unit>
|
||||||
|
<unit id="uEMvuw8" name="tree.root_node.text">
|
||||||
|
<segment>
|
||||||
|
<source>tree.root_node.text</source>
|
||||||
|
<target>Root node</target>
|
||||||
|
</segment>
|
||||||
|
</unit>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue