mirror of https://github.com/rancher/ui.git
77 lines
1.9 KiB
JavaScript
77 lines
1.9 KiB
JavaScript
import Component from '@ember/component';
|
|
import { next } from '@ember/runloop';
|
|
import { alias } from '@ember/object/computed';
|
|
import ModalBase from 'shared/mixins/modal-base';
|
|
import layout from './template';
|
|
import { set, get, observer } from '@ember/object';
|
|
|
|
export default Component.extend(ModalBase, {
|
|
layout,
|
|
classNames: ['large-modal', 'alert'],
|
|
|
|
branch: null,
|
|
branchesChoices: null,
|
|
loading: false,
|
|
errors: null,
|
|
|
|
config: null,
|
|
|
|
model: alias('modalService.modalOpts.originalModel'),
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
set(this, 'loading', true);
|
|
get(this, 'model').followLink('branches').then((res) => {
|
|
if ( this.isDestroyed || this.isDestroying ) {
|
|
return;
|
|
}
|
|
|
|
const branchesChoices = JSON.parse(res).map((branch) => {
|
|
return { branch }
|
|
}).sortBy('branch');
|
|
|
|
set(this, 'branchesChoices', branchesChoices);
|
|
|
|
if ( get(this, 'branchesChoices.length') ) {
|
|
next(() => {
|
|
set(this, 'branch', get(this, 'branchesChoices.firstObject.branch'));
|
|
});
|
|
}
|
|
})
|
|
},
|
|
|
|
actions: {
|
|
save(success) {
|
|
get(this, 'store').request({
|
|
data: get(this, 'config'),
|
|
url: `${ get(this, 'model.links.yaml') }?branch=${ get(this, 'branch') }`,
|
|
method: 'PUT'
|
|
})
|
|
.then(() => {
|
|
this.send('cancel');
|
|
})
|
|
.catch((err) => {
|
|
set(this, 'errors', [err.message]);
|
|
success(false);
|
|
});
|
|
}
|
|
},
|
|
|
|
branchDidChange: observer('branch', function() {
|
|
const branch = get(this, 'branch');
|
|
|
|
if ( branch ) {
|
|
set(this, 'loading', true);
|
|
get(this, 'model').followLink('yaml', { filter: { branch } }).then((res) => {
|
|
if ( this.isDestroyed || this.isDestroying ) {
|
|
return;
|
|
}
|
|
|
|
set(this, 'config', res);
|
|
}).finally(() => set(this, 'loading', false));
|
|
}
|
|
}),
|
|
|
|
});
|