All files / src/pages/flowsheet-page/pinch-analysis PinchTabs.tsx

81.81% Statements 18/22
87.5% Branches 7/8
63.63% Functions 7/11
81.81% Lines 18/22

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                          13x 13x 13x 13x 13x   13x 1x     1x   1x 1x 1x     13x 1x   1x       13x 1x     13x                         1x                                                
import { Button } from "@/ahuora-design-system/ui/button";
import {
  usePinchCalculateCreateMutation,
  usePinchExtractCreateMutation,
} from "@/api/apiStore.gen";
import { useSearchParam } from "@/hooks/searchParams";
import { toast } from "sonner";
import { useParseExcel } from "./OpenPinch";
import { CSVUploaderButton } from "../multi-steady-state/CSVUploader";
import { useCurrentGroupId } from "@/hooks/flowsheetObjects";
import { cn } from "@/lib/utils";
 
function PinchTabs({ editing, handleNotEdit, excludedSegments, setExcludedSegments }) {
    const [currentProject] = useSearchParam("pinch");
    const [tab, setTab] = useSearchParam("pinchTab", "streams");
    const handleExcelUpload = useParseExcel();
    const [calculatePinch] = usePinchCalculateCreateMutation();
    const [extractData] = usePinchExtractCreateMutation();
 
    const handleCalculatePinch = () => {
        calculatePinch({
            pinchRequest: { excludedSegments },
        }).unwrap()
            .then(() => toast.success("Calculated Successfully"))
            .catch((error) => toast.error(`Analysis failed with: ${error.data.details}`))
        setTab("targets");
        setExcludedSegments([]);
        handleNotEdit()
    }
    
    const handleExtractData = () => {
        extractData()
            .unwrap()
            .then(() => toast.success("Extracted Stream Data from Flowsheet"))
            .catch((error) => toast.error(`Extraction failed with: ${error.data.message}`))
    }
 
  const handleTabSelect = (tab: string) => {
    setTab(tab);
  };
 
    return (
        <div className="flex flex-row justify-between">
            <div className="flex flex-row gap-5 items-center">
                <div
                    className={cn(tab == "streams" && "border-b-2 border-primary", "h-6 cursor-pointer")}
                    onClick={() => handleTabSelect("streams")}
                    key="streams"
                >
                    <p>Streams</p>
                </div>
               
                <div
                    className={cn(tab == "utilities" && "border-b-2 border-primary", "h-6 cursor-pointer")}
                    onClick={() => handleTabSelect("utilities")}
                    key="utilities"
                >
                    <p>Utilities</p>
                </div>
               
                <div
                    className={cn(tab == "targets" && "border-b-2 border-primary", "h-6 cursor-pointer")}
                    onClick={() => handleTabSelect("targets")}
                    key="targets"
                >
                    <p>Targets</p>
                </div>
            </div>
            <div className="flex flex-row gap-4 m-0 p-0 items-center">
                <Button onClick={handleExtractData}>Extract</Button>
                <CSVUploaderButton onUpload={handleExcelUpload} fileExtension=".xlsb, .xlsx" buttonText="From OpenPinch" label="openpinch-excel-upload" />
                <Button className={editing ? 'bg-yellow-500 hover:bg-yellow-500/80' : ''} onClick={handleCalculatePinch}>Calculate</Button>
            </div>
        </div>
    )
}
 
export default PinchTabs;