mirror of https://github.com/rancher/ui.git
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
import Component from '@ember/component';
|
|
import { get, set, observer } from '@ember/object'
|
|
import C from 'ui/utils/constants';
|
|
import layout from './template';
|
|
|
|
const verbs = C.RULE_VERBS;
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
rule: null,
|
|
rules: null,
|
|
resource: null,
|
|
readOnly: null,
|
|
|
|
tagName: 'TR',
|
|
classNames: 'main-row',
|
|
|
|
actions: {
|
|
remove: function () {
|
|
this.sendAction('remove', this.get('rule'));
|
|
}
|
|
},
|
|
|
|
init: function () {
|
|
this._super(...arguments);
|
|
const rule = this.get('rule');
|
|
const currentVerbs = get(rule, 'verbs');
|
|
this.set('verbs', verbs.map(verb => {
|
|
return {
|
|
key: verb,
|
|
value: currentVerbs.indexOf("*") > -1 || currentVerbs.indexOf(verb) > -1,
|
|
};
|
|
}));
|
|
const rules = C.ROLE_RULES;
|
|
this.set('rules', rules.map(rule => {
|
|
return {
|
|
label: rule,
|
|
value: rule,
|
|
};
|
|
}));
|
|
if ((get(rule, 'resources') || []).get('length') > 0) {
|
|
this.set('resource', get(rule, 'resources').get(0));
|
|
}
|
|
},
|
|
|
|
verbChanged: observer('verbs.@each.{key,value}', function () {
|
|
const verbs = this.get('verbs');
|
|
const selectedVerbs = verbs.filter(verb => verb.value).map(verb => verb.key);
|
|
|
|
const rule = this.get('rule');
|
|
set(rule, 'verbs', selectedVerbs)
|
|
}),
|
|
|
|
selectedResourceChanged: observer('resource', function () {
|
|
const rule = this.get('rule');
|
|
set(rule, 'resources', [this.get('resource')])
|
|
}),
|
|
});
|