mirror of https://github.com/rancher/ui.git
112 lines
2.5 KiB
JavaScript
112 lines
2.5 KiB
JavaScript
import Ember from 'ember';
|
|
import NewOrEdit from 'ui/mixins/new-or-edit';
|
|
import ModalBase from 'ui/mixins/modal-base';
|
|
|
|
export default Ember.Component.extend(ModalBase, NewOrEdit, {
|
|
classNames: ['large-modal'],
|
|
originalModel: Ember.computed.alias('modalService.modalOpts'),
|
|
editing: true,
|
|
isService: false,
|
|
isSidekick: false,
|
|
loading: true,
|
|
|
|
|
|
model: null,
|
|
|
|
primaryResource: Ember.computed.alias('model.instance'),
|
|
launchConfig: Ember.computed.alias('model.instance'),
|
|
portsArray: null,
|
|
|
|
linksArray: null,
|
|
|
|
actions: {
|
|
setPorts(ports) {
|
|
this.set('portsArray', ports);
|
|
},
|
|
|
|
setLinks(links) {
|
|
this.set('linksArray', links);
|
|
},
|
|
|
|
save() {
|
|
this._super(...arguments);
|
|
this.send('cancel');
|
|
}
|
|
},
|
|
|
|
didInsertElement: function() {
|
|
Ember.run.next(this, 'loadDependencies');
|
|
},
|
|
|
|
loadDependencies: function() {
|
|
var instance = this.get('originalModel');
|
|
|
|
return Ember.RSVP.all([
|
|
instance.followLink('ports'),
|
|
instance.followLink('instanceLinks'),
|
|
this.get('store').findAll('host'), // Need inactive ones in case a link points to an inactive host
|
|
]).then((results) => {
|
|
var model = Ember.Object.create({
|
|
instance: instance.clone(),
|
|
ports: results[0],
|
|
instanceLinks: results[1],
|
|
allHosts: results[2],
|
|
});
|
|
|
|
this.setProperties({
|
|
originalModel: instance,
|
|
model: model,
|
|
loading: false,
|
|
});
|
|
});
|
|
},
|
|
|
|
didSave: function() {
|
|
return Ember.RSVP.all([
|
|
this.savePorts(),
|
|
this.saveLinks(),
|
|
]);
|
|
},
|
|
|
|
savePorts: function() {
|
|
var promises = [];
|
|
this.get('portsArray').forEach(function(port) {
|
|
var neu = parseInt(port.public,10);
|
|
if ( isNaN(neu) )
|
|
{
|
|
neu = null;
|
|
}
|
|
|
|
var obj = port.obj;
|
|
if ( neu !== Ember.get(obj,'publicPort') )
|
|
{
|
|
//console.log('Changing port',obj.serialize(),'to',neu);
|
|
obj.set('publicPort', neu);
|
|
promises.push(obj.save());
|
|
}
|
|
});
|
|
|
|
return Ember.RSVP.all(promises);
|
|
},
|
|
|
|
saveLinks: function() {
|
|
var promises = [];
|
|
this.get('linksArray').forEach(function(link) {
|
|
var neu = link.targetInstanceId;
|
|
var obj = link.obj;
|
|
if ( neu !== Ember.get(obj,'targetInstanceId') )
|
|
{
|
|
//console.log('Changing link',obj.serialize(),'to',neu);
|
|
obj.set('targetInstanceId', neu);
|
|
promises.push(obj.save());
|
|
}
|
|
});
|
|
|
|
return Ember.RSVP.all(promises);
|
|
},
|
|
|
|
doneSaving: function() {
|
|
this.sendAction('dismiss');
|
|
},
|
|
});
|