mirror of https://github.com/rancher/ui.git
90 lines
2.4 KiB
JavaScript
90 lines
2.4 KiB
JavaScript
import EmberObject from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import Component from '@ember/component';
|
|
import { normalizeName } from 'shared/settings/service';
|
|
import { get, set } from '@ember/object';
|
|
import C from 'ui/utils/constants';
|
|
import layout from './template';
|
|
import { computed } from '@ember/object';
|
|
|
|
export default Component.extend({
|
|
layout,
|
|
settings: service(),
|
|
modalService: service('modal'),
|
|
loading: false,
|
|
show: false,
|
|
allowedSettings: C.SETTING.ALLOWED,
|
|
|
|
actions: {
|
|
showNode(node) {
|
|
node.toggleProperty('hide');
|
|
},
|
|
show() {
|
|
set(this, 'loading', true);
|
|
get(this, 'settings').loadAll().then(() => {
|
|
set(this, 'loading', false);
|
|
set(this, 'show', true);
|
|
}).catch(() => {
|
|
set(this, 'loading', false);
|
|
set(this, 'show', false);
|
|
});
|
|
},
|
|
|
|
showEdit(key) {
|
|
let obj = get(this, 'settings').findByName(key);
|
|
let details = get(this, 'allowed')[key];
|
|
|
|
get(this, 'modalService').toggleModal('modal-edit-setting', EmberObject.create({
|
|
key: key,
|
|
descriptionKey: details.descriptionKey,
|
|
kind: details.kind,
|
|
options: details.options,
|
|
obj: obj,
|
|
canDelete: obj && !obj.get('isDefault'),
|
|
}));
|
|
}
|
|
},
|
|
|
|
allowed: function() {
|
|
let out = {};
|
|
Object.keys(get(this, 'allowedSettings')).forEach((key) => {
|
|
let val = Object.assign({}, get(this, `allowedSettings.${key}`));
|
|
val.descriptionKey = 'dangerZone.description.' + key;
|
|
out[key] = val;
|
|
});
|
|
|
|
return out;
|
|
}.property(),
|
|
|
|
current: computed('settings.all.@each.{name,source}', function() {
|
|
let all = get(this, 'settings.asMap');
|
|
let allowed = get(this, 'allowed');
|
|
let mode = get(this, 'app.mode');
|
|
let isLocalDev = window.location.host === 'localhost:8000';
|
|
|
|
return Object.keys(allowed).filter((key) => {
|
|
let details = allowed[key];
|
|
return (!details['mode'] || details['mode'] === mode) &&
|
|
(!details['devOnly'] || isLocalDev);
|
|
}).map((key) => {
|
|
let obj = all[normalizeName(key)];
|
|
let details = allowed[key];
|
|
|
|
let out = EmberObject.create({
|
|
key: key,
|
|
obj: obj,
|
|
});
|
|
|
|
if (get(details, 'kind') === 'multiline') {
|
|
out.set('hide', true);
|
|
}
|
|
|
|
(Object.keys(details)||[]).forEach((key2) => {
|
|
out.set(key2, details[key2]);
|
|
});
|
|
|
|
return out;
|
|
});
|
|
}),
|
|
});
|