datacite/bracco

View on GitHub
app/templates/providers/show/prefixes/index.hbs

Summary

Maintainability
Test Coverage
<div class="row">
  <div class="col-md-3">
    {{#if
      (and
        (can 'write index' this.model)
        (not-eq this.model.provider.memberType 'consortium')
        (or (eq this.model.currentUser.role_id 'staff_admin') this.model.provider.hasRequiredContacts)
      )
    }}
      <div class="panel facets">
        <div class="panel-body">
          <div class="btn-toolbar">
            <div class="btn-group btn-group-sm">
              <LinkTo
                @route="providers.show.prefixes.new"
                @model={{this.model.provider.id}}
                class="btn btn-warning"
                id="assign-prefix"
                @disabled={{if (eq (await (prefixes-available)) 0) "true" ""}}
              >
                <i class="fas fa-link"></i>
                Assign Prefix
              </LinkTo>
            </div>
          </div>
        </div>
      </div>
    {{else}}
      <div class="panel panel-transparent">
        <div class="panel-body">
          {{this.link}}
          {{#if (eq this.model.provider.memberType 'consortium')}}
            <BsAlert @dismissible={{false}} @type="warning">
              New prefixes can't be assigned from this page.
            </BsAlert>
          {{else if (cannot 'create prefix' this.model)}}
            <BsAlert @dismissible={{false}} @type="warning">
              Please ask DataCite Staff if you want to add a prefix.
            </BsAlert>
          {{else if (not this.model.provider.hasRequiredContacts)}}
            <BsAlert @dismissible={{false}} @type="warning">
              New prefixes can't be assigned unless all required contacts are assigned.
            </BsAlert>
          {{/if}}
        </div>
      </div>
    {{/if}}

    {{#if this.model.prefixes.meta.states}}
      <div class="panel facets add">
        <div class="panel-body">
          <h4>
            State
            <span class="small">
              <i class="fas fa-question-circle"></i>
              <BsTooltip @renderInPlace={{true}} @placement="top">
                Filter prefixes by whether they have been assigned to a repository.
              </BsTooltip>
            </span>
          </h4>
          <ul>
            {{#each this.model.prefixes.meta.states as |state|}}
              <li>
                {{#if this.model.prefixes.query.state}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash state=null}}
                  >
                    <i class="far fa-check-square"></i>
                  </LinkTo>
                {{else}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash state=state.id}}
                  >
                    <i class="far fa-square"></i>
                  </LinkTo>
                {{/if}}
                <div class="facet-title">
                  {{state.title}}
                </div>
                <span class="number pull-right">
                  {{state.count}}
                </span>
                <div class="clearfix"></div>
              </li>
            {{/each}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if this.model.prefixes.meta.years}}
      <div class="panel facets add">
        <div class="panel-body">
          <h4>
            Year created
          </h4>
          <ul>
            {{#each this.model.prefixes.meta.years as |year|}}
              <li>
                {{#if this.model.prefixes.query.year}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash year=null}}
                  >
                    <i class="far fa-check-square"></i>
                  </LinkTo>
                {{else}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash year=year.id}}
                  >
                    <i class="far fa-square"></i>
                  </LinkTo>
                {{/if}}
                <div class="facet-title">
                  {{year.title}}
                </div>
                <span class="number pull-right">
                  {{year.count}}
                </span>
                <div class="clearfix"></div>
              </li>
            {{/each}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if (eq this.model.provider.memberType 'consortium')}}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Consortium Organizations
          </h4>
          <ul>
            {{#each this.model.prefixes.meta.providers as |consortium-organization|}}
              <li>
                {{#if this.model.prefixes.query.consortium-organization-id}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash consortium-organization-id=null}}
                  >
                    <i class="far fa-check-square"></i>
                  </LinkTo>
                {{else}}
                  <LinkTo
                    @route="providers.show.prefixes"
                    @query={{hash
                      consortium-organization-id=consortium-organization.id
                    }}
                  >
                    <i class="far fa-square"></i>
                  </LinkTo>
                {{/if}}
                <div class="facet-title">
                  {{consortium-organization.title}}
                </div>
                <span class="number pull-right">
                  {{consortium-organization.count}}
                </span>
                <div class="clearfix"></div>
              </li>
            {{/each}}
          </ul>
        </div>
      </div>
    {{/if}}
  </div>
  <div class="col-md-9 panel-list" id="content">
    <ModelSearch
      @model={{this.model.prefixes}}
      @name="Prefix"
      @sortable={{true}}
      @link="providers.show.prefixes"
    />
    {{#if this.model.prefixes}}
      {{#each this.model.prefixes as |providerPrefix|}}
        <div class="panel panel-transparent" data-test-prefix>
          <div class="panel-body">
            {{#if (not-eq this.model.provider.memberType 'consortium')}}
              <h3 class="work">
                <LinkTo
                  @route="providers.show.prefixes.show"
                  @models={{array
                    providerPrefix.provider.id
                    providerPrefix.prefix.id
                  }}
                >
                  {{providerPrefix.prefix.id}}
                </LinkTo>
              </h3>
            {{else}}
              <h3 class="member">
                {{providerPrefix.prefix.id}}
              </h3>
              <h5>
                Consortium Organization
              </h5>
              {{#if providerPrefix.provider}}
                <LinkTo
                  @route="providers.show.prefixes.show"
                  @models={{array
                    providerPrefix.provider.id
                    providerPrefix.prefix.id
                  }}
                >
                  {{providerPrefix.provider.name}}
                </LinkTo>
                <br />
              {{else}}
                <span class="icon-warning">
                  No member found.
                </span>
              {{/if}}
            {{/if}}
            <h5>
              {{pluralize
                providerPrefix.repositories.length
                'Repository'
                without-count=true
              }}
            </h5>
            {{#if providerPrefix.repositories}}
              {{#each providerPrefix.repositories as |repository|}}
                <LinkTo
                  @route="repositories.show.prefixes.show"
                  @models={{array repository.id providerPrefix.prefix.id}}
                >
                  {{repository.name}}
                </LinkTo>
                <br />
              {{/each}}
              {{#if this.features.useElasticsearch}}
                <h5>
                  DOIs
                </h5>
                <LinkTo
                  @route="providers.show.dois"
                  @model={{providerPrefix.provider.id}}
                  @query={{hash prefix=providerPrefix.prefix.id}}
                >
                  DOIs for prefix
                  {{providerPrefix.prefix.id}}
                </LinkTo>
              {{/if}}
            {{else}}
              <span class="icon-warning">
                No repository found.
              </span>
            {{/if}}
            <h5>
              Added
            </h5>
            {{format-time
              providerPrefix.createdAt
              year='numeric'
              month='long'
              day='numeric'
              hour='numeric'
              minute='numeric'
              second='numeric'
              timeZone='UTC'
              timeZoneName='short'
              hour12=false
            }}
          </div>
        </div>
      {{/each}}
      <div class="text-center">
        {{#if (gt this.model.prefixes.meta.totalPages 1)}}
          <PageNumbers
            @model={{this.model.prefixes}}
            @link="providers.show.prefixes"
          />
        {{/if}}
      </div>
    {{else}}
      <BsAlert @dismissible={{false}} @type="warning">
        No prefixes found.
      </BsAlert>
    {{/if}}
  </div>
</div>