github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/ui/app/controllers/jobs/index.js (about) 1 import Ember from 'ember'; 2 import Sortable from 'nomad-ui/mixins/sortable'; 3 import Searchable from 'nomad-ui/mixins/searchable'; 4 5 const { Controller, computed, inject } = Ember; 6 7 export default Controller.extend(Sortable, Searchable, { 8 system: inject.service(), 9 jobsController: inject.controller('jobs'), 10 11 isForbidden: computed.alias('jobsController.isForbidden'), 12 13 pendingJobs: computed.filterBy('model', 'status', 'pending'), 14 runningJobs: computed.filterBy('model', 'status', 'running'), 15 deadJobs: computed.filterBy('model', 'status', 'dead'), 16 17 queryParams: { 18 currentPage: 'page', 19 searchTerm: 'search', 20 sortProperty: 'sort', 21 sortDescending: 'desc', 22 }, 23 24 currentPage: 1, 25 pageSize: 10, 26 27 sortProperty: 'modifyIndex', 28 sortDescending: true, 29 30 searchProps: computed(() => ['id', 'name']), 31 32 filteredJobs: computed( 33 'model.[]', 34 'system.activeNamespace', 35 'system.namespaces.length', 36 function() { 37 if (this.get('system.namespaces.length')) { 38 return this.get('model').filterBy('namespace.id', this.get('system.activeNamespace.id')); 39 } else { 40 return this.get('model'); 41 } 42 } 43 ), 44 45 listToSort: computed.alias('filteredJobs'), 46 listToSearch: computed.alias('listSorted'), 47 sortedJobs: computed.alias('listSearched'), 48 49 isShowingDeploymentDetails: false, 50 51 actions: { 52 gotoJob(job) { 53 this.transitionToRoute('jobs.job', job); 54 }, 55 56 refresh() { 57 this.send('refreshRoute'); 58 }, 59 }, 60 });