github.com/emate/nomad@v0.8.2-wo-binpacking/ui/app/controllers/jobs/index.js (about)

     1  import { inject as service } from '@ember/service';
     2  import { alias } from '@ember/object/computed';
     3  import Controller, { inject as controller } from '@ember/controller';
     4  import { computed } from '@ember/object';
     5  import Sortable from 'nomad-ui/mixins/sortable';
     6  import Searchable from 'nomad-ui/mixins/searchable';
     7  
     8  export default Controller.extend(Sortable, Searchable, {
     9    system: service(),
    10    jobsController: controller('jobs'),
    11  
    12    isForbidden: alias('jobsController.isForbidden'),
    13  
    14    queryParams: {
    15      currentPage: 'page',
    16      searchTerm: 'search',
    17      sortProperty: 'sort',
    18      sortDescending: 'desc',
    19    },
    20  
    21    currentPage: 1,
    22    pageSize: 10,
    23  
    24    sortProperty: 'modifyIndex',
    25    sortDescending: true,
    26  
    27    searchProps: computed(() => ['id', 'name']),
    28  
    29    /**
    30      Filtered jobs are those that match the selected namespace and aren't children
    31      of periodic or parameterized jobs.
    32    */
    33    filteredJobs: computed(
    34      'model.[]',
    35      'model.@each.parent',
    36      'system.activeNamespace',
    37      'system.namespaces.length',
    38      function() {
    39        const hasNamespaces = this.get('system.namespaces.length');
    40        const activeNamespace = this.get('system.activeNamespace.id') || 'default';
    41  
    42        return this.get('model')
    43          .compact()
    44          .filter(job => !hasNamespaces || job.get('namespace.id') === activeNamespace)
    45          .filter(job => !job.get('parent.content'));
    46      }
    47    ),
    48  
    49    listToSort: alias('filteredJobs'),
    50    listToSearch: alias('listSorted'),
    51    sortedJobs: alias('listSearched'),
    52  
    53    isShowingDeploymentDetails: false,
    54  
    55    actions: {
    56      gotoJob(job) {
    57        this.transitionToRoute('jobs.job', job.get('plainId'));
    58      },
    59  
    60      refresh() {
    61        this.send('refreshRoute');
    62      },
    63    },
    64  });