ui/lib/alert/addon/index/route.js

64 lines
2.2 KiB
JavaScript

import Route from '@ember/routing/route';
import { hash } from 'rsvp';
import { inject as service } from '@ember/service';
import { reads } from '@ember/object/computed'
import { get, set } from '@ember/object';
import { on } from '@ember/object/evented';
import C from 'ui/utils/constants';
export default Route.extend({
scope: service(),
session: service(),
globalStore: service(),
pageScope: reads('scope.currentPageScope'),
model() {
const pageScope = get(this, 'pageScope');
if (pageScope === 'cluster') {
const cluster = window.l('route:application').modelFor('authenticated.cluster');
const clusterId = cluster.get('id');
return this.loadClusterResource(clusterId);
} else {
const project = window.l('route:application').modelFor('authenticated.project').get('project');
const projectId = project.get('id');
const clusterId = project.get('clusterId');
return this.loadProjectResource({
projectId,
clusterId
});
}
},
setDefaultRoute: on('activate', function() {
set(this, `session.${ get(this, 'pageScope') === 'cluster' ? C.SESSION.CLUSTER_ROUTE : C.SESSION.PROJECT_ROUTE }`, `authenticated.${ get(this, 'pageScope') }.alert`);
}),
loadClusterResource(clusterId) {
const gs = get(this, 'globalStore');
// const clusterId = this.modelFor('cluster').get('id');
const opt = { filter: { clusterId }, };
const notifiers = gs.find('notifier', null, opt);
const alerts = gs.find('clusterAlertRule', null, opt).then(() => gs.all('clusterAlertRule'));
const groups = gs.find('clusterAlertGroup', null, opt).then(() => gs.all('clusterAlertGroup'));
return hash({
alerts,
notifiers,
groups,
});
},
loadProjectResource({ clusterId, projectId }) {
let gs = get(this, 'globalStore');
const notifiers = gs.find('notifier', null, { filter: { clusterId } });
const alerts = gs.find('projectAlertRule', null, { filter: { projectId } }).then(() => gs.all('projectAlertRule'));
const groups = gs.find('projectAlertGroup', null, { filter: { projectId } }).then(() => gs.all('projectAlertGroup'));
return hash({
alerts,
notifiers,
groups,
});
},
});