Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1ba99ba

Browse files
committedSep 27, 2017
Support EnvFrom in the Env Editors
Review updates
1 parent 3177113 commit 1ba99ba

File tree

6 files changed

+164
-142
lines changed

6 files changed

+164
-142
lines changed
 

Diff for: ‎app/scripts/directives/editEnvironmentFrom.js

+50-34
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,31 @@
44
controller: [
55
'$attrs',
66
'$filter',
7+
'$routeParams',
78
'keyValueEditorUtils',
89
EditEnvironmentFrom
910
],
1011
bindings: {
11-
addRowLink: '@',
12-
entries: '=',
13-
envFromSelectorOptions: '<',
14-
selectorPlaceholder: '@'
12+
addRowLink: '@', // creates a link to "add row" and sets its text label
13+
entries: '=', // an array of objects containing configmaps and secrets
14+
envFromSelectorOptions: '<', // dropdown selector options, an array of objects
15+
selectorPlaceholder: '@' // placeholder copy for dropdown selector
1516
},
1617
templateUrl: 'views/directives/edit-environment-from.html'
1718
});
1819

1920
function EditEnvironmentFrom($attrs,
2021
$filter,
22+
$routeParams,
2123
utils) {
2224
var ctrl = this;
2325

2426
var canI = $filter('canI');
2527
var humanizeKind = $filter('humanizeKind');
28+
var namespace = $routeParams.project;
29+
var uniqueId = _.uniqueId();
2630

27-
ctrl.$id = _.uniqueId();
28-
ctrl.setFocusClass = 'edit-environment-from-set-focus-' + ctrl.$id;
31+
ctrl.setFocusClass = 'edit-environment-from-set-focus-' + uniqueId;
2932

3033
var addEntry = function(entries, entry) {
3134
entries && entries.push(entry || {});
@@ -61,6 +64,16 @@
6164
return humanizeKind(object.kind);
6265
};
6366

67+
//ctrl.uniqueForValue = utils.uniqueForValue;
68+
ctrl.dragControlListeners = {
69+
accept: function (sourceItemHandleScope, destSortableScope) {
70+
return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id;
71+
},
72+
orderChanged: function() {
73+
ctrl.editEnvironmentFromForm.$setDirty();
74+
}
75+
};
76+
6477
ctrl.envFromObjectSelected = function(index, entry, selected) {
6578
var newEnvFrom = {};
6679

@@ -89,7 +102,7 @@
89102
});
90103
};
91104

