From e8ab89ae793863eeeb4c30db6eb608ce41516c02 Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 22 Aug 2018 08:41:02 +0200 Subject: [PATCH] feat(config-details): add the ability to clone a config (#2189) --- app/docker/__module.js | 2 +- .../configs-datatable/configsDatatable.html | 2 +- .../configs/create/createConfigController.js | 31 +++++++++++++++++-- .../views/configs/create/createconfig.html | 3 +- app/docker/views/configs/edit/config.html | 1 + 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/docker/__module.js b/app/docker/__module.js index 32253b43a..ffd451fbd 100644 --- a/app/docker/__module.js +++ b/app/docker/__module.js @@ -32,7 +32,7 @@ angular.module('portainer.docker', ['portainer.app']) var configCreation = { name: 'docker.configs.new', - url: '/new', + url: '/new?id', views: { 'content@': { templateUrl: 'app/docker/views/configs/create/createconfig.html', diff --git a/app/docker/components/datatables/configs-datatable/configsDatatable.html b/app/docker/components/datatables/configs-datatable/configsDatatable.html index b1e462101..9b2f4364f 100644 --- a/app/docker/components/datatables/configs-datatable/configsDatatable.html +++ b/app/docker/components/datatables/configs-datatable/configsDatatable.html @@ -11,7 +11,7 @@ ng-disabled="$ctrl.state.selectedItemCount === 0" ng-click="$ctrl.removeAction($ctrl.state.selectedItems)"> Remove - diff --git a/app/docker/views/configs/create/createConfigController.js b/app/docker/views/configs/create/createConfigController.js index 07868dd3c..c2f70685c 100644 --- a/app/docker/views/configs/create/createConfigController.js +++ b/app/docker/views/configs/create/createConfigController.js @@ -1,7 +1,6 @@ angular.module('portainer.docker') -.controller('CreateConfigController', ['$scope', '$state', 'Notifications', 'ConfigService', 'Authentication', 'FormValidator', 'ResourceControlService', -function ($scope, $state, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) { - +.controller('CreateConfigController', ['$scope', '$state', '$transition$', 'Notifications', 'ConfigService', 'Authentication', 'FormValidator', 'ResourceControlService', +function ($scope, $state, $transition$, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) { $scope.formValues = { Name: '', Labels: [], @@ -90,4 +89,30 @@ function ($scope, $state, Notifications, ConfigService, Authentication, FormVali $scope.editorUpdate = function(cm) { $scope.formValues.ConfigContent = cm.getValue(); }; + + function initView() { + if (!$transition$.params().id) { + $scope.formValues.displayCodeEditor = true; + return; + } + + ConfigService.config($transition$.params().id) + .then(function success(data) { + $scope.formValues.Name = data.Name + '_copy'; + $scope.formValues.Data = data.Data; + var labels = _.keys(data.Labels); + for (var i = 0; i < labels.length; i++) { + var labelName = labels[i]; + var labelValue = data.Labels[labelName]; + $scope.formValues.Labels.push({ name: labelName, value: labelValue}); + } + $scope.formValues.displayCodeEditor = true; + }) + .catch(function error(err) { + $scope.formValues.displayCodeEditor = true; + Notifications.error('Failure', err, 'Unable to clone config'); + }); + } + + initView(); }]); diff --git a/app/docker/views/configs/create/createconfig.html b/app/docker/views/configs/create/createconfig.html index 18cfc51ac..158cc4c2f 100644 --- a/app/docker/views/configs/create/createconfig.html +++ b/app/docker/views/configs/create/createconfig.html @@ -20,12 +20,13 @@
-
+
diff --git a/app/docker/views/configs/edit/config.html b/app/docker/views/configs/edit/config.html index 376bd2014..5fb4dda01 100644 --- a/app/docker/views/configs/edit/config.html +++ b/app/docker/views/configs/edit/config.html @@ -25,6 +25,7 @@ {{ config.Id }} +