mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
This updates to Ember 3.16 but leaves Ember Data at 3.12 so we don’t need to use the model fragments beta. It can be reviewed on a commit-by-commit basis: blueprint updates, fixes for test failures, and the removal of now-deprecated partials. It’s not a true update to Octane as that would involve turning on template-only components by default, which breaks various things. We can accomplish that separately and then add the edition setting to package.json.
89 lines
3.7 KiB
Handlebars
89 lines
3.7 KiB
Handlebars
{{title "CSI Volumes"}}
|
|
<div class="tabs is-subnav">
|
|
<ul>
|
|
<li data-test-tab="volumes"><LinkTo @route="csi.volumes.index" @activeClass="is-active">Volumes</LinkTo></li>
|
|
<li data-test-tab="plugins"><LinkTo @route="csi.plugins.index" @activeClass="is-active">Plugins</LinkTo></li>
|
|
</ul>
|
|
</div>
|
|
<section class="section">
|
|
{{#if isForbidden}}
|
|
<ForbiddenMessage />
|
|
{{else}}
|
|
<div class="toolbar">
|
|
<div class="toolbar-item">
|
|
{{#if model.length}}
|
|
<SearchBox
|
|
data-test-volumes-search
|
|
@searchTerm={{mut searchTerm}}
|
|
@onChange={{action resetPagination}}
|
|
@placeholder="Search volumes..." />
|
|
{{/if}}
|
|
</div>
|
|
</div>
|
|
{{#if sortedVolumes}}
|
|
<ListPagination
|
|
@source={{sortedVolumes}}
|
|
@size={{pageSize}}
|
|
@page={{currentPage}} as |p|>
|
|
<ListTable
|
|
@source={{p.list}}
|
|
@sortProperty={{sortProperty}}
|
|
@sortDescending={{sortDescending}}
|
|
@class="with-foot" as |t|>
|
|
<t.head>
|
|
<t.sort-by @prop="name">Name</t.sort-by>
|
|
<t.sort-by @prop="schedulable">Volume Health</t.sort-by>
|
|
<t.sort-by @prop="controllersHealthyProportion">Controller Health</t.sort-by>
|
|
<t.sort-by @prop="nodesHealthyProportion">Node Health</t.sort-by>
|
|
<t.sort-by @prop="provider">Provider</t.sort-by>
|
|
<th># Allocs</th>
|
|
</t.head>
|
|
<t.body @key="model.name" as |row|>
|
|
<tr class="is-interactive" data-test-volume-row {{on "click" (action "gotoVolume" row.model)}}>
|
|
<td data-test-volume-name>
|
|
<LinkTo @route="csi.volumes.volume" @model={{row.model.plainId}} class="is-primary">{{row.model.name}}</LinkTo>
|
|
</td>
|
|
<td data-test-volume-schedulable>{{if row.model.schedulable "Schedulable" "Unschedulable"}}</td>
|
|
<td data-test-volume-controller-health>
|
|
{{if (gt row.model.controllersHealthy 0) "Healthy" "Unhealthy"}}
|
|
({{row.model.controllersHealthy}}/{{row.model.controllersExpected}})
|
|
</td>
|
|
<td data-test-volume-node-health>
|
|
{{if (gt row.model.nodesHealthy 0) "Healthy" "Unhealthy"}}
|
|
({{row.model.nodesHealthy}}/{{row.model.nodesExpected}})
|
|
</td>
|
|
<td data-test-volume-provider>{{row.model.provider}}</td>
|
|
<td data-test-volume-allocations>{{row.model.allocations.length}}</td>
|
|
</tr>
|
|
</t.body>
|
|
</ListTable>
|
|
<div class="table-foot">
|
|
<PageSizeSelect @onChange={{action resetPagination}} />
|
|
<nav class="pagination">
|
|
<div class="pagination-numbers">
|
|
{{p.startsAt}}–{{p.endsAt}} of {{sortedVolumes.length}}
|
|
</div>
|
|
<p.prev @class="pagination-previous">{{x-icon "chevron-left"}}</p.prev>
|
|
<p.next @class="pagination-next">{{x-icon "chevron-right"}}</p.next>
|
|
<ul class="pagination-list"></ul>
|
|
</nav>
|
|
</div>
|
|
</ListPagination>
|
|
{{else}}
|
|
<div data-test-empty-volumes-list class="empty-message">
|
|
{{#if (eq model.length 0)}}
|
|
<h3 data-test-empty-volumes-list-headline class="empty-message-headline">No Volumes</h3>
|
|
<p class="empty-message-body">
|
|
The cluster currently has no CSI Volumes.
|
|
</p>
|
|
{{else if searchTerm}}
|
|
<h3 data-test-empty-volumes-list-headline class="empty-message-headline">No Matches</h3>
|
|
<p class="empty-message-body">
|
|
No volumes match the term <strong>{{searchTerm}}</strong>
|
|
</p>
|
|
{{/if}}
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
</section>
|