92-
ctrl.updateEnvFromEntries = function(entries) {
105+
var updateEnvFromEntries = function(entries) {
93106
ctrl.envFromEntries = entries || [];
94107

95108
if(!ctrl.envFromEntries.length) {
@@ -98,12 +111,12 @@
98111

99112
_.each(ctrl.envFromEntries, function(entry) {
100113
if(entry) {
101-
if (entry.configMapRef) {
102-
entry.isReadonlyValue = !canI('configmaps', 'get');
114+
if(entry.configMapRef && !canI('configmaps', 'get')) {
115+
entry.isReadonlyValue = true;
103116
}
104117

105-
if (entry.secretRef) {
106-
entry.isReadonlyValue = !canI('secrets', 'get');
118+
if(entry.secretRef && !canI('secrets', 'get')) {
119+
entry.isReadonlyValue = true;
107120
}
108121
}
109122
});
@@ -129,33 +142,36 @@
129142
};
130143

131144
var findReferenceValueForEntries = function(entries, envFromSelectorOptions) {
132-
_.each(envFromSelectorOptions, function(option) {
133-
var referenceValue = getReferenceValue(option);
145+
ctrl.cannotAdd = (ctrl.isReadonlyAny || _.isEmpty(envFromSelectorOptions));
134146

135-
if (referenceValue) {
136-
_.set(referenceValue, 'selectedEnvFrom', option);
137-
}
138-
});
139-
};
147+
if(envFromSelectorOptions) {
148+
_.each(envFromSelectorOptions, function(option) {
149+
var referenceValue = getReferenceValue(option);
140150

141-
angular.extend(ctrl, {
142-
dragControlListeners: {
143-
accept: function (sourceItemHandleScope, destSortableScope) {
144-
return sourceItemHandleScope.itemScope.sortableScope.$id === destSortableScope.$id;
145-
},
146-
orderChanged: function() {
147-
ctrl.editEnvironmentFromForm.$setDirty();
148-
}
151+
if (referenceValue) {
152+
_.set(referenceValue, 'selectedEnvFrom', option);
153+
}
154+
});
155+
156+
} else {
157+
_.each(entries, function(entry) {
158+
var entryKind = (entry.secretRef)? 'Secret' : 'ConfigMap';
159+
var entryName = _.get(entry.configMapRef, 'name') || _.get(entry.secretRef, 'name');
160+
161+
_.set(entry, 'apiObj', {
162+
kind: entryKind,
163+
metadata: {
164+
name: entryName,
165+
namespace: namespace
166+
}
167+
});
168+
});
149169
}
150-
});
170+
};
151171

152172
ctrl.$onInit = function() {
153-
ctrl.updateEnvFromEntries(ctrl.entries);
154-
findReferenceValueForEntries(ctrl.envFromEntries, ctrl.envFromSelectorOptions);
155-
156-
if('cannotAdd' in $attrs) {
157-
ctrl.cannotAdd = true;
158-
}
173+
updateEnvFromEntries(ctrl.entries);
174+
findReferenceValueForEntries(ctrl.entries, ctrl.envFromSelectorOptions);
159175

160176
if('cannotDelete' in $attrs) {
161177
ctrl.cannotDeleteAny = true;
@@ -180,7 +196,7 @@
180196

181197
ctrl.$onChanges = function(changes) {
182198
if(changes.entries) {
183-
ctrl.updateEnvFromEntries(changes.entries.currentValue);
199+
updateEnvFromEntries(changes.entries.currentValue);
184200
}
185201

186202
if(changes.envFromSelectorOptions) {

Diff for: ‎app/views/directives/edit-environment-from.html

+21-23
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919

2020
<div
2121
class="form-group environment-from-input"
22-
ng-class="{ 'has-error': (forms.editEnvironmentFrom[uniqueForValue(unique, $index)].$invalid && forms.editEnvironmentFrom[uniqueForValue(unique, $index)].$touched) }">
22+
ng-class="{ 'has-error': ($ctrl.editEnvironmentFromForm[uniqueForValue(unique, $index)].$invalid && $ctrl.editEnvironmentFromForm[uniqueForValue(unique, $index)].$touched) }">
2323
<div ng-if="$ctrl.isEnvFromReadonly(entry)" class="faux-input-group">
2424
<div class="faux-form-control readonly">
25-
Set to values in {{entry.selectedEnvFrom.kind | humanizeKind : true | lowercase}}
25+
Set to values in {{entry.apiObj.kind | humanizeKind : true | lowercase}}
2626
<span
2727
ng-if="!('configmaps' | canI : 'get') || !('secrets' | canI : 'get')">
2828
{{entry.configMapRef.name || entry.secretRef.name}}
2929
</span>
3030
<a
31-
ng-if="'configmaps' | canI : 'get'"
32-
ng-href="{{entry.selectedEnvFrom | navigateResourceURL}}">
31+
ng-if="('configmaps' | canI : 'get') || ('secrets' | canI : 'get')"
32+
ng-href="{{entry.apiObj | navigateResourceURL}}">
3333
{{entry.configMapRef.name || entry.secretRef.name}}
3434
</a>
3535
</div>
@@ -56,37 +56,35 @@
5656
</ui-select>
5757
</div>
5858
</div>
59-
6059
</div>
6160
<div class="environment-from-input">
6261
<span
63-
ng-if="(!$ctrl.cannotSort) && ($ctrl.entries.length > 1)"
64-
class="fa fa-bars sort-row"
65-
role="button"
66-
aria-label="Move row"
67-
aria-grabbed="false"
68-
as-sortable-item-handle></span>
62+
ng-if="!$ctrl.cannotSort && ($ctrl.entries.length > 1)"
63+
class="fa fa-bars sort-row"
64+
role="button"
65+
aria-label="Move row"
66+
aria-grabbed="false"
67+
as-sortable-item-handle></span>
6968
<a
70-
href=""
71-
class="pficon pficon-close delete-row as-sortable-item-delete"
72-
role="button"
73-
aria-label="Delete row"
74-
ng-hide="$ctrl.cannotDeleteAny || $ctrl.isReadonlyAny"
75-
ng-click="$ctrl.deleteEntry($index, 1)"></a>
69+
href=""
70+
class="pficon pficon-close delete-row as-sortable-item-delete"
71+
role="button"
72+
aria-label="Delete row"
73+
ng-hide="$ctrl.cannotDeleteAny"
74+
ng-click="$ctrl.deleteEntry($index, 1)"></a>
7675
<a
77-
ng-href="{{entry.selectedEnvFrom | navigateResourceURL}}"
78-
class="pficon"
79-
ng-show="entry.selectedEnvFrom"
80-
ng-click="$ctrl.viewDetail(entry)">View {{entry.selectedEnvFrom.kind | humanizeKind : true}}</a>
76+
ng-if="!$ctrl.editEnvironmentFromForm.$dirty"
77+
ng-href="{{entry.selectedEnvFrom | navigateResourceURL}}"
78+
class="pficon"
79+
ng-show="entry.selectedEnvFrom">View {{entry.selectedEnvFrom.kind | humanizeKind : true}}</a>
8180
</div>
8281
</div>
8382

84-
<div class="environment-from-entry form-group" ng-if="(!$ctrl.cannotAdd)">
83+
<div class="environment-from-entry form-group" ng-if="!$ctrl.cannotAdd">
8584
<a
8685
href=""
8786
class="add-row-link"
8887
role="button"
89-
aria-label="Add row"
9088
ng-click="$ctrl.onAddRow()">{{ $ctrl.addRowLink }}</a>
9189
</div>
9290
</div>

Diff for: ‎app/views/directives/key-value-editor.html

-2
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@
226226
href=""
227227
class="add-row-link"
228228
role="button"
229-
aria-label="Add row"
230229
ng-click="onAddRow()">{{ addRowLink }}</a>
231230
<span ng-if="valueFromSelectorOptions.length">
232231
<span
@@ -236,7 +235,6 @@
236235
href=""
237236
class="add-row-link"
238237
role="button"
239-
aria-label="Add row"
240238
ng-click="onAddRowWithSelectors()">{{ addRowWithSelectorsLink }}</a>
241239
</span>
242240
</div>

Diff for: ‎dist/scripts/scripts.js

+53-46
Original file line numberDiff line numberDiff line change
@@ -9080,86 +9080,93 @@ n[e.key] = e.value;
90809080
};
90819081
} ]), function() {
90829082
angular.module("openshiftConsole").component("editEnvironmentFrom", {
9083-
controller: [ "$attrs", "$filter", "keyValueEditorUtils", function(e, t, n) {
9084-
var a = this, r = t("canI"), o = t("humanizeKind");
9085-
a.$id = _.uniqueId(), a.setFocusClass = "edit-environment-from-set-focus-" + a.$id;
9086-
var i = function(e, t) {
9083+
controller: [ "$attrs", "$filter", "$routeParams", "keyValueEditorUtils", function(e, t, n, a) {
9084+
var r = this, o = t("canI"), i = t("humanizeKind"), s = n.project, c = _.uniqueId();
9085+
r.setFocusClass = "edit-environment-from-set-focus-" + c;
9086+
var l = function(e, t) {
90879087
e && e.push(t || {});
90889088
};
9089-
a.onAddRow = function() {
9090-
i(a.envFromEntries), n.setFocusOn("." + a.setFocusClass);
9091-
}, a.deleteEntry = function(e, t) {
9092-
a.entries && !a.entries.length || (a.envFromEntries.splice(e, t), !a.envFromEntries.length && a.addRowLink && i(a.envFromEntries), a.updateEntries(a.envFromEntries), a.editEnvironmentFromForm.$setDirty());
9093-
}, a.isEnvFromReadonly = function(e) {
9094-
return a.isReadonlyAny || !0 === e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(a.envFromSelectorOptions);
9095-
}, a.groupByKind = function(e) {
9096-
return o(e.kind);
9097-
}, a.envFromObjectSelected = function(e, t, n) {
9098-
var r = {};
9089+
r.onAddRow = function() {
9090+
l(r.envFromEntries), a.setFocusOn("." + r.setFocusClass);
9091+
}, r.deleteEntry = function(e, t) {
9092+
r.entries && !r.entries.length || (r.envFromEntries.splice(e, t), !r.envFromEntries.length && r.addRowLink && l(r.envFromEntries), r.updateEntries(r.envFromEntries), r.editEnvironmentFromForm.$setDirty());
9093+
}, r.isEnvFromReadonly = function(e) {
9094+
return r.isReadonlyAny || !0 === e.isReadonlyValue || (e.secretRef || e.configMapRef) && !e.selectedEnvFrom || _.isEmpty(r.envFromSelectorOptions);
9095+
}, r.groupByKind = function(e) {
9096+
return i(e.kind);
9097+
}, r.dragControlListeners = {
9098+
accept: function(e, t) {
9099+
return e.itemScope.sortableScope.$id === t.$id;
9100+
},
9101+
orderChanged: function() {
9102+
r.editEnvironmentFromForm.$setDirty();
9103+
}
9104+
}, r.envFromObjectSelected = function(e, t, n) {
9105+
var a = {};
90999106
switch (n.kind) {
91009107
case "Secret":
9101-
r.secretRef = {
9108+
a.secretRef = {
91029109
name: n.metadata.name
9103-
}, delete a.envFromEntries[e].configMapRef;
9110+
}, delete r.envFromEntries[e].configMapRef;
91049111
break;
91059112

91069113
case "ConfigMap":
9107-
r.configMapRef = {
9114+
a.configMapRef = {
91089115
name: n.metadata.name
9109-
}, delete a.envFromEntries[e].secretRef;
9116+
}, delete r.envFromEntries[e].secretRef;
91109117
}
9111-
_.assign(a.envFromEntries[e], r), a.updateEntries(a.envFromEntries);
9112-
}, a.updateEntries = function(e) {
9113-
a.entries = _.filter(e, function(e) {
9118+
_.assign(r.envFromEntries[e], a), r.updateEntries(r.envFromEntries);
9119+
}, r.updateEntries = function(e) {
9120+
r.entries = _.filter(e, function(e) {
91149121
return e.secretRef || e.configMapRef;
91159122
});
9116-
}, a.updateEnvFromEntries = function(e) {
9117-
a.envFromEntries = e || [], a.envFromEntries.length || i(a.envFromEntries), _.each(a.envFromEntries, function(e) {
9118-
e && (e.configMapRef && (e.isReadonlyValue = !r("configmaps", "get")), e.secretRef && (e.isReadonlyValue = !r("secrets", "get")));
9119-
});
91209123
};
9121-
var s = function(e) {
9124+
var u = function(e) {
9125+
r.envFromEntries = e || [], r.envFromEntries.length || l(r.envFromEntries), _.each(r.envFromEntries, function(e) {
9126+
e && (e.configMapRef && !o("configmaps", "get") && (e.isReadonlyValue = !0), e.secretRef && !o("secrets", "get") && (e.isReadonlyValue = !0));
9127+
});
9128+
}, d = function(e) {
91229129
var t;
91239130
switch (e.kind) {
91249131
case "ConfigMap":
9125-
t = _.find(a.envFromEntries, {
9132+
t = _.find(r.envFromEntries, {
91269133
configMapRef: {
91279134
name: e.metadata.name
91289135
}
91299136
});
91309137
break;
91319138

91329139
case "Secret":
9133-
t = _.find(a.envFromEntries, {
9140+
t = _.find(r.envFromEntries, {
91349141
secretRef: {
91359142
name: e.metadata.name
91369143
}
91379144
});
91389145
}
91399146
return t;
91409147
};
9141-
a.checkEntries = function(e) {
9142-
return !!s(e);
9148+
r.checkEntries = function(e) {
9149+
return !!d(e);
91439150
};
9144-
var c = function(e, t) {
9145-
_.each(t, function(e) {
9146-
var t = s(e);
9151+
var m = function(e, t) {
9152+
r.cannotAdd = r.isReadonlyAny || _.isEmpty(t), t ? _.each(t, function(e) {
9153+
var t = d(e);
91479154
t && _.set(t, "selectedEnvFrom", e);
9155+
}) : _.each(e, function(e) {
9156+
var t = e.secretRef ? "Secret" : "ConfigMap", n = _.get(e.configMapRef, "name") || _.get(e.secretRef, "name");
9157+
_.set(e, "apiObj", {
9158+
kind: t,
9159+
metadata: {
9160+
name: n,
9161+
namespace: s
9162+
}
9163+
});
91489164
});
91499165
};
9150-
angular.extend(a, {
9151-
dragControlListeners: {
9152-
accept: function(e, t) {
9153-
return e.itemScope.sortableScope.$id === t.$id;
9154-
},
9155-
orderChanged: function() {
9156-
a.editEnvironmentFromForm.$setDirty();
9157-
}
9158-
}
9159-
}), a.$onInit = function() {
9160-
a.updateEnvFromEntries(a.entries), c(a.envFromEntries, a.envFromSelectorOptions), "cannotAdd" in e && (a.cannotAdd = !0), "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 && i(a.envFromEntries);
9161-
}, a.$onChanges = function(e) {
9162-
e.entries && a.updateEnvFromEntries(e.entries.currentValue), e.envFromSelectorOptions && c(a.envFromEntries, e.envFromSelectorOptions.currentValue);
9166+
r.$onInit = function() {
9167+
u(r.entries), m(r.entries, r.envFromSelectorOptions), "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 && l(r.envFromEntries);
9168+
}, r.$onChanges = function(e) {
9169+
e.entries && u(e.entries.currentValue), e.envFromSelectorOptions && m(r.envFromEntries, e.envFromSelectorOptions.currentValue);
91639170
};
91649171
} ],
91659172
bindings: {

0 commit comments

Comments
 (0)
Please sign in to comment.