UNPKG

dtable-utils

Version:

dtable common utils

65 lines (62 loc) 2.04 kB
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js'; /** * 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 FILTER_PREDICATE_TYPE.HAS_ANY_OF: { return filter_term.length === 0 || Array.isArray(optionIds) && optionIds.some(function (optionId) { return filter_term.includes(optionId); }); } case FILTER_PREDICATE_TYPE.HAS_ALL_OF: { return filter_term.length === 0 || Array.isArray(optionIds) && filter_term.every(function (optionId) { return optionIds.includes(optionId); }); } case 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 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(new Set(arr)).sort(); }; return uniqueArr(optionIds).toString() === uniqueArr(filter_term).toString(); } case FILTER_PREDICATE_TYPE.EMPTY: { return !Array.isArray(optionIds) || optionIds.length === 0; } case FILTER_PREDICATE_TYPE.NOT_EMPTY: { return Array.isArray(optionIds) && optionIds.length > 0; } default: { return false; } } }; export { multipleSelectFilter };