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

85.41% Statements 41/48
74.28% Branches 26/35
100% Functions 1/1
97.05% Lines 33/34

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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97                          17x           17x 17x 21x   17x   17x   17x 4x 17x 17x 25x 1x 17x 18x   17x 5x 17x 17x   32x 1x 17x 18x     22x 23x   17x 1x 23x     13x         6x 17x         47x                                                 62x   43x      
import { createColumns, DataTable } from "@/ahuora-design-system/ui/data-table";
import {
  ObjectTypeEnum,
  useCoreDataRowInputRowListQuery,
  useCoreDataRowOutputRowListQuery,
} 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 } = useCoreDataRowInputRowListQuery(
    {
      scenario: scenario.id,
      solveIndex: Number(solve_index),
    },
    {
      skip: !selectedObjectId,
    },
  );
  const { data: output } = useCoreDataRowOutputRowListQuery(
    {
      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>
  );
}