112 lines
4.1 KiB
Handlebars
112 lines
4.1 KiB
Handlebars
<form class="filter-bar">
|
|
<FreetextFilter
|
|
@onsearch={{action onsearch}}
|
|
@value={{search}}
|
|
@placeholder="Search"
|
|
/>
|
|
<div class="filters">
|
|
<PopoverSelect
|
|
class="type-status"
|
|
@position="left"
|
|
@onchange={{action onfilter.status}}
|
|
@multiple={{true}}
|
|
as |components|>
|
|
<BlockSlot @name="selected">
|
|
<span>
|
|
Health Status
|
|
</span>
|
|
</BlockSlot>
|
|
<BlockSlot @name="options">
|
|
{{#let components.Optgroup components.Option as |Optgroup Option|}}
|
|
<Option class="value-passing" @value="passing" @selected={{contains 'passing' filter.statuses}}>Passing</Option>
|
|
<Option class="value-warning" @value="warning" @selected={{contains 'warning' filter.statuses}}>Warning</Option>
|
|
<Option class="value-critical" @value="critical" @selected={{contains 'critical' filter.statuses}}>Failing</Option>
|
|
<Option class="value-empty" @value="empty" @selected={{contains 'empty' filter.statuses}}>No checks</Option>
|
|
{{/let}}
|
|
</BlockSlot>
|
|
</PopoverSelect>
|
|
<PopoverSelect
|
|
@position="left"
|
|
@onchange={{action onfilter.kind}}
|
|
@multiple={{true}}
|
|
as |components|>
|
|
<BlockSlot @name="selected">
|
|
<span>
|
|
Service Type
|
|
</span>
|
|
</BlockSlot>
|
|
<BlockSlot @name="options">
|
|
{{#let components.Optgroup components.Option as |Optgroup Option|}}
|
|
<Option @value="service" @selected={{contains 'service' filter.kinds}}>Service</Option>
|
|
<Optgroup @label="Gateway">
|
|
<Option @value="ingress-gateway" @selected={{contains 'ingress-gateway' filter.kinds}}>Ingress Gateway</Option>
|
|
<Option @value="terminating-gateway" @selected={{contains 'terminating-gateway' filter.kinds}}>Terminating Gateway</Option>
|
|
<Option @value="mesh-gateway" @selected={{contains 'mesh-gateway' filter.kinds}}>Mesh Gateway</Option>
|
|
</Optgroup>
|
|
<Optgroup @label="Mesh">
|
|
<Option @value="in-mesh" @selected={{contains 'in-mesh' filter.kinds}}>In service mesh</Option>
|
|
<Option @value="not-in-mesh" @selected={{contains 'not-in-mesh' filter.kinds}}>Not in service mesh</Option>
|
|
</Optgroup>
|
|
{{/let}}
|
|
</BlockSlot>
|
|
</PopoverSelect>
|
|
{{#if (gt sources.length 0)}}
|
|
<PopoverSelect
|
|
class="type-source"
|
|
@position="left"
|
|
@onchange={{action onfilter.source}}
|
|
@multiple={{true}}
|
|
as |components|>
|
|
<BlockSlot @name="selected">
|
|
<span>
|
|
Source
|
|
</span>
|
|
</BlockSlot>
|
|
<BlockSlot @name="options">
|
|
{{#let components.Optgroup components.Option as |Optgroup Option|}}
|
|
{{#each sources as |source|}}
|
|
<Option class={{source}} @value={{source}} @selected={{contains source filter.sources}}>{{source}}</Option>
|
|
{{/each}}
|
|
{{/let}}
|
|
</BlockSlot>
|
|
</PopoverSelect>
|
|
{{/if}}
|
|
</div>
|
|
<div class="sort">
|
|
<PopoverSelect
|
|
class="type-sort"
|
|
data-test-sort-control
|
|
@position="right"
|
|
@onchange={{action onsort}}
|
|
@multiple={{false}}
|
|
as |components|>
|
|
<BlockSlot @name="selected">
|
|
<span>
|
|
{{#let (from-entries (array
|
|
(array "Name:asc" "A to Z")
|
|
(array "Name:desc" "Z to A")
|
|
(array "Status:asc" "Unhealthy to Healthy")
|
|
(array "Status:desc" "Healthy to Unhealthy")
|
|
))
|
|
as |selectable|
|
|
}}
|
|
{{get selectable sort}}
|
|
{{/let}}
|
|
</span>
|
|
</BlockSlot>
|
|
<BlockSlot @name="options">
|
|
{{#let components.Optgroup components.Option as |Optgroup Option|}}
|
|
<Optgroup @label="Health Status">
|
|
<Option @value="Status:asc" @selected={{eq "Status:asc" sort}}>Unhealthy to Healthy</Option>
|
|
<Option @value="Status:desc" @selected={{eq "Status:desc" sort}}>Healthy to Unhealthy</Option>
|
|
</Optgroup>
|
|
<Optgroup @label="Service Name">
|
|
<Option @value="Name:asc" @selected={{eq "Name:asc" sort}}>A to Z</Option>
|
|
<Option @value="Name:desc" @selected={{eq "Name:desc" sort}}>Z to A</Option>
|
|
</Optgroup>
|
|
{{/let}}
|
|
</BlockSlot>
|
|
</PopoverSelect>
|
|
</div>
|
|
</form>
|