UNPKG

dtable-utils

Version:

dtable common utils

106 lines (98 loc) 3.46 kB
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 };