dtable-utils
Version:
dtable common utils
64 lines (59 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var number = require('./number.js');
var date = require('./date.js');
var checkbox = require('./checkbox.js');
var text = require('./text.js');
var array = require('./array.js');
var cellValue = require('../../cell-value-get/cell-value.js');
var formula = require('../../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.FORMULA_RESULT_TYPE.NUMBER:
{
return number.numberFilter(computedValue, filter);
}
case formula.FORMULA_RESULT_TYPE.DATE:
{
return date.dateFilter(computedValue, filter);
}
case formula.FORMULA_RESULT_TYPE.BOOL:
{
var normalizedCellValue = computedValue;
if (computedValue === 'true') {
normalizedCellValue = true;
} else if (computedValue === 'false') {
normalizedCellValue = false;
}
return checkbox.checkboxFilter(normalizedCellValue, filter);
}
case formula.FORMULA_RESULT_TYPE.ARRAY:
{
return array.filterByArrayType(computedValue, filter, {
username: username,
userId: userId,
userDepartmentIdsMap: userDepartmentIdsMap
});
}
default:
{
// FORMULA_RESULT_TYPE.STRING
return text.textFilter(cellValue.getFormulaDisplayString(computedValue, data) || '', filter, userId);
}
}
};
exports.formulaFilter = formulaFilter;