Napsal jsem svou první komponentu pro Nette, které jsou určeny pro zobrazování stromových dat. Jedná se o komponentu TreeView (statický strom) a ExpandableTreeView, který umožňuje rozklikávat strom postupně.
Jak to může vypadat
s přiloženým stylem to může vypadat třeba takto

Použití
Použití je celku jednoduché, stačí aby objekt, který chcete zobrazovat stromově impementoval rozhraní ITreeViewNode, případně IExpandableTreeViewNode. a pak stačí jenom vytvořit komponentu
$CategoriesTree = new ExpandableTreeView($this, $name); $CategoriesTree->treeViewNode($this->eshop->getEshopCategories()); $CategoriesTree->expandNode();
a v šabloně pak
{$CategoriesTree->render()}
Události, vlastnosti a funkce komponenty
Vlastnost hideRootNode, pokud je tato vlastnost nastavena na TRUE, pak nebude zobrazen kořenový node.
Událost onRenderNode, tato událost je volána při kreslené nodu, můžete tak ovlivnit, jak bude Node vykreslen, pokud není událost nastavena, bude Node zobrazen pouze pomocí volání $Node->getNodeCaption(). Události je předán jeden parametr $Node, který obsahuje node, který má být vykreslen.
Pro ExpandableTreeView
Vlastnost useAjax, která určuje, zda bude pro překreslování při rozbalování/sbalování použit AJAX.
Funkce colapseAll(), sbalí všechny nody stromu.
Funkce expandAll(), rozbalí kompletní strom.
Funkce colapseNode($Node), sbalí určený Node stromu.
Funkce expandNode($Node), rozbalí určený Node. Pokud není Node zadán, pak rozbalí kořenový Node.
Funkce isNodeExpanded($Node), vrátí, zda je Node rozbalení (TRUE), či sbalený (FALSE).
Rozhraní ITreeViewNode a IExpandableTreeViewNode
Tyto rozhraní definují pomocné fukce, které musí implementovat každý Node stromu.
ITreeViewNode
funkce getChildNodes() musí vracet pole potomků aktuálního nodu.
funkce hasChildNodes() vrací, zda má aktuální node nějaké potomky, šlo by sice použít getChildNodes(), ale přesto je kvůli výkonu definována v rozhraní.
funkce getNodeCaption() vrací řetězec, který bude vykreslen, pokud není definováno jinak v události komponenty onRenderNode.
IExpandableTreeViewNode
funkce getNodeId() vrací jednoznačný identifikátor nodu, v případě použití DB typicky Primary Key.
Changelog
- 1.0.1
- Přidána vlastnost hideRootNode
- Upraven CSS pro IE
- 1.0.0
- První verze

(4 hlasů, průměr: 4 z 5)
Komentáře u příspěvku "Komponenty pro zobrazení stromů v Nette" Sledovat RSS komentářů nebo zanechte Trackback
Napsat komentář