Skip to content

Commit ae6f733

Browse files
committed
DEV Tooltip, Added Read Only Check
Initial tooltip for envFrom. Ported a simplified read only check from key value editor utilities. More clean up
1 parent 5e30d7b commit ae6f733

File tree

5 files changed

+76
-108
lines changed

5 files changed

+76
-108
lines changed

app/scripts/directives/editEnvironmentFrom.js

+39-68
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,22 @@
1414
entries: '=',
1515
envFromSelectorOptions: '<',
1616
selectorPlaceholder: '@'
17-
//cannotAdd: '<?',
18-
//cannotSort: '<?',
19-
//cannotDelete: '<?',
20-
//isReadonly: '<?',
21-
//showHeader: '<?',
2217
},
2318
templateUrl: 'views/directives/edit-environment-from.html'
2419
});
2520

26-
function EditEnvironmentFrom($attrs, $filter, $scope, utils) {
21+
function EditEnvironmentFrom($attrs,
22+
$filter,
23+
$scope,
24+
utils) {
2725
var ctrl = this;
26+
27+
var canI = $filter('canI');
2828
var humanizeKind = $filter('humanizeKind');
29-
//var canI = $filter('canI');
30-
var readOnlySome = [];
31-
var cannotDeleteSome = [];
32-
//var counter = 1000;
33-
//var unique = counter++;
34-
//var canIGetSecrets = canI('secrets', 'get');
35-
//var canIGetConfigMaps = canI('configmaps', 'get');
3629

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

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

65-
ctrl.isReadonlySome = function(name) {
66-
return _.includes(readOnlySome, name);
67-
};
68-
69-
ctrl.cannotDeleteSome = function(name) {
70-
return _.includes(cannotDeleteSome, name);
71-
};
72-
7357
ctrl.isEnvFromReadonly = function(entry) {
7458
return ctrl.isReadonlyAny ||
75-
entry.isReadonlyValue ||
59+
entry.isReadonlyValue === true ||
7660
((entry.secretRef || entry.configMapRef) && !entry.selectedEnvFrom) ||
7761
_.isEmpty(ctrl.envFromSelectorOptions);
7862
};
@@ -100,7 +84,6 @@
10084
}
10185

10286
_.assign(ctrl.envFromEntries[index], newEnvFrom);
103-
10487
ctrl.updateEntries(ctrl.envFromEntries);
10588
};
10689

@@ -110,67 +93,53 @@
11093
});
11194
};
11295

