dtable-utils
Version:
dtable common utils
81 lines (74 loc) • 2.82 kB
JavaScript
;
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 collaborator
* @param {array} emails e.g. [ collaborator.email, ... ]
* @param {string} filter_predicate
* @param {array} filter_term e.g. [ collaborator.email, ... ]
* @param {string} username
* @returns bool
*/
var collaboratorFilter = function collaboratorFilter(emails, _ref, username) {
var filter_predicate = _ref.filter_predicate,
filter_term = _ref.filter_term;
switch (filter_predicate) {
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
{
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.some(function (email) {
return emails.includes(email);
});
}
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
{
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.every(function (email) {
return emails.includes(email);
});
}
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
{
if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(emails) || emails.length === 0) {
return true;
}
return filter_term.every(function (email) {
return emails.indexOf(email) < 0;
});
}
case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
{
if (!Array.isArray(filter_term) || filter_term.length === 0) {
return true;
}
if (!Array.isArray(emails) || emails.length === 0) {
return false;
}
var nonReptCellValue = _toConsumableArray__default["default"](new Set(emails));
if (nonReptCellValue.length !== filter_term.length) {
return false;
}
return filter_term.every(function (email) {
return nonReptCellValue.includes(email);
});
}
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
{
return !Array.isArray(emails) || emails.length === 0;
}
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
{
return Array.isArray(emails) && emails.length > 0;
}
case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
{
return Array.isArray(emails) && emails.indexOf(username) > -1;
}
default:
{
return false;
}
}
};
exports.collaboratorFilter = collaboratorFilter;