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));
+ }
};