datacite/bracco

View on GitHub
app/components/doi-alternate-identifier.js

Summary

Maintainability
A
0 mins
Test Coverage
import Component from '@ember/component';
import { isBlank } from '@ember/utils';

const alternateIdentifierTypeList = [
  'ARK',
  'arXiv',
  'bibcode',
  'DOI',
  'EAN13',
  'EISSN',
  'Handle',
  'IGSN',
  'ISBN',
  'ISSN',
  'ISTC',
  'LISSN',
  'LSID',
  'PMID',
  'PURL',
  'UPC',
  'URL',
  'URN',
  'w3id'
];

export default Component.extend({
  alternateIdentifierTypeList,
  alternateIdentifierTypes: alternateIdentifierTypeList,

  init(...args) {
    this._super(...args);

    this.selected = this.selected || [];
  },

  actions: {
    createOnEnter(select, e) {
      if (
        e.keyCode === 13 &&
        select.isOpen &&
        !select.highlighted &&
        !isBlank(select.searchText)
      ) {
        if (!this.selected.includes(select.searchText)) {
          this.alternateIdentifierTypes.push(select.searchText);
          select.actions.choose(select.searchText);
          this.fragment.set('alternateIdentifierType', select.searchText);
          this.set('alternateIdentifierTypes', alternateIdentifierTypeList);
        }
      }
    },
    updateAlternateIdentifier(value) {
      this.fragment.set('alternateIdentifier', value);
    },
    selectAlternateIdentifierType(alternateIdentifierType) {
      this.fragment.set('alternateIdentifierType', alternateIdentifierType);
      this.set('alternateIdentifierTypes', alternateIdentifierTypeList);
    },
    deleteAlternateIdentifier() {
      this.model.get('alternateIdentifiers').removeObject(this.fragment);
    }
  }
});