@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
67 lines (66 loc) • 2.73 kB
JavaScript
import { resolveDisplayFormat } from '../../AdaptableState/Common/AdaptableFormatPresets';
const headerMap = new Map();
export const getColumnHeaderLabel = (columnId, mainAdaptableInstance) => {
if (!headerMap.has(columnId)) {
headerMap.set(columnId, mainAdaptableInstance.api.columnApi.getColumnWithColumnId(columnId)?.friendlyName ?? columnId);
}
return headerMap.get(columnId);
};
export const getChangeTriggerLabel = (changeInfo) => {
return changeInfo.trigger === 'tick' ? 'Ticking' : 'User Edit';
};
export const isValidChangeHistoryLogEntry = (changeInfo) => {
return !!changeInfo?.column?.columnId && changeInfo.changedAt != null;
};
export const mapChangeHistoryRowData = (changeHistoryLog = {}, mainAdaptableInstance) => {
return Object.entries(changeHistoryLog)
.filter(([, changeInfo]) => isValidChangeHistoryLogEntry(changeInfo))
.map(([changeKey, changeInfo]) => ({
primaryKey: `${changeKey}::${changeInfo.changedAt}`,
changeKey,
changeTriggerLabel: getChangeTriggerLabel(changeInfo),
changedColumnLabel: getColumnHeaderLabel(changeInfo.column.columnId, mainAdaptableInstance),
changeInfo,
}))
.reverse();
};
export const getChangeHistoryRowChangeInfo = (rowData) => {
if (!isValidChangeHistoryLogEntry(rowData?.changeInfo)) {
return undefined;
}
return rowData.changeInfo;
};
export const formatChangeHistoryCellValue = (value, column, rowNode, api) => {
if (value === null || value === undefined) {
return '';
}
if (!column) {
return String(value);
}
const formatColumns = api.formatColumnApi.internalApi.getFormatColumnsWithDisplayFormatForColumn(column, { target: 'cell' });
const formatColumn = formatColumns[0];
if (!formatColumn) {
return String(value);
}
const resolvedFormat = resolveDisplayFormat(formatColumn.DisplayFormat);
if (!resolvedFormat) {
return String(value);
}
const { Formatter, Options } = resolvedFormat;
const nodeForFormatter = (rowNode ?? null);
try {
switch (Formatter) {
case 'DateFormatter':
return api.formatColumnApi.internalApi.getDateFormattedValue(value, nodeForFormatter, column, Options);
case 'NumberFormatter':
return String(api.formatColumnApi.internalApi.getNumberFormattedValue(value, nodeForFormatter, column, Options));
case 'StringFormatter':
return api.formatColumnApi.internalApi.getStringFormattedValue(value, nodeForFormatter, column, Options);
default:
return String(value);
}
}
catch {
return String(value);
}
};