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  }