@adaptabletools/adaptable
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
75 lines (74 loc) • 2.27 kB
JavaScript
export const TEXT_ARRAY_DATA_TYPE = 'textArray';
export const NUMBER_ARRAY_DATA_TYPE = 'numberArray';
export const TUPLE_ARRAY_DATA_TYPE = 'tupleArray';
export const OBJECT_ARRAY_DATA_TYPE = 'objectArray';
export const ALL_ADAPTABLE_DATA_TYPES = [
'text',
'number',
'boolean',
'date',
'dateString',
'object',
TEXT_ARRAY_DATA_TYPE,
NUMBER_ARRAY_DATA_TYPE,
TUPLE_ARRAY_DATA_TYPE,
OBJECT_ARRAY_DATA_TYPE,
'unknown',
];
// #agGridDataTypeDefinitions
export const agGridDataTypeDefinitions = {
// AG Grid default types
number: {
baseDataType: 'number',
extendsDataType: 'number',
// suppress AG Grid editor, we provide our own
suppressDefaultProperties: true,
},
date: {
baseDataType: 'date',
extendsDataType: 'date',
valueParser: null,
valueFormatter: null,
suppressDefaultProperties: true,
},
dateString: {
baseDataType: 'dateString',
extendsDataType: 'dateString',
valueParser: null,
valueFormatter: null,
suppressDefaultProperties: true,
},
// text: is kept as is
// boolean: is kept as is
// object: is kept as is
// Adaptable specific types
[TEXT_ARRAY_DATA_TYPE]: {
baseDataType: 'text',
extendsDataType: 'text',
dataTypeMatcher: (value) => {
return Array.isArray(value) && value.every((v) => typeof v === 'string');
},
},
[NUMBER_ARRAY_DATA_TYPE]: {
baseDataType: 'number',
extendsDataType: 'number',
dataTypeMatcher: (value) => {
return Array.isArray(value) && value.every((v) => typeof v === 'number');
},
},
[TUPLE_ARRAY_DATA_TYPE]: {
baseDataType: 'object',
extendsDataType: 'object',
dataTypeMatcher: (value) => {
return Array.isArray(value) && value.every((v) => Array.isArray(v));
},
},
[OBJECT_ARRAY_DATA_TYPE]: {
baseDataType: 'object',
extendsDataType: 'object',
dataTypeMatcher: (value) => {
return (Array.isArray(value) &&
value.every((v) => typeof v === 'object' && !Array.isArray(v) && Object.keys(v).length >= 2));
},
},
};