diff --git a/app/docker/views/swarm/visualizer/swarmVisualizerController.js b/app/docker/views/swarm/visualizer/swarmVisualizerController.js index 8dedbbe19..f16063282 100644 --- a/app/docker/views/swarm/visualizer/swarmVisualizerController.js +++ b/app/docker/views/swarm/visualizer/swarmVisualizerController.js @@ -19,6 +19,28 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer $('#refreshRateChange').fadeOut(1500); }; + function strToHash(str) { + var hash = 0; + for (var i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + return hash; + } + + function hashToHexColor(hash) { + var color = '#'; + for (var i = 0; i < 3;) { + color += ('00' + ((hash >> i++ * 8) & 0xFF).toString(16)).slice(-2); + } + return color; + } + + function stringToColor(str) { + var hash = strToHash(str); + var color = hashToHexColor(hash); + return color; + } + function stopRepeater() { var repeater = $scope.repeater; if (angular.isDefined(repeater)) { @@ -52,7 +74,7 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer } - function assignServiceName(services, tasks) { + function assignServiceInfo(services, tasks) { for (var i = 0; i < services.length; i++) { var service = services[i]; @@ -61,6 +83,7 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer if (task.ServiceId === service.Id) { task.ServiceName = service.Name; + task.ServiceColor = stringToColor(task.ServiceId); } } } @@ -84,7 +107,7 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer function prepareVisualizerData(nodes, services, tasks) { var visualizerData = {}; - assignServiceName(services, tasks); + assignServiceInfo(services, tasks); assignTasksToNode(nodes, tasks); visualizerData.nodes = nodes; diff --git a/app/docker/views/swarm/visualizer/swarmvisualizer.html b/app/docker/views/swarm/visualizer/swarmvisualizer.html index 5a827dac8..d4ef461f0 100644 --- a/app/docker/views/swarm/visualizer/swarmvisualizer.html +++ b/app/docker/views/swarm/visualizer/swarmvisualizer.html @@ -97,7 +97,7 @@