Tree.Node Class
Represents a tree node in a Tree
data structure.
Constructor
Tree.Node
-
tree
-
[config]
Parameters:
-
tree
TreeTree
instance with which this node should be associated. -
[config]
Object optionalConfiguration hash for this node.
-
[canHaveChildren=false]
Boolean optionalWhether or not this node can contain child nodes. Will be automatically set to
true
if not specified andconfig.children
contains one or more children. -
[children]
Tree.Node[] optionalArray of
Tree.Node
instances for child nodes of this node. -
[data]
Object optionalImplementation-specific data related to this node. You may add arbitrary properties to this hash for your own use.
-
[id]
String optionalUnique id for this node. This id must be unique among all tree nodes on the entire page, and will also be used as this node's DOM id when it's rendered by a TreeView. A unique id will be automatically generated unless you specify a custom value.
-
[state]
Object optionalState hash for this node. You may add arbitrary state properties to this hash for your own use. See the docs for
Tree.Node
'sstate
property for details on state values used internally byTree.Node
.
-
Index
Methods
Methods
append
-
node
-
[options]
Appends the given tree node or array of nodes to the end of this node's children.
Parameters:
-
node
Object | Object | Tree.Node | Tree.Node[]Child node, node config object, array of child nodes, or array of node config objects to append to the given parent. Node config objects will automatically be converted into node instances.
-
[options]
Object optionalOptions.
-
[silent=false]
Boolean optionalIf
true
, theadd
event will be suppressed.
-
Returns:
Node or array of nodes that were appended.
depth
()
Number
Returns this node's depth.
The root node of a tree always has a depth of 0. A child of the root has a depth of 1, a child of that child will have a depth of 2, and so on.
Returns:
This node's depth.
empty
-
[options]
Removes all children from this node. The removed children will still be
reusable unless the destroy
option is truthy.
Parameters:
-
[options]
Object optionalOptions.
-
[destroy=false]
Boolean optionalIf
true
, the children will also be destroyed, which makes them available for garbage collection and means they can't be reused. -
[silent=false]
Boolean optionalIf
true
,remove
events will be suppressed. -
[src]
String optionalSource of the change, to be passed along to the event facade of the resulting event. This can be used to distinguish between changes triggered by a user and changes triggered programmatically, for example.
-
Returns:
Array of removed child nodes.
find
-
[options]
-
callback
-
[thisObj]
Performs a depth-first traversal of this node, passing it and each of its descendants to the specified callback, and returning the first node for which the callback returns a truthy value.
Traversal will stop as soon as a truthy value is returned from the callback.
See Tree#traverseNode()
for more details on how depth-first traversal
works.
Parameters:
-
[options]
Object optionalOptions.
-
[depth]
Number optionalDepth limit. If specified, descendants will only be traversed to this depth before backtracking and moving on.
-
-
callback
FunctionCallback function to call with the traversed node and each of its descendants. If this function returns a truthy value, traversal will be stopped and the current node will be returned.
-
node
Tree.NodeNode being traversed.
-
-
[thisObj]
Object optionalthis
object to use when executing callback.
Returns:
Returns the first node for which the callback
returns a truthy value, or null
if the callback never returns a truthy
value.
hasChildren
()
Boolean
Returns true
if this node has one or more child nodes.
Returns:
true
if this node has one or more child nodes, false
otherwise.
index
()
Number
Returns the numerical index of this node within its parent node, or -1
if
this node doesn't have a parent node.
Returns:
Index of this node within its parent node, or -1
if this
node doesn't have a parent node.
indexOf
-
node
Returns the numerical index of the given child node, or -1
if the node is
not a child of this node.
Parameters:
-
node
Tree.NodeChild node.
Returns:
Index of the child, or -1
if the node is not a child of
this node.
insert
-
node
-
[options]
Inserts a node or array of nodes at the specified index under this node, or appends them to this node if no index is specified.
If a node being inserted is from another tree, it and all its children will be removed from that tree and moved to this one.
Parameters:
-
node
Object | Object | Tree.Node | Tree.Node[]Child node, node config object, array of child nodes, or array of node config objects to insert under the given parent. Node config objects will automatically be converted into node instances.
-
[options]
Object optionalOptions.
-
[index]
Number optionalIndex at which to insert the child node. If not specified, the node will be appended as the last child of the parent.
-
[silent=false]
Boolean optionalIf
true
, theadd
event will be suppressed. -
[src='insert']
String optionalSource of the change, to be passed along to the event facade of the resulting event. This can be used to distinguish between changes triggered by a user and changes triggered programmatically, for example.
-
Returns:
Node or array of nodes that were inserted.
isInTree
()
Boolean
Returns true
if this node has been inserted into a tree, false
if it is
merely associated with a tree and has not yet been inserted.
Returns:
true
if this node has been inserted into a tree, false
otherwise.
isRoot
()
Boolean
Returns true
if this node is the root of the tree.
Returns:
true
if this node is the root of the tree, false
otherwise.
next
()
Tree.Node
Returns this node's next sibling, or undefined
if this node is the last
child.
Returns:
This node's next sibling, or undefined
if this node is
the last child.
prepend
-
node
-
[options]
Prepends a node or array of nodes at the beginning of this node's children.
If a node being prepended is from another tree, it and all its children will be removed from that tree and moved to this one.
Parameters:
-
node
Object | Object | Tree.Node | Tree.Node[]Child node, node config object, array of child nodes, or array of node config objects to prepend to this node. Node config objects will automatically be converted into node instances.
-
[options]
Object optionalOptions.
-
[silent=false]
Boolean optionalIf
true
, theadd
event will be suppressed.
-
Returns:
Node or array of nodes that were prepended.
previous
()
Tree.Node
Returns this node's previous sibling, or undefined
if this node is the
first child
Returns:
This node's previous sibling, or undefined
if this
node is the first child.
remove
-
[options]
Removes this node from its parent node.
Parameters:
-
[options]
Object optionalOptions.
-
[destroy=false]
Boolean optionalIf
true
, this node and all its children will also be destroyed, which makes them available for garbage collection and means they can't be reused. -
[silent=false]
Boolean optionalIf
true
, theremove
event will be suppressed. -
[src]
String optionalSource of the change, to be passed along to the event facade of the resulting event. This can be used to distinguish between changes triggered by a user and changes triggered programmatically, for example.
-
size
()
Number
Returns the total number of nodes contained within this node, including all descendants of this node's children.
Returns:
Total number of nodes contained within this node, including all descendants.
toJSON
()
Object
Serializes this node to an object suitable for use in JSON.
Returns:
Serialized node object.
traverse
-
[options]
-
callback
-
[thisObj]
Performs a depth-first traversal of this node, passing it and each of its descendants to the specified callback.
If the callback function returns Tree.STOP_TRAVERSAL
, traversal will be
stopped immediately. Otherwise, it will continue until the deepest
descendant of node has been traversed, or until each branch has been
traversed to the optional maximum depth limit.
Since traversal is depth-first, that means nodes are traversed like this:
1
/ | \
2 8 9
/ \ \
3 7 10
/ | \ / \
4 5 6 11 12
Parameters:
-
[options]
Object optionalOptions.
-
[depth]
Number optionalDepth limit. If specified, descendants will only be traversed to this depth before backtracking and moving on.
-
-
callback
FunctionCallback function to call with the traversed node and each of its descendants.
-
node
Tree.NodeNode being traversed.
-
-
[thisObj]
Object optionalthis
object to use when executing callback.
Returns:
Returns Tree.STOP_TRAVERSAL
if traversal was stopped;
otherwise returns undefined
.
Properties
_indexMap
Object
protected
Mapping of child node ids to indices.
_isIndexStale
Boolean
protected
Flag indicating whether the _indexMap
is stale and needs to be rebuilt.
Default: true
_isYUITreeNode
Boolean
protected
Simple way to type-check that this is an instance of Tree.Node.
Default: true
_serializable
String
protected
Array of property names on this node that should be serialized to JSON when
toJSON()
is called.
Note that the children
property is a special case that is managed
separately.
canHaveChildren
Boolean
Whether or not this node can contain child nodes.
This value is falsy by default unless child nodes are added at instantiation
time, in which case it will be automatically set to true
. You can also
manually set it to true
to indicate that a node can have children even
though it might not currently have any children.
Note that regardless of the value of this property, appending, prepending,
or inserting a node into this node will cause canHaveChildren
to be set to
true automatically.
data
Object
Arbitrary serializable data related to this node.
Use this property to store any data that should accompany this node when it is serialized to JSON.
Default: {}
id
String
Unique id for this node.
parent
Tree.Node
Parent node of this node, or undefined
if this is an unattached node or
the root node.
state
Object
Current state of this node.
Use this property to store state-specific info -- such as whether this node is "open", "selected", or any other arbitrary state -- that should accompany this node when it is serialized to JSON.