UNPKG

dtable-utils

Version:

dtable common utils

126 lines (119 loc) 6.39 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray'); var column = require('../../constants/column.js'); var filterPredicate = require('../../constants/filter/filter-predicate.js'); var core = require('../core.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} departmentIds e.g. [ 14, ... ] * @param {string} filter_predicate * @param {array} filter_term department ids * @param {object} userDepartmentIdsMap * @returns bool */ var departmentMultipleSelectFilter = function departmentMultipleSelectFilter(departmentIds, _ref, userDepartmentIdsMap) { var filter_predicate = _ref.filter_predicate, filter_term = _ref.filter_term; switch (filter_predicate) { case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF: { if (filter_term.length === 0) return true; if (!Array.isArray(departmentIds)) return false; // CURRENT_USER_DEPARTMENT is a subset of CURRENT_USER_DEPARTMENT_AND_SUB, so it is necessary to first determine CURRENT_USER_DEPARTMENT_AND_SUB. if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return departmentIds.some(function (id) { return core.isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) || core.isSpecificDepartment(id, filter_term); }); } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return departmentIds.some(function (id) { return core.isCurrentUserDepartment(id, userDepartmentIdsMap) || core.isSpecificDepartment(id, filter_term); }); } return departmentIds.some(function (id) { return core.isSpecificDepartment(id, filter_term); }); } case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF: { if (filter_term.length === 0) return true; if (!Array.isArray(departmentIds)) return false; var _ref2 = userDepartmentIdsMap || {}, current_user_department_and_sub_ids = _ref2.current_user_department_and_sub_ids, current_user_department_ids = _ref2.current_user_department_ids; if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { if (Array.isArray(current_user_department_and_sub_ids) && !current_user_department_and_sub_ids.every(function (id) { return departmentIds.includes(id); })) return false; } else if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { if (Array.isArray(current_user_department_ids) && !current_user_department_ids.every(function (id) { return departmentIds.includes(id); })) return false; } return filter_term.every(function (id) { return id === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT || id === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB || core.isSpecificDepartment(id, departmentIds); }); } case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF: { if (filter_term.length === 0 || !Array.isArray(departmentIds) || departmentIds.length === 0) { return true; } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return departmentIds.every(function (id) { return !core.isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) && !core.isSpecificDepartment(id, filter_term); }); } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return departmentIds.every(function (id) { return !core.isCurrentUserDepartment(id, userDepartmentIdsMap) && !core.isSpecificDepartment(id, filter_term); }); } return filter_term.every(function (departmentId) { return !core.isSpecificDepartment(departmentId, departmentIds); }); } case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY: { if (filter_term.length === 0) return true; if (!Array.isArray(departmentIds)) return false; var normalizedFilterTerm = filter_term.slice(0); if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { var index = normalizedFilterTerm.indexOf(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB); var _ref3 = userDepartmentIdsMap || {}, _current_user_department_and_sub_ids = _ref3.current_user_department_and_sub_ids; if (Array.isArray(_current_user_department_and_sub_ids)) { normalizedFilterTerm.splice.apply(normalizedFilterTerm, [index, 1].concat(_toConsumableArray__default["default"](_current_user_department_and_sub_ids))); } } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { var _index = normalizedFilterTerm.indexOf(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT); var _ref4 = userDepartmentIdsMap || {}, _current_user_department_ids = _ref4.current_user_department_ids; if (Array.isArray(_current_user_department_ids)) { normalizedFilterTerm.splice.apply(normalizedFilterTerm, [_index, 1].concat(_toConsumableArray__default["default"](_current_user_department_ids))); } } var uniqueArr = function uniqueArr(arr) { return _toConsumableArray__default["default"](new Set(arr)).sort(); }; return uniqueArr(departmentIds).toString() === uniqueArr(normalizedFilterTerm).toString(); } case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY: { return !Array.isArray(departmentIds) || departmentIds.length === 0; } case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY: { return Array.isArray(departmentIds) && departmentIds.length > 0; } default: { return false; } } }; exports.departmentMultipleSelectFilter = departmentMultipleSelectFilter;