UNPKG

dtable-utils

Version:

dtable common utils

81 lines (74 loc) 2.82 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 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;