dtable-utils
Version:
dtable common utils
101 lines (95 loc) • 3.64 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var cellValue = require('../../cell-value-get/cell-value.js');
var number = require('../../column/number.js');
var checkbox = require('./checkbox.js');
var collaborator = require('./collaborator.js');
var date = require('./date.js');
var text = require('./text.js');
var multipleSelect = require('./multiple-select.js');
var departmentMultipleSelect = require('./department-multiple-select.js');
var number$1 = require('./number.js');
var cellType = require('../../constants/cell-type.js');
var column = require('../../constants/column.js');
var filterPredicate = require('../../constants/filter/filter-predicate.js');
var TRUE_VALUE = [true, 'true'];
/**
* Filter by array type
* @param {array} array e.g. [ cellValue, ... ]
* @param {object} filter e.g. { filter_predicate, column, ... }
* @param {string} username
* @param {string} userId
* @returns bool
*/
var filterByArrayType = function filterByArrayType(array, filter, _ref) {
var username = _ref.username,
userId = _ref.userId,
userDepartmentIdsMap = _ref.userDepartmentIdsMap;
var column$1 = filter.column,
linked_column = filter.linked_column;
var filter_predicate = filter.filter_predicate;
if (Array.isArray(array)) {
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.EMPTY) {
return array.length === 0;
}
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
return array.length > 0;
}
}
if (!linked_column) {
return text.textFilter('', filter, userId);
}
var linkedColumnType = linked_column.type;
if (linkedColumnType === cellType.CellType.BOOL || linkedColumnType === cellType.CellType.CHECKBOX) {
var normalizedArray = array;
if (Array.isArray(array)) {
normalizedArray = array[0];
}
normalizedArray = TRUE_VALUE.includes(normalizedArray);
return checkbox.checkboxFilter(normalizedArray, filter);
}
if (linkedColumnType === cellType.CellType.SINGLE_SELECT) {
var _normalizedArray = array;
if (array && !Array.isArray(array)) {
_normalizedArray = [array];
}
return multipleSelect.multipleSelectFilter(_normalizedArray, filter);
}
if (linkedColumnType === cellType.CellType.MULTIPLE_SELECT) {
return multipleSelect.multipleSelectFilter(array, filter);
}
if (linkedColumnType === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
var _normalizedArray2 = array;
if (array && !Array.isArray(array)) {
_normalizedArray2 = [array];
}
return departmentMultipleSelect.departmentMultipleSelectFilter(_normalizedArray2, filter, userDepartmentIdsMap);
}
if (number.isNumericColumn({
type: linkedColumnType
})) {
var _normalizedArray3 = array;
if (Array.isArray(array)) {
var cellValueLength = array.length;
if (cellValueLength === 0) {
_normalizedArray3 = '';
} else if (cellValueLength === 1) {
_normalizedArray3 = array[0];
}
}
return number$1.numberFilter(_normalizedArray3, filter);
}
if (column.DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
var newCellValue = array;
if (Array.isArray(array)) {
newCellValue = String(array);
}
return date.dateFilter(newCellValue, filter);
}
if (column.COLLABORATOR_COLUMN_TYPES.includes(linkedColumnType)) {
return collaborator.collaboratorFilter(array, filter, username);
}
var displayString = cellValue.getFormulaDisplayString(array, column$1.data) || '';
return text.textFilter(displayString, filter, userId);
};
exports.filterByArrayType = filterByArrayType;