From b9ce725561652b91cb9a41b1c7c81158c4747b77 Mon Sep 17 00:00:00 2001 From: Simon Howe Date: Mon, 11 Apr 2016 15:11:03 +0200 Subject: [PATCH 1/2] Don't enlarge focused nodes. - Calculate size based on number of nodes that come up into the selection area. --- client/app/scripts/charts/node-container.js | 2 +- client/app/scripts/charts/node.js | 4 +++- client/app/scripts/charts/nodes-chart.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/client/app/scripts/charts/node-container.js b/client/app/scripts/charts/node-container.js index 2296731ae..75506b290 100644 --- a/client/app/scripts/charts/node-container.js +++ b/client/app/scripts/charts/node-container.js @@ -11,7 +11,7 @@ export default class NodeContainer extends React.Component { render() { const { dx, dy, focused, layoutPrecision, zoomScale } = this.props; const animConfig = [80, 20]; // stiffness, damping - const scaleFactor = focused ? (2 / zoomScale) : 1; + const scaleFactor = focused ? (1 / zoomScale) : 1; const other = _.omit(this.props, 'dx', 'dy'); return ( diff --git a/client/app/scripts/charts/node.js b/client/app/scripts/charts/node.js index ceeb8e899..8c6235806 100644 --- a/client/app/scripts/charts/node.js +++ b/client/app/scripts/charts/node.js @@ -55,9 +55,11 @@ export default class Node extends React.Component { } render() { - const { blurred, focused, highlighted, label, nodeScale, pseudo, rank, + const { blurred, focused, highlighted, label, pseudo, rank, subLabel, scaleFactor, transform, zoomScale } = this.props; + const nodeScale = focused ? this.props.selectedNodeScale : this.props.nodeScale; + const color = getNodeColor(rank, label, pseudo); const labelText = ellipsis(label, 14, nodeScale(4 * scaleFactor)); const subLabelText = ellipsis(subLabel, 12, nodeScale(4 * scaleFactor)); diff --git a/client/app/scripts/charts/nodes-chart.js b/client/app/scripts/charts/nodes-chart.js index d6123a582..5316339ae 100644 --- a/client/app/scripts/charts/nodes-chart.js +++ b/client/app/scripts/charts/nodes-chart.js @@ -270,7 +270,7 @@ export default class NodesChart extends React.Component { }); // auto-scale node size for selected nodes - const selectedNodeScale = this.getNodeScale(props); + const selectedNodeScale = this.getNodeScale(Object.assign({}, props, {nodes: adjacentNodes})); return { selectedNodeScale, From 6754c03980235c3bf0d0fefc5236bc26ee535dc0 Mon Sep 17 00:00:00 2001 From: Simon Howe Date: Mon, 11 Apr 2016 15:33:23 +0200 Subject: [PATCH 2/2] Selected-node-size review feedback - Tighten up method definition --- client/app/scripts/charts/nodes-chart.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/app/scripts/charts/nodes-chart.js b/client/app/scripts/charts/nodes-chart.js index 5316339ae..0308f2e6e 100644 --- a/client/app/scripts/charts/nodes-chart.js +++ b/client/app/scripts/charts/nodes-chart.js @@ -270,7 +270,7 @@ export default class NodesChart extends React.Component { }); // auto-scale node size for selected nodes - const selectedNodeScale = this.getNodeScale(Object.assign({}, props, {nodes: adjacentNodes})); + const selectedNodeScale = this.getNodeScale(adjacentNodes, props.width, props.height); return { selectedNodeScale, @@ -314,7 +314,7 @@ export default class NodesChart extends React.Component { const nodeMetrics = stateNodes.map(node => makeMap({ metrics: node.get('metrics') })); - const nodeScale = this.getNodeScale(props); + const nodeScale = this.getNodeScale(props.nodes, props.width, props.height); const nextState = { nodeScale }; const options = { @@ -365,11 +365,11 @@ export default class NodesChart extends React.Component { return nextState; } - getNodeScale(props) { - const expanse = Math.min(props.height, props.width); + getNodeScale(nodes, width, height) { + const expanse = Math.min(height, width); const nodeSize = expanse / 3; // single node should fill a third of the screen const maxNodeSize = expanse / 10; - const normalizedNodeSize = Math.min(nodeSize / Math.sqrt(props.nodes.size), maxNodeSize); + const normalizedNodeSize = Math.min(nodeSize / Math.sqrt(nodes.size), maxNodeSize); return this.state.nodeScale.copy().range([0, normalizedNodeSize]); }