All files / src/pages/flowsheet-page/dynamics SpecificRow.tsx

100% Statements 11/11
87.5% Branches 7/8
100% Functions 2/2
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56              16x 16x 16x 16x   16x   16x               16x                   16x 16x     1x     16x                                
import { createColumns, DataTable } from '@/ahuora-design-system/ui/data-table';
import { ObjectTypeEnum, useCoreSolvestateInputRowListQuery, useCoreSolvestateOutputRowListQuery } from '@/api/apiStore.gen';
import { useCurrentObjectId, useFlowsheetObjectsIdMap } from '@/hooks/flowsheetObjects';
import { useDeleteSearchParam } from '@/hooks/searchParams';
import RowResultHead from './RowResultHead';
 
export default function SpecificRow({ maxRow, scenario, solve_index, setSolveIndex }) {
    const selectedObjectId = useCurrentObjectId();
    const map = useFlowsheetObjectsIdMap();
    const unitOp = map.get(selectedObjectId);
    const isSelectingUnitOp = unitOp && unitOp.objectType !== ObjectTypeEnum.Group;
 
    const deleteParam = useDeleteSearchParam();
 
    const { data: input } = useCoreSolvestateInputRowListQuery(
        {
            scenario: scenario.id,
            solveIndex: Number(solve_index)
        },
        {
            skip: !selectedObjectId
        });
    const { data: output } = useCoreSolvestateOutputRowListQuery(
        {
            scenario: scenario.id,
            solveIndex: Number(solve_index),
            simulationObject: selectedObjectId,
        },
        {
            skip: !selectedObjectId
        });
 
    const inputTableColumns = createColumns(input);
    const outputTableColumns = createColumns(output, true);
 
    function handleBack() {
        deleteParam("solve_index");
    }
 
    return (
        <div className="h-full w-full">
            <div className="h-full w-full p-4 flex flex-col gap-3" aria-label="scenario-details-tables">
                <RowResultHead componentName={unitOp?.componentName} row={solve_index} setRow={setSolveIndex} maxRow={maxRow} handleBack={handleBack} />
 
                {!isSelectingUnitOp ? (
                    <p className="text-muted-foreground">Select a unit operation to view its results.</p>
                ) : (
                    <div className="flex flex-col gap-6">
                        <DataTable columns={inputTableColumns} data={input || []} rowSelection={{}} title="Inputs" ariaLabel="specific-row-inputs" columnSelection />
                        <DataTable columns={outputTableColumns} data={output || []} rowSelection={{}} title="Results" ariaLabel="specific-row-results" columnSelection />
                    </div>
                )}
            </div>
        </div>
    )
}