dtable-utils
Version:
dtable common utils
106 lines (98 loc) • 3.46 kB
JavaScript
import { CellType } from '../constants/cell-type.js';
import { TEXT_DISPLAY_TYPE_MAP } from '../constants/column.js';
import '../constants/filter/filter-column-options.js';
import '../constants/filter/filter-modifier.js';
import '../constants/filter/filter-predicate.js';
import '../constants/filter/filter-is-within.js';
import { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE } from '../constants/formula.js';
import '../constants/sort.js';
import '../constants/group.js';
/**
* Get column type.
* @param {object} column { type, ... }
* @returns column type
*/
var getColumnType = function getColumnType(column) {
var type = column.type,
data = column.data;
if (FORMULA_COLUMN_TYPES_MAP[type]) {
var _ref = data || {},
result_type = _ref.result_type,
array_type = _ref.array_type;
if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
return array_type;
}
return result_type;
}
if (type === CellType.LINK) {
var _ref2 = data || {},
_array_type = _ref2.array_type;
return _array_type;
}
return type;
};
/**
* Get columns by type.
* @param {array} columns
* @param {string} columnType
* @returns the target type columns, array
*/
var getColumnsByType = function getColumnsByType(columns, columnType) {
if (!Array.isArray(columns) || !columnType) {
return [];
}
return columns.filter(function (column) {
return column.type === columnType;
});
};
/**
* Get column display_type
* @param {object} column e.g. { type, data }
* @returns {string} display_type e.g. 'phone'
*/
var getColumnDisplayType = function getColumnDisplayType(column) {
if (!column) return '';
var _ref3 = column.data || {},
display_type = _ref3.display_type;
return display_type || '';
};
/**
* Get column display_type from array_data
* @param {object} column e.g. { type, data }
* @returns {string} display_type e.g. 'phone'
*/
var getFormulaColumnArrayDisplayType = function getFormulaColumnArrayDisplayType(column) {
if (!column) return '';
var _ref4 = column.data || {},
result_type = _ref4.result_type,
array_data = _ref4.array_data;
if (!FORMULA_COLUMN_TYPES_MAP[column.type] || result_type !== FORMULA_RESULT_TYPE.ARRAY || !array_data) {
return '';
}
return array_data.display_type || '';
};
/**
* Check whether is phone column:
* - column type is text and data.display_type is phone
* @param {object} column e.g. { type, data }
* @returns true/false, bool
*/
var checkIsPhoneNumberColumn = function checkIsPhoneNumberColumn(column) {
return column.type === CellType.TEXT && getColumnDisplayType(column) === TEXT_DISPLAY_TYPE_MAP.PHONE;
};
/**
* Check whether is phone column:
* - column type is text and data.display_type is phone
* - column type is link/link_formula and array_type is text and array_data.display_type is phone
* @param {object} column e.g. { type, data }
* @returns true/false, bool
*/
var checkIsDisplayAsPhoneNumberColumn = function checkIsDisplayAsPhoneNumberColumn(column) {
if (getColumnType(column) !== CellType.TEXT) return false;
var displayType = getColumnDisplayType(column);
if (FORMULA_COLUMN_TYPES_MAP[column.type]) {
displayType = getFormulaColumnArrayDisplayType(column);
}
return displayType === TEXT_DISPLAY_TYPE_MAP.PHONE;
};
export { checkIsDisplayAsPhoneNumberColumn, checkIsPhoneNumberColumn, getColumnDisplayType, getColumnType, getColumnsByType, getFormulaColumnArrayDisplayType };