From 14c4a3246fdc61a9b5206ec4bc324815f1e71697 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Wed, 24 Sep 2025 16:38:33 +0530 Subject: [PATCH] code optimization --- .../realTime/realTimeHeatMap.tsx | 43 ++- app/src/modules/builder/asset/assetsGroup.tsx | 21 +- .../builder/asset/functions/addAssetModel.ts | 305 ++++++------------ .../modules/builder/asset/models/models.tsx | 1 - .../assetControls/cutCopyPasteControls3D.tsx | 2 +- .../assetControls/duplicationControls3D.tsx | 2 +- .../controls/assetControls/moveControls3D.tsx | 12 +- .../simulation/functions/createEventData.ts | 2 + .../asset/floorAsset/setAssetsApi.ts | 1 - app/src/store/simulation/useHeatMapStore.ts | 18 -- 10 files changed, 144 insertions(+), 263 deletions(-) diff --git a/app/src/components/heatMapGenerator/realTime/realTimeHeatMap.tsx b/app/src/components/heatMapGenerator/realTime/realTimeHeatMap.tsx index 760dcde..ef8bcb7 100644 --- a/app/src/components/heatMapGenerator/realTime/realTimeHeatMap.tsx +++ b/app/src/components/heatMapGenerator/realTime/realTimeHeatMap.tsx @@ -48,7 +48,7 @@ const RealTimeHeatMap = () => { u_radius: { value: RADIUS }, u_opacity: { value: OPACITY }, u_debugMode: { value: debugModeMap[debugMode] }, - u_growthRate: { value: GROWTH_TIME_MULTIPLIER }, + u_growthRate: { value: GROWTH_TIME_MULTIPLIER }, }); useEffect(() => { @@ -59,10 +59,33 @@ const RealTimeHeatMap = () => { } }, [isReset, isPlaying]); - useEffect(() => { - addMonitoringVehicle("26770368-55e8-4d40-87f7-8eacb48dc236"); - addMonitoringHuman("264a51e7-d8b9-4093-95ac-fa7e2dc49cfa"); - }, []); + // Added human or vehicle + + // useEffect(() => { + // const selectedProductData = getProductById(selectedProduct.productUuid); + // const newEvents: EventsSchema[] = []; + + // if (selectedProductData) { + // determineExecutionMachineSequences([selectedProductData]).then((sequences) => { + // sequences.forEach((sequence) => { + // sequence.forEach((event) => { + // if (event.type === "human") { + // if (hasHuman(event.modelUuid)) { + // newEvents.push(event); + // } + // } else if (event.type === "vehicle") { + // if (hasVehicle(event.modelUuid)) { + // newEvents.push(event); + // } + // } + // }); + // }); + // setEvents(newEvents); + // }); + // } + // }, [selectedProduct, products, monitoringHuman, monitoringVehicle]); + + // All human or vehicle useEffect(() => { const selectedProductData = getProductById(selectedProduct.productUuid); @@ -72,14 +95,8 @@ const RealTimeHeatMap = () => { determineExecutionMachineSequences([selectedProductData]).then((sequences) => { sequences.forEach((sequence) => { sequence.forEach((event) => { - if (event.type === "human") { - if (hasHuman(event.modelUuid)) { - newEvents.push(event); - } - } else if (event.type === "vehicle") { - if (hasVehicle(event.modelUuid)) { - newEvents.push(event); - } + if (event.type === "human" || event.type === "vehicle") { + newEvents.push(event); } }); }); diff --git a/app/src/modules/builder/asset/assetsGroup.tsx b/app/src/modules/builder/asset/assetsGroup.tsx index 4dc8ddf..5227dd1 100644 --- a/app/src/modules/builder/asset/assetsGroup.tsx +++ b/app/src/modules/builder/asset/assetsGroup.tsx @@ -1,20 +1,21 @@ import * as THREE from "three"; import { useEffect } from "react"; -import { getFloorAssets } from "../../../services/factoryBuilder/asset/floorAsset/getFloorItemsApi"; -import { useLoadingProgress, useRenameModeStore, useSelectedItem } from "../../../store/builder/store"; -import { useSocketStore } from "../../../store/socket/useSocketStore"; -import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; -import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader"; -import Models from "./models/models"; -import useModuleStore from "../../../store/ui/useModuleStore"; +import { useParams } from "react-router-dom"; import { useThree } from "@react-three/fiber"; import { CameraControls } from "@react-three/drei"; -import addAssetModel from "./functions/addAssetModel"; -import { useParams } from "react-router-dom"; +import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader"; +import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader"; +import { useSocketStore } from "../../../store/socket/useSocketStore"; +import useModuleStore from "../../../store/ui/useModuleStore"; +import { useSceneContext } from "../../scene/sceneContext"; +import { useLoadingProgress, useRenameModeStore, useSelectedItem } from "../../../store/builder/store"; import { useLeftData, useTopData } from "../../../store/visualization/useZone3DWidgetStore"; import { getUserData } from "../../../functions/getUserData"; -import { useSceneContext } from "../../scene/sceneContext"; import useAssetResponseHandler from "../../collaboration/responseHandler/useAssetResponseHandler"; +import Models from "./models/models"; +import addAssetModel from "./functions/addAssetModel"; + +import { getFloorAssets } from "../../../services/factoryBuilder/asset/floorAsset/getFloorItemsApi"; const gltfLoaderWorker = new Worker(new URL("../../../services/factoryBuilder/webWorkers/gltfLoaderWorker.js", import.meta.url)); diff --git a/app/src/modules/builder/asset/functions/addAssetModel.ts b/app/src/modules/builder/asset/functions/addAssetModel.ts index dc508eb..6343804 100644 --- a/app/src/modules/builder/asset/functions/addAssetModel.ts +++ b/app/src/modules/builder/asset/functions/addAssetModel.ts @@ -131,12 +131,41 @@ async function handleModelLoad( opacity: 1, }; + const socketData: any = { + organization, + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + assetId: newFloorItem.assetId, + position: newFloorItem.position, + rotation: newFloorItem.rotation, + scale: newFloorItem.scale, + isLocked: false, + isVisible: true, + socketId: builderSocket?.id || "", + versionId: versionId, + projectId: projectId, + userId: userId, + }; + + const apiData: any = { + modelUuid: newFloorItem.modelUuid, + modelName: newFloorItem.modelName, + position: newFloorItem.position, + assetId: newFloorItem.assetId, + rotation: newFloorItem.rotation, + scale: newFloorItem.scale, + isLocked: false, + isVisible: true, + versionId: versionId, + projectId: projectId || "", + }; + if (selectedItem.type) { const data = PointsCalculator(selectedItem.type, gltf.scene.clone(), new THREE.Vector3(...model.rotation)); if (!data?.points) return; - const eventData: any = { type: selectedItem.type, subType: selectedItem.subType }; + const eventData: any = { type: selectedItem.type, subType: selectedItem.subType || "" }; const assetEvent = createEventData(newFloorItem, selectedItem.type, selectedItem.subType, data.points); if (!assetEvent) return; @@ -155,227 +184,79 @@ async function handleModelLoad( })); } - const completeData = { - organization, - modelUuid: newFloorItem.modelUuid, - modelName: newFloorItem.modelName, - assetId: newFloorItem.assetId, - position: newFloorItem.position, - rotation: newFloorItem.rotation, - scale: newFloorItem.scale, - isLocked: false, - isVisible: true, - socketId: builderSocket?.id || "", - eventData: eventData, - versionId: versionId, - projectId: projectId, - userId: userId, - }; + socketData.eventData = JSON.parse(JSON.stringify(eventData)); + apiData.eventData = JSON.parse(JSON.stringify(eventData)); + } - if (!builderSocket?.connected) { - // API + if (!builderSocket?.connected) { + // API - setAssetsApi({ - modelUuid: newFloorItem.modelUuid, - modelName: newFloorItem.modelName, - position: newFloorItem.position, - assetId: newFloorItem.assetId, - rotation: newFloorItem.rotation, - scale: newFloorItem.scale, - eventData: eventData, - isLocked: false, - isVisible: true, - versionId: versionId, - projectId: projectId || "", - }) - .then((data) => { - if (!data.message) { - echo.error(`Error adding asset: ${newFloorItem.modelUuid}`); - return; - } - if (data.message === "Model created successfully" && data.data) { - const model: Asset = { - modelUuid: data.data.modelUuid, - modelName: data.data.modelName, - assetId: data.data.assetId, - position: data.data.position, - rotation: data.data.rotation, - scale: data.data.scale, - isLocked: data.data.isLocked, - isCollidable: true, - isVisible: data.data.isVisible, - opacity: 1, - eventData: data.data.eventData, - }; - - addAssetToScene(model, () => { - push3D({ - type: "Scene", - actions: [ - { - module: "builder", - actionType: "Asset-Add", - asset: { - type: "Asset", - timeStap: new Date().toISOString(), - assetData: model, - }, - }, - ], - }); - - echo.info(`Added asset: ${model.modelName}`); - }); - } else { - echo.error(`Error adding asset: ${data?.data?.modelName}`); - } - }) - .catch(() => { + setAssetsApi(apiData) + .then((data) => { + if (!data.message) { echo.error(`Error adding asset: ${newFloorItem.modelUuid}`); - }); - } else { - // SOCKET + return; + } + if (data.message === "Model created successfully" && data.data) { + const model: Asset = { + modelUuid: data.data.modelUuid, + modelName: data.data.modelName, + assetId: data.data.assetId, + position: data.data.position, + rotation: data.data.rotation, + scale: data.data.scale, + isLocked: data.data.isLocked, + isCollidable: true, + isVisible: data.data.isVisible, + opacity: 1, + ...(data.data.eventData ? { eventData: data.data.eventData } : {}), + }; - const model: Asset = { - modelUuid: completeData.modelUuid, - modelName: completeData.modelName, - assetId: completeData.assetId, - position: completeData.position, - rotation: completeData.rotation, - scale: completeData.scale, - isLocked: completeData.isLocked, - isCollidable: true, - isVisible: completeData.isVisible, - opacity: 1, - eventData: completeData.eventData, - }; + addAssetToScene(model, () => { + push3D({ + type: "Scene", + actions: [ + { + module: "builder", + actionType: "Asset-Add", + asset: { + type: "Asset", + timeStap: new Date().toISOString(), + assetData: model, + }, + }, + ], + }); - push3D({ - type: "Scene", - actions: [ - { - module: "builder", - actionType: "Asset-Add", - asset: { - type: "Asset", - timeStap: new Date().toISOString(), - assetData: model, - }, - }, - ], + echo.info(`Added asset: ${model.modelUuid}`); + }); + } else { + echo.error(`Error adding asset: ${data?.data?.modelName}`); + } + }) + .catch(() => { + echo.error(`Error adding asset: ${newFloorItem.modelUuid}`); }); - - builderSocket.emit("v1:model-asset:add", completeData); - } } else { - const data = { - organization, - modelUuid: newFloorItem.modelUuid, - modelName: newFloorItem.modelName, - assetId: newFloorItem.assetId, - position: newFloorItem.position, - rotation: newFloorItem.rotation, - scale: newFloorItem.scale, - isLocked: false, - isVisible: true, - socketId: builderSocket?.id || "", - versionId: versionId, - projectId: projectId, - userId: userId, - }; + // SOCKET - if (!builderSocket?.connected) { - // API - - setAssetsApi({ - modelUuid: newFloorItem.modelUuid, - modelName: newFloorItem.modelName, - position: newFloorItem.position, - assetId: newFloorItem.assetId, - rotation: newFloorItem.rotation, - scale: newFloorItem.scale, - isLocked: false, - isVisible: true, - versionId: versionId, - projectId: projectId || "", - }) - .then((data) => { - if (!data.message) { - echo.error(`Error adding asset: ${newFloorItem.modelUuid}`); - return; - } - if (data.message === "Model created successfully" && data.data) { - const model: Asset = { - modelUuid: data.data.modelUuid, - modelName: data.data.modelName, - assetId: data.data.assetId, - position: data.data.position, - rotation: data.data.rotation, - scale: data.data.scale, - isLocked: data.data.isLocked, - isCollidable: true, - isVisible: data.data.isVisible, - opacity: 1, - }; - - addAssetToScene(model, () => { - push3D({ - type: "Scene", - actions: [ - { - module: "builder", - actionType: "Asset-Add", - asset: { - type: "Asset", - timeStap: new Date().toISOString(), - assetData: model, - }, - }, - ], - }); - - echo.info(`Added asset: ${model.modelUuid}`); - }); - } else { - echo.error(`Error adding asset: ${data?.data?.modelName}`); - } - }) - .catch(() => { - echo.error(`Error adding asset: ${newFloorItem.modelUuid}`); - }); - } else { - // SOCKET - - const model: Asset = { - modelUuid: data.modelUuid, - modelName: data.modelName, - assetId: data.assetId, - position: data.position, - rotation: data.rotation, - scale: data.scale, - isLocked: data.isLocked, - isCollidable: true, - isVisible: data.isVisible, - opacity: 1, - }; - - push3D({ - type: "Scene", - actions: [ - { - module: "builder", - actionType: "Asset-Add", - asset: { - type: "Asset", - timeStap: new Date().toISOString(), - assetData: model, - }, + push3D({ + type: "Scene", + actions: [ + { + module: "builder", + actionType: "Asset-Add", + asset: { + type: "Asset", + timeStap: new Date().toISOString(), + assetData: model, }, - ], - }); + }, + ], + }); - builderSocket.emit("v1:model-asset:add", data); - } + console.log("socketData: ", socketData); + builderSocket.emit("v1:model-asset:add", socketData); } } diff --git a/app/src/modules/builder/asset/models/models.tsx b/app/src/modules/builder/asset/models/models.tsx index d295f34..875dcbd 100644 --- a/app/src/modules/builder/asset/models/models.tsx +++ b/app/src/modules/builder/asset/models/models.tsx @@ -5,7 +5,6 @@ import { CameraControls } from "@react-three/drei"; import { useLimitDistance, useRenderDistance } from "../../../../store/builder/store"; import { useSelectedAsset } from "../../../../store/simulation/useSimulationStore"; import { useSceneContext } from "../../../scene/sceneContext"; -import { useBuilderStore } from "../../../../store/builder/useBuilderStore"; import Model from "./model/model"; import { GLTFLoader } from "three/examples/jsm/Addons"; diff --git a/app/src/modules/scene/controls/assetControls/cutCopyPasteControls3D.tsx b/app/src/modules/scene/controls/assetControls/cutCopyPasteControls3D.tsx index 6085daf..7a51c94 100644 --- a/app/src/modules/scene/controls/assetControls/cutCopyPasteControls3D.tsx +++ b/app/src/modules/scene/controls/assetControls/cutCopyPasteControls3D.tsx @@ -368,7 +368,7 @@ const CutCopyPasteControls3D = () => { const eventData: any = { type: pastedAsset.userData.eventData.type, - subType: pastedAsset.userData.eventData.subType, + subType: pastedAsset.userData.eventData.subType || "", }; let points: THREE.Vector3[] = []; diff --git a/app/src/modules/scene/controls/assetControls/duplicationControls3D.tsx b/app/src/modules/scene/controls/assetControls/duplicationControls3D.tsx index aa4e1f5..808b939 100644 --- a/app/src/modules/scene/controls/assetControls/duplicationControls3D.tsx +++ b/app/src/modules/scene/controls/assetControls/duplicationControls3D.tsx @@ -310,7 +310,7 @@ const DuplicationControls3D = () => { const eventData: any = { type: duplicatedAsset.userData.eventData.type, - subType: duplicatedAsset.userData.eventData.subType, + subType: duplicatedAsset.userData.eventData.subType || "", }; let points: THREE.Vector3[] = []; diff --git a/app/src/modules/scene/controls/assetControls/moveControls3D.tsx b/app/src/modules/scene/controls/assetControls/moveControls3D.tsx index e4499e2..e464d3b 100644 --- a/app/src/modules/scene/controls/assetControls/moveControls3D.tsx +++ b/app/src/modules/scene/controls/assetControls/moveControls3D.tsx @@ -393,12 +393,12 @@ function MoveControls3D() { const eventData = eventStore.getState().getEventByModelUuid(movedAsset.userData.modelUuid); const productData = productStore.getState().getEventByModelUuid(productStore.getState().selectedProduct.productUuid, movedAsset.userData.modelUuid); - // if (eventData) { - // eventStore.getState().updateEvent(movedAsset.userData.modelUuid, { - // position: [position.x, position.y, position.z], - // rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z], - // }); - // } + if (eventData) { + eventStore.getState().updateEvent(movedAsset.userData.modelUuid, { + position: [position.x, position.y, position.z], + rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z], + }); + } if (productData) { const event = productStore.getState().updateEvent(productStore.getState().selectedProduct.productUuid, movedAsset.userData.modelUuid, { diff --git a/app/src/modules/simulation/functions/createEventData.ts b/app/src/modules/simulation/functions/createEventData.ts index 7e002d3..a522472 100644 --- a/app/src/modules/simulation/functions/createEventData.ts +++ b/app/src/modules/simulation/functions/createEventData.ts @@ -128,6 +128,8 @@ export default function createEventData(asset: Asset, type: string, subType: str ], }, }; + + return roboticArmEvent; } else if (type === "StaticMachine") { const machineEvent: MachineEventSchema = { modelUuid: asset.modelUuid, diff --git a/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts b/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts index 60acbd4..2d631e3 100644 --- a/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts +++ b/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts @@ -15,7 +15,6 @@ type assetType = { } export const setAssetsApi = async (data: assetType) => { - console.log('data: ', data); try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/setAsset`, { method: "POST", diff --git a/app/src/store/simulation/useHeatMapStore.ts b/app/src/store/simulation/useHeatMapStore.ts index 59425ec..c6231bd 100644 --- a/app/src/store/simulation/useHeatMapStore.ts +++ b/app/src/store/simulation/useHeatMapStore.ts @@ -121,21 +121,3 @@ export const useHeatMapStore = create()( hasHuman: (humanUuid) => get().monitoringHuman.includes(humanUuid), })) ); - -// useEffect(() => { -// const selectedProductData = getProductById(selectedProduct.productUuid); -// const newEvents: EventsSchema[] = []; - -// if (selectedProductData) { -// determineExecutionMachineSequences([selectedProductData]).then((sequences) => { -// sequences.forEach((sequence) => { -// sequence.forEach((event) => { -// if (event.type === "human" || event.type === "vehicle") { -// newEvents.push(event); -// } -// }); -// }); -// setEvents(newEvents); -// }); -// } -// }, [selectedProduct, products, monitoringHuman, monitoringVehicle]);