{{!
  Copyright (c) HashiCorp, Inc.
  SPDX-License-Identifier: BUSL-1.1
}}

<Route
  @name={{this.routeName}}
as |route|>
  {{#let

    (hash
      value=(or this.sortBy "Status:asc")
      change=(action (mut this.sortBy) value="target.selected")
    )

    (hash
      status=(hash
        value=(if this.status (split this.status ',') undefined)
        change=(action (mut this.status) value="target.selectedItems")
      )
      kind=(hash
        value=(if this.kind (split this.kind ',') undefined)
        change=(action (mut this.kind) value="target.selectedItems")
      )
      check=(hash
        value=(if this.check (split this.check ',') undefined)
        change=(action (mut this.check) value="target.selectedItems")
      )
      searchproperty=(hash
        value=(if (not-eq this.searchproperty undefined)
          (split this.searchproperty ',')
          this.searchProperties
        )
        change=(action (mut this.searchproperty) value="target.selectedItems")
        default=this.searchProperties
      )
    )

    route.model.item.Checks

  as |sort filters items|}}
      <div class="tab-section">
          {{#if (gt items.length 0) }}
            <input type="checkbox" id="toolbar-toggle" />
            <Consul::HealthCheck::SearchBar

              @search={{this.search}}
              @onsearch={{action (mut this.search) value="target.value"}}

              @sort={{sort}}

              @filter={{filters}}
            />
          {{/if}}
          {{#let (find-by "Type" "serf" items) as |serf|}}
            {{#if (and serf (eq serf.Status "critical"))}}
              <Hds::Alert @type="inline" @color="warning" class="mb-3 mt-2" data-test-critical-serf-notice as |A|>
                <A.Title>{{t "routes.dc.nodes.show.healthchecks.critical-serf-notice.header"}}</A.Title>
                <A.Description>{{t "routes.dc.nodes.show.healthchecks.critical-serf-notice.body"}}</A.Description>
              </Hds::Alert>
            {{/if}}
          {{/let}}
          <DataCollection
            @type="health-check"
            @sort={{sort.value}}
            @filters={{filters}}
            @search={{this.search}}
            @items={{items}}
          as |collection|>
            <collection.Collection>
              <Consul::HealthCheck::List
                @items={{collection.items}}
              />
            </collection.Collection>
            <collection.Empty>
              <EmptyState>
                <BlockSlot @name="body">
                  {{t "routes.dc.nodes.show.healthchecks.empty"
                    items=items.length
                    htmlSafe=true
                  }}
                </BlockSlot>
              </EmptyState>
              </collection.Empty>
            </DataCollection>
      </div>
  {{/let}}
</Route>