summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee')
-rw-r--r--ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee490
1 files changed, 0 insertions, 490 deletions
diff --git a/ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee b/ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee
deleted file mode 100644
index 5af050ac..00000000
--- a/ecomp-portal-FE/client/bower_components/jqTree/src/node.coffee
+++ /dev/null
@@ -1,490 +0,0 @@
-$ = jQuery
-
-
-Position =
- getName: (position) ->
- return Position.strings[position - 1]
-
- nameToIndex: (name) ->
- for i in [1..Position.strings.length]
- if Position.strings[i - 1] == name
- return i
- return 0
-
-Position.BEFORE = 1
-Position.AFTER = 2
-Position.INSIDE = 3
-Position.NONE = 4
-
-Position.strings = ['before', 'after', 'inside', 'none']
-
-class Node
- constructor: (o, is_root=false, node_class=Node) ->
- @name = ''
-
- @setData(o)
-
- @children = []
- @parent = null
-
- if is_root
- @id_mapping = {}
- @tree = this
- @node_class = node_class
-
- setData: (o) ->
- ###
- Set the data of this node.
-
- setData(string): set the name of the node
- setdata(object): set attributes of the node
-
- Examples:
- setdata('node1')
-
- setData({ name: 'node1', id: 1});
-
- setData({ name: 'node2', id: 2, color: 'green'});
-
- * This is an internal function; it is not in the docs
- * Does not remove existing node values
- ###
- setName = (name) =>
- if name != null
- @name = name
-
- if typeof o != 'object'
- setName(o)
- else
- for key, value of o
- if key == 'label'
- # You can use the 'label' key instead of 'name'; this is a legacy feature
- setName(value)
- else if key != 'children'
- # You can't update the children using this function
- @[key] = value
-
- return null
-
- # Init Node from data without making it the root of the tree
- initFromData: (data) ->
- addNode = (node_data) =>
- @setData(node_data)
-
- if node_data.children
- addChildren(node_data.children)
-
- addChildren = (children_data) =>
- for child in children_data
- node = new @tree.node_class('')
- node.initFromData(child)
- @addChild(node)
- return null
-
- addNode(data)
- return null
-
- ###
- Create tree from data.
-
- Structure of data is:
- [
- {
- label: 'node1',
- children: [
- { label: 'child1' },
- { label: 'child2' }
- ]
- },
- {
- label: 'node2'
- }
- ]
- ###
- loadFromData: (data) ->
- @removeChildren()
-
- for o in data
- node = new @tree.node_class(o)
- @addChild(node)
-
- if typeof o == 'object' and o.children
- node.loadFromData(o.children)
-
- return null
-
- ###
- Add child.
-
- tree.addChild(
- new Node('child1')
- );
- ###
- addChild: (node) ->
- @children.push(node)
- node._setParent(this)
-
- ###
- Add child at position. Index starts at 0.
-
- tree.addChildAtPosition(
- new Node('abc'),
- 1
- );
- ###
- addChildAtPosition: (node, index) ->
- @children.splice(index, 0, node)
- node._setParent(this)
-
- _setParent: (parent) ->
- @parent = parent
- @tree = parent.tree
- @tree.addNodeToIndex(this)
-
- ###
- Remove child. This also removes the children of the node.
-
- tree.removeChild(tree.children[0]);
- ###
- removeChild: (node) ->
- # remove children from the index
- node.removeChildren()
-
- @_removeChild(node)
-
- _removeChild: (node) ->
- @children.splice(
- @getChildIndex(node),
- 1
- )
- @tree.removeNodeFromIndex(node)
-
- ###
- Get child index.
-
- var index = getChildIndex(node);
- ###
- getChildIndex: (node) ->
- return $.inArray(node, @children)
-
- ###
- Does the tree have children?
-
- if (tree.hasChildren()) {
- //
- }
- ###
- hasChildren: ->
- return @children.length != 0
-
- isFolder: ->
- return @hasChildren() or @load_on_demand
-
- ###
- Iterate over all the nodes in the tree.
-
- Calls callback with (node, level).
-
- The callback must return true to continue the iteration on current node.
-
- tree.iterate(
- function(node, level) {
- console.log(node.name);
-
- // stop iteration after level 2
- return (level <= 2);
- }
- );
-
- ###
- iterate: (callback) ->
- _iterate = (node, level) ->
- if node.children
- for child in node.children
- result = callback(child, level)
-
- if result and child.hasChildren()
- _iterate(child, level + 1)
- return null
-
- _iterate(this, 0)
- return null
-
- ###
- Move node relative to another node.
-
- Argument position: Position.BEFORE, Position.AFTER or Position.Inside
-
- // move node1 after node2
- tree.moveNode(node1, node2, Position.AFTER);
- ###
- moveNode: (moved_node, target_node, position) ->
- if moved_node.isParentOf(target_node)
- # Node is parent of target node. This is an illegal move
- return
-
- moved_node.parent._removeChild(moved_node)
- if position == Position.AFTER
- target_node.parent.addChildAtPosition(
- moved_node,
- target_node.parent.getChildIndex(target_node) + 1
- )
- else if position == Position.BEFORE
- target_node.parent.addChildAtPosition(
- moved_node,
- target_node.parent.getChildIndex(target_node)
- )
- else if position == Position.INSIDE
- # move inside as first child
- target_node.addChildAtPosition(moved_node, 0)
-
- ###
- Get the tree as data.
- ###
- getData: (include_parent=false) ->
- getDataFromNodes = (nodes) ->
- data = []
-
- for node in nodes
- tmp_node = {}
-
- for k, v of node
- if (
- k not in ['parent', 'children', 'element', 'tree'] and
- Object.prototype.hasOwnProperty.call(node, k)
- )
- tmp_node[k] = v
-
- if node.hasChildren()
- tmp_node.children = getDataFromNodes(node.children)
-
- data.push(tmp_node)
-
- return data
-
- if include_parent
- return getDataFromNodes([this])
- else
- return getDataFromNodes(@children)
-
- getNodeByName: (name) ->
- return @getNodeByCallback(
- (node) -> (node.name == name)
- )
-
- getNodeByCallback: (callback) ->
- result = null
-
- @iterate(
- (node) ->
- if callback(node)
- result = node
- return false
- else
- return true
- )
-
- return result
-
-
- addAfter: (node_info) ->
- if not @parent
- return null
- else
- node = new @tree.node_class(node_info)
-
- child_index = @parent.getChildIndex(this)
- @parent.addChildAtPosition(node, child_index + 1)
-
- if typeof node_info == 'object' and node_info.children and node_info.children.length
- node.loadFromData(node_info.children)
-
- return node
-
- addBefore: (node_info) ->
- if not @parent
- return null
- else
- node = new @tree.node_class(node_info)
-
- child_index = @parent.getChildIndex(this)
- @parent.addChildAtPosition(node, child_index)
-
- if typeof node_info == 'object' and node_info.children and node_info.children.length
- node.loadFromData(node_info.children)
-
- return node
-
- addParent: (node_info) ->
- if not @parent
- return null
- else
- new_parent = new @tree.node_class(node_info)
- new_parent._setParent(@tree)
- original_parent = @parent
-
- for child in original_parent.children
- new_parent.addChild(child)
-
- original_parent.children = []
- original_parent.addChild(new_parent)
- return new_parent
-
- remove: ->
- if @parent
- @parent.removeChild(this)
- @parent = null
-
- append: (node_info) ->
- node = new @tree.node_class(node_info)
- @addChild(node)
-
- if typeof node_info == 'object' and node_info.children and node_info.children.length
- node.loadFromData(node_info.children)
-
- return node
-
- prepend: (node_info) ->
- node = new @tree.node_class(node_info)
- @addChildAtPosition(node, 0)
-
- if typeof node_info == 'object' and node_info.children and node_info.children.length
- node.loadFromData(node_info.children)
-
- return node
-
- isParentOf: (node) ->
- parent = node.parent
-
- while parent
- if parent == this
- return true
-
- parent = parent.parent
-
- return false
-
- getLevel: ->
- level = 0
- node = this
-
- while node.parent
- level += 1
- node = node.parent
-
- return level
-
- getNodeById: (node_id) ->
- return @id_mapping[node_id]
-
- addNodeToIndex: (node) ->
- if node.id?
- @id_mapping[node.id] = node
-
- removeNodeFromIndex: (node) ->
- if node.id?
- delete @id_mapping[node.id]
-
- removeChildren: ->
- @iterate(
- (child) =>
- @tree.removeNodeFromIndex(child)
- return true
- )
-
- @children = []
-
- getPreviousSibling: ->
- if not @parent
- return null
- else
- previous_index = @parent.getChildIndex(this) - 1
- if previous_index >= 0
- return @parent.children[previous_index]
- else
- return null
-
- getNextSibling: ->
- if not @parent
- return null
- else
- next_index = @parent.getChildIndex(this) + 1
- if next_index < @parent.children.length
- return @parent.children[next_index]
- else
- return null
-
- getNodesByProperty: (key, value) ->
- return @filter(
- (node) ->
- return node[key] == value
- )
-
- filter: (f) ->
- result = []
-
- @iterate(
- (node) ->
- if f(node)
- result.push(node)
-
- return true
- )
-
- return result
-
- getNextNode: (include_children=true) ->
- if include_children and @hasChildren() and @is_open
- # First child
- return @children[0]
- else
- if not @parent
- return null
- else
- next_sibling = @getNextSibling()
- if next_sibling
- # Next sibling
- return next_sibling
- else
- # Next node of parent
- return @parent.getNextNode(false)
-
- getPreviousNode: ->
- if not @parent
- return null
- else
- previous_sibling = @getPreviousSibling()
- if previous_sibling
- if not previous_sibling.hasChildren() or not previous_sibling.is_open
- # Previous sibling
- return previous_sibling
- else
- # Last child of previous sibling
- return previous_sibling.getLastChild()
- else
- return @getParent()
-
- getParent: ->
- # Return parent except if it is the root node
- if not @parent
- return null
- else if not @parent.parent
- # Root node -> null
- return null
- else
- return @parent
-
- getLastChild: ->
- if not @hasChildren()
- return null
- else
- last_child = @children[@children.length - 1]
- if not last_child.hasChildren() or not last_child.is_open
- return last_child
- else
- return last_child.getLastChild()
-
-
-module.exports =
- Node: Node
- Position: Position