UNPKG

dtable-utils

Version:

dtable common utils

60 lines (57 loc) 1.86 kB
import { numberFilter } from './number.js'; import { dateFilter } from './date.js'; import { checkboxFilter } from './checkbox.js'; import { textFilter } from './text.js'; import { filterByArrayType } from './array.js'; import { getFormulaDisplayString } from '../../cell-value-get/cell-value.js'; import { FORMULA_RESULT_TYPE } from '../../constants/formula.js'; /** * Filter formula * @param {any} computedValue cell value from formulaRow * @param {object} filter e.g. { filter_predicate, column, ... } * @param {string} username * @param {string} userId * @returns bool */ var formulaFilter = function formulaFilter(computedValue, filter, _ref) { var username = _ref.username, userId = _ref.userId, userDepartmentIdsMap = _ref.userDepartmentIdsMap; var data = filter.column.data; var _ref2 = data || {}, result_type = _ref2.result_type; switch (result_type) { case FORMULA_RESULT_TYPE.NUMBER: { return numberFilter(computedValue, filter); } case FORMULA_RESULT_TYPE.DATE: { return dateFilter(computedValue, filter); } case FORMULA_RESULT_TYPE.BOOL: { var normalizedCellValue = computedValue; if (computedValue === 'true') { normalizedCellValue = true; } else if (computedValue === 'false') { normalizedCellValue = false; } return checkboxFilter(normalizedCellValue, filter); } case FORMULA_RESULT_TYPE.ARRAY: { return filterByArrayType(computedValue, filter, { username: username, userId: userId, userDepartmentIdsMap: userDepartmentIdsMap }); } default: { // FORMULA_RESULT_TYPE.STRING return textFilter(getFormulaDisplayString(computedValue, data) || '', filter, userId); } } }; export { formulaFilter };