mirror of https://github.com/rancher/ui.git
117 lines
2.8 KiB
JavaScript
117 lines
2.8 KiB
JavaScript
import { inject as service } from '@ember/service';
|
|
import Component from '@ember/component';
|
|
import layout from './template';
|
|
import { next } from '@ember/runloop'
|
|
import { get, set, computed } from '@ember/object';
|
|
import { NEW_VOLUME, NEW_PVC, NEW_VCT } from '../form-volumes/component';
|
|
|
|
export default Component.extend({
|
|
modalService: service('modal'),
|
|
|
|
layout,
|
|
tagName: '',
|
|
editing: true,
|
|
pvcs: null,
|
|
workload: null,
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
set(this, 'pvcs', get(this, 'store').all('persistentVolumeClaim'));
|
|
},
|
|
|
|
didReceiveAttrs() {
|
|
const mode = get(this, 'model.mode');
|
|
|
|
if ( mode === NEW_VOLUME ) {
|
|
next(() => {
|
|
this.send('defineNewVolume');
|
|
});
|
|
} else if ( mode === NEW_VCT ) {
|
|
next(() => {
|
|
this.send('defineNewVct');
|
|
});
|
|
} else if ( mode === NEW_PVC ) {
|
|
next(() => {
|
|
this.send('defineNewPvc');
|
|
});
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
defineNewVolume() {
|
|
get(this, 'modalService').toggleModal('modal-new-volume', {
|
|
model: get(this, 'model.volume').clone(),
|
|
callback: (volume) => {
|
|
set(this, 'model.volume', volume);
|
|
},
|
|
});
|
|
},
|
|
|
|
defineNewPvc() {
|
|
get(this, 'modalService').toggleModal('modal-new-pvc', {
|
|
model: get(this, 'model.pvc'),
|
|
namespace: get(this, 'namespace'),
|
|
callback: (pvc) => {
|
|
set(this, 'model.pvc', pvc);
|
|
if ( !get(this, 'model.volume.name') ) {
|
|
set(this, 'model.volume.name', get(pvc, 'name'));
|
|
}
|
|
},
|
|
});
|
|
},
|
|
|
|
defineNewVct() {
|
|
const { modalService } = this;
|
|
|
|
modalService.toggleModal('modal-new-vct', {
|
|
model: get(this, 'model.vct'),
|
|
namespace: get(this, 'namespace'),
|
|
callback: (vct) => {
|
|
set(this, 'model.vct', vct);
|
|
|
|
if ( !get(this, 'model.name') ) {
|
|
set(this, 'model.name', get(vct, 'name'));
|
|
}
|
|
},
|
|
});
|
|
},
|
|
|
|
remove() {
|
|
if (this.remove) {
|
|
this.remove(this.model);
|
|
}
|
|
},
|
|
|
|
addMount() {
|
|
const mount = get(this, 'store').createRecord({ type: 'volumeMount', })
|
|
|
|
get(this, 'model.mounts').pushObject(mount);
|
|
},
|
|
|
|
removeMount(mount) {
|
|
get(this, 'model.mounts').removeObject(mount);
|
|
},
|
|
},
|
|
|
|
pvcChoices: computed('pvcs.@each.{name,state}', 'namespace.id', function() {
|
|
return get(this, 'pvcs').filterBy('namespaceId', get(this, 'namespace.id'))
|
|
.map((v) => {
|
|
let label = get(v, 'displayName');
|
|
const state = get(v, 'state');
|
|
const disabled = false;
|
|
|
|
if ( disabled ) {
|
|
label += ` (${ state })`;
|
|
}
|
|
|
|
return {
|
|
label,
|
|
disabled,
|
|
value: get(v, 'id'),
|
|
}
|
|
})
|
|
.sortBy('label');
|
|
}),
|
|
|
|
});
|