mirror of https://github.com/rancher/ui.git
77 lines
2.0 KiB
JavaScript
77 lines
2.0 KiB
JavaScript
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { get, set, computed } from '@ember/object';
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
tagName: 'tr',
|
|
secrets: null,
|
|
allSecrets: computed('secrets.@each.{sourceName}', function() {
|
|
return get(this, 'secrets').map(s => { return {id: get(s, 'name'), label: get(s, 'name')} }).sortBy('label');
|
|
}),
|
|
secret: null,
|
|
usePrefix: false,
|
|
editing: true,
|
|
disableTarget: true,
|
|
secretSet: computed('secret.sourceName', function() {
|
|
return get(this, 'secret.sourceName') ? false : true;
|
|
}),
|
|
|
|
prefixOrTarget: computed('sourceKey', {
|
|
get(key) {
|
|
if (get(this, 'sourceKey') === 'prefix') {
|
|
return get(this, 'secret.prefix');
|
|
} else {
|
|
return get(this, 'secret.targetKey');
|
|
}
|
|
},
|
|
set(key, value) {
|
|
if (get(this, 'sourceKey') === 'prefix') {
|
|
return set(this, 'secret.prefix', value);
|
|
} else {
|
|
return set(this, 'secret.targetKey', value);
|
|
}
|
|
}
|
|
}),
|
|
sourceKey: computed({
|
|
get(key) {
|
|
let nue = key;
|
|
if (get(this, 'secret.prefix')) {
|
|
nue = 'prefix';
|
|
}
|
|
return get(this, `secret.${nue}`);
|
|
},
|
|
set(key, value) {
|
|
let out = get(this, 'secret.sourceKey');
|
|
|
|
if (value === 'prefix') {
|
|
// TODO verify that when prefix is set we do not set the sourceKey
|
|
out = "prefix";
|
|
} else {
|
|
set(this, 'secret.sourceKey', value);
|
|
}
|
|
|
|
set(this, 'disableTarget', false)
|
|
|
|
return out;
|
|
},
|
|
}),
|
|
prefixOrKeys: computed('allSecrets.[]', 'secret.sourceName', function() {
|
|
let prefix = { id: 'prefix', label: 'Prefix'};
|
|
let selectedSecret = get(this, 'secret.sourceName');
|
|
let out = [prefix];
|
|
if (selectedSecret) {
|
|
let secret = get(this, 'secrets').findBy('name', selectedSecret);
|
|
let secretKeys = Object.keys(get(secret, 'data'));
|
|
if (secretKeys) {
|
|
secretKeys.forEach((sk) => {
|
|
out.addObject({id: sk, label: sk});
|
|
})
|
|
}
|
|
}
|
|
|
|
return out;
|
|
}),
|
|
|
|
});
|