github.com/manicqin/nomad@v0.9.5/ui/app/templates/jobs/index.hbs (about) 1 {{title "Jobs"}} 2 <section class="section"> 3 {{#if isForbidden}} 4 {{partial "partials/forbidden-message"}} 5 {{else}} 6 <div class="toolbar"> 7 <div class="toolbar-item"> 8 {{#if visibleJobs.length}} 9 {{search-box 10 data-test-jobs-search 11 searchTerm=(mut searchTerm) 12 onChange=(action resetPagination) 13 placeholder="Search jobs..."}} 14 {{/if}} 15 </div> 16 {{#if (media "isMobile")}} 17 <div class="toolbar-item is-right-aligned"> 18 {{#link-to "jobs.run" data-test-run-job class="button is-primary"}}Run Job{{/link-to}} 19 </div> 20 {{/if}} 21 <div class="toolbar-item is-right-aligned is-mobile-full-width"> 22 <div class="button-bar"> 23 {{multi-select-dropdown 24 data-test-type-facet 25 label="Type" 26 options=optionsType 27 selection=selectionType 28 onSelect=(action setFacetQueryParam "qpType")}} 29 {{multi-select-dropdown 30 data-test-status-facet 31 label="Status" 32 options=optionsStatus 33 selection=selectionStatus 34 onSelect=(action setFacetQueryParam "qpStatus")}} 35 {{multi-select-dropdown 36 data-test-datacenter-facet 37 label="Datacenter" 38 options=optionsDatacenter 39 selection=selectionDatacenter 40 onSelect=(action setFacetQueryParam "qpDatacenter")}} 41 {{multi-select-dropdown 42 data-test-prefix-facet 43 label="Prefix" 44 options=optionsPrefix 45 selection=selectionPrefix 46 onSelect=(action setFacetQueryParam "qpPrefix")}} 47 </div> 48 </div> 49 {{#if (not (media "isMobile"))}} 50 <div class="toolbar-item is-right-aligned"> 51 {{#link-to "jobs.run" data-test-run-job class="button is-primary"}}Run Job{{/link-to}} 52 </div> 53 {{/if}} 54 </div> 55 {{#if sortedJobs}} 56 {{#list-pagination 57 source=sortedJobs 58 size=pageSize 59 page=currentPage as |p|}} 60 {{#list-table 61 source=p.list 62 sortProperty=sortProperty 63 sortDescending=sortDescending 64 class="with-foot" as |t|}} 65 {{#t.head}} 66 {{#t.sort-by prop="name"}}Name{{/t.sort-by}} 67 {{#t.sort-by prop="status"}}Status{{/t.sort-by}} 68 {{#t.sort-by prop="type"}}Type{{/t.sort-by}} 69 {{#t.sort-by prop="priority"}}Priority{{/t.sort-by}} 70 <th>Groups</th> 71 <th class="is-3">Summary</th> 72 {{/t.head}} 73 {{#t.body key="model.id" as |row|}} 74 {{job-row data-test-job-row=row.model.plainId job=row.model onClick=(action "gotoJob" row.model)}} 75 {{/t.body}} 76 {{/list-table}} 77 <div class="table-foot"> 78 <nav class="pagination"> 79 <div class="pagination-numbers"> 80 {{p.startsAt}}–{{p.endsAt}} of {{sortedJobs.length}} 81 {{#if searchTerm}} 82 <em>({{dec sortedJobs.length filteredJobs.length}} hidden by search term)</em> 83 {{/if}} 84 </div> 85 {{#p.prev class="pagination-previous"}} < {{/p.prev}} 86 {{#p.next class="pagination-next"}} > {{/p.next}} 87 <ul class="pagination-list"></ul> 88 </nav> 89 </div> 90 {{/list-pagination}} 91 {{else}} 92 <div data-test-empty-jobs-list class="empty-message"> 93 {{#if (eq visibleJobs.length 0)}} 94 <h3 data-test-empty-jobs-list-headline class="empty-message-headline">No Jobs</h3> 95 <p class="empty-message-body"> 96 The cluster is currently empty. 97 </p> 98 {{else if (eq filteredJobs.length 0)}} 99 <h3 data-test-empty-jobs-list-headline class="empty-message-headline">No Matches</h3> 100 <p class="empty-message-body"> 101 No jobs match your current filter selection. 102 </p> 103 {{else if searchTerm}} 104 <h3 data-test-empty-jobs-list-headline class="empty-message-headline">No Matches</h3> 105 <p class="empty-message-body">No jobs match the term <strong>{{searchTerm}}</strong></p> 106 {{/if}} 107 </div> 108 {{/if}} 109 {{/if}} 110 </section>