core/models/FiltersModel.js

import Backbone from 'backbone';

/**
 * @memberof core/models
 */

class FiltersModel extends Backbone.Model {
  /**
   * Validation function for Filter models.
   */

  validate(attrs) {
    const area = attrs.area;
    const time = attrs.time;

    if (area) {
      if (area.length !== 4) {
        return 'invalid area specification';
      } else if (area[0] > area[2]) {
        return 'minX larger than maxX';
      } else if (area[1] > area[3]) {
        return 'minX larger than maxX';
      }
    }

    if (time) {
      if (Array.isArray(time)) {
        if (time.length !== 2) {
          return 'invalid time span specification';
        } else if (time[0] > time[1]) {
          return 'min time larger than max time';
        }
      }
    }
    return null;
  }
}

/**
 *
 */
FiltersModel.prototype.defaults = {
  area: null, // shall either be an array of 4 values [left, bottom, top, right] or null
  time: null, // shall either be a Date, an array of two Dates or null
};


export default FiltersModel;