Source: src/js/collections/Units.js

"use strict";

define([
  "jquery",
  "underscore",
  "backbone",
  "x2js",
  "models/metadata/eml211/EMLUnit",
], function ($, _, Backbone, X2JS, EMLUnit) {
  /**
   * @class Units
   * @classdesc Units represents the Ecological Metadata Language units list
   * @classcategory Collections
   * @extends Backbone.Collection
   */
  var Units = Backbone.Collection.extend(
    /** @lends Units.prototype */ {
      model: EMLUnit,

      comparator: function (unit) {
        return (
          unit.get("_name").charAt(0).toUpperCase() + unit.get("_name").slice(1)
        );
      },

      /*
       * The URL of the EML unit Dictionary
       */
      url: "https://raw.githubusercontent.com/NCEAS/eml/RELEASE_EML_2_2_0/eml-unitDictionary.xml",

      /* Retrieve the units from the tagged EML Github Repository */
      fetch: function (options) {
        if (typeof options != {}) var options = {};

        var fetchOptions = _.extend({ dataType: "text" }, options);

        return Backbone.Model.prototype.fetch.call(this, fetchOptions);
      },

      /* Parse the XML response */
      parse: function (response) {
        // If the collection is already parsed, just return it
        if (typeof response === "object") return response;

        // Otherwise, parse it
        var x2js = new X2JS();
        var units = x2js.xml_str2json(response);

        return units.unitList.unit;
      },
    },
  );

  return Units;
});