Skip to content

Commit

Permalink
DEV Tooltip, Added Read Only Check
Browse files Browse the repository at this point in the history
Initial tooltip for envFrom. Ported a simplified read only
check from key value editor utilities. More clean up
  • Loading branch information
cdcabrera committed Sep 22, 2017
1 parent 5e30d7b commit ae6f733
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 108 deletions.
107 changes: 39 additions & 68 deletions app/scripts/directives/editEnvironmentFrom.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,22 @@
entries: '=',
envFromSelectorOptions: '<',
selectorPlaceholder: '@'
//cannotAdd: '<?',
//cannotSort: '<?',
//cannotDelete: '<?',
//isReadonly: '<?',
//showHeader: '<?',
},
templateUrl: 'views/directives/edit-environment-from.html'
});

function EditEnvironmentFrom($attrs, $filter, $scope, utils) {
function EditEnvironmentFrom($attrs,
$filter,
$scope,
utils) {
var ctrl = this;

var canI = $filter('canI');
var humanizeKind = $filter('humanizeKind');
//var canI = $filter('canI');
var readOnlySome = [];
var cannotDeleteSome = [];
//var counter = 1000;
//var unique = counter++;
//var canIGetSecrets = canI('secrets', 'get');
//var canIGetConfigMaps = canI('configmaps', 'get');

ctrl.$id = $scope.$id;
ctrl.entries = ctrl.entries || [];
ctrl.setFocusClass = 'edit-environment-from-set-focus-' + ctrl.$id;
ctrl.envFromEntries = _.clone(ctrl.entries);

var addEntry = function(entries, entry) {
entries && entries.push(entry || {});
Expand All @@ -62,17 +54,9 @@
$scope.forms.editEnvironmentFrom.$setDirty();
};

ctrl.isReadonlySome = function(name) {
return _.includes(readOnlySome, name);
};

ctrl.cannotDeleteSome = function(name) {
return _.includes(cannotDeleteSome, name);
};

ctrl.isEnvFromReadonly = function(entry) {
return ctrl.isReadonlyAny ||
entry.isReadonlyValue ||
entry.isReadonlyValue === true ||
((entry.secretRef || entry.configMapRef) && !entry.selectedEnvFrom) ||
_.isEmpty(ctrl.envFromSelectorOptions);
};
Expand Down Expand Up @@ -100,7 +84,6 @@
}

_.assign(ctrl.envFromEntries[index], newEnvFrom);

ctrl.updateEntries(ctrl.envFromEntries);
};

Expand All @@ -110,67 +93,53 @@
});
};

ctrl.checkEntries = function(option) {
var check;
ctrl.updateEnvFromEntries = function(entries) {
ctrl.envFromEntries = _.clone(entries || []);

if(!ctrl.envFromEntries.length) {
addEntry(ctrl.envFromEntries);
}

_.each(ctrl.envFromEntries, function(entry) {
if(entry) {
if (entry.configMapRef) {
entry.isReadonlyValue = !canI('configmaps', 'get');
}

if (entry.secretRef) {
entry.isReadonlyValue = !canI('secrets', 'get');
}
}
});
};

var getReferenceValue = function(option) {
var referenceValue;

switch(option.kind) {
case 'ConfigMap':
check = _.find(ctrl.entries, {configMapRef: {name: option.metadata.name}});
referenceValue = _.find(ctrl.envFromEntries, {configMapRef: {name: option.metadata.name}});
break;
case 'Secret':
check = _.find(ctrl.entries, {secretRef: {name: option.metadata.name}});
referenceValue = _.find(ctrl.envFromEntries, {secretRef: {name: option.metadata.name}});
break;
}

return !!(check);
return referenceValue;
};

/*var findReferenceValue = function(entry, envFromSelectorOptions) {
var ref = null;
if(entry.configMapRef) {
ref = _.find(envFromSelectorOptions, function(option) {
return option.kind === 'ConfigMap' && option.metadata.name === entry.configMapRef.name;
});
} else if(entry.secretRef) {
ref = _.find(envFromSelectorOptions, function(option) {
return option.kind === 'Secret' && option.metadata.name === entry.secretRef.name;
});
}
return ref;
};*/
ctrl.checkEntries = function(option) {
return !!(getReferenceValue(option));
};

var findReferenceValueForEntries = function(entries, envFromSelectorOptions) {
var referenceValue;

_.each(envFromSelectorOptions, function(option) {
switch(option.kind) {
case 'ConfigMap':
referenceValue = _.find(entries, {configMapRef: {name: option.metadata.name}});
break;
case 'Secret':
referenceValue = _.find(entries, {secretRef: {name: option.metadata.name}});
break;
}
var referenceValue = getReferenceValue(option);

if (referenceValue) {
_.set(referenceValue, 'selectedEnvFrom', option);
}
});

/*
_.each(entries, function(entry) {
var referenceValue;
if(entry.configMapRef || entry.secretRef) {
referenceValue = findReferenceValue(entry, envFromSelectorOptions);
if (referenceValue) {
_.set(entry, 'selectedEnvFrom', referenceValue);
}
}
});
*/
};

angular.extend($scope, {
Expand All @@ -185,6 +154,8 @@
});

ctrl.$onInit = function() {
ctrl.updateEnvFromEntries(ctrl.entries);

if('cannotAdd' in $attrs) {
ctrl.cannotAdd = true;
}
Expand Down Expand Up @@ -212,7 +183,7 @@

ctrl.$onChanges = function(changes) {
if(changes.entries) {
//ctrl.envFromEntries = _.clone(changes.entries.currentValue);
ctrl.updateEnvFromEntries(changes.entries.currentValue);
}

if(changes.envFromSelectorOptions) {
Expand Down
2 changes: 1 addition & 1 deletion app/views/directives/edit-environment-from.html
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
class="pficon pficon-close delete-row as-sortable-item-delete"
role="button"
aria-label="Delete row"
ng-hide="ctrl.cannotDeleteAny || ctrl.cannotDeleteSome(entry.name) || entry.cannotDelete"
ng-hide="ctrl.cannotDeleteAny"
ng-click="ctrl.deleteEntry($index, 1)"></a>
<a
ng-href="{{entry.selectedEnvFrom | navigateResourceURL}}"
Expand Down
8 changes: 7 additions & 1 deletion app/views/directives/edit-environment-variables.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ <h4>Variables</h4>
show-header>
</key-value-editor>

<h4>Environment From</h4>
<h4>
Environment From
<span class="pficon pficon-info"
aria-hidden="true"
data-toggle="tooltip"
data-original-title="Environment From lets you add all key value pairs from a config map or secret."></span>
</h4>
<edit-environment-from
entries="container.envFrom"
selector-placeholder="Secret/Config Map"
Expand Down
60 changes: 24 additions & 36 deletions dist/scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -9078,23 +9078,19 @@ n[e.key] = e.value;
} ]), function() {
angular.module("openshiftConsole").component("editEnvironmentFrom", {
controller: [ "$attrs", "$filter", "$scope", "keyValueEditorUtils", function(e, t, n, a) {
var r = this, o = t("humanizeKind"), i = [], s = [];
r.$id = n.$id, r.entries = r.entries || [], r.setFocusClass = "edit-environment-from-set-focus-" + r.$id, r.envFromEntries = _.clone(r.entries);
var c = function(e, t) {
var r = this, o = t("canI"), i = t("humanizeKind");
r.$id = n.$id, r.entries = r.entries || [], r.setFocusClass = "edit-environment-from-set-focus-" + r.$id;
var s = function(e, t) {
e && e.push(t || {});
};
r.onAddRow = function() {
c(r.envFromEntries), a.setFocusOn("." + n.setFocusClass);
s(r.envFromEntries), a.setFocusOn("." + n.setFocusClass);
}, r.deleteEntry = function(e, t) {
r.entries && !r.entries.length || (r.envFromEntries.splice(e, t), !r.envFromEntries.length && r.addRowLink && c(r.envFromEntries), r.updateEntries(r.envFromEntries), n.forms.editEnvironmentFrom.$setDirty());
}, r.isReadonlySome = function(e) {
return _.includes(i, e);
}, r.cannotDeleteSome = function(e) {
return _.includes(s, e);
r.entries && !r.entries.length || (r.envFromEntries.splice(e, t), !r.envFromEntries.length && r.addRowLink && s(r.envFromEntries), r.updateEntries(r.envFromEntries), n.forms.editEnvironmentFrom.$setDirty());
}, r.isEnvFromReadonly = function(e) {
return r.isReadonlyAny || e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(r.envFromSelectorOptions);
return r.isReadonlyAny || !0 === e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(r.envFromSelectorOptions);
}, r.groupByKind = function(e) {
return o(e.kind);
return i(e.kind);
}, r.envFromObjectSelected = function(e, t, n) {
var a = {};
switch (n.kind) {
Expand All @@ -9114,46 +9110,38 @@ _.assign(r.envFromEntries[e], a), r.updateEntries(r.envFromEntries);
r.entries = _.filter(_.clone(e), function(e) {
return e.secretRef || e.configMapRef;
});
}, r.checkEntries = function(e) {
}, r.updateEnvFromEntries = function(e) {
r.envFromEntries = _.clone(e || []), r.envFromEntries.length || s(r.envFromEntries), _.each(r.envFromEntries, function(e) {
e && (e.configMapRef && (e.isReadonlyValue = !o("configmaps", "get")), e.secretRef && (e.isReadonlyValue = !o("secrets", "get")));
});
};
var c = function(e) {
var t;
switch (e.kind) {
case "ConfigMap":
t = _.find(r.entries, {
t = _.find(r.envFromEntries, {
configMapRef: {
name: e.metadata.name
}
});
break;

case "Secret":
t = _.find(r.entries, {
t = _.find(r.envFromEntries, {
secretRef: {
name: e.metadata.name
}
});
}
return !!t;
return t;
};
r.checkEntries = function(e) {
return !!c(e);
};
var l = function(e, t) {
var n;
_.each(t, function(t) {
switch (t.kind) {
case "ConfigMap":
n = _.find(e, {
configMapRef: {
name: t.metadata.name
}
});
break;

case "Secret":
n = _.find(e, {
secretRef: {
name: t.metadata.name
}
});
}
n && _.set(n, "selectedEnvFrom", t);
_.each(t, function(e) {
var t = c(e);
t && _.set(t, "selectedEnvFrom", e);
});
};
angular.extend(n, {
Expand All @@ -9166,9 +9154,9 @@ n.forms.editEnvironmentFrom.$setDirty();
}
}
}), r.$onInit = function() {
"cannotAdd" in e && (r.cannotAdd = !0), "cannotDelete" in e && (r.cannotDeleteAny = !0), "cannotSort" in e && (r.cannotSort = !0), "isReadonly" in e && (r.isReadonlyAny = !0), "showHeader" in e && (r.showHeader = !0), r.envFromEntries && !r.envFromEntries.length && c(r.envFromEntries);
r.updateEnvFromEntries(r.entries), "cannotAdd" in e && (r.cannotAdd = !0), "cannotDelete" in e && (r.cannotDeleteAny = !0), "cannotSort" in e && (r.cannotSort = !0), "isReadonly" in e && (r.isReadonlyAny = !0), "showHeader" in e && (r.showHeader = !0), r.envFromEntries && !r.envFromEntries.length && s(r.envFromEntries);
}, r.$onChanges = function(e) {
e.entries, e.envFromSelectorOptions && l(r.envFromEntries, e.envFromSelectorOptions.currentValue);
e.entries && r.updateEnvFromEntries(e.entries.currentValue), e.envFromSelectorOptions && l(r.envFromEntries, e.envFromSelectorOptions.currentValue);
};
} ],
controllerAs: "ctrl",
Expand Down
7 changes: 5 additions & 2 deletions dist/scripts/templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -6678,7 +6678,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"</div>\n" +
"<div>\n" +
"<span ng-if=\"(!ctrl.cannotSort) && (ctrl.entries.length > 1)\" class=\"fa fa-bars sort-row\" role=\"button\" aria-label=\"Move row\" aria-grabbed=\"false\" as-sortable-item-handle></span>\n" +
"<a href=\"\" class=\"pficon pficon-close delete-row as-sortable-item-delete\" role=\"button\" aria-label=\"Delete row\" ng-hide=\"ctrl.cannotDeleteAny || ctrl.cannotDeleteSome(entry.name) || entry.cannotDelete\" ng-click=\"ctrl.deleteEntry($index, 1)\"></a>\n" +
"<a href=\"\" class=\"pficon pficon-close delete-row as-sortable-item-delete\" role=\"button\" aria-label=\"Delete row\" ng-hide=\"ctrl.cannotDeleteAny\" ng-click=\"ctrl.deleteEntry($index, 1)\"></a>\n" +
"<a ng-href=\"{{entry.selectedEnvFrom | navigateResourceURL}}\" class=\"pficon\" ng-show=\"entry.selectedEnvFrom\" ng-click=\"ctrl.viewDetail(entry)\">View {{entry.selectedEnvFrom.kind | humanizeKind : true}}</a>\n" +
"</div>\n" +
"</div>\n" +
Expand Down Expand Up @@ -6706,7 +6706,10 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
"</div>\n" +
"<key-value-editor ng-if=\"$ctrl.canIUpdate && !$ctrl.ngReadonly\" entries=\"container.env\" key-placeholder=\"Name\" value-placeholder=\"Value\" value-from-selector-options=\"$ctrl.valueFromObjects\" key-validator=\"[A-Za-z_][A-Za-z0-9_]*\" key-validator-error=\"Please enter a valid key.\" key-validator-error-tooltip=\"A valid environment variable name is an alphanumeric (a-z and 0-9) string beginning with a letter that may contain underscores.\" add-row-link=\"Add Environment Variable\" add-row-with-selectors-link=\"Add Environment Variable Using a Config Map or Secret\" show-header>\n" +
"</key-value-editor>\n" +
"<h4>Environment From</h4>\n" +
"<h4>\n" +
"Environment From\n" +
"<span class=\"pficon pficon-info\" aria-hidden=\"true\" data-toggle=\"tooltip\" data-original-title=\"Environment From lets you add all key value pairs from a config map or secret.\"></span>\n" +
"</h4>\n" +
"<edit-environment-from entries=\"container.envFrom\" selector-placeholder=\"Secret/Config Map\" env-from-selector-options=\"$ctrl.valueFromObjects\" add-row-link=\"Add ALL Values from a Resource\" show-header>\n" +
"</edit-environment-from>\n" +
"</div>\n" +
Expand Down

0 comments on commit ae6f733

Please sign in to comment.