From 36fbaa9026fde0d8e5588b8340215c96fc186d4f Mon Sep 17 00:00:00 2001 From: alice groux Date: Tue, 26 Jan 2021 16:04:20 +0100 Subject: [PATCH 1/2] fix(docker/services): save the settings of the table for auto refresh --- .../services-datatable/servicesDatatableController.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/docker/components/datatables/services-datatable/servicesDatatableController.js b/app/docker/components/datatables/services-datatable/servicesDatatableController.js index 242980135..cfcdcb4c8 100644 --- a/app/docker/components/datatables/services-datatable/servicesDatatableController.js +++ b/app/docker/components/datatables/services-datatable/servicesDatatableController.js @@ -24,6 +24,10 @@ angular.module('portainer.docker').controller('ServicesDatatableController', [ } }; + this.onSettingsRepeaterChange = function () { + DatatableService.setDataTableSettings(this.tableKey, this.settings); + }; + this.expandItem = function (item, expanded) { item.Expanded = expanded; if (item.Expanded) { From 51d584bb50138acc8d620860c773d602f152d6df Mon Sep 17 00:00:00 2001 From: alice groux Date: Wed, 27 Jan 2021 16:10:49 +0100 Subject: [PATCH 2/2] fix(docker/services): get datas from local storage when auto refresh is enable --- .../servicesDatatableController.js | 11 +++++++---- app/docker/views/services/servicesController.js | 13 +++++++------ .../datatables/genericDatatableController.js | 13 +++++++++++-- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/docker/components/datatables/services-datatable/servicesDatatableController.js b/app/docker/components/datatables/services-datatable/servicesDatatableController.js index cfcdcb4c8..b17628b0c 100644 --- a/app/docker/components/datatables/services-datatable/servicesDatatableController.js +++ b/app/docker/components/datatables/services-datatable/servicesDatatableController.js @@ -24,10 +24,6 @@ angular.module('portainer.docker').controller('ServicesDatatableController', [ } }; - this.onSettingsRepeaterChange = function () { - DatatableService.setDataTableSettings(this.tableKey, this.settings); - }; - this.expandItem = function (item, expanded) { item.Expanded = expanded; if (item.Expanded) { @@ -70,6 +66,13 @@ angular.module('portainer.docker').controller('ServicesDatatableController', [ } }; + this.onDataRefresh = function () { + var storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey); + if (storedExpandedItems !== null) { + this.expandItems(storedExpandedItems); + } + }; + this.$onInit = function () { this.setDefaults(); this.prepareTableFromDataset(); diff --git a/app/docker/views/services/servicesController.js b/app/docker/views/services/servicesController.js index 6752130e2..6e33208d3 100644 --- a/app/docker/views/services/servicesController.js +++ b/app/docker/views/services/servicesController.js @@ -13,12 +13,13 @@ angular.module('portainer.docker').controller('ServicesController', [ function getServices() { var agentProxy = $scope.applicationState.endpoint.mode.agentProxy; - $q.all({ - services: ServiceService.services(), - tasks: TaskService.tasks(), - containers: agentProxy ? ContainerService.containers(1) : [], - nodes: NodeService.nodes(), - }) + return $q + .all({ + services: ServiceService.services(), + tasks: TaskService.tasks(), + containers: agentProxy ? ContainerService.containers(1) : [], + nodes: NodeService.nodes(), + }) .then(function success(data) { var services = data.services; var tasks = data.tasks; diff --git a/app/portainer/components/datatables/genericDatatableController.js b/app/portainer/components/datatables/genericDatatableController.js index 60a7a2fe6..30f02dd44 100644 --- a/app/portainer/components/datatables/genericDatatableController.js +++ b/app/portainer/components/datatables/genericDatatableController.js @@ -183,8 +183,9 @@ angular.module('portainer.app').controller('GenericDatatableController', [ }; this.startRepeater = function () { - this.repeater = $interval(() => { - this.refreshCallback(); + this.repeater = $interval(async () => { + await this.refreshCallback(); + this.onDataRefresh(); }, this.settings.repeater.refreshRate * 1000); }; @@ -197,6 +198,14 @@ angular.module('portainer.app').controller('GenericDatatableController', [ } DatatableService.setDataTableSettings(this.tableKey, this.settings); }; + + /** + * Override this method to execute code after calling the refresh callback + */ + this.onDataRefresh = function () { + return; + }; + /** * !REPEATER SECTION */