mirror of
https://github.com/status-im/consul.git
synced 2025-03-03 06:40:45 +00:00
Adds a 'status' for the filtering/searching in the UI, without this its not super clear that you are filtering a recordset due to the menu selections being hidden once closed. You can also use the pills in this status view to delete individual filters.
116 lines
3.9 KiB
Handlebars
116 lines
3.9 KiB
Handlebars
{{page-title 'Key/Value'}}
|
|
{{#let
|
|
|
|
(hash
|
|
value=(or sortBy "Kind:asc")
|
|
change=(action (mut sortBy) value="target.selected")
|
|
)
|
|
|
|
(hash
|
|
kind=(hash
|
|
value=(if kind (split kind ',') undefined)
|
|
change=(action (mut kind) value="target.selectedItems")
|
|
)
|
|
)
|
|
|
|
items
|
|
|
|
as |sort filters items|}}
|
|
<AppView>
|
|
{{#if (not-eq parent.Key '/') }}
|
|
<BlockSlot @name="breadcrumbs">
|
|
<ol>
|
|
<li><a href={{href-to 'dc.kv'}}>Key / Values</a></li>
|
|
{{#each (slice 0 -2 (split parent.Key '/')) as |breadcrumb index|}}
|
|
<li><a href={{href-to 'dc.kv.folder' (join '/' (append (slice 0 (add index 1) (split parent.Key '/')) ''))}}>{{breadcrumb}}</a></li>
|
|
{{/each}}
|
|
</ol>
|
|
</BlockSlot>
|
|
{{/if}}
|
|
<BlockSlot @name="header">
|
|
<h1>
|
|
{{#if (eq parent.Key '/')}}
|
|
Key / Value
|
|
{{else}}
|
|
{{take 1 (drop 1 (reverse (split parent.Key '/')))}}
|
|
{{/if}}
|
|
</h1>
|
|
<label for="toolbar-toggle"></label>
|
|
</BlockSlot>
|
|
<BlockSlot @name="toolbar">
|
|
{{#if (gt items.length 0) }}
|
|
<Consul::Kv::SearchBar
|
|
@search={{search}}
|
|
@onsearch={{action (mut search) value="target.value"}}
|
|
|
|
@sort={{sort}}
|
|
|
|
@filter={{filters}}
|
|
/>
|
|
{{/if}}
|
|
</BlockSlot>
|
|
<BlockSlot @name="actions">
|
|
{{#if (not-eq parent.Key '/') }}
|
|
<a data-test-create href="{{href-to 'dc.kv.create' parent.Key}}" class="type-create">Create</a>
|
|
{{else}}
|
|
<a data-test-create href="{{href-to 'dc.kv.root-create'}}" class="type-create">Create</a>
|
|
{{/if}}
|
|
</BlockSlot>
|
|
<BlockSlot @name="content">
|
|
<DataWriter
|
|
@sink={{concat '/' dc '/' nspace '/kv/'}}
|
|
@type="kv"
|
|
@label="key"
|
|
@ondelete={{refresh-route}}
|
|
as |writer|>
|
|
<BlockSlot @name="content">
|
|
<DataCollection
|
|
@type="kv"
|
|
@sort={{sort.value}}
|
|
@filters={{filters}}
|
|
@search={{search}}
|
|
@items={{items}}
|
|
as |collection|>
|
|
<collection.Collection>
|
|
<Consul::Kv::List
|
|
@items={{collection.items}}
|
|
@parent={{parent}}
|
|
@delete={{writer.delete}}
|
|
/>
|
|
</collection.Collection>
|
|
<collection.Empty>
|
|
<EmptyState @allowLogin={{true}}>
|
|
<BlockSlot @name="header">
|
|
<h2>
|
|
{{#if (gt items.length 0)}}
|
|
No K/V pairs found
|
|
{{else}}
|
|
Welcome to Key/Value
|
|
{{/if}}
|
|
</h2>
|
|
</BlockSlot>
|
|
<BlockSlot @name="body">
|
|
<p>
|
|
{{#if (gt items.length 0)}}
|
|
No K/V pairs where found matching that search, or you may not have access to view the K/V pairs you are searching for.
|
|
{{else}}
|
|
You don't have any K/V pairs, or you may not have access to view K/V pairs yet.
|
|
{{/if}}
|
|
</p>
|
|
</BlockSlot>
|
|
<BlockSlot @name="actions">
|
|
<li class="docs-link">
|
|
<a href="{{env 'CONSUL_DOCS_URL'}}/agent/kv" rel="noopener noreferrer" target="_blank">Documentation on K/V</a>
|
|
</li>
|
|
<li class="learn-link">
|
|
<a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/kv" rel="noopener noreferrer" target="_blank">Read the guide</a>
|
|
</li>
|
|
</BlockSlot>
|
|
</EmptyState>
|
|
</collection.Empty>
|
|
</DataCollection>
|
|
</BlockSlot>
|
|
</DataWriter>
|
|
</BlockSlot>
|
|
</AppView>
|
|
{{/let}} |