dtable-utils
Version:
dtable common utils
60 lines (57 loc) • 1.86 kB
JavaScript
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 };