github.com/emate/nomad@v0.8.2-wo-binpacking/ui/app/controllers/jobs.js (about) 1 import { inject as service } from '@ember/service'; 2 import Controller from '@ember/controller'; 3 import { observer } from '@ember/object'; 4 import { run } from '@ember/runloop'; 5 6 export default Controller.extend({ 7 system: service(), 8 9 queryParams: { 10 jobNamespace: 'namespace', 11 }, 12 13 isForbidden: false, 14 15 jobNamespace: 'default', 16 17 // The namespace query param should act as an alias to the system active namespace. 18 // But query param defaults can't be CPs: https://github.com/emberjs/ember.js/issues/9819 19 syncNamespaceService: forwardNamespace('jobNamespace', 'system.activeNamespace'), 20 syncNamespaceParam: forwardNamespace('system.activeNamespace', 'jobNamespace'), 21 22 actions: { 23 refreshRoute() { 24 return true; 25 }, 26 }, 27 }); 28 29 function forwardNamespace(source, destination) { 30 return observer(source, `${source}.id`, function() { 31 const newNamespace = this.get(`${source}.id`) || this.get(source); 32 const currentNamespace = this.get(`${destination}.id`) || this.get(destination); 33 const bothAreDefault = 34 (currentNamespace == undefined || currentNamespace === 'default') && 35 (newNamespace == undefined || newNamespace === 'default'); 36 37 if (currentNamespace !== newNamespace && !bothAreDefault) { 38 this.set(destination, newNamespace); 39 run.next(() => { 40 this.send('refreshRoute'); 41 }); 42 } 43 }); 44 }