diff --git a/src/scripts/viewer/2d/graphUI.js b/src/scripts/viewer/2d/graphUI.js index 6ec2bda..3edc1cc 100644 --- a/src/scripts/viewer/2d/graphUI.js +++ b/src/scripts/viewer/2d/graphUI.js @@ -3,8 +3,11 @@ var eventify = require('ngraph.events'); var arrow = require('./arrow'); var defaultNodeColor = '#CFCCDF'; var defaultTextColor = '#484A5C'; +var defaultRadius = 5; +var minRadius = 0.25; +var maxRadius = 30; -module.exports = function(svgRoot) { +module.exports = function(svgRoot, showSize) { var nodeUIModels = Object.create(null); var linkUIModels = Object.create(null); @@ -45,7 +48,7 @@ module.exports = function(svgRoot) { node: function(node) { var ui = svg.compile([ "", - "", + "", "{{text}}", "" ].join('\n')); @@ -55,7 +58,8 @@ module.exports = function(svgRoot) { originalColor: defaultNodeColor, textColor: defaultTextColor, originalTextColor: defaultTextColor, - text: node.id + text: node.id, + nodeRadius: getNodeRadius(node) }; nodeUIModels[node.id] = { @@ -111,4 +115,12 @@ module.exports = function(svgRoot) { info.model.textColor = textColor; info.ui.dataSource(info.model); } + + function getNodeRadius(node) { + var radius = defaultRadius; + if (showSize && node.data && node.data.dist && node.data.dist.unpackedSize) { + radius = (node.data.dist.unpackedSize / 5000).toFixed(2); + } + return Math.min(Math.max(minRadius, radius), maxRadius); + } }; diff --git a/src/scripts/viewer/2d/graphViewer.js b/src/scripts/viewer/2d/graphViewer.js index 7bede61..c6459dc 100644 --- a/src/scripts/viewer/2d/graphViewer.js +++ b/src/scripts/viewer/2d/graphViewer.js @@ -12,7 +12,8 @@ function graphViewer() { 'source': '=', 'nodeSelected': '=', 'root': '=', - 'mode': '=' + 'mode': '=', + 'showSize': '=' }, compile: function(tElement, tAttrs, transclude) { @@ -48,7 +49,7 @@ function graphViewer() { highlightNodesFromRequest(request); }); - var graphUI = require('./graphUI')(renderer.svgRoot); + var graphUI = require('./graphUI')(renderer.svgRoot, scope.showSize); renderer.node(graphUI.node).placeNode(graphUI.placeNode); renderer.link(graphUI.link).placeLink(graphUI.placeLink); diff --git a/src/scripts/viewer/2d/package2dView.html b/src/scripts/viewer/2d/package2dView.html index 3569a43..1723f85 100644 --- a/src/scripts/viewer/2d/package2dView.html +++ b/src/scripts/viewer/2d/package2dView.html @@ -24,4 +24,6 @@

Remaining packages: {{progress}}

+ +
diff --git a/src/scripts/viewer/2d/package2dViewController.js b/src/scripts/viewer/2d/package2dViewController.js index 00e06ba..29d1b89 100644 --- a/src/scripts/viewer/2d/package2dViewController.js +++ b/src/scripts/viewer/2d/package2dViewController.js @@ -7,19 +7,15 @@ var getLocation = require('../getLocation.js'); var createGraphBuilder = require('../graphBuilder'); module.exports = function($scope, $routeParams, $http, $location) { - var applyToScope = require('../applyToScope')($scope); // TODO: Remove root, it's no longer valid $scope.root = $routeParams.pkgId; $scope.showProgress = true; $scope.switchMode = switchMode; + $scope.showSize = false; + $scope.toggleSize = toggleSize; - var graphBuilder = createGraphBuilder($routeParams.pkgId, $routeParams.version, $http, applyToScope(progressChanged)); - $scope.graph = graphBuilder.graph; - - graphBuilder.start - .then(applyToScope(graphLoaded)) - .catch(applyToScope(errorOccured)); + refreshGraph(); function progressChanged(queueLength) { $scope.progress = queueLength; @@ -54,4 +50,20 @@ module.exports = function($scope, $routeParams, $http, $location) { var path = getLocation($routeParams, /* is2d = */ false); $location.path(path); } + + function toggleSize() { + $scope.showSize = !$scope.showSize; + refreshGraph(); + } + + function refreshGraph() { + var applyToScope = require('../applyToScope')($scope); + var graphBuilder = createGraphBuilder($routeParams.pkgId, $routeParams.version, $http, applyToScope(progressChanged)); + + $scope.graph = graphBuilder.graph; + + graphBuilder.start + .then(applyToScope(graphLoaded)) + .catch(applyToScope(errorOccured)); + } };