dtable-utils
Version:
dtable common utils
65 lines (62 loc) • 2.04 kB
JavaScript
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 };