mirror of https://github.com/rancher/ui.git
81 lines
1.7 KiB
JavaScript
81 lines
1.7 KiB
JavaScript
import Component from '@ember/component';
|
|
import { observer, get, set } from '@ember/object'
|
|
import layout from './template';
|
|
|
|
function populateRule(out, type, field, value) {
|
|
if ( out[type] && out[type][field] ) {
|
|
if ( out[type][field].indexOf(value) === -1 ) {
|
|
out[type][field].push(value);
|
|
}
|
|
} else {
|
|
if ( !out[type] ) {
|
|
out[type] = {};
|
|
}
|
|
out[type][field] = [value];
|
|
}
|
|
}
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
|
|
type: null,
|
|
config: null,
|
|
isInclude: null,
|
|
|
|
ruleArray: null,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
this.initRuleArray();
|
|
},
|
|
|
|
actions: {
|
|
addRule() {
|
|
const newRule = {
|
|
key: 'branch',
|
|
value: ''
|
|
};
|
|
|
|
get(this, 'ruleArray').pushObject(newRule);
|
|
},
|
|
|
|
removeRule(rule) {
|
|
get(this, 'ruleArray').removeObject(rule);
|
|
},
|
|
},
|
|
|
|
inputChanged: observer('ruleArray.@each.{key,value}', function() {
|
|
const ruleArray = get(this, 'ruleArray').filter((r) => r.value && r.key) || [];
|
|
const out = {};
|
|
|
|
ruleArray.forEach((rule) => {
|
|
if ( get(this, 'isInclude') ) {
|
|
populateRule(out, rule.key, 'include', rule.value)
|
|
} else {
|
|
populateRule(out, rule.key, 'exclude', rule.value)
|
|
}
|
|
});
|
|
set(this, 'config', out);
|
|
}),
|
|
initRuleArray() {
|
|
const ruleArray = [];
|
|
const key = get(this, 'isInclude') ? 'include' : 'exclude';
|
|
|
|
(get(this, `config.branch.${ key }`) || []).forEach((v) => {
|
|
ruleArray.push({
|
|
key: 'branch',
|
|
value: v,
|
|
});
|
|
});
|
|
|
|
(get(this, `config.event.${ key }`) || []).forEach((v) => {
|
|
ruleArray.push({
|
|
key: 'event',
|
|
value: v,
|
|
});
|
|
});
|
|
set(this, 'ruleArray', ruleArray);
|
|
},
|
|
|
|
})
|