import React, { ReactNode } from 'react';
import * as DataTable from 'app/shared/modules/tables/dataTable/dataTable';
import { CellValueType } from 'app/shared/modules/tables/dataTable/dataTable.types';
import { PoolPointsDataState } from 'app/modules/vesselDetails/root/store/vesselDetails.types';
import { PoolPointsColumnConfig } from '../../poolPoints.constants';
interface Props {
config: PoolPointsColumnConfig[];
data: PoolPointsDataState[];
children?: ReactNode;
}
const getDefaultColumnWidth = (config: PoolPointsColumnConfig[]) => {
const fixedWidthSum = config.map(item => item.width ?? 0).reduce((first, second) => first + second);
const defaultWidth = (100 - fixedWidthSum) / (config.filter(item => !item.width).length);
return defaultWidth;
};
const getCell = (item: PoolPointsColumnConfig, value: CellValueType, defaultColumnWidth: number, key: number) => {
switch (item.cellType) {
case 'boolean':
return ;
case 'date':
case 'fullDate':
return ;
case 'number':
return ;
case 'text':
return ;
case 'spacer':
return ;
default:
return 'Invalid cell type';
}
};
const PoolPointsDataTable = ({ config, data, children }: Props) => {
const defaultColumnWidth = getDefaultColumnWidth(config);
return (
<>
{ data?.length > 0 &&
{config.map((item, index) => )}
{data.map((item, index) =>
{config.map((cfg, index) => getCell(cfg, cfg.getValue(item), defaultColumnWidth, index))}
)}
{children}
}
>
);
};
export { PoolPointsDataTable };