All files / src/pages/flowsheet-page/economics/results-panel/tables ResultContributorList.tsx

0% Statements 0/22
5.55% Branches 1/18
0% Functions 0/5
0% Lines 0/12

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                                                                                                                             
import type { ReactNode } from "react";
import type { EconomicsResultLineRead } from "@/api/apiStore.gen";
import { cn } from "@/lib/utils";
import { ResultNestedContributorRow } from "./resultTable";
 
export type ResultContributorColumn = {
  key: string;
  element: "dt" | "dd";
  className?: string;
  render: (line: EconomicsResultLineRead) => ReactNode;
};
 
export function ResultContributorList({
  rows,
  selectedSourceRowId,
  rowRefs,
  rowGridClassName,
  emptyMessage,
  emptyClassName,
  columns,
}: {
  rows: EconomicsResultLineRead[];
  selectedSourceRowId?: number;
  rowRefs: Map<number, HTMLElement>;
  rowGridClassName: string;
  emptyMessage: string;
  emptyClassName?: string;
  columns: ResultContributorColumn[];
}) {
  if (rows.length === 0) {
    return (
      <div className={cn("grid", rowGridClassName)}>
        <span className={emptyClassName}>{emptyMessage}</span>
      </div>
    );
  }
  return (
    <dl className="space-y-1">
      {rows.map((line) => (
        <ResultNestedContributorRow
          key={line.id}
          line={line}
          selectedSourceRowId={selectedSourceRowId}
          rowRefs={rowRefs}
          className={rowGridClassName}
        >
          {columns.map((column) =>
            column.element === "dt" ? (
              <dt key={column.key} className={column.className}>
                {column.render(line)}
              </dt>
            ) : (
              <dd key={column.key} className={column.className}>
                {column.render(line)}
              </dd>
            ),
          )}
        </ResultNestedContributorRow>
      ))}
    </dl>
  );
}