ui/app/components/form-secrets-row/component.js

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;
}),
});