From 2a9ba1f9a2abd0230dbf26c44dd6126525a8b9f4 Mon Sep 17 00:00:00 2001 From: Maximilian Pachl Date: Fri, 6 Apr 2018 10:59:25 +0200 Subject: [PATCH] feat(swarm-visualizer): save settings to local storage (#1777) --- .../visualizer/swarmVisualizerController.js | 32 +++++++++++++++++-- .../swarm/visualizer/swarmvisualizer.html | 6 ++-- app/portainer/services/localStorage.js | 6 ++++ 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/docker/views/swarm/visualizer/swarmVisualizerController.js b/app/docker/views/swarm/visualizer/swarmVisualizerController.js index 757ebe32a..761ea1228 100644 --- a/app/docker/views/swarm/visualizer/swarmVisualizerController.js +++ b/app/docker/views/swarm/visualizer/swarmVisualizerController.js @@ -1,6 +1,6 @@ angular.module('portainer.docker') -.controller('SwarmVisualizerController', ['$q', '$scope', '$document', '$interval', 'NodeService', 'ServiceService', 'TaskService', 'Notifications', -function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskService, Notifications) { +.controller('SwarmVisualizerController', ['$q', '$scope', '$document', '$interval', 'NodeService', 'ServiceService', 'TaskService', 'Notifications', 'LocalStorage', +function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskService, Notifications, LocalStorage) { $scope.state = { ShowInformationPanel: true, @@ -12,11 +12,22 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer stopRepeater(); }); + $scope.changeShowInformationPanel = function(value) { + $scope.state.ShowInformationPanel = value; + LocalStorage.storeSwarmVisualizerSettings('show_info_panel', value); + }; + + $scope.changeDisplayOnlyRunningTasks = function() { + var value = $scope.state.DisplayOnlyRunningTasks; + LocalStorage.storeSwarmVisualizerSettings('display_only_running_tasks', value); + }; + $scope.changeUpdateRepeater = function() { stopRepeater(); setUpdateRepeater(); $('#refreshRateChange').show(); $('#refreshRateChange').fadeOut(1500); + LocalStorage.storeSwarmVisualizerSettings('refresh_rate', $scope.state.refreshRate); }; function stopRepeater() { @@ -51,7 +62,6 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer }, refreshRate * 1000); } - function assignServiceInfo(services, tasks) { for (var i = 0; i < services.length; i++) { var service = services[i]; @@ -91,6 +101,20 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer $scope.visualizerData = visualizerData; } + function loadState() { + var showInfoPanel = LocalStorage.getSwarmVisualizerSettings('show_info_panel'); + if (showInfoPanel !== undefined && showInfoPanel !== null) + $scope.state.ShowInformationPanel = showInfoPanel; + + var displayOnlyRunningTasks = LocalStorage.getSwarmVisualizerSettings('display_only_running_tasks'); + if (displayOnlyRunningTasks !== undefined && displayOnlyRunningTasks !== null) + $scope.state.DisplayOnlyRunningTasks = displayOnlyRunningTasks; + + var refreshRate = LocalStorage.getSwarmVisualizerSettings('refresh_rate'); + if (refreshRate !== undefined && refreshRate !== null) + $scope.state.refreshRate = refreshRate; + } + function initView() { $q.all({ nodes: NodeService.nodes(), @@ -110,6 +134,8 @@ function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskSer .catch(function error(err) { Notifications.error('Failure', err, 'Unable to initialize cluster visualizer'); }); + + loadState(); } initView(); diff --git a/app/docker/views/swarm/visualizer/swarmvisualizer.html b/app/docker/views/swarm/visualizer/swarmvisualizer.html index 750a46dee..7f06564c1 100644 --- a/app/docker/views/swarm/visualizer/swarmvisualizer.html +++ b/app/docker/views/swarm/visualizer/swarmvisualizer.html @@ -14,8 +14,8 @@
- - + +
@@ -45,7 +45,7 @@ Only display running tasks diff --git a/app/portainer/services/localStorage.js b/app/portainer/services/localStorage.js index 27c5256ea..1487a20ea 100644 --- a/app/portainer/services/localStorage.js +++ b/app/portainer/services/localStorage.js @@ -59,6 +59,12 @@ angular.module('portainer.app') storeDataTableSettings: function(key, data) { localStorageService.set('datatable_settings_' + key, data); }, + storeSwarmVisualizerSettings: function(key, data) { + localStorageService.set('swarmvisualizer_' + key, data); + }, + getSwarmVisualizerSettings: function(key) { + return localStorageService.get('swarmvisualizer_' + key); + }, clean: function() { localStorageService.clearAll(); }