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