All files / src/pages/flowsheet-page/flowsheet/LeftSideBar/Scenarios DynamicCheck.tsx

94.11% Statements 16/17
66.66% Branches 4/6
75% Functions 3/4
94.11% Lines 16/17

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 22x 22x   22x   22x 22x 22x   22x 2x           22x 2x           22x             22x                                                    
import SelectInput from "@/ahuora-design-system/inputs/SelectInput";
import { Checkbox } from "@/ahuora-design-system/ui/checkbox";
import DebouncedInput from "@/ahuora-design-system/ui/debounced-input";
import { ScrollArea, ScrollBar } from "@/ahuora-design-system/ui/scroll-area";
import {
  api,
  ScenarioRead,
  UnitTypeEnum,
  useCoreExpressionListQuery,
  useCoreOptimizationDegreesOfFreedomCreateMutation,
  useCoreScenarioDestroyMutation,
  useCoreScenarioPartialUpdateMutation,
  useCoreSolvestateListQuery,
  useMssDeleteCreateMutation,
  useMssUploadCreateMutation,
} from "@/api/apiStore.gen";
import { GetUnitDisplay, GetUnitSet } from "@/data/UnitsLibrary";
import { useProjectId } from "@/hooks/project";
import ExpressionViewer from "@/pages/flowsheet-page/multi-steady-state/ExpressionViewer";
import { useAppDispatch } from "@/store/hooks";
import { ArrowLeft } from "lucide-react";
import { useState } from "react";
import { FileUpload } from "./FileUpload";
import { OptimisationCheck } from "./OptimisationCheck";
import { ScenarioNameBadge } from "./ScenarioNameBadge";
 
export function DynamicCheck({ optimization }: { optimization: ScenarioRead }) {
  const id = useProjectId();
 
  const expressions = useCoreExpressionListQuery({
    optimization: optimization.id,
  })?.data;
 
  const { data } = useCoreSolvestateListQuery({
    optimization: optimization.id,
  });
 
  const timeset = GetUnitSet(UnitTypeEnum.Time);
  const propertyunit = optimization.simulation_length_units;
  const unitset = GetUnitDisplay(timeset, propertyunit || "s");
 
  const [updateOptimization] = useCoreScenarioPartialUpdateMutation();
  const [createDegreeOfFreedom] =
    useCoreOptimizationDegreesOfFreedomCreateMutation();
  const [mss, setMss] = useState(false);
  const dispatch = useAppDispatch();
 
  const handleUpdateNumberOfSteps = (value: string | number) => {
    updateOptimization({
      id: optimization.id,
      patchedScenario: { num_time_steps: +value },
    });
  };
 
  const handleUpdateSimulationLength = (value: string | number) => {
    updateOptimization({
      id: optimization.id,
      patchedScenario: { simulation_length: +value },
    });
  };
 
  const handleUpdateSimulationLengthUnits = (value: string) => {
    updateOptimization({
      id: optimization.id,
      patchedScenario: { simulation_length_units: value },
    });
  };
 
  return (
    <>
    <div className="border my-2 mb-2">
      <label className="text-sm font-light p-2">Simulation Length</label>
      <div className="flex flex-row mx-2 my-2  gap-2 ">
        <DebouncedInput
          value={optimization.simulation_length || 10}
          onUpdate={handleUpdateSimulationLength}
          ariaLabel="dyn-sim-length"
        />
        <SelectInput
          data={timeset}
          value={unitset}
          handleChange={handleUpdateSimulationLengthUnits}
        />
      </div>
 
      <label className="text-sm font-light p-2">Number of Steps</label>
      <DebouncedInput
        value={optimization.num_time_steps || 10}
        onUpdate={handleUpdateNumberOfSteps}
        ariaLabel="dyn-num-steps"
      /></div>
    </>
  );
}