import * as React from "react"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import AppBar from "@mui/material/AppBar"; import Toolbar from "@mui/material/Toolbar"; import IconButton from "@mui/material/IconButton"; import Typography from "@mui/material/Typography"; import CloseIcon from "@mui/icons-material/Close"; import Slide from "@mui/material/Slide"; import ZoomInIcon from "@mui/icons-material/ZoomIn"; import ZoomOutIcon from "@mui/icons-material/ZoomOut"; import RotateRightIcon from "@mui/icons-material/RotateRight"; import { Box } from "@mui/material"; import ArrowBackIcon from "@mui/icons-material/ArrowBack"; import ArrowForwardIcon from "@mui/icons-material/ArrowForward"; import TextInputField from "./TextInputField"; import { notification, Space } from "antd"; import { toast, ToastContainer } from "react-toastify"; import { useEffect, useState } from "react"; import LoadingContainer from "./LoadingContainer"; const Transition = React.forwardRef(function Transition(props, ref) { return ; }); export default function DummyDuplicatesPreview({ type, barcode, dummyDuplicatesData, setIsDialogOpen, }) { const [open, setOpen] = React.useState(false); const [api, contextHolder] = notification.useNotification(); const [scaleWidthValue, setScaleWidthValue] = React.useState(80); const [rotateValue, setRotateValue] = React.useState(0); const [partAResults, setPartAResults] = React.useState([]); const [partCResults, setPartCResults] = React.useState([]); const [isLoading, setIsLoading] = React.useState(false); const [partAImageIndex, setPartAImageIndex] = React.useState(0); const [partCImageIndex, setPartCImageIndex] = React.useState(0); const [inputBarcode, setInputBarcode] = useState(null); const [inputSerialNo, setInputSerialNo] = useState(null); const [inputSubjectCode, setInputSubjectCode] = useState(null); const [inputRegisterNumber, setInputRegisterNumber] = useState(null); const [partAImageS3Path, setPartAImageS3Path] = useState(null); const [partCImageS3Path, setPartCImageS3Path] = useState(null); const [loadingText, setLoadingText] = useState(null); const openNotification = (pauseOnHover) => () => { api.open({ message: "Notification Title", description: "Record Updated Successfully ....", showProgress: true, pauseOnHover, }); }; const handleClickOpen = () => { setOpen(true); }; const handleClose = () => { setOpen(false); setIsDialogOpen(false); setTimeout(() => { document.body.style.overflow = "auto"; }, 100); }; React.useEffect(() => { handleClickOpen(); }, []); useEffect(() => { if (partAResults.length > 0 && partAImageIndex <= partAResults.length) { setPartAImageS3Path(partAResults[partAImageIndex]?.s3_path); } }, [partAResults]); useEffect(() => { console.log("fetchDuplicateBarcodeInfo ........."); const fetchDuplicateBarcodeInfo = async () => { setIsLoading(true); console.log("fetching barcode info 12....."); setLoadingText(`Fetching Barcode Info : ${barcode}`); try { const response = await fetch( `${ import.meta.env.VITE_REACT_APP_BACKEND_URL }/fetchDummyDuplicateBarcodeInfo`, { method: "POST", body: JSON.stringify({ type, barcode, }), headers: { "Content-Type": "application/json", }, } ); const responseData = await response.json(); setIsLoading(false); setLoadingText(null); console.log("Barcode info Response Data ==== ", responseData); if (responseData?.status == "success") { console.log("success"); setIsLoading(false); setPartAResults(responseData?.part_a_results); setPartCResults(responseData?.part_c_results); } } catch (error) { setIsLoading(false); setLoadingText(null); throw new Error(error); } }; fetchDuplicateBarcodeInfo(); }, []); const ZoomInImage = () => { console.log("Zooming In Image ...."); const elements = document.getElementsByClassName("scanned-img"); for (var ele of elements) { console.log("Ele is : ", ele); const newScaleWidthValue = scaleWidthValue + 10; setScaleWidthValue(newScaleWidthValue); // ele.style.transform = `scale(${newScaleValue})`; ele.style.width = `${newScaleWidthValue}%`; } }; const ZoomOutImage = () => { console.log("Zooming Out Image ...."); const elements = document.getElementsByClassName("scanned-img"); for (var ele of elements) { console.log("Ele is : ", ele); const newScaleWidthValue = scaleWidthValue - 10; setScaleWidthValue(newScaleWidthValue); // ele.style.transform = `scale(${newScaleValue})`; ele.style.width = `${newScaleWidthValue}%`; } }; const RotateImageLeft = () => { const elements = document.getElementsByClassName("scanned-img"); for (var ele of elements) { console.log("Ele is : ", ele); const newRotateValue = rotateValue - 90; setRotateValue(newRotateValue); ele.style.transform = `rotate(${newRotateValue}deg)`; } }; const RotateImageRight = () => { const elements = document.getElementsByClassName("scanned-img"); for (var ele of elements) { console.log("Ele is : ", ele); const newRotateValue = rotateValue + 90; setRotateValue(newRotateValue); ele.style.transform = `rotate(${newRotateValue}deg)`; } }; useEffect(() => { if (partAResults.length > 0 && partAImageIndex <= partAResults.length) { setLoadingText(null); setIsLoading(true); setInputBarcode(null); setInputRegisterNumber(null); setInputSubjectCode(null); setPartAImageS3Path(null); setTimeout(() => { setInputBarcode(partAResults[partAImageIndex]?.barcode); setInputRegisterNumber(partAResults[partAImageIndex]?.register_number); setInputSubjectCode(partAResults[partAImageIndex]?.subject_code); setPartAImageS3Path(partAResults[partAImageIndex]?.s3_path); setIsLoading(false); }, 500); } }, [dummyDuplicatesData, partAImageIndex]); useEffect(()=>{ console.log("part c image index changing ....",partCImageIndex) if(partCResults.length > 0 && partCImageIndex <= partCResults.length){ console.log("into if ..") setPartCImageS3Path(null) setTimeout(()=>{ setPartCImageS3Path(partCResults[partCImageIndex]?.s3_path) },5000) } },[partCImageIndex]) useEffect(() => { if (partAImageS3Path) { const fetchPartAImageData = async () => { setIsLoading(true); console.log("fetching Image info ....."); try { const response = await fetch( `${ import.meta.env.VITE_REACT_APP_BACKEND_URL }/fetchPartAS3PathInfo`, { method: "POST", body: JSON.stringify({ partAImageS3Path, }), headers: { "Content-Type": "application/json", }, } ); const responseData = await response.json(); setIsLoading(false); if (responseData?.status === "success") { const imageInfo = responseData?.image_info; console.log("Image info ====== ", imageInfo); if (imageInfo && imageInfo.length > 0) { setInputBarcode(imageInfo[0]?.barcode); setInputRegisterNumber(imageInfo[0]?.register_number); setInputSubjectCode(imageInfo[0]?.subject_code); } } } catch (error) { setIsLoading(false); console.error("Error fetching barcode info:", error); } finally { setIsLoading(false); } }; fetchPartAImageData(); } }, [partAImageS3Path]); const updateDuplicateRecordData = async () => { const regex = /^\d+(_\d+)?$/; console.log("Regex ===== ", regex); if (!regex.test(inputBarcode)) { alert("Please enter valid Barcode"); return; } try { setIsLoading(true); const response = await fetch( `${ import.meta.env.VITE_REACT_APP_BACKEND_URL }/updateDuplicateRecordData`, { method: "POST", body: JSON.stringify({ DuplicatePartAbarcode: barcode, inputBarcode, inputRegisterNumber, inputSerialNo, inputSubjectCode, partAS3Path: partAResults[partAImageIndex]?.s3_path, partCS3Path: partCResults[partCImageIndex]?.s3_path, }), headers: { "Content-Type": "application/json", }, } ); const responseData = await response.json(); setIsLoading(false); console.log("Response Data ==== ", responseData); if (responseData?.status == "success") { console.log("Updated successfully ...."); if (responseData?.duplicate_record) { alert(`Already a record with barcode is present : ${inputBarcode}`); } else { console.log("showing notification ..."); toast.success("Record updated Successfully .."); } } } catch (error) { setIsLoading(false); throw new Error(error); } }; return ( {contextHolder}
{/* S3 Image */} {partAResults.length > 0 && ( <> {partAImageIndex + 1 + "/" + partAResults.length} )} {partAResults.length > 0 && ( Part-A Image )} {partCResults.length > 0 && ( <> {partCImageIndex + 1 + "/" + partCResults.length} )} {partCResults.length > 0 && ( Part-C Image )}
{partAResults.length > 0 && ( )}
{isLoading && }
); }