Merge pull request #1259 from weaveworks/1244-focused-node-size

Don't enlarge focused nodes.
This commit is contained in:
Simon
2016-04-11 15:34:32 +02:00
3 changed files with 9 additions and 7 deletions

View File

@@ -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 (

View File

@@ -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 truncate = !focused && !highlighted;
const labelText = truncate ? ellipsis(label, 14, nodeScale(4 * scaleFactor)) : label;

View File

@@ -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(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]);
}