UNPKG

dtable-utils

Version:

dtable common utils

81 lines (76 loc) 3.59 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var column = require('../../constants/column.js'); var filterPredicate = require('../../constants/filter/filter-predicate.js'); var core = require('../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 filterPredicate.FILTER_PREDICATE_TYPE.IS: { if (!filter_term) return true; if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) { return core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap); } if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) { return core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap); } return departmentId === filter_term; } case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT: { if (!filter_term) return true; if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) { return !core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap); } if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) { return !core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap); } return departmentId !== filter_term; } case filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF: { if (filter_term.length === 0) return true; if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || core.isSpecificDepartment(departmentId, filter_term); } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || core.isSpecificDepartment(departmentId, filter_term); } return core.isSpecificDepartment(departmentId, filter_term); } case filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF: { if (filter_term.length === 0) return true; if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) { return !core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !core.isSpecificDepartment(departmentId, filter_term); } if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) { return !core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !core.isSpecificDepartment(departmentId, filter_term); } return !core.isSpecificDepartment(departmentId, filter_term); } case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY: { return !departmentId || typeof departmentId !== 'number'; } case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY: { return !!(departmentId && typeof departmentId === 'number'); } default: { return false; } } }; exports.departmentSingleSelectFilter = departmentSingleSelectFilter;