mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 05:10:31 +00:00
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
// @ts-nocheck
|
|
import * as R from 'ramda';
|
|
import { Align } from '@/constants';
|
|
import { getColumnWidth } from '@/utils';
|
|
|
|
const ACCOUNT_NAME_COLUMN_WIDTH = 320;
|
|
const AMOUNT_COLUMNS_MIN_WIDTH = 120;
|
|
const AMOUNT_COLUMNS_MAGIC_SPACING = 10;
|
|
|
|
const getTableCellValueAccessor = (index: number) => `cells[${index}].value`;
|
|
|
|
const accountNameAccessor = R.curry((data, column) => {
|
|
const accessor = getTableCellValueAccessor(column.cell_index);
|
|
|
|
return {
|
|
Header: column.label,
|
|
id: column.key,
|
|
accessor,
|
|
className: column.key,
|
|
width: ACCOUNT_NAME_COLUMN_WIDTH,
|
|
};
|
|
});
|
|
|
|
const amountAccessor = R.curry((data, column) => {
|
|
const accessor = getTableCellValueAccessor(column.cell_index);
|
|
|
|
return {
|
|
Header: column.label,
|
|
id: column.key,
|
|
accessor,
|
|
className: column.key,
|
|
width: getColumnWidth(data, accessor, {
|
|
magicSpacing: AMOUNT_COLUMNS_MAGIC_SPACING,
|
|
minWidth: AMOUNT_COLUMNS_MIN_WIDTH,
|
|
}),
|
|
align: Align.Right,
|
|
};
|
|
});
|
|
|
|
const dynamicColumnMapper = R.curry((data, column) => {
|
|
const accountNameColumn = accountNameAccessor(data);
|
|
const creditColumn = amountAccessor(data);
|
|
const debitColumn = amountAccessor(data);
|
|
const totalColumn = amountAccessor(data);
|
|
|
|
return R.compose(
|
|
R.when(R.pathEq(['key'], 'account_name'), accountNameColumn),
|
|
R.when(R.pathEq(['key'], 'credit'), creditColumn),
|
|
R.when(R.pathEq(['key'], 'debit'), debitColumn),
|
|
R.when(R.pathEq(['key'], 'total'), totalColumn),
|
|
)(column);
|
|
});
|
|
|
|
export const trialBalancesheetDynamicColumns = (columns, data) => {
|
|
return R.map(dynamicColumnMapper(data), columns);
|
|
};
|