All files / src/pages/flowsheet-page/economics/cost-items-panel/unit-costs UnitCostCardList.tsx

83.33% Statements 10/12
85.29% Branches 29/34
66.66% Functions 2/3
85.71% Lines 6/7

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                                    22x                                                                                             22x 22x 22x                                             396x 44x      
import type {
  CapitalCostLineRead,
  CostableItemRead,
  CostCurveAuthoring,
  CostCurveEquipmentCategoryRead,
  CostCurveRead,
  EconomicsLangFactorDefaultRead,
  EconomicsResultLineRead,
  EquipmentMappingRead,
  PatchedCapitalCostLine,
  PatchedCostableItem,
  PatchedEquipmentMapping,
  SimulationObjectRead,
} from "@/api/apiStore.gen";
import { generatedCapitalLineForCostableItem } from "../model/capitalLineHelpers";
import type { UnitCostRow } from "../model/capitalLineTypes";
import { UnitCostCard } from "./UnitCostCard";
 
export function UnitCostCardList({
  rows,
  curves,
  equipmentOptions,
  langFactorDefaults,
  capitalLines,
  resultLines,
  canEdit,
  busy,
  onEnableCosting,
  onCostableItemPatch,
  onMappingPatch,
  onCapitalLinePatch,
  onCreateCurve,
  costCurveSaving,
  resultStale,
  resultRunId,
  focusedSimulationObjectId,
}: {
  rows: UnitCostRow[];
  curves: CostCurveRead[];
  equipmentOptions: readonly CostCurveEquipmentCategoryRead[];
  langFactorDefaults: EconomicsLangFactorDefaultRead[];
  capitalLines: CapitalCostLineRead[];
  resultLines: EconomicsResultLineRead[];
  canEdit: boolean;
  busy: boolean;
  onEnableCosting: (unit: SimulationObjectRead) => Promise<void>;
  onCostableItemPatch: (
    item: CostableItemRead,
    patch: PatchedCostableItem,
  ) => Promise<void>;
  onMappingPatch: (
    mapping: EquipmentMappingRead,
    patch: PatchedEquipmentMapping,
  ) => Promise<void>;
  onCapitalLinePatch: (
    line: CapitalCostLineRead,
    patch: PatchedCapitalCostLine,
  ) => Promise<void>;
  onCreateCurve: (curve: CostCurveAuthoring) => Promise<CostCurveRead>;
  costCurveSaving: boolean;
  resultStale: boolean;
  resultRunId: number | null;
  focusedSimulationObjectId?: number;
}) {
  return (
    <div className="grid gap-3">
      {rows.map((row) => (
        <UnitCostCard
          key={row.unit.id}
          row={row}
          curves={curves}
          equipmentOptions={equipmentOptions}
          langFactorDefaults={langFactorDefaults}
          capitalLine={generatedCapitalLineForCostableItem(
            capitalLines,
            row.costableItem,
          )}
          resultLines={resultLines}
          canEdit={canEdit}
          busy={busy}
          onEnableCosting={onEnableCosting}
          onCostableItemPatch={onCostableItemPatch}
          onMappingPatch={onMappingPatch}
          onCapitalLinePatch={onCapitalLinePatch}
          onCreateCurve={onCreateCurve}
          costCurveSaving={costCurveSaving}
          resultStale={resultStale}
          resultRunId={resultRunId}
          isFocused={row.unit.id === focusedSimulationObjectId}
        />
      ))}
    </div>
  );
}