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.5 KiB
Handlebars
89 lines
3.5 KiB
Handlebars
{{title "CSI Plugins"}}
|
|
<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-plugins-search
|
|
@searchTerm={{mut searchTerm}}
|
|
@onChange={{action resetPagination}}
|
|
@placeholder="Search plugins..." />
|
|
{{/if}}
|
|
</div>
|
|
</div>
|
|
{{#if sortedPlugins}}
|
|
<ListPagination
|
|
@source={{sortedPlugins}}
|
|
@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="plainId">ID</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>
|
|
</t.head>
|
|
<t.body @key="model.id" as |row|>
|
|
<tr class="is-interactive" data-test-plugin-row {{on "click" (action "gotoPlugin" row.model)}}>
|
|
<td data-test-plugin-id>
|
|
<LinkTo @route="csi.plugins.plugin" @model={{row.model.plainId}} class="is-primary">{{row.model.plainId}}</LinkTo>
|
|
</td>
|
|
<td data-test-plugin-controller-health>
|
|
{{#if row.model.controllerRequired}}
|
|
{{if (gt row.model.controllersHealthy 0) "Healthy" "Unhealthy"}}
|
|
({{row.model.controllersHealthy}}/{{row.model.controllersExpected}})
|
|
{{else}}
|
|
<em class="is-faded">Node Only</em>
|
|
{{/if}}
|
|
</td>
|
|
<td data-test-plugin-node-health>
|
|
{{if (gt row.model.nodesHealthy 0) "Healthy" "Unhealthy"}}
|
|
({{row.model.nodesHealthy}}/{{row.model.nodesExpected}})
|
|
</td>
|
|
<td data-test-plugin-provider>{{row.model.provider}}</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 {{sortedPlugins.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-plugins-list class="empty-message">
|
|
{{#if (eq model.length 0)}}
|
|
<h3 data-test-empty-plugins-list-headline class="empty-message-headline">No Plugins</h3>
|
|
<p class="empty-message-body">
|
|
The cluster currently has no registered CSI Plugins.
|
|
</p>
|
|
{{else if searchTerm}}
|
|
<h3 data-test-empty-plugins-list-headline class="empty-message-headline">No Matches</h3>
|
|
<p class="empty-message-body">
|
|
No plugins match the term <strong>{{searchTerm}}</strong>
|
|
</p>
|
|
{{/if}}
|
|
</div>
|
|
{{/if}}
|
|
{{/if}}
|
|
</section>
|