From f764e4415ecffeebf577b98136a9a7e5dced91d7 Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Wed, 9 Sep 2015 18:26:44 +0200 Subject: [PATCH] respect both ways of adjacency for selected node --- client/app/scripts/charts/nodes-chart.js | 5 +++-- client/app/scripts/stores/app-store.js | 14 +++++++++++++- client/app/styles/main.less | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/client/app/scripts/charts/nodes-chart.js b/client/app/scripts/charts/nodes-chart.js index ffb41420c..73ff51e1f 100644 --- a/client/app/scripts/charts/nodes-chart.js +++ b/client/app/scripts/charts/nodes-chart.js @@ -4,6 +4,7 @@ const debug = require('debug')('scope:nodes-chart'); const React = require('react'); const timely = require('timely'); +const AppStore = require('../stores/app-store'); const Edge = require('./edge'); const Naming = require('../constants/naming'); const NodesLayout = require('./nodes-layout'); @@ -83,7 +84,7 @@ const NodesChart = React.createClass({ renderGraphNodes: function(nodes, scale) { const hasSelectedNode = this.props.selectedNodeId && this.props.nodes.has(this.props.selectedNodeId); - const adjacency = hasSelectedNode ? this.props.nodes.get(this.props.selectedNodeId).get('adjacency') : null; + const adjacency = hasSelectedNode ? AppStore.getAdjacentNodes() : null; return _.map(nodes, function(node) { const highlighted = _.includes(this.props.highlightedNodeIds, node.id) || this.props.selectedNodeId === node.id; @@ -214,7 +215,7 @@ const NodesChart = React.createClass({ return; } - const adjacency = this.props.nodes.get(props.selectedNodeId).get('adjacency'); + const adjacency = AppStore.getAdjacentNodes(); const adjacentLayoutNodes = []; adjacency.forEach(function(adjacentId) { diff --git a/client/app/scripts/stores/app-store.js b/client/app/scripts/stores/app-store.js index 7960a6388..bc594492d 100644 --- a/client/app/scripts/stores/app-store.js +++ b/client/app/scripts/stores/app-store.js @@ -9,6 +9,7 @@ const ActionTypes = require('../constants/action-types'); const Naming = require('../constants/naming'); const makeOrderedMap = Immutable.OrderedMap; +const makeSet = Immutable.Set; // Helpers @@ -44,6 +45,7 @@ function makeNode(node) { // Initial values let activeTopologyOptions = null; +let adjacentNodes = makeSet(); let currentTopology = null; let currentTopologyId = 'containers'; let errorUrl = null; @@ -94,9 +96,19 @@ const AppStore = assign({}, EventEmitter.prototype, { }, getAdjacentNodes: function() { + adjacentNodes = adjacentNodes.clear(); + if (nodes.has(selectedNodeId)) { - return nodes.get(selectedNodeId).get('adjacency'); + adjacentNodes = makeSet(nodes.get(selectedNodeId).get('adjacency')); + // fill up set with reverse edges + nodes.forEach(function(node, nodeId) { + if (node.get('adjacency').includes(selectedNodeId)) { + adjacentNodes = adjacentNodes.add(nodeId); + } + }); } + + return adjacentNodes; }, getCurrentTopology: function() { diff --git a/client/app/styles/main.less b/client/app/styles/main.less index c5e00e0ed..2a2b8022f 100644 --- a/client/app/styles/main.less +++ b/client/app/styles/main.less @@ -210,7 +210,7 @@ body { .link { stroke: @text-secondary-color; - stroke-width: 1.5px; + stroke-width: 1px; fill: none; stroke-opacity: 0.5; }