datacite/bracco

View on GitHub
app/templates/components/repository-list.hbs

Summary

Maintainability
Test Coverage
<div class="row">
  <div data-test-left-sidebar class="col-md-3">
    {{#if

      (and
        (can 'create repository' this.model)
        (eq this.link 'providers.show.repositories')
        (not-eq this.model.provider.memberType 'consortium')
        (eq this.hasRequiredContacts true)
      )
    }}
      {{#if
        (eq (await (prefixes-available this.model.provider.id)) 0)
      }}
        <div class="panel panel-transparent">
          <div class="panel-body" cy-data="alert">
              <BsAlert @dismissible={{false}} @type="warning">
                Contact Support to get more prefixes for new repositories.
              </BsAlert>
          </div>
        </div>
      {{/if}}
      <div class="panel facets">
        <div class="panel-body">
          <div class="btn-toolbar">
            <div class="btn-group btn-group-sm">
              <LinkTo
                @route="providers.show.repositories.new"
                @model={{this.model.provider.id}}
                class="btn btn-warning"
                id="add-repository"
                @disabled={{if (eq (await (prefixes-available this.model.provider.id)) 0) "true" ""}}
              >
                <i class="fas fa-plus"></i>
                Add Repository
              </LinkTo>
            </div>
          </div>
        </div>
      </div>
    {{else}}
      <div class="panel panel-transparent">
        <div class="panel-body" cy-data="alert">
          {{#if
            (or
              (not-eq this.link 'providers.show.repositories')
              (eq this.model.provider.memberType 'consortium')
            )
          }}
            <BsAlert @dismissible={{false}} @type="warning">
              New repositories can't be created from this page.
            </BsAlert>
          {{else if (cannot 'create repository' this.model)}}
            <BsAlert @dismissible={{false}} @type="warning">
              New repositories can't be created unless the user has the correct
              permissions.
            </BsAlert>
          {{else if (not-eq this.hasRequiredContacts true)}}
            <BsAlert @dismissible={{false}} @type="warning">
              New repositories can't be created because you have not provided the
              required
              {{if
                (eq this.model.provider.memberType 'consortium_organization')
                'service contact'
                'billing, service and voting contacts'
              }}
              for your organization. Please
              <LinkTo
                @route="providers.show.contacts.new"
                @model={{this.model.provider.id}}
                id="add-contact"
              >
                add at least one contact.
              </LinkTo>
            </BsAlert>
            <BsAlert @dismissible={{false}} @type="warning">
              After adding contacts, please assign roles in the
              <LinkTo
                @route="providers.show.edit"
                @model={{this.model.provider.id}}
                id="edit-provider"
              >
                {{if
                  (eq this.model.provider.memberType 'consortium_organization')
                  'Consortium Organization'
                  'Member'
                }}
                Settings.
              </LinkTo>
            </BsAlert>
          {{/if}}
        </div>
      </div>
    {{/if}}
    {{#if (or this.model.repositories.meta.years this.model.repositories.query.year)}}
      <div class="panel facets add">
        <div class="panel-body">
          <h4>
            Year joined
          </h4>
          <ul>
            {{#if this.model.repositories.meta.years}}
              {{#each this.model.repositories.meta.years as |year|}}
                <li>
                  {{#if this.model.repositories.query.year}}
                    <LinkTo @route={{this.link}} @query={{hash year=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo @route={{this.link}} @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}}
            {{else}}
              <li>
                <LinkTo @route="repositories" @query={{hash year=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{this.model.repositories.query.year}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if
      (and
        (eq this.link 'repositories')
        (or
          this.model.repositories.meta.providers this.model.repositories.query.provider-id
        )
      )
    }}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Provider
          </h4>
          <ul>
            {{#if this.model.repositories.meta.providers}}
              {{#each this.model.repositories.meta.providers as |provider|}}
                <li>
                  {{#if this.model.repositories.query.provider-id}}
                    <LinkTo @route={{this.link}} @query={{hash provider-id=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo
                      @route={{this.link}}
                      @query={{hash provider-id=provider.id}}
                    >
                      <i class="far fa-square"></i>
                    </LinkTo>
                  {{/if}}
                  <div class="facet-title">
                    {{provider.title}}
                  </div>
                  <span class="number pull-right">
                    {{provider.count}}
                  </span>
                  <div class="clearfix"></div>
                </li>
              {{/each}}
            {{else}}
              <li>
                <LinkTo @route={{this.link}} @query={{hash provider=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{titleize this.model.repositories.query.provider}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if
      (or
        this.model.repositories.meta.clientTypes this.model.repositories.query.client-type
      )
    }}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Type
          </h4>
          <ul>
            {{#if this.model.repositories.meta.clientTypes}}
              {{#each this.model.repositories.meta.clientTypes as |clientType|}}
                <li>
                  {{#if this.model.repositories.query.client-type}}
                    <LinkTo @route={{this.link}} @query={{hash client-type=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo
                      @route={{this.link}}
                      @query={{hash client-type=clientType.id}}
                    >
                      <i class="far fa-square"></i>
                    </LinkTo>
                  {{/if}}
                  <div class="facet-title">
                    {{clientType.title}}
                  </div>
                  <span class="number pull-right">
                    {{clientType.count}}
                  </span>
                  <div class="clearfix"></div>
                </li>
              {{/each}}
            {{else}}
              <li>
                <LinkTo @route={{this.link}} @query={{hash client-type=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{titleize this.model.repositories.query.client-type}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if
      (or
        this.model.repositories.meta.repositoryTypes
        this.model.repositories.query.repository-type
      )
    }}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Repository Type
          </h4>
          <ul>
            {{#if this.model.repositories.meta.repositoryTypes}}
              {{#each
                this.model.repositories.meta.repositoryTypes as |repositoryType|
              }}
                <li>
                  {{#if this.model.repositories.query.repository-type}}
                    <LinkTo @route={{this.link}} @query={{hash repository-type=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo
                      @route={{this.link}}
                      @query={{hash repository-type=repositoryType.id}}
                    >
                      <i class="far fa-square"></i>
                    </LinkTo>
                  {{/if}}
                  <div class="facet-title">
                    {{repositoryType.title}}
                  </div>
                  <span class="number pull-right">
                    {{repositoryType.count}}
                  </span>
                  <div class="clearfix"></div>
                </li>
              {{/each}}
            {{else}}
              <li>
                <LinkTo @route={{this.link}} @query={{hash repository-type=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{this.model.repositories.query.repository-type}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if
      (or
        this.model.repositories.meta.certificates
        this.model.repositories.query.certificate
      )
    }}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Certificate
          </h4>
          <ul>
            {{#if this.model.repositories.meta.certificates}}
              {{#each this.model.repositories.meta.certificates as |certificate|}}
                <li>
                  {{#if this.model.repositories.query.certificate}}
                    <LinkTo @route={{this.link}} @query={{hash certificate=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo
                      @route={{this.link}}
                      @query={{hash certificate=certificate.id}}
                    >
                      <i class="far fa-square"></i>
                    </LinkTo>
                  {{/if}}
                  <div class="facet-title">
                    {{certificate.title}}
                  </div>
                  <span class="number pull-right">
                    {{certificate.count}}
                  </span>
                  <div class="clearfix"></div>
                </li>
              {{/each}}
            {{else}}
              <li>
                <LinkTo @route={{this.link}} @query={{hash certificate=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{this.model.repositories.query.certificate}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
    {{#if
      (or this.model.repositories.meta.software this.model.repositories.query.software)
    }}
      <div class="panel facets">
        <div class="panel-body">
          <h4>
            Software
          </h4>
          <ul>
            {{#if this.model.repositories.meta.software}}
              {{#each this.model.repositories.meta.software as |software|}}
                <li>
                  {{#if this.model.repositories.query.software}}
                    <LinkTo @route={{this.link}} @query={{hash software=''}}>
                      <i class="far fa-check-square"></i>
                    </LinkTo>
                  {{else}}
                    <LinkTo
                      @route={{this.link}}
                      @query={{hash software=software.id}}
                    >
                      <i class="far fa-square"></i>
                    </LinkTo>
                  {{/if}}
                  <div class="facet-title">
                    {{software.title}}
                  </div>
                  <span class="number pull-right">
                    {{software.count}}
                  </span>
                  <div class="clearfix"></div>
                </li>
              {{/each}}
            {{else}}
              <li>
                <LinkTo @route={{this.link}} @query={{hash software=''}}>
                  <i class="far fa-check-square"></i>
                </LinkTo>
                <div class="facet-title">
                  {{this.model.repositories.query.software}}
                </div>
                <span class="number pull-right">
                  0
                </span>
                <div class="clearfix"></div>
              </li>
            {{/if}}
          </ul>
        </div>
      </div>
    {{/if}}
  </div>
  <div class="col-md-9 panel-list" id="content">
    {{#if this.searchable}}
      <ModelSearch
        @model={{this.model.repositories}}
        @name="Repository"
        @sortable={{true}}
        @link={{this.link}}
      />
    {{/if}}
    {{#if this.model.repositories}}
      {{#each this.model.repositories as |repository|}}
        <div class="panel panel-transparent" data-test-repository>
          <div class="panel-body">
            <h3 class="work">
              <LinkTo @route="repositories.show" @model={{repository.id}}>
                {{repository.name}}
                {{#if repository.alternateName}}
                  <div class="subtitle">
                    {{repository.alternateName}}
                  </div>
                {{/if}}
              </LinkTo>
              {{#if (eq repository.clientType 'periodical')}}
                <span class="label label-primary-inv">
                  Periodical
                </span>
              {{/if}}
              {{#unless repository.isActive}}
                <span class="label label-warning-inv">
                  Inactive
                </span>
              {{/unless}}
            </h3>
            <h5 class="repository-id">
              Repository ID
              <span>
                <i class="fas fa-question-circle"></i>
                <BsTooltip @renderInPlace={{true}} @placement="top" @viewportPadding={{10}}>
                  The Repository ID is a unique identifier for each repository in DataCite. It must contain only upper case letters and numbers, and must start with the Member ID.
                </BsTooltip>
              </span>
            </h5>
            {{repository.symbol}}
            {{#if repository.re3data}}
              <h5>
                re3data Record
                <span>
                  <i class="fas fa-question-circle"></i>
                  <BsTooltip @renderInPlace={{true}} @placement="top" @viewportPadding={{10}}>
                    re3data is a registry of research data repositories.
                  </BsTooltip>
                </span>
              </h5>
              <a href="{{repository.re3data}}">
                {{repository.re3data}}
              </a>
            {{/if}}
            {{#if repository.systemEmail}}
              <h5>
                System Email
              </h5>
              <a href="mailto:{{repository.systemEmail}}">
                {{repository.systemEmail}}
              </a>
            {{/if}}
            {{#if repository.url}}
              <h5>
                URL
              </h5>
              <a href="{{repository.url}}">
                {{repository.url}}
              </a>
            {{/if}}
            {{#if repository.repositoryType}}
              <h5>
                Repository Type
              </h5>
              {{#each repository.repositoryType as |type|}}
                {{titleize type}}
                {{#unless (eq type repository.repositoryType.lastObject)}}
                  ,
                {{/unless}}
              {{/each}}
            {{/if}}
            {{#if repository.certificate}}
              <h5>
                Certificate
                <div class="info-icon icons-certificate_active"></div>
              </h5>
              {{#each repository.certificate as |cert|}}
                {{cert}}
                {{#unless (eq cert repository.certificate.lastObject)}}
                  ,
                {{/unless}}
              {{/each}}
            {{/if}}
          </div>
        </div>
      {{/each}}
      <div class="text-center">
        {{#if (gt this.model.repositories.meta.totalPages 1)}}
          <PageNumbers @model={{this.model.repositories}} @link={{this.link}} />
        {{/if}}
      </div>
    {{else}}
      <BsAlert @dismissible={{false}} @type="warning">
        No repositories found.
      </BsAlert>
    {{/if}}
  </div>
</div>