Files
bigcapital/packages/server/src/utils/table.ts
2023-11-28 19:53:13 +02:00

35 lines
733 B
TypeScript

import { get } from 'lodash';
import { IColumnMapperMeta, ITableRow } from '@/interfaces';
export function tableMapper(
data: Object[],
columns: IColumnMapperMeta[],
rowsMeta
): ITableRow[] {
return data.map((object) => tableRowMapper(object, columns, rowsMeta));
}
function getAccessor(object, accessor) {
return typeof accessor === 'function'
? accessor(object)
: get(object, accessor);
}
export function tableRowMapper(
object: Object,
columns: IColumnMapperMeta[],
rowMeta
): ITableRow {
const cells = columns.map((column) => ({
key: column.key,
value: column.value
? column.value
: getAccessor(object, column.accessor) || '',
}));
return {
cells,
...rowMeta,
};
}