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 - + Add config 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 }} Delete this config + Clone config