mirror of https://github.com/rancher/ui.git
94 lines
2.3 KiB
JavaScript
94 lines
2.3 KiB
JavaScript
import Resource from 'ember-api-store/models/resource';
|
|
import { get, set, computed } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import { ucFirst } from 'shared/utils/util';
|
|
import { getDisplayLocation, getDisplaySize } from 'shared/mixins/node-driver';
|
|
|
|
export default Resource.extend({
|
|
|
|
|
|
intl: service(),
|
|
modalService: service('modal'),
|
|
|
|
type: 'nodeTemplate',
|
|
canClone: true,
|
|
|
|
config: computed('driver', function() {
|
|
const driver = get(this, 'driver');
|
|
|
|
return get(this, `${ driver }Config`);
|
|
}),
|
|
|
|
displayProvider: computed('driver', 'intl.locale', function() {
|
|
const intl = get(this, 'intl');
|
|
const driver = get(this, 'driver');
|
|
const key = `nodeDriver.displayName.${ driver }`;
|
|
|
|
if ( intl.exists(key) ) {
|
|
return intl.t(key);
|
|
} else {
|
|
return ucFirst(driver);
|
|
}
|
|
}),
|
|
|
|
displaySize: computed('config', function() {
|
|
const driver = get(this, 'driver');
|
|
|
|
return this._displayVar(getDisplaySize(driver));
|
|
}).volatile(),
|
|
|
|
displayLocation: computed(function() {
|
|
const driver = get(this, 'driver');
|
|
|
|
return this._displayVar(getDisplayLocation(driver));
|
|
}).volatile(),
|
|
|
|
actions: {
|
|
edit() {
|
|
let driver = get(this, 'driver');
|
|
|
|
get(this, 'modalService').toggleModal('modal-edit-node-template', {
|
|
driver,
|
|
config: get(this, `${ driver }Config`),
|
|
nodeTemplate: this,
|
|
});
|
|
},
|
|
|
|
clone() {
|
|
const clone = this.cloneForNew();
|
|
const driver = get(this, 'driver');
|
|
|
|
get(this, 'modalService').toggleModal('modal-edit-node-template', {
|
|
driver,
|
|
config: get(this, `${ driver }Config`),
|
|
nodeTemplate: clone,
|
|
});
|
|
}
|
|
},
|
|
|
|
_displayVar(keyOrFn) {
|
|
const intl = get(this, 'intl');
|
|
|
|
if ( keyOrFn ) {
|
|
if ( typeof (keyOrFn) === 'function' ) {
|
|
return keyOrFn.call(this);
|
|
} else {
|
|
return get(this, keyOrFn);
|
|
}
|
|
} else {
|
|
return intl.t('generic.unknown');
|
|
}
|
|
},
|
|
|
|
clearConfigsExcept(keep) {
|
|
const keys = this.allKeys().filter((x) => x.endsWith('Config'));
|
|
|
|
for ( let key, i = 0 ; i < keys.length ; i++ ) {
|
|
key = keys[i];
|
|
if ( key !== keep && get(this, key) ) {
|
|
set(this, key, null);
|
|
}
|
|
}
|
|
},
|
|
});
|