dtable-utils
Version:
dtable common utils
50 lines (47 loc) • 2.12 kB
JavaScript
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 };