UNPKG

dtable-utils

Version:

dtable common utils

50 lines (47 loc) 2.12 kB
import { getFormulaDisplayString } from '../../cell-value-get/cell-value.js'; import { sortByArrayType } from './array.js'; import { sortCheckbox } from './checkbox.js'; import { sortDate } from './date.js'; import { sortNumber } from './number.js'; import { sortText } from './text.js'; import { DATE_COLUMN_OPTIONS } from '../../constants/column.js'; import { FORMULA_RESULT_TYPE } from '../../constants/formula.js'; import { NUMBER_SORTER_COLUMN_TYPES } from '../../constants/sort.js'; /** * Sort formula * @param {any} leftComputedValue compute value from formula row * @param {any} rightComputedValue * @param {string} sortType e.g. 'up' | 'down * @param {object} columnData e.g. { result_type, array_type, array_data, ... } * @param {object} value e.g. { collaborators, ... } * @returns number */ var sortFormula = function sortFormula(leftComputedValue, rightComputedValue, sortType, _ref) { var columnData = _ref.columnData, value = _ref.value; var _ref2 = columnData || {}, result_type = _ref2.result_type; if (NUMBER_SORTER_COLUMN_TYPES.includes(result_type)) { var leftNumber = leftComputedValue || leftComputedValue === 0 ? leftComputedValue - 0 : null; var rightNumber = rightComputedValue || rightComputedValue === 0 ? rightComputedValue - 0 : null; return sortNumber(leftNumber, rightNumber, sortType); } if (DATE_COLUMN_OPTIONS.includes(result_type)) { return sortDate(leftComputedValue, rightComputedValue, sortType); } if (result_type === FORMULA_RESULT_TYPE.BOOL) { var leftBoolean = leftComputedValue || false; var rightBoolean = rightComputedValue || false; return sortCheckbox(leftBoolean, rightBoolean, sortType); } if (result_type === FORMULA_RESULT_TYPE.ARRAY) { return sortByArrayType(leftComputedValue, rightComputedValue, sortType, { columnData: columnData, value: value }); } var leftText = getFormulaDisplayString(leftComputedValue, columnData); var rightText = getFormulaDisplayString(rightComputedValue, columnData); return sortText(leftText, rightText, sortType); }; export { sortFormula };