UNPKG

dtable-utils

Version:

dtable common utils

77 lines (74 loc) 3.36 kB
import { DEPARTMENT_SELECT_RANGE_MAP } from '../../constants/column.js'; import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js'; import { isCurrentUserDepartmentAndSub, isSpecificDepartment, isCurrentUserDepartment } from '../core.js'; /** * Filter department-single-select * @param {number} departmentId * @param {string} filter_predicate * @param {number|array} filter_term department id or department ids * @param {object} userDepartmentIdsMap * @returns bool */ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departmentId, _ref, userDepartmentIdsMap) { var filter_predicate = _ref.filter_predicate, filter_term = _ref.filter_term; switch (filter_predicate) { case FILTER_PREDICATE_TYPE.IS: { if (!filter_term) return true; if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) { return isCurrentUserDepartment(departmentId, userDepartmentIdsMap); } if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) { return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap); } return departmentId === filter_term; } case FILTER_PREDICATE_TYPE.IS_NOT: { if (!filter_term) return true; if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) { return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap); } if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) { return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap); } return departmentId !== filter_term; } case FILTER_PREDICATE_TYPE.IS_ANY_OF: { if (filter_term.length === 0) return true; if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || isSpecificDepartment(departmentId, filter_term); } if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || isSpecificDepartment(departmentId, filter_term); } return isSpecificDepartment(departmentId, filter_term); } case FILTER_PREDICATE_TYPE.IS_NONE_OF: { if (filter_term.length === 0) return true; if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !isSpecificDepartment(departmentId, filter_term); } if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !isSpecificDepartment(departmentId, filter_term); } return !isSpecificDepartment(departmentId, filter_term); } case FILTER_PREDICATE_TYPE.EMPTY: { return !departmentId || typeof departmentId !== 'number'; } case FILTER_PREDICATE_TYPE.NOT_EMPTY: { return !!(departmentId && typeof departmentId === 'number'); } default: { return false; } } }; export { departmentSingleSelectFilter };