Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EF28710587 for ; Tue, 19 May 2015 17:44:13 +0000 (UTC) Received: (qmail 85965 invoked by uid 500); 19 May 2015 17:44:13 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 85904 invoked by uid 500); 19 May 2015 17:44:13 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 85891 invoked by uid 99); 19 May 2015 17:44:13 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 May 2015 17:44:13 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 194C5E3599; Tue, 19 May 2015 17:44:13 +0000 (UTC) From: nadeeshaan To: dev@couchdb.apache.org Reply-To: dev@couchdb.apache.org References: In-Reply-To: Subject: [GitHub] couchdb-fauxton pull request: Gsoc2015 moving to sub Content-Type: text/plain Message-Id: <20150519174413.194C5E3599@git1-us-west.apache.org> Date: Tue, 19 May 2015 17:44:13 +0000 (UTC) Github user nadeeshaan commented on a diff in the pull request: https://github.com/apache/couchdb-fauxton/pull/401#discussion_r30625678 --- Diff: app/addons/documents/revisionTree/component.react.jsx --- @@ -0,0 +1,332 @@ +define([ + "app", + "api", + "react", + 'addons/documents/revisionTree/stores', + 'addons/documents/revisionTree/actions', +], + +function (app, FauxtonAPI, React, Stores) { + + var store = Stores.revTreeStore; + var lineObjs = []; + var nodeObjs = []; + var textObjs = []; + var grid = 100; + var scale = 7; + var r = 15; + + var LinesBox = React.createClass({ + render: function () { + return ( + + { + this.props.data.map(function (element, i) { + return ; + }) + } + + ); + } + }); + + var CirclesBox = React.createClass({ + + render: function () { + return ( + + { + this.props.data.map (function (element, i) { + return ; + }) + } + + ); + } + }); + + var Circle = React.createClass({ + + render: function () { + var cx = this.props.data.x; + var cy = this.props.data.y; + var radius = r; + var classVal = this.props.data.class; + + return ( + {this.props.children} + ); + } + }); + + var Line = React.createClass({ + + render: function () { + var x1 = this.props.data.x; + var y1 = this.props.data.y; + var x2 = this.props.data.nextX; + var y2 = this.props.data.nextY; + + return ( + {this.props.children} + ); + } + }); + + var TextsBox = React.createClass({ + + render: function () { + return ( + {this.props.children} + ); + } + }); + + var SVGComponent = React.createClass({ + + render: function () { + return ( + {this.props.children} + + ); + } + }); + + var Box = React.createClass({ + + render: function () { + return ( +
+ {this.props.children} +
+ ); + } + }); + + var Text = React.createClass({ + + render: function () { + var styleVals = { + left: this.props.data.stLeft, + top: this.props.data.stTop + }; + + return ( +
+

{this.props.data.short}

+ {this.props.children} +
+ ); + } + }); + + var draw = function (paths, deleted, winner, minUniq) { + var maxX = grid; + var maxY = grid; + var levelCount = []; // numer of nodes on some level (pos) + lineObjs.length = 0; + nodeObjs.length = 0; + textObjs.length = 0; + + var map = {}; // map from rev to position + + function drawPath(path) { + for (var i = 0; i < path.length; i++) { + var rev = path[i]; + var isLeaf = i === 0; + var pos = +rev.split('-')[0]; + + if (!levelCount[pos]) { + levelCount[pos] = 1; + } + + var x = levelCount[pos] * grid; + var y = pos * grid; + + if (!isLeaf) { + var nextRev = path[i - 1]; + var nextX = map[nextRev][0]; + var nextY = map[nextRev][1]; + + if (map[rev]) { + x = map[rev][0]; + y = map[rev][1]; + } + + var lineObj = { + "x" : x, + "y" : y, + "nextX" : nextX, + "nextY" : nextY + }; + + lineObjs.push(lineObj); + } + + if (map[rev]) { + break; + } + + maxX = Math.max(x, maxX); + maxY = Math.max(y, maxY); + levelCount[pos]++; + + node(x, y, rev, isLeaf, rev in deleted, rev === winner, minUniq); + map[rev] = [x, y]; + } + } + + paths.forEach(drawPath); + }; + + var minUniqueLength = function (arr) { + function strCommon(a, b) { + + if (a === b) { + return a.length; + } + + var i = 0; + + while (++i) { + if (a[i - 1] !== b[i - 1]) return i; + } + } + + var array = arr.slice(0); + var com = 1; + array.sort(); + + for (var i = 1; i < array.length; i++) { + com = Math.max(com, strCommon(array[i], array[i - 1])); + } + + return com; + }; + + function node(x, y, rev, isLeaf, isDeleted, isWinner, shortDescLen) { + circ(x, y, r, isLeaf, isDeleted, isWinner); + var pos = rev.split('-')[0]; + var id = rev.split('-')[1]; + var opened = false; + + var textObj = { + "stLeft": (x - 40) + "px", + "stTop": (y - 30) + "px", + "short": pos + '-' + id.substr(0, shortDescLen), + "long": pos + '-' + id + }; + + textObjs.push(textObj); + } + + var circ = function (x, y, r, isLeaf, isDeleted, isWinner) { + + var leafStat = ""; + + if (isLeaf) { + leafStat = "leaf"; + } + if (isWinner) { + leafStat = "winner"; + } + if (isDeleted) { + leafStat = "deleted"; + } + + var nodeObj = { + "x" : x, + "y" : y, + "class" : leafStat + }; + + nodeObjs.push(nodeObj); + }; + + var App = React.createClass({ + + getInitialState: function () { + return { + lines: [], + treeNodes: [], + nodeTextObjs: [] + }; + }, + + componentDidMount: function () { + var paths = []; + var deleted = {}; + var treeDataOptions = store.getTreeOptions(); --- End diff -- Fixed the flux related Issue --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---