ui/lib/shared/addon/components/schema/input-storageclass/component.js

53 lines
1.2 KiB
JavaScript

import { alias } from '@ember/object/computed';
import { get, set, observer } from '@ember/object';
import { next } from '@ember/runloop';
import { inject as service } from '@ember/service';
import Component from '@ember/component';
import layout from './template';
export default Component.extend({
allStorageClasses: service(),
layout,
field: null,
value: null,
selected: null,
disabled: false,
storageClassesOptions: alias('allStorageClasses.list'),
init() {
this._super(...arguments);
const def = get(this, 'value') || get(this, 'field.default');
if ( def && !get(this, 'selected') ) {
const exact = get(this, 'storageClassesOptions').findBy('id', def);
next(() => {
if ( exact ) {
set(this, 'selected', get(exact, 'id') || null);
} else {
set(this, 'selected', null);
}
});
}
},
selectedChanged: observer('selected', function() {
let id = get(this, 'selected');
let str = null;
if ( id ) {
const storageClass = get(this, 'storageClassesOptions').findBy('id', id);
if ( storageClass ) {
str = get(storageClass, 'id');
}
}
set(this, 'value', str);
}),
});