dtable-utils
Version:
dtable common utils
115 lines (105 loc) • 3.78 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var cellType = require('../constants/cell-type.js');
var column = require('../constants/column.js');
require('../constants/filter/filter-column-options.js');
require('../constants/filter/filter-modifier.js');
require('../constants/filter/filter-predicate.js');
require('../constants/filter/filter-is-within.js');
var formula = require('../constants/formula.js');
require('../constants/sort.js');
require('../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.FORMULA_COLUMN_TYPES_MAP[type]) {
var _ref = data || {},
result_type = _ref.result_type,
array_type = _ref.array_type;
if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
return array_type;
}
return result_type;
}
if (type === cellType.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.FORMULA_COLUMN_TYPES_MAP[column.type] || result_type !== formula.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$1) {
return column$1.type === cellType.CellType.TEXT && getColumnDisplayType(column$1) === 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$1) {
if (getColumnType(column$1) !== cellType.CellType.TEXT) return false;
var displayType = getColumnDisplayType(column$1);
if (formula.FORMULA_COLUMN_TYPES_MAP[column$1.type]) {
displayType = getFormulaColumnArrayDisplayType(column$1);
}
return displayType === column.TEXT_DISPLAY_TYPE_MAP.PHONE;
};
exports.checkIsDisplayAsPhoneNumberColumn = checkIsDisplayAsPhoneNumberColumn;
exports.checkIsPhoneNumberColumn = checkIsPhoneNumberColumn;
exports.getColumnDisplayType = getColumnDisplayType;
exports.getColumnType = getColumnType;
exports.getColumnsByType = getColumnsByType;
exports.getFormulaColumnArrayDisplayType = getFormulaColumnArrayDisplayType;