{{title 'Services'}}
<EventSource @src={{items}} />
{{#let (or sortBy "Name:asc") as |sort|}}
    <AppView @class="service list">
      <BlockSlot @name="notification" as |status type|>
        {{partial 'dc/services/notifications'}}
      </BlockSlot>
      <BlockSlot @name="header">
          <h1>
              Services <em>{{format-number services.length}} total</em>
          </h1>
          <label for="toolbar-toggle"></label>
      </BlockSlot>
      <BlockSlot @name="toolbar">
        {{#if (gt services.length 0) }}
          <SearchBar
            @value={{search}}
            @onsearch={{action (mut search) value="target.value"}}
            class="with-sort"
          >
            <BlockSlot @name="secondary">
              <PopoverSelect
                @position="right"
                @onchange={{action (mut sortBy) value='target.selected'}}
                @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>
            </BlockSlot>
          </SearchBar>
        {{/if}}
      </BlockSlot>
      <BlockSlot @name="content">
{{#let (sort-by (comparator 'service' sort) services) as |sorted|}}
        <ChangeableSet @dispatcher={{searchable 'service' sorted}} @terms={{search}}>
          <BlockSlot @name="set" as |filtered|>
            <ConsulServiceList @items={{filtered}}/>
          </BlockSlot>
          <BlockSlot @name="empty">
            <EmptyState @allowLogin={{true}}>
              <BlockSlot @name="header">
                <h2>
                  {{#if (gt services.length 0)}}
                    No services found
                  {{else}}
                    Welcome to Services
                  {{/if}}
                </h2>
              </BlockSlot>
              <BlockSlot @name="body">
                <p>
                  {{#if (gt services.length 0)}}
                    No services where found matching that search, or you may not have access to view the services you are searching for.
                  {{else}}
                    There don't seem to be any registered services, or you may not have access to view services yet.
                  {{/if}}
                </p>
              </BlockSlot>
              <BlockSlot @name="actions">
                <li class="docs-link">
                  <a href="{{env 'CONSUL_DOCS_URL'}}/commands/services" rel="noopener noreferrer" target="_blank">Documentation on services</a>
                </li>
                <li class="learn-link">
                  <a href="{{env 'CONSUL_DOCS_LEARN_URL'}}/consul/getting-started/services" rel="noopener noreferrer" target="_blank">Read the guide</a>
                </li>
              </BlockSlot>
            </EmptyState>
          </BlockSlot>
        </ChangeableSet>
      {{/let}}
      </BlockSlot>
    </AppView>
{{/let}}