import { callable, dateFormatter, dateMonthFormatter, dateTimeFormatter, exchangeRateFormatter, ifNaNReplace, integerFormatter, isNullish, numberFormatter, percentFormatter, rangeDateFormatter, rangeMonthFormatter, rangeYearFormatter, toNumber, } from 'mixlea-utils-js'; import type { MlBaseFormListColumn } from '../types'; export function safeGetCellFormatValue(column: MlBaseFormListColumn, cellValue: any, row: any, rowIndex: number) { if (column.formatter) { const formatterType = callable(column.formatter, { cellValue, row, rowIndex }); if (formatterType === 'date') { return dateFormatter(cellValue); } else if (formatterType === 'dateMonth') { return dateMonthFormatter(cellValue); } else if (formatterType === 'dateTime') { return dateTimeFormatter(cellValue); } else if (formatterType === 'exchangeRate') { return exchangeRateFormatter(cellValue); } else if (formatterType === 'number') { return numberFormatter(cellValue); } else if (formatterType === 'integar') { return integerFormatter(cellValue); } else if (formatterType === 'percent') { return percentFormatter(cellValue); } else if (formatterType === 'rangeDate') { return rangeDateFormatter(cellValue); } else if (formatterType === 'rangeMonth') { return rangeMonthFormatter(cellValue); } else if (formatterType === 'rangeYear') { return rangeYearFormatter(cellValue); } } if (isNullish(cellValue)) { return ''; } return String(cellValue); } export function safeGetCellExportFormatValue(column: MlBaseFormListColumn, cellValue: any, row: any, rowIndex: number) { if (column.formatter) { const formatterType = callable(column.formatter, { cellValue, row, rowIndex }); if (formatterType === 'date') { return dateFormatter(cellValue); } else if (formatterType === 'dateMonth') { return dateMonthFormatter(cellValue); } else if (formatterType === 'dateTime') { return dateTimeFormatter(cellValue); } else if (formatterType === 'exchangeRate') { return ifNaNReplace(toNumber(exchangeRateFormatter(cellValue, { thousandth: false })), ''); } else if (formatterType === 'number') { return ifNaNReplace(toNumber(numberFormatter(cellValue, { thousandth: false })), ''); } else if (formatterType === 'integar') { return ifNaNReplace(toNumber(integerFormatter(cellValue, { thousandth: false })), ''); } else if (formatterType === 'percent') { return percentFormatter(cellValue, { thousandth: false }); } } return cellValue; }