diff --git a/app/scripts/directives/editEnvironmentFrom.js b/app/scripts/directives/editEnvironmentFrom.js index 709ca35835..ffc3517d71 100644 --- a/app/scripts/directives/editEnvironmentFrom.js +++ b/app/scripts/directives/editEnvironmentFrom.js @@ -11,7 +11,8 @@ addRowLink: '@', // creates a link to "add row" and sets its text label entries: '=', // an array of objects containing configmaps and secrets envFromSelectorOptions: '<', // dropdown selector options, an array of objects - selectorPlaceholder: '@' // placeholder copy for dropdown selector + selectorPlaceholder: '@', // placeholder copy for dropdown selector + isReadonly: '= 1; + }; + ctrl.isEnvFromReadonly = function(entry) { - return ctrl.isReadonlyAny || - entry.isReadonlyValue === true || - ((entry.secretRef || entry.configMapRef) && !entry.selectedEnvFrom) || - _.isEmpty(ctrl.envFromSelectorOptions); + return ctrl.isReadonly === true || entry && entry.isReadonly === true; }; ctrl.groupByKind = function(object) { return humanizeKind(object.kind); }; - //ctrl.uniqueForValue = utils.uniqueForValue; ctrl.dragControlListeners = { accept: function (sourceItemHandleScope, destSortableScope) { return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id; @@ -99,8 +104,13 @@ }); }; - var updateEnvFromEntries = function(entries) { - ctrl.envFromEntries = entries || []; + var getReferenceValues = function(option) { + var kindRef = _.camelCase(option.kind) + 'Ref'; + return _.filter(ctrl.envFromEntries, [kindRef, {name:option.metadata.name}]); + }; + + var updateEnvFromEntries = function() { + ctrl.envFromEntries = ctrl.entries || []; if(!ctrl.envFromEntries.length) { addEntry(ctrl.envFromEntries); @@ -109,56 +119,28 @@ _.each(ctrl.envFromEntries, function(entry) { if(entry) { if(entry.configMapRef && !canI('configmaps', 'get')) { - entry.isReadonlyValue = true; + entry.isReadonly = true; } if(entry.secretRef && !canI('secrets', 'get')) { - entry.isReadonlyValue = true; + entry.isReadonly = true; } } }); - }; - - var getReferenceValue = function(option) { - var referenceValue; - switch(option.kind) { - case 'ConfigMap': - referenceValue = _.find(ctrl.envFromEntries, {configMapRef: {name: option.metadata.name}}); - break; - case 'Secret': - referenceValue = _.find(ctrl.envFromEntries, {secretRef: {name: option.metadata.name}}); - break; - } + _.each(ctrl.envFromSelectorOptions, function(option) { + _.each(getReferenceValues(option), function(val, i) { + _.set(val, 'selectedEnvFrom', option); - return referenceValue; - }; - - ctrl.checkEntries = function(option, entrySelectedEnvFrom) { - if(option === entrySelectedEnvFrom) { - return false; - } - - return !!(getReferenceValue(option)); - }; - - var findReferenceValueForEntries = function(entries, envFromSelectorOptions) { - ctrl.cannotAdd = (ctrl.isReadonlyAny || _.isEmpty(envFromSelectorOptions)); - - if(envFromSelectorOptions) { - _.each(envFromSelectorOptions, function(option) { - var referenceValue = getReferenceValue(option); - - if (referenceValue) { - _.set(referenceValue, 'selectedEnvFrom', option); + if (i > 0) { + _.set(val, 'duplicateEnvFrom', true); } }); - } + }); }; ctrl.$onInit = function() { - updateEnvFromEntries(ctrl.entries); - findReferenceValueForEntries(ctrl.entries, ctrl.envFromSelectorOptions); + updateEnvFromEntries(); if('cannotDelete' in $attrs) { ctrl.cannotDeleteAny = true; @@ -168,10 +150,6 @@ ctrl.cannotSort = true; } - if('isReadonly' in $attrs) { - ctrl.isReadonlyAny = true; - } - if('showHeader' in $attrs) { ctrl.showHeader = true; } @@ -182,12 +160,8 @@ }; ctrl.$onChanges = function(changes) { - if(changes.entries) { - updateEnvFromEntries(changes.entries.currentValue); - } - - if(changes.envFromSelectorOptions) { - findReferenceValueForEntries(ctrl.envFromEntries, changes.envFromSelectorOptions.currentValue); + if(changes.entries || changes.envFromSelectorOptions) { + updateEnvFromEntries(); } }; } diff --git a/app/views/directives/edit-environment-from.html b/app/views/directives/edit-environment-from.html index 2b607be32b..a610297fd5 100644 --- a/app/views/directives/edit-environment-from.html +++ b/app/views/directives/edit-environment-from.html @@ -8,7 +8,6 @@ -
-
+
- No secrets or config maps have been added as Environment From. + No config maps or secrets have been added as Environment From.
Use all keys and values from @@ -29,8 +28,8 @@
-
-
+
+
@@ -52,7 +50,7 @@
-
+
-
+
{{ $ctrl.addRowLink }} + ng-click="$ctrl.onAddRow()">{{$ctrl.addRowLink}}
+ diff --git a/app/views/directives/edit-environment-variables.html b/app/views/directives/edit-environment-variables.html index b5f1e950dc..2c2fa1ec98 100644 --- a/app/views/directives/edit-environment-variables.html +++ b/app/views/directives/edit-environment-variables.html @@ -46,6 +46,7 @@
diff --git a/dist/scripts/scripts.js b/dist/scripts/scripts.js index 198dd264a0..40fc4042cd 100644 --- a/dist/scripts/scripts.js +++ b/dist/scripts/scripts.js @@ -9159,8 +9159,12 @@ a.onAddRow = function() { s(a.envFromEntries), n.setFocusOn("." + a.setFocusClass); }, a.deleteEntry = function(e, t) { a.envFromEntries && !a.envFromEntries.length || (a.envFromEntries.splice(e, t), !a.envFromEntries.length && a.addRowLink && s(a.envFromEntries), a.updateEntries(a.envFromEntries), a.editEnvironmentFromForm.$setDirty()); +}, a.hasOptions = function() { +return !_.isEmpty(a.envFromSelectorOptions); +}, a.hasEntries = function() { +return "[{}]" !== angular.toJson(a.entries) && a.entries && a.entries.length >= 1; }, a.isEnvFromReadonly = function(e) { -return a.isReadonlyAny || !0 === e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(a.envFromSelectorOptions); +return !0 === a.isReadonly || e && !0 === e.isReadonly; }, a.groupByKind = function(e) { return o(e.kind); }, a.dragControlListeners = { @@ -9191,49 +9195,31 @@ return e.secretRef || e.configMapRef; }); }; var c = function(e) { -a.envFromEntries = e || [], a.envFromEntries.length || s(a.envFromEntries), _.each(a.envFromEntries, function(e) { -e && (e.configMapRef && !r("configmaps", "get") && (e.isReadonlyValue = !0), e.secretRef && !r("secrets", "get") && (e.isReadonlyValue = !0)); -}); -}, l = function(e) { -var t; -switch (e.kind) { -case "ConfigMap": -t = _.find(a.envFromEntries, { -configMapRef: { -name: e.metadata.name -} -}); -break; - -case "Secret": -t = _.find(a.envFromEntries, { -secretRef: { +var t = _.camelCase(e.kind) + "Ref"; +return _.filter(a.envFromEntries, [ t, { name: e.metadata.name -} +} ]); +}, l = function() { +a.envFromEntries = a.entries || [], a.envFromEntries.length || s(a.envFromEntries), _.each(a.envFromEntries, function(e) { +e && (e.configMapRef && !r("configmaps", "get") && (e.isReadonly = !0), e.secretRef && !r("secrets", "get") && (e.isReadonly = !0)); +}), _.each(a.envFromSelectorOptions, function(e) { +_.each(c(e), function(t, n) { +_.set(t, "selectedEnvFrom", e), n > 0 && _.set(t, "duplicateEnvFrom", !0); }); -} -return t; -}; -a.checkEntries = function(e, t) { -return e !== t && !!l(e); -}; -var u = function(e, t) { -a.cannotAdd = a.isReadonlyAny || _.isEmpty(t), t && _.each(t, function(e) { -var t = l(e); -t && _.set(t, "selectedEnvFrom", e); }); }; a.$onInit = function() { -c(a.entries), u(a.entries, a.envFromSelectorOptions), "cannotDelete" in e && (a.cannotDeleteAny = !0), "cannotSort" in e && (a.cannotSort = !0), "isReadonly" in e && (a.isReadonlyAny = !0), "showHeader" in e && (a.showHeader = !0), a.envFromEntries && !a.envFromEntries.length && s(a.envFromEntries); +l(), "cannotDelete" in e && (a.cannotDeleteAny = !0), "cannotSort" in e && (a.cannotSort = !0), "showHeader" in e && (a.showHeader = !0), a.envFromEntries && !a.envFromEntries.length && s(a.envFromEntries); }, a.$onChanges = function(e) { -e.entries && c(e.entries.currentValue), e.envFromSelectorOptions && u(a.envFromEntries, e.envFromSelectorOptions.currentValue); +(e.entries || e.envFromSelectorOptions) && l(); }; } ], bindings: { addRowLink: "@", entries: "=", envFromSelectorOptions: "<", -selectorPlaceholder: "@" +selectorPlaceholder: "@", +isReadonly: "\n" + "
\n" + "
\n" + - "
\n" + + "
\n" + "
\n" + - "No secrets or config maps have been added as Environment From.\n" + + "No config maps or secrets have been added as Environment From.\n" + "
\n" + "
\n" + "Use all keys and values from\n" + @@ -6676,8 +6676,8 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "secret {{entry.secretRef.name}}\n" + "
\n" + "
\n" + - "
\n" + - "
\n" + + "
\n" + + "
\n" + "\n" + "\n" + "\n" + @@ -6685,20 +6685,20 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "– {{$select.selected.kind | humanizeKind : true}}\n" + "\n" + "\n" + - "\n" + + "\n" + "\n" + "\n" + "\n" + "
\n" + "
\n" + "
\n" + - "
\n" + + "
\n" + " 1\" class=\"fa fa-bars sort-row\" role=\"button\" aria-label=\"Move row\" aria-grabbed=\"false\" as-sortable-item-handle>\n" + "\n" + "
\n" + "
\n" + - "
\n" + - "{{ $ctrl.addRowLink }}\n" + + "
\n" + + "{{$ctrl.addRowLink}}\n" + "
\n" + "
\n" + "" @@ -6723,7 +6723,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function( "Environment From\n" + "\n" + "\n" + - "\n" + + "\n" + "\n" + "
\n" + "\n" +