Source: advanced-filter.js

const { AdvancedFilterType } = require('./constants');

/**
 * Class representing an Advanced Filter
 */
class AdvancedFilter {

  /**
   * Unique ID for the Advanced Filter
   * @type {string}
   * @default ''
   */
  _id = '';

  /**
   * Serialized advanced filter object
   * @type {string}
   */
  filter = '';

  /**
   * type of filter
   * @type {AdvancedFilterType|string}
   * @default AdvancedFilterType.NORMAL_FILTER
   */
  filterType = AdvancedFilterType.NORMAL_FILTER;

  /**
   * Id of the item (culture event, transcription) most recently selected while this advanced filter is active.
   * @type {string}
   */
  selectedItemId = '';

  /**
   * Constructs an AdvancedFilter object
   * @param {AdvancedFilter|Object} data
   */
  constructor(data = {}) {
    for(const key of Object.keys(data)) {
      this[key] = data[key];
    }
  }

  /**
   * Creates an updated AdvancedFilter object
   * @param {AdvancedFilter|Object} data
   * @returns {AdvancedFilter}
   */
  set(data) {
    return new AdvancedFilter({
      ...this,
      ...data,
    });
  }

}

module.exports = AdvancedFilter;