UNPKG

dtable-utils

Version:

dtable common utils

73 lines (66 loc) 2.46 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); var filterPredicate = require('../../constants/filter/filter-predicate.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray); /** * Filter multiple-select * @param {array} optionIds e.g. [ option.id, ... ] * @param {string} filter_predicate * @param {array} filter_term option ids * @returns bool */ var multipleSelectFilter = function multipleSelectFilter(optionIds, _ref) { var filter_predicate = _ref.filter_predicate, filter_term = _ref.filter_term; switch (filter_predicate) { case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF: { return filter_term.length === 0 || Array.isArray(optionIds) && optionIds.some(function (optionId) { return filter_term.includes(optionId); }); } case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF: { return filter_term.length === 0 || Array.isArray(optionIds) && filter_term.every(function (optionId) { return optionIds.includes(optionId); }); } case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF: { if (filter_term.length === 0 || !Array.isArray(optionIds) || optionIds.length === 0) { return true; } return filter_term.every(function (optionId) { return optionIds.indexOf(optionId) < 0; }); } case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY: { if (filter_term.length === 0) { return true; } if (!Array.isArray(optionIds)) { return false; } var uniqueArr = function uniqueArr(arr) { return _toConsumableArray__default["default"](new Set(arr)).sort(); }; return uniqueArr(optionIds).toString() === uniqueArr(filter_term).toString(); } case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY: { return !Array.isArray(optionIds) || optionIds.length === 0; } case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY: { return Array.isArray(optionIds) && optionIds.length > 0; } default: { return false; } } }; exports.multipleSelectFilter = multipleSelectFilter;