tree.js
Converts Unordered List (<ul> element) into interactive tree.
Objects
OAT.Tree(options)
Options may contain any of the following:
- imagePath - path to all images used in tree
- imagePrefix - prefix to all images
- ext - image name extension
- onlyOneOpened - boolean; can only one branch can be opened at a time?
- allowDrag - boolean; can user re-drag Tree nodes?
- useDots - boolean; draw dotted connectors?
- onClick - "select|toggle|false"; what to do when user clicks label/icon
- onDblClick - "select|toggle|false"; what to do when user double-clicks label/icon
- poorMode - boolean; switch to "memory_saving_increased_performance / lower_visual_features" mode?
- checkboxMode - boolean; use checkbox mode?
- allowDrag - boolean; can user re-drag Tree nodes?
- defaultCheck - boolean (only in checkbox mode) ; (ToBeDone: are checkboxes checked by default?)
- checkNOI - boolean (only in checkbox mode); if true, then checked nodes are contained in OAT.Tree::checkedNOI. Otherwise, this array contains unchecked nodes.
- checkCallback - function (only in checkbox mode); will be executed (with nodeSet argument) when user changes state of a checkbox.
Methods
OAT.Tree.assign(listElement, collapse)
This converts a list into an interactive tree.listElement specifies an <ul> element in which your list lives. Argument collapse toggles initial collapsing of whole tree.
Tree data structure can be accessed and modified. See Example for usage.
HTML Enhancement
Add attributes branchImg, toggleOpenImg, and toggleClosedImg, which would be appended to the <li> tag. This way we can have any desired name AND file format for the tree decoration.
Example
var t1 = new OAT.Tree({imagePath:"images", // will take images from imagePrefix:"", ext:"gif"}); // images/Tree_*.gif var t2 = new OAT.Tree({imagePath:"images", // will take images from imagePrefix:"prefix", ext:"png"}); // images/Tree_prefix_*.png t1.assign("myUL1", true); // collapsed t2.assign("myUL2", false); // expanded var node1 = t1.tree.children[0]; var node2 = t2.tree.children[1]; node2.appendChild(node1); node1.setLabel("newLabel"); node2.expand(); node1.createChild("newLabel", true); // second argument means that new // child is a node rather than leaf node2.deleteChild(node1);
Referenced by...