import React, { useEffect, useState, useRef } from "react"; import { usePlayButtonStore } from "../../../store/usePlayButtonStore"; import Panel from "./Panel"; import AddButtons from "./AddButtons"; import { useSelectedZoneStore } from "../../../store/useZoneStore"; import DisplayZone from "./DisplayZone"; import Scene from "../../../modules/scene/scene"; import { getZonesApi } from "../../../services/realTimeVisulization/zoneData/getZones"; type Side = "top" | "bottom" | "left" | "right"; type FormattedZoneData = Record< string, { activeSides: Side[]; panelOrder: Side[]; lockedPanels: Side[]; zoneCentrePoint: number[]; widgets: Widget[]; } >; type Widget = { id: string; type: string; title: string; panel: Side; data: any; }; type Zone = { zoneId: string; zoneName: string; points: number[][]; layer: number; }; const RealTimeVisulization: React.FC = () => { const [hiddenPanels, setHiddenPanels] = React.useState([]); const containerRef = useRef(null); const { isPlaying } = usePlayButtonStore(); const [zonesData, setZonesData] = useState({}); const { selectedZone, setSelectedZone } = useSelectedZoneStore(); useEffect(() => { async function GetZoneData() { try { const response: { data: Zone[] } | undefined = await getZonesApi( "hexrfactory" ); if (!response || !response.data) { return; } const formattedData = response?.data?.reduce( (acc, zone) => { acc[zone.zoneName] = { activeSides: [], panelOrder: [], lockedPanels: [], zoneCentrePoint: [], widgets: [], }; return acc; }, {} ); setZonesData(formattedData); } catch (error) { } } GetZoneData(); }, []); useEffect(() => { console.log('zonesData: ', zonesData); }, [zonesData]); useEffect(() => { setZonesData((prev) => { if (!selectedZone) return prev; return { ...prev, [selectedZone.zoneName]: { ...prev[selectedZone.zoneName], // Keep existing properties activeSides: selectedZone.activeSides || [], panelOrder: selectedZone.panelOrder || [], lockedPanels: selectedZone.lockedPanels || [], widgets: selectedZone.widgets || [], }, }; }); }, [selectedZone]); return (
{!isPlaying && ( )} {" "}
); }; export default RealTimeVisulization;