import { inject as service } from '@ember/service'; import Component from '@ember/component'; import { computed } from '@ember/object'; import classic from 'ember-classic-decorator'; @classic export default class GutterMenu extends Component { @service system; @service router; @service keyboard; @computed('system.namespaces.@each.name') get sortedNamespaces() { const namespaces = this.get('system.namespaces').toArray() || []; return namespaces.sort((a, b) => { const aName = a.get('name'); const bName = b.get('name'); // Make sure the default namespace is always first in the list if (aName === 'default') { return -1; } if (bName === 'default') { return 1; } if (aName < bName) { return -1; } if (aName > bName) { return 1; } return 0; }); } onHamburgerClick() {} // Seemingly redundant, but serves to ensure the action is passed to the keyboard service correctly transitionTo(destination) { return this.router.transitionTo(destination); } gotoJobsForNamespace(namespace) { if (!namespace || !namespace.get('id')) return; // Jobs and CSI Volumes are both namespace-sensitive. Changing namespaces is // an intent to reset context, but where to reset to depends on where the namespace // is being switched from. Jobs take precedence, but if the namespace is switched from // a storage-related page, context should be reset to volumes. const destination = this.router.currentRouteName.startsWith('csi.') ? 'csi.volumes' : 'jobs'; this.router.transitionTo(destination, { queryParams: { namespace: namespace.get('id') }, }); } }