From e8af2650f7f88289d06a078b53e4b03d063b8011 Mon Sep 17 00:00:00 2001 From: Samuel Padgett Date: Mon, 5 Dec 2016 10:10:32 -0500 Subject: [PATCH] Let users define labels when creating routes --- app/scripts/controllers/createRoute.js | 24 ++++++++++++++++------ app/views/create-route.html | 9 ++++++++- dist/scripts/scripts.js | 28 ++++++++++++++++---------- dist/scripts/templates.js | 5 ++++- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/app/scripts/controllers/createRoute.js b/app/scripts/controllers/createRoute.js index c6174f332e..14efc87fe2 100644 --- a/app/scripts/controllers/createRoute.js +++ b/app/scripts/controllers/createRoute.js @@ -17,13 +17,15 @@ angular.module('openshiftConsole') AuthorizationService, DataService, Navigate, - ProjectsService) { + ProjectsService, + keyValueEditorUtils) { $scope.alerts = {}; $scope.renderOptions = { hideFilterWidget: true }; $scope.projectName = $routeParams.project; $scope.serviceName = $routeParams.service; + $scope.labels = []; // Prefill route name with the service name. $scope.routing = { @@ -56,8 +58,7 @@ angular.module('openshiftConsole') return; } - var labels = {}, - orderByDisplayName = $filter('orderByDisplayName'); + var orderByDisplayName = $filter('orderByDisplayName'); DataService.list("services", context, function(services) { $scope.services = orderByDisplayName(services.by("metadata.name")); @@ -65,15 +66,26 @@ angular.module('openshiftConsole') $scope.routing.to.service = _.find($scope.services, function(service) { return !$scope.serviceName || service.metadata.name === $scope.serviceName; }); - $scope.$watch('routing.to.service', function() { - labels = angular.copy($scope.routing.to.service.metadata.labels); - }); }); + $scope.copyServiceLabels = function() { + var serviceLabels = _.get($scope, 'routing.to.service.metadata.labels', {}); + var existing = keyValueEditorUtils.mapEntries(keyValueEditorUtils.compactEntries($scope.labels)); + var updated = _.assign(existing, serviceLabels); + $scope.labels = _.map(updated, function(value, key) { + return { + name: key, + value: value + }; + }); + }; + $scope.createRoute = function() { if ($scope.createRouteForm.$valid) { $scope.disableInputs = true; var serviceName = $scope.routing.to.service.metadata.name; + var labels = keyValueEditorUtils.mapEntries(keyValueEditorUtils.compactEntries($scope.labels)); + var route = ApplicationGenerator.createRoute($scope.routing, serviceName, labels); var alternateServices = _.get($scope, 'routing.alternateServices', []); if (!_.isEmpty(alternateServices)) { diff --git a/app/views/create-route.html b/app/views/create-route.html index c04335e2f2..5417810773 100644 --- a/app/views/create-route.html +++ b/app/views/create-route.html @@ -18,7 +18,7 @@

Create Route

Routing is a way to make your application publicly visible.
-
+
Loading...
@@ -27,6 +27,13 @@

Create Route

services="services" show-name-input="true"> + + + Copy Service Labels
\n" + - "\n" + + "\n" + "
Loading...
\n" + "
\n" + "
\n" + "\n" + "\n" + + "\n" + + "\n" + + "Copy Service Labels\n" + "
\n" + "\n" + "Cancel\n" +