From 2808e27c3482d7f308e7870de44858b962f3547c Mon Sep 17 00:00:00 2001 From: Johann Verghese Date: Mon, 9 Feb 2015 19:01:16 -0800 Subject: [PATCH] Update generated nonJSX file to run tests. --- test/tree-browser.nonjsx.js | 46 ++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/test/tree-browser.nonjsx.js b/test/tree-browser.nonjsx.js index 447ace2..316b5d8 100644 --- a/test/tree-browser.nonjsx.js +++ b/test/tree-browser.nonjsx.js @@ -47,24 +47,12 @@ var TreeBrowser = (function () { * figure out which data point in the component state to toggle collapse. * @param event The click event */ - _handleTreeNodeClick: function(event) { - var target = $(event.target), - paths = []; - // If target is a tree node that's not a leaf, then perform collapse/expand. - if (target.hasClass(getCSSPrefix("node"))) { - while(target && !target.data("root")) { // while not root node - if (isEmpty(paths)) { - paths.unshift(target.text()); - } else { - paths.unshift(target.prev().text()); - } - // Traverse additional parent because react is adding an extraneous container. - target = target.parent().parent(); - } + _handleClick: function(event) { + var paths = this.refs.treeRoot.getPathForContainedNode($(event.target)); + if (paths != null) { var clickedNode = this._findNodeFromPathArray(paths); clickedNode.collapse = !clickedNode.collapse; - // Note: Perhaps react has a more concise of saying update with current state. - this.setState(this.state) + this.forceUpdate(); } }, /** @@ -86,8 +74,8 @@ var TreeBrowser = (function () { render: function () { return ( React.createElement("div", {className: getCSSPrefix("container")}, - React.createElement("ul", {"data-root": "true", onClick: this._handleTreeNodeClick}, - React.createElement(TreeNode, {data: this.state.data}) + React.createElement("ul", {"data-root": "true", onClick: this._handleClick}, + React.createElement(TreeNode, {ref: "treeRoot", data: this.state.data}) ) ) ); @@ -109,6 +97,27 @@ var TreeBrowser = (function () { } return node.collapse ? classes + " " + getCSSPrefix("collapsed") : classes; }, + /** + * Given an element in subtree, returns it's path from the root. + * @param target + * @returns {*} + */ + getPathForContainedNode: function(target) { + var paths = []; + if (target.hasClass(getCSSPrefix("node"))) { + while (target && !target.data("root")) { // while not root node + if (isEmpty(paths)) { + paths.unshift(target.text()); + } else { + paths.unshift(target.prev().text()); + } + // Traverse additional parent because react is adding an extraneous container. + target = target.parent().parent(); + } + return paths; + } + return null; + }, render: function () { var treeNodes = this.props.data.map(function (node) { var nodeFragment = [ @@ -150,3 +159,4 @@ var TreeBrowser = (function () { }; })(); +