ui/app/authenticated/project/route.js

65 lines
1.9 KiB
JavaScript

import { next } from '@ember/runloop';
import EmberObject, { get } from '@ember/object';
import { inject as service } from '@ember/service';
import Route from '@ember/routing/route';
import { all as PromiseAll } from 'rsvp';
import Preload from 'ui/mixins/preload';
export default Route.extend(Preload,{
access: service(),
scope: service(),
globalStore: service(),
model(params, transition) {
const isPopup = this.controllerFor('application').get('isPopup');
return get(this, 'globalStore').find('project', params.project_id).then((project) => {
return get(this,'scope').startSwitchToProject(project, !isPopup).then(() => {
return PromiseAll([
this.loadSchemas('clusterStore'),
this.loadSchemas('store'),
]).then(() => {
const out = EmberObject.create({project});
if ( isPopup ) {
return out;
} else {
return PromiseAll([
this.preload('namespace','clusterStore'),
this.preload('pod'),
this.preload('workload'),
this.preload('dnsRecord'),
this.preload('secret'),
this.preload('service'),
this.preload('namespacedSecret'),
]).then(() => {
return out;
})
}
});
});
}).catch((err) => {
return this.loadingError(err, transition);
});
},
setupController(controller, model) {
this._super(...arguments);
get(this, 'scope').finishSwitchToProject(get(model,'project'));
},
actions: {
toggleGrouping() {
let choices = ['none','service','stack'];
let cur = this.get('controller.group');
let neu = choices[((choices.indexOf(cur)+1) % choices.length)];
next(() => {
this.set('controller.group', neu);
});
},
},
shortcuts: {
'g': 'toggleGrouping',
}
});