const EXTEND_FIELD_SOURCE_REGEXP = /^extendFields\.\[(.+)\]$/;
|
|
const getExtendFieldKey = (source) => {
|
const match = EXTEND_FIELD_SOURCE_REGEXP.exec(source || '');
|
return match ? match[1] : null;
|
};
|
|
const reorderColumns = (columns = [], columnRanks = []) => {
|
if (!Array.isArray(columnRanks) || columnRanks.length === 0) {
|
return columns;
|
}
|
|
return columns.reduce((accumulator, column, index) => {
|
const rank = columnRanks.indexOf(index);
|
if (rank === -1) {
|
accumulator[index] = column;
|
} else {
|
accumulator[rank] = column;
|
}
|
return accumulator;
|
}, []).filter(Boolean);
|
};
|
|
export const resolveVisibleColumns = (
|
storeKey,
|
defaultHiddenColumns = [],
|
columns = [],
|
hiddenColumns = defaultHiddenColumns,
|
columnRanks = []
|
) => {
|
if (!storeKey || !Array.isArray(columns)) {
|
return [];
|
}
|
|
const visibleColumns = reorderColumns(columns, columnRanks);
|
const effectiveHiddenColumns = Array.isArray(hiddenColumns) ? hiddenColumns : defaultHiddenColumns;
|
|
return visibleColumns.filter((column) => {
|
if (!column?.source) {
|
return false;
|
}
|
return !effectiveHiddenColumns.includes(column.source);
|
});
|
};
|
|
export const getValueBySource = (record, source) => {
|
if (!record || !source) {
|
return '';
|
}
|
|
const extendFieldKey = getExtendFieldKey(source);
|
if (extendFieldKey) {
|
return record.extendFields?.[extendFieldKey] ?? '';
|
}
|
|
return source.split('.').reduce((value, key) => {
|
if (value == null) {
|
return undefined;
|
}
|
return value[key];
|
}, record) ?? '';
|
};
|