113-
ctrl.checkEntries = function(option) {
114-
var check;
96+
ctrl.updateEnvFromEntries = function(entries) {
97+
ctrl.envFromEntries = _.clone(entries || []);
98+
99+
if(!ctrl.envFromEntries.length) {
100+
addEntry(ctrl.envFromEntries);
101+
}
102+
103+
_.each(ctrl.envFromEntries, function(entry) {
104+
if(entry) {
105+
if (entry.configMapRef) {
106+
entry.isReadonlyValue = !canI('configmaps', 'get');
107+
}
108+
109+
if (entry.secretRef) {
110+
entry.isReadonlyValue = !canI('secrets', 'get');
111+
}
112+
}
113+
});
114+
};
115+
116+
var getReferenceValue = function(option) {
117+
var referenceValue;
115118

116119
switch(option.kind) {
117120
case 'ConfigMap':
118-
check = _.find(ctrl.entries, {configMapRef: {name: option.metadata.name}});
121+
referenceValue = _.find(ctrl.envFromEntries, {configMapRef: {name: option.metadata.name}});
119122
break;
120123
case 'Secret':
121-
check = _.find(ctrl.entries, {secretRef: {name: option.metadata.name}});
124+
referenceValue = _.find(ctrl.envFromEntries, {secretRef: {name: option.metadata.name}});
122125
break;
123126
}
124127

125-
return !!(check);
128+
return referenceValue;
126129
};
127130

128-
/*var findReferenceValue = function(entry, envFromSelectorOptions) {
129-
var ref = null;
130-
131-
if(entry.configMapRef) {
132-
ref = _.find(envFromSelectorOptions, function(option) {
133-
return option.kind === 'ConfigMap' && option.metadata.name === entry.configMapRef.name;
134-
});
135-
} else if(entry.secretRef) {
136-
ref = _.find(envFromSelectorOptions, function(option) {
137-
return option.kind === 'Secret' && option.metadata.name === entry.secretRef.name;
138-
});
139-
}
140-
141-
return ref;
142-
};*/
131+
ctrl.checkEntries = function(option) {
132+
return !!(getReferenceValue(option));
133+
};
143134

144135
var findReferenceValueForEntries = function(entries, envFromSelectorOptions) {
145-
var referenceValue;
146-
147136
_.each(envFromSelectorOptions, function(option) {
148-
switch(option.kind) {
149-
case 'ConfigMap':
150-
referenceValue = _.find(entries, {configMapRef: {name: option.metadata.name}});
151-
break;
152-
case 'Secret':
153-
referenceValue = _.find(entries, {secretRef: {name: option.metadata.name}});
154-
break;
155-
}
137+
var referenceValue = getReferenceValue(option);
156138

157139
if (referenceValue) {
158140
_.set(referenceValue, 'selectedEnvFrom', option);
159141
}
160142
});
161-
162-
/*
163-
_.each(entries, function(entry) {
164-
var referenceValue;
165-
166-
if(entry.configMapRef || entry.secretRef) {
167-
referenceValue = findReferenceValue(entry, envFromSelectorOptions);
168-
if (referenceValue) {
169-
_.set(entry, 'selectedEnvFrom', referenceValue);
170-
}
171-
}
172-
});
173-
*/
174143
};
175144

176145
angular.extend($scope, {
@@ -185,6 +154,8 @@
185154
});
186155

187156
ctrl.$onInit = function() {
157+
ctrl.updateEnvFromEntries(ctrl.entries);
158+
188159
if('cannotAdd' in $attrs) {
189160
ctrl.cannotAdd = true;
190161
}
@@ -212,7 +183,7 @@
212183

213184
ctrl.$onChanges = function(changes) {
214185
if(changes.entries) {
215-
//ctrl.envFromEntries = _.clone(changes.entries.currentValue);
186+
ctrl.updateEnvFromEntries(changes.entries.currentValue);
216187
}
217188

218189
if(changes.envFromSelectorOptions) {

app/views/directives/edit-environment-from.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
class="pficon pficon-close delete-row as-sortable-item-delete"
107107
role="button"
108108
aria-label="Delete row"
109-
ng-hide="ctrl.cannotDeleteAny || ctrl.cannotDeleteSome(entry.name) || entry.cannotDelete"
109+
ng-hide="ctrl.cannotDeleteAny"
110110
ng-click="ctrl.deleteEntry($index, 1)"></a>
111111
<a
112112
ng-href="{{entry.selectedEnvFrom | navigateResourceURL}}"

app/views/directives/edit-environment-variables.html

+7-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@ <h4>Variables</h4>
3535
show-header>
3636
</key-value-editor>
3737

38-
<h4>Environment From</h4>
38+
<h4>
39+
Environment From
40+
<span class="pficon pficon-info"
41+
aria-hidden="true"
42+
data-toggle="tooltip"
43+
data-original-title="Environment From lets you add all key value pairs from a config map or secret."></span>
44+
</h4>
3945
<edit-environment-from
4046
entries="container.envFrom"
4147
selector-placeholder="Secret/Config Map"

dist/scripts/scripts.js

+24-36
Original file line numberDiff line numberDiff line change
@@ -9078,23 +9078,19 @@ n[e.key] = e.value;
90789078
} ]), function() {
90799079
angular.module("openshiftConsole").component("editEnvironmentFrom", {
90809080
controller: [ "$attrs", "$filter", "$scope", "keyValueEditorUtils", function(e, t, n, a) {
9081-
var r = this, o = t("humanizeKind"), i = [], s = [];
9082-
r.$id = n.$id, r.entries = r.entries || [], r.setFocusClass = "edit-environment-from-set-focus-" + r.$id, r.envFromEntries = _.clone(r.entries);
9083-
var c = function(e, t) {
9081+
var r = this, o = t("canI"), i = t("humanizeKind");
9082+
r.$id = n.$id, r.entries = r.entries || [], r.setFocusClass = "edit-environment-from-set-focus-" + r.$id;
9083+
var s = function(e, t) {
90849084
e && e.push(t || {});
90859085
};
90869086
r.onAddRow = function() {
9087-
c(r.envFromEntries), a.setFocusOn("." + n.setFocusClass);
9087+
s(r.envFromEntries), a.setFocusOn("." + n.setFocusClass);
90889088
}, r.deleteEntry = function(e, t) {
9089-
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());
9090-
}, r.isReadonlySome = function(e) {
9091-
return _.includes(i, e);
9092-
}, r.cannotDeleteSome = function(e) {
9093-
return _.includes(s, e);
9089+
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());
90949090
}, r.isEnvFromReadonly = function(e) {
9095-
return r.isReadonlyAny || e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(r.envFromSelectorOptions);
9091+
return r.isReadonlyAny || !0 === e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(r.envFromSelectorOptions);
90969092
}, r.groupByKind = function(e) {
9097-
return o(e.kind);
9093+
return i(e.kind);
90989094
}, r.envFromObjectSelected = function(e, t, n) {
90999095
var a = {};
91009096
switch (n.kind) {
@@ -9114,46 +9110,38 @@ _.assign(r.envFromEntries[e], a), r.updateEntries(r.envFromEntries);
91149110
r.entries = _.filter(_.clone(e), function(e) {
91159111
return e.secretRef || e.configMapRef;
91169112
});
9117-
}, r.checkEntries = function(e) {
9113+
}, r.updateEnvFromEntries = function(e) {
9114+
r.envFromEntries = _.clone(e || []), r.envFromEntries.length || s(r.envFromEntries), _.each(r.envFromEntries, function(e) {
9115+
e && (e.configMapRef && (e.isReadonlyValue = !o("configmaps", "get")), e.secretRef && (e.isReadonlyValue = !o("secrets", "get")));
9116+
});
9117+
};
9118+
var c = function(e) {
91189119
var t;
91199120
switch (e.kind) {
91209121
case "ConfigMap":
9121-
t = _.find(r.entries, {
9122+
t = _.find(r.envFromEntries, {
91229123
configMapRef: {
91239124
name: e.metadata.name
91249125
}
91259126
});
91269127
break;
91279128

91289129
case "Secret":
9129-
t = _.find(r.entries, {
9130+
t = _.find(r.envFromEntries, {
91309131
secretRef: {
91319132
name: e.metadata.name
91329133
}
91339134
});
91349135
}
9135-
return !!t;
9136+
return t;
9137+
};
9138+
r.checkEntries = function(e) {
9139+
return !!c(e);
91369140
};
91379141
var l = function(e, t) {
9138-
var n;
9139-
_.each(t, function(t) {
9140-
switch (t.kind) {
9141-
case "ConfigMap":
9142-
n = _.find(e, {
9143-
configMapRef: {
9144-
name: t.metadata.name
9145-
}
9146-
});
9147-
break;
9148-
9149-
case "Secret":
9150-
n = _.find(e, {
9151-
secretRef: {
9152-
name: t.metadata.name
9153-
}
9154-
});
9155-
}
9156-
n && _.set(n, "selectedEnvFrom", t);
9142+
_.each(t, function(e) {
9143+
var t = c(e);
9144+
t && _.set(t, "selectedEnvFrom", e);
91579145
});
91589146
};
91599147
angular.extend(n, {
@@ -9166,9 +9154,9 @@ n.forms.editEnvironmentFrom.$setDirty();
91669154
}
91679155
}
91689156
}), r.$onInit = function() {
9169-
"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);
9157+
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);
91709158
}, r.$onChanges = function(e) {
9171-
e.entries, e.envFromSelectorOptions && l(r.envFromEntries, e.envFromSelectorOptions.currentValue);
9159+
e.entries && r.updateEnvFromEntries(e.entries.currentValue), e.envFromSelectorOptions && l(r.envFromEntries, e.envFromSelectorOptions.currentValue);
91729160
};
91739161
} ],
91749162
controllerAs: "ctrl",

dist/scripts/templates.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -6678,7 +6678,7 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
66786678
"</div>\n" +
66796679
"<div>\n" +
66806680
"<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" +
6681-
"<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" +
6681+
"<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" +
66826682
"<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" +
66836683
"</div>\n" +
66846684
"</div>\n" +
@@ -6706,7 +6706,10 @@ angular.module('openshiftConsoleTemplates', []).run(['$templateCache', function(
67066706
"</div>\n" +
67076707
"<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" +
67086708
"</key-value-editor>\n" +
6709-
"<h4>Environment From</h4>\n" +
6709+
"<h4>\n" +
6710+
"Environment From\n" +
6711+
"<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" +
6712+
"</h4>\n" +
67106713
"<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" +
67116714
"</edit-environment-from>\n" +
67126715
"</div>\n" +

0 commit comments

Comments
 (0)