github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/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    fuzzySearchProps: computed(() => ['name']),
    29    fuzzySearchEnabled: true,
    30  
    31    /**
    32      Filtered jobs are those that match the selected namespace and aren't children
    33      of periodic or parameterized jobs.
    34    */
    35    filteredJobs: computed('model.[]', 'model.@each.parent', function() {
    36      // Namespace related properties are ommitted from the dependent keys
    37      // due to a prop invalidation bug caused by region switching.
    38      const hasNamespaces = this.get('system.namespaces.length');
    39      const activeNamespace = this.get('system.activeNamespace.id') || 'default';
    40  
    41      return this.get('model')
    42        .compact()
    43        .filter(job => !hasNamespaces || job.get('namespace.id') === activeNamespace)
    44        .filter(job => !job.get('parent.content'));
    45    }),
    46  
    47    listToSort: alias('filteredJobs'),
    48    listToSearch: alias('listSorted'),
    49    sortedJobs: alias('listSearched'),
    50  
    51    isShowingDeploymentDetails: false,
    52  
    53    actions: {
    54      gotoJob(job) {
    55        this.transitionToRoute('jobs.job', job.get('plainId'));
    56      },
    57    },
    58  });