diff --git a/app/src/components/Dashboard/DashboardHome.tsx b/app/src/components/Dashboard/DashboardHome.tsx index cc94530..96761f8 100644 --- a/app/src/components/Dashboard/DashboardHome.tsx +++ b/app/src/components/Dashboard/DashboardHome.tsx @@ -120,7 +120,6 @@ const DashboardHome: React.FC = () => { } return ( - projectList && projectList.map((project) => ( { const { email, userId, organization } = getUserData(); const optimizeScene = async (value: any) => { - + if (!projectId) return; setEnvironment( organization, userId, @@ -44,7 +44,7 @@ const GlobalProperties: React.FC = () => { }; const limitRenderDistance = async () => { - + if (!projectId) return; if (limitDistance) { setEnvironment( organization, @@ -78,6 +78,7 @@ const GlobalProperties: React.FC = () => { } const updatedDist = async (value: number) => { + if (!projectId) return; setRenderDistance(value); // setDistance(value); const data = await setEnvironment( @@ -95,6 +96,8 @@ const GlobalProperties: React.FC = () => { // Function to toggle roof visibility const changeRoofVisibility = async () => { + if (!projectId) return; + //using REST const data = await setEnvironment( organization, @@ -123,6 +126,8 @@ const GlobalProperties: React.FC = () => { }; const changeWallVisibility = async () => { + if (!projectId) return; + //using REST const data = await setEnvironment( organization, @@ -150,6 +155,8 @@ const GlobalProperties: React.FC = () => { }; const shadowVisibility = async () => { + if (!projectId) return; + //using REST const data = await setEnvironment( organization, diff --git a/app/src/modules/builder/Decal/decal.tsx b/app/src/modules/builder/Decal/decal.tsx index d14e150..737c099 100644 --- a/app/src/modules/builder/Decal/decal.tsx +++ b/app/src/modules/builder/Decal/decal.tsx @@ -3,11 +3,9 @@ import DecalCreator from './decalCreator/decalCreator' function Decal() { return ( - <> - + - ) } diff --git a/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx b/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx index 1870191..5e9ebaa 100644 --- a/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx +++ b/app/src/modules/builder/Decal/decalCreator/decalCreator.tsx @@ -36,8 +36,8 @@ function DecalCreator() { pointer.y = -(event.clientY / window.innerHeight) * 2 + 1; raycaster.setFromCamera(pointer, camera); const intersects = raycaster.intersectObjects(scene.children, true); - const wallIntersect = intersects.find(i => i.object.userData && i.object.userData.wallUuid); - const floorIntersect = intersects.find(i => i.object.userData && i.object.userData.floorUuid); + const wallIntersect = intersects.find(i => i.object.userData.wallUuid); + const floorIntersect = intersects.find(i => i.object.userData.floorUuid); if (wallIntersect) { const wall = getWallById(wallIntersect.object.userData.wallUuid); diff --git a/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx b/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx index f0bc7c4..9a095d9 100644 --- a/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx +++ b/app/src/modules/builder/Decal/decalInstance/decalInstance.tsx @@ -10,7 +10,7 @@ import { useEffect, useRef, useState } from 'react'; import { useDecalEventHandlers } from '../eventHandler/useDecalEventHandlers'; -function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalPosition[2] }: { parent: Wall | Floor; visible?: boolean, decal: Decal, zPosition?: number }) { +function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalPosition[2] }: Readonly<{ parent: Wall | Floor; visible?: boolean, decal: Decal, zPosition?: number }>) { const url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; const { selectedDecal, deletableDecal, setSelectedDecal, setDeletableDecal } = useBuilderStore(); const { toolMode } = useToolMode(); @@ -110,7 +110,7 @@ function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalP console.error("Error storing texture in IndexedDB:", error); } }, - undefined, + undefined, (error) => { echo.error(`Error loading texture from backend: ${decal.decalName}`); loadDefaultTexture(); @@ -129,11 +129,11 @@ function DecalInstance({ parent, visible = true, decal, zPosition = decal.decalP useEffect(() => { if (!toggleView && activeModule === 'builder') { - if (toolMode !== 'cursor') { - if (selectedDecal) setSelectedDecal(null); + if (toolMode !== 'cursor' && selectedDecal) { + setSelectedDecal(null); } - if (toolMode !== '3D-Delete') { - if (deletableDecal) setDeletableDecal(null); + if (toolMode !== '3D-Delete' && deletableDecal) { + setDeletableDecal(null); } } else { if (selectedDecal) setSelectedDecal(null); diff --git a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts index 1db359e..b3a8fda 100644 --- a/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts +++ b/app/src/modules/builder/Decal/eventHandler/useDecalEventHandlers.ts @@ -304,7 +304,7 @@ export function useDecalEventHandlers({ }; const handlePointerMissed = () => { - if (selectedDecal && selectedDecal.decalMesh && selectedDecal.decalMesh.userData.decalUuid === decal.decalUuid) { + if (selectedDecal?.decalMesh && selectedDecal.decalMesh.userData.decalUuid === decal.decalUuid) { setSelectedDecal(null); setKeyEvent(""); } diff --git a/app/src/modules/builder/Decal/functions/handleDecalPositionSnap.ts b/app/src/modules/builder/Decal/functions/handleDecalPositionSnap.ts index 63d6d2c..51e3915 100644 --- a/app/src/modules/builder/Decal/functions/handleDecalPositionSnap.ts +++ b/app/src/modules/builder/Decal/functions/handleDecalPositionSnap.ts @@ -20,21 +20,11 @@ function handleDecalPositionSnap( ): THREE.Vector3 { let rawPos: [number, number, number]; - if ("wallUuid" in parent) { - // snap relative to wall - rawPos = [ - point.x + offset.x, - point.y + offset.y, - decal.decalPosition[2], // keep depth as-is - ]; - } else { - // snap relative to floor - rawPos = [ - point.x + offset.x, - point.y + offset.y, - decal.decalPosition[2], - ]; - } + rawPos = [ + point.x + offset.x, + point.y + offset.y, + decal.decalPosition[2], + ]; const snapped = snapToFixedPoint(rawPos, snapInterval); return new THREE.Vector3(snapped[0], snapped[1], snapped[2]); diff --git a/app/src/modules/builder/asset/assetsGroup.tsx b/app/src/modules/builder/asset/assetsGroup.tsx index dfad400..ecdc926 100644 --- a/app/src/modules/builder/asset/assetsGroup.tsx +++ b/app/src/modules/builder/asset/assetsGroup.tsx @@ -33,7 +33,7 @@ function AssetsGroup({ plane }: { readonly plane: RefMesh }) { const { selectedItem, setSelectedItem } = useSelectedItem(); const { projectId } = useParams(); const { isRenameMode, setIsRenameMode } = useRenameModeStore(); - const { userId, organization } = getUserData(); + const { userId } = getUserData(); const { setTop } = useTopData(); const { setLeft } = useLeftData(); @@ -64,7 +64,7 @@ function AssetsGroup({ plane }: { readonly plane: RefMesh }) { } }; - getFloorAssets(organization, projectId, selectedVersion?.versionId || '').then((data) => { + getFloorAssets(projectId, selectedVersion?.versionId || '').then((data) => { if (data && data.length > 0) { const uniqueItems = (data as FloorItems).filter((item, index, self) => index === self.findIndex((t) => t.assetId === item.assetId)); totalAssets = uniqueItems.length; @@ -96,7 +96,7 @@ function AssetsGroup({ plane }: { readonly plane: RefMesh }) { if (loadedAssets === totalAssets) { const assets: Asset[] = []; - getFloorAssets(organization, projectId, selectedVersion.versionId || '').then((data: FloorItems) => { + getFloorAssets(projectId, selectedVersion.versionId || '').then((data: FloorItems) => { data.forEach((item) => { if (item.eventData) { assets.push({ @@ -374,12 +374,10 @@ function AssetsGroup({ plane }: { readonly plane: RefMesh }) { canvasElement.addEventListener("dragover", onDragOver); canvasElement.addEventListener("mousemove", onMouseMove); canvasElement.addEventListener("mouseup", onMouseUp); - } else { - if ((controls as CameraControls)) { - const target = (controls as CameraControls).getTarget(new THREE.Vector3()); - (controls as CameraControls).setTarget(target.x, 0, target.z, true); - setSelectedFloorAsset(null); - } + } else if ((controls as CameraControls)) { + const target = (controls as CameraControls).getTarget(new THREE.Vector3()); + (controls as CameraControls).setTarget(target.x, 0, target.z, true); + setSelectedFloorAsset(null); } return () => { diff --git a/app/src/modules/builder/asset/models/model/animator/modelAnimator.tsx b/app/src/modules/builder/asset/models/model/animator/modelAnimator.tsx index d2c76eb..d79df60 100644 --- a/app/src/modules/builder/asset/models/model/animator/modelAnimator.tsx +++ b/app/src/modules/builder/asset/models/model/animator/modelAnimator.tsx @@ -34,7 +34,7 @@ export function ModelAnimator({ }, [asset.animationState]); useEffect(() => { - if (!gltfScene || !gltfScene.animations || gltfScene.animations.length === 0) return; + if (!gltfScene.animations || gltfScene.animations.length === 0) return; mixerRef.current = new THREE.AnimationMixer(gltfScene); diff --git a/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts b/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts index 6eb1a37..4b97ddb 100644 --- a/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts +++ b/app/src/modules/builder/asset/models/model/eventHandlers/useEventHandlers.ts @@ -15,7 +15,7 @@ import { useSelectedAsset } from '../../../../../../store/simulation/useSimulati import { useBuilderStore } from '../../../../../../store/builder/useBuilderStore'; import { upsertProductOrEventApi } from '../../../../../../services/simulation/products/UpsertProductOrEventApi'; -import { deleteFloorAssetsApi } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi'; +import { deleteFloorAssetApi } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi'; export function useModelEventHandlers({ boundingBox, @@ -146,10 +146,9 @@ export function useModelEventHandlers({ if (activeTool === 'delete' && deletableFloorAsset && deletableFloorAsset.uuid === asset.modelUuid) { if (!socket?.connected) { - // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: asset.modelUuid, modelName: asset.modelName, versionId: selectedVersion?.versionId || '', @@ -261,30 +260,16 @@ export function useModelEventHandlers({ if (asset.modelUuid) { const canvasElement = gl.domElement; const isInProduct = getIsEventInProduct(selectedProduct.productUuid, asset.modelUuid); - if (isInProduct) { - const event = getEventByModelUuid(asset.modelUuid); - if (event) { - setSelectedAsset(event); - const canvasRect = canvasElement.getBoundingClientRect(); - const relativeX = evt.clientX - canvasRect.left; - const relativeY = evt.clientY - canvasRect.top; - setTop(relativeY); - setLeft(relativeX); - } else { - clearSelectedAsset(); - } + const event = getEventByModelUuid(asset.modelUuid); + if (event) { + setSelectedAsset(event); + const canvasRect = canvasElement.getBoundingClientRect(); + const relativeX = evt.clientX - canvasRect.left; + const relativeY = evt.clientY - canvasRect.top; + setTop(relativeY); + setLeft(relativeX); } else { - const event = getEventByModelUuid(asset.modelUuid); - if (event) { - setSelectedAsset(event) - const canvasRect = canvasElement.getBoundingClientRect(); - const relativeX = evt.clientX - canvasRect.left; - const relativeY = evt.clientY - canvasRect.top; - setTop(relativeY); - setLeft(relativeX); - } else { - clearSelectedAsset() - } + clearSelectedAsset(); } } else { clearSelectedAsset() diff --git a/app/src/modules/builder/asset/models/model/model.tsx b/app/src/modules/builder/asset/models/model/model.tsx index a402cf1..cc49d5a 100644 --- a/app/src/modules/builder/asset/models/model/model.tsx +++ b/app/src/modules/builder/asset/models/model/model.tsx @@ -13,7 +13,7 @@ import { getAssetFieldApi } from '../../../../../services/factoryBuilder/asset/f import { ModelAnimator } from './animator/modelAnimator'; import { useModelEventHandlers } from './eventHandlers/useEventHandlers'; -function Model({ asset, isRendered, loader }: { readonly asset: Asset, isRendered: boolean, loader: GLTFLoader }) { +function Model({ asset, isRendered, loader }: Readonly<{ asset: Asset; isRendered: boolean; loader: GLTFLoader }>) { const url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; const savedTheme: string = localStorage.getItem("theme") || "light"; const { toolMode } = useToolMode(); @@ -36,12 +36,7 @@ function Model({ asset, isRendered, loader }: { readonly asset: Asset, isRendere const fieldData: IK[] = data.data; setFieldData(fieldData); } - } else if (data.type === 'Conveyor') { - if (data.data) { - const fieldData = data.data; - setFieldData(fieldData); - } - } else if (data.type === 'Crane') { + } else if (data.type === 'Conveyor' || data.type === 'Crane') { if (data.data) { const fieldData = data.data; setFieldData(fieldData); diff --git a/app/src/modules/builder/asset/models/models.tsx b/app/src/modules/builder/asset/models/models.tsx index e54e761..78eacab 100644 --- a/app/src/modules/builder/asset/models/models.tsx +++ b/app/src/modules/builder/asset/models/models.tsx @@ -12,7 +12,7 @@ import { GLTFLoader } from "three/examples/jsm/Addons"; const distanceWorker = new Worker(new URL("../../../../services/factoryBuilder/webWorkers/distanceWorker.js", import.meta.url)); -function Models({ loader }: { loader: GLTFLoader }) { +function Models({ loader }: { readonly loader: GLTFLoader }) { const { controls, camera } = useThree(); const assetGroupRef = useRef(null); const { assetStore } = useSceneContext(); diff --git a/app/src/modules/builder/builder.tsx b/app/src/modules/builder/builder.tsx index d7b8d34..574a2bd 100644 --- a/app/src/modules/builder/builder.tsx +++ b/app/src/modules/builder/builder.tsx @@ -7,15 +7,7 @@ import { Geometry } from "@react-three/csg"; ////////// Zustand State Imports ////////// -import { - useToggleView, - useWallVisibility, - useRoofVisibility, - useShadows, - useToolMode, - useRenderDistance, - useLimitDistance, -} from "../../store/builder/store"; +import { useToggleView, useWallVisibility, useRoofVisibility, useShadows, useToolMode, useRenderDistance, useLimitDistance } from "../../store/builder/store"; ////////// 3D Function Imports ////////// @@ -23,8 +15,6 @@ import * as Types from "../../types/world/worldTypes"; import SocketResponses from "../collaboration/socket/socketResponses.dev"; import Ground from "../scene/environment/ground"; -import { findEnvironment } from "../../services/factoryBuilder/environment/findEnvironment"; - import MeasurementTool from "../scene/tools/measurementTool"; import NavMesh from "../simulation/vehicle/navMesh/navMesh"; import CalculateAreaGroup from "./groups/calculateAreaGroup"; @@ -41,6 +31,7 @@ import Decal from "./Decal/decal"; import { useParams } from "react-router-dom"; import { useBuilderStore } from "../../store/builder/useBuilderStore"; import { getUserData } from "../../functions/getUserData"; +import { findEnvironment } from "../../services/factoryBuilder/environment/findEnvironment"; export default function Builder() { const state = useThree(); @@ -58,7 +49,6 @@ export default function Builder() { const { setHoveredPoint, setHoveredLine } = useBuilderStore(); const { userId, organization } = getUserData(); - useEffect(() => { if (!toggleView) { setHoveredLine(null); @@ -69,19 +59,16 @@ export default function Builder() { }, [toggleView]); useEffect(() => { + if (!projectId) return; - async function fetchVisibility() { - const data = await findEnvironment(organization, userId, projectId); - if (data) { - setRoofVisibility(data.roofVisibility); - setWallVisibility(data.wallVisibility); - setShadows(data.shadowVisibility); - setRenderDistance(data.renderDistance); - setLimitDistance(data.limitDistance); - } - } - fetchVisibility(); - }, []); + findEnvironment(projectId).then((data) => { + setRoofVisibility(data.roofVisibility); + setWallVisibility(data.wallVisibility); + setShadows(data.shadowVisibility); + setRenderDistance(data.renderDistance); + setLimitDistance(data.limitDistance); + }) + }, [projectId]); useFrame(() => { if (csgRef.current) { diff --git a/app/src/modules/builder/csg/csg.tsx b/app/src/modules/builder/csg/csg.tsx deleted file mode 100644 index 0c50ff7..0000000 --- a/app/src/modules/builder/csg/csg.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import * as THREE from "three"; -import { Geometry, Base, Subtraction } from "@react-three/csg"; -import { useRef } from "react"; -import { useToolMode } from "../../../store/builder/store"; - -export interface CsgProps { - position: THREE.Vector3 | [number, number, number]; - scale: THREE.Vector3 | [number, number, number]; - model: THREE.Object3D; - hoveredDeletableWallItem: { current: THREE.Mesh | null }; -} - -export const Csg: React.FC = (props) => { - const { toolMode } = useToolMode(); - const modelRef = useRef(); - const originalMaterials = useRef>(new Map()); - - const handleHover = (hovered: boolean, object: THREE.Mesh | null) => { - if (modelRef.current && toolMode === "3D-Delete") { - modelRef.current.traverse((child) => { - if (child instanceof THREE.Mesh) { - if (!originalMaterials.current.has(child)) { - originalMaterials.current.set(child, child.material); - } - child.material = child.material.clone(); - child.material.color.set(hovered && toolMode === "3D-Delete" ? 0xff0000 : (originalMaterials.current.get(child) as any).color); - } - }); - } - let currentObject = object; - while (currentObject) { - if (currentObject.name === "Scene") { - break; - } - currentObject = currentObject.parent as THREE.Mesh; - } - if (currentObject) { - props.hoveredDeletableWallItem.current = hovered ? currentObject : null; - } - }; - - return ( - - - - - - - { - e.stopPropagation(); - handleHover(true, e.object.parent); - }} - onPointerOut={(e: any) => { - e.stopPropagation(); - handleHover(false, null); - }} - /> - - ); -}; diff --git a/app/src/modules/builder/dfx/functions/convertDxfToThree.ts b/app/src/modules/builder/dfx/functions/convertDxfToThree.ts index 5951534..9f5258c 100644 --- a/app/src/modules/builder/dfx/functions/convertDxfToThree.ts +++ b/app/src/modules/builder/dfx/functions/convertDxfToThree.ts @@ -1,65 +1,55 @@ import { BufferGeometry, Vector3 } from "three"; + type DXFData = any; + export const convertDXFToThree = (dxfData: DXFData): BufferGeometry[] => { - const geometries: BufferGeometry[] = []; - const UNIT = 1000; - if (dxfData.entities) { - dxfData.entities.forEach((entity: any) => { - // LINE - if (entity.type === "LINE" && entity.vertices) { - const points = [ - new Vector3(entity.vertices[0].x, entity.vertices[0].y, 0), - new Vector3(entity.vertices[1].x, entity.vertices[1].y, 0), - ]; - const geometry = new BufferGeometry().setFromPoints(points); - geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); - geometries.push(geometry); - } + const geometries: BufferGeometry[] = []; + const UNIT = 1000; + if (dxfData.entities) { + dxfData.entities.forEach((entity: any) => { + // LINE + if (entity.type === "LINE" && entity.vertices) { + const points = [ + new Vector3(entity.vertices[0].x, entity.vertices[0].y, 0), + new Vector3(entity.vertices[1].x, entity.vertices[1].y, 0), + ]; + const geometry = new BufferGeometry().setFromPoints(points); + geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); + geometries.push(geometry); + } - // LWPOLYLINE - else if (entity.type === "LWPOLYLINE" && entity.vertices) { - const points: Vector3[] = entity.vertices.map( - (v: any) => new Vector3(v.x, v.y, 0) - ); + // LWPOLYLINE + else if (entity.type === "LWPOLYLINE" && entity.vertices) { + const points: Vector3[] = entity.vertices.map((v: any) => new Vector3(v.x, v.y, 0)); - for (let i = 0; i < points.length - 1; i++) { - const segment = [points[i], points[i + 1]]; - const geometry = new BufferGeometry().setFromPoints(segment); - geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); - geometries.push(geometry); - } - } + for (let i = 0; i < points.length - 1; i++) { + const segment = [points[i], points[i + 1]]; + const geometry = new BufferGeometry().setFromPoints(segment); + geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); + geometries.push(geometry); + } + } - // ARC - else if ( - entity.type === "ARC" && - entity.center && - entity.radius !== undefined - ) { - const { center, radius, startAngle, endAngle } = entity; - if ( - center === undefined || - radius === undefined || - startAngle === undefined || - endAngle === undefined - ) - return; - const numSegments = 32; - const points: Vector3[] = []; + // ARC + else if (entity.type === "ARC" && entity.center && entity.radius !== undefined) { + const { center, radius, startAngle, endAngle } = entity; + if (center === undefined || radius === undefined || startAngle === undefined || endAngle === undefined) return; + const numSegments = 32; + const points: Vector3[] = []; - for (let i = 0; i <= numSegments; i++) { - const t = i / numSegments; - const angle = startAngle + t * (endAngle - startAngle); // linear interpolation - const x = center.x + radius * Math.cos(angle); - const y = center.y + radius * Math.sin(angle); - points.push(new Vector3(x, y, 0)); - } + for (let i = 0; i <= numSegments; i++) { + const t = i / numSegments; + const angle = startAngle + t * (endAngle - startAngle); // linear interpolation + const x = center.x + radius * Math.cos(angle); + const y = center.y + radius * Math.sin(angle); + points.push(new Vector3(x, y, 0)); + } - const geometry = new BufferGeometry().setFromPoints(points); - geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); - geometries.push(geometry); - } - }); - } - return geometries; + const geometry = new BufferGeometry().setFromPoints(points); + geometry.scale(1 / UNIT, 1 / UNIT, 1 / UNIT); + geometries.push(geometry); + } + }); + } + return geometries; }; diff --git a/app/src/modules/builder/dfx/functions/getWallPointsFromBlueprint.ts b/app/src/modules/builder/dfx/functions/getWallPointsFromBlueprint.ts index 2087899..f655d35 100644 --- a/app/src/modules/builder/dfx/functions/getWallPointsFromBlueprint.ts +++ b/app/src/modules/builder/dfx/functions/getWallPointsFromBlueprint.ts @@ -1,21 +1,18 @@ -import { MathUtils, Vector3, BufferGeometry } from "three"; -import { useActiveLayer } from "../../../../store/builder/store"; -import { useBuilderStore } from "../../../../store/builder/useBuilderStore"; -import { wait } from "@testing-library/user-event/dist/utils"; +import { MathUtils, Vector3 } from "three"; type DXFData = any; // Replace with actual DXF data type type DXFEntity = any; // Replace with actual DXF entity type type WallLineVertex = [Vector3, string, number, string]; // Represents a wall segment with start point, ID, weight, and type interface Props { - parsedData?: DXFData; // Parsed DXF file data - setDxfWallGenerate?: any; // Callback to set generated walls - objValue: any; // Object position values for offset calculation - wallThickness: number; - wallHeight: number; - outsideMaterial: string; - insideMaterial: string; - activeLayer: number; // Active layer for wall points - addWall: (wall: Wall) => void; // Function to add a wall to the scene - walls: Wall[]; // Array of walls to be processed + parsedData?: DXFData; // Parsed DXF file data + setDxfWallGenerate?: any; // Callback to set generated walls + objValue: any; // Object position values for offset calculation + wallThickness: number; + wallHeight: number; + outsideMaterial: string; + insideMaterial: string; + activeLayer: number; // Active layer for wall points + addWall: (wall: Wall) => void; // Function to add a wall to the scene + walls: Wall[]; // Array of walls to be processed } /** @@ -29,230 +26,230 @@ interface Props { * @param {Object} params.objValue - Contains x,y,z offsets for position adjustment */ export function getWallPointsFromBlueprint({ - parsedData, - setDxfWallGenerate, - objValue, - wallThickness, - wallHeight, - outsideMaterial, - insideMaterial, - activeLayer, - addWall, - walls, + parsedData, + setDxfWallGenerate, + objValue, + wallThickness, + wallHeight, + outsideMaterial, + insideMaterial, + activeLayer, + addWall, + walls, }: Props) { - // Early return if no data is provided - if (!parsedData) return; - if (!parsedData.entities) return; + // Early return if no data is provided + if (!parsedData) return; + if (!parsedData.entities) return; - const unit = 1000; // Conversion factor from millimeters to meters - const wallVertex: any[] = []; // Array to store wall vertices - const findExistingPoint = (vec: Vector3): Point | undefined => { - for (const wall of wallVertex) { - for (const pt of wall.points) { - const pos = new Vector3(...pt.position); - if (pos.equals(vec)) return pt; - } - } - return undefined; - }; - - // Process each entity in the DXF file - parsedData.entities.forEach((entity: DXFEntity) => { - // Handle LINE entities - if (entity.type === "LINE" && entity.vertices) { - // Create start and end vectors with unit conversion and position offset - const startVec = new Vector3( - entity.vertices[0].x / unit, - 0.01, // Slightly above ground to avoid z-fighting - -entity.vertices[0].y / unit // Invert Y-axis to match Three.js coordinate system - ).add(new Vector3(objValue.x, 0, objValue.z)); - - const endVec = new Vector3( - entity.vertices[1].x / unit, - 0.01, - -entity.vertices[1].y / unit - ).add(new Vector3(objValue.x, 0, objValue.z)); - - // Create start and end points - const existingStart = findExistingPoint(startVec); - const startPoint: Point = existingStart || { - pointUuid: MathUtils.generateUUID(), - pointType: "Wall", - position: [startVec.x, startVec.y, startVec.z], - layer: activeLayer, - }; - - const existingEnd = findExistingPoint(endVec); - const endPoint: Point = existingEnd || { - pointUuid: MathUtils.generateUUID(), - pointType: "Wall", - position: [endVec.x, endVec.y, endVec.z], - layer: activeLayer, - }; - - // Create the wall - const wallSet: Wall = { - wallUuid: MathUtils.generateUUID(), - points: [startPoint, endPoint], // Store start and end points - outsideMaterial: insideMaterial, - insideMaterial: outsideMaterial, - wallThickness: wallThickness, - wallHeight: wallHeight, - decals: [], - }; - wallVertex.push(wallSet); // Store wall segment in array - // Add the wall to the scene - // addWall(wallSet); - } - - // Handle LWPOLYLINE entities (connected line segments) - else if (entity.type === "LWPOLYLINE" && entity.vertices) { - let firstPoint: Point | undefined; // Store first point for closing the polyline - - // Process each vertex pair in the polyline - for (let i = 0; i < entity.vertices.length - 1; i++) { - // Convert vertices to Three.js vectors with offset - const startVec = new Vector3( - entity.vertices[i].x / unit, - 0.01, - -entity.vertices[i].y / unit - ).add(new Vector3(objValue.x, 0, objValue.z)); - - const endVec = new Vector3( - entity.vertices[i + 1].x / unit, - 0.01, - -entity.vertices[i + 1].y / unit - ).add(new Vector3(objValue.x, 0, objValue.z)); - - // Create start and end points - const existingStart = findExistingPoint(startVec); - const startPoint: Point = existingStart || { - pointUuid: MathUtils.generateUUID(), // Generate unique ID for new points - pointType: "Wall", // Type identifier - position: [startVec.x, startVec.y, startVec.z], // Position in 3D space - layer: activeLayer, - }; - - const existingEnd = findExistingPoint(endVec); - const endPoint: Point = existingEnd || { - pointUuid: MathUtils.generateUUID(), // Generate unique ID for new points - pointType: "Wall", // Type identifier - position: [endVec.x, endVec.y, endVec.z], // Position in 3D space - layer: activeLayer, - }; - - // Create the wall segment - const wallSet: Wall = { - wallUuid: MathUtils.generateUUID(), - points: [startPoint, endPoint], // Store start and end points - outsideMaterial: insideMaterial, - insideMaterial: outsideMaterial, - wallThickness: wallThickness, - wallHeight: wallHeight, - decals: [], - }; - - // Add the wall segment - // addWall(wallSet); - wallVertex.push(wallSet); - // Store first point and create closing segment if this is the last vertex - if (i === 0) firstPoint = startPoint; - if (i === entity.vertices.length - 2 && firstPoint) { - const closingWallSet: Wall = { - wallUuid: MathUtils.generateUUID(), - points: [endPoint, firstPoint], // Create closing segment - outsideMaterial: insideMaterial, - insideMaterial: outsideMaterial, - wallThickness: wallThickness, - wallHeight: wallHeight, - decals: [], - }; - // Add the closing wall - wallVertex.push(closingWallSet); - // addWall(closingWallSet); + const unit = 1000; // Conversion factor from millimeters to meters + const wallVertex: any[] = []; // Array to store wall vertices + const findExistingPoint = (vec: Vector3): Point | undefined => { + for (const wall of wallVertex) { + for (const pt of wall.points) { + const pos = new Vector3(...pt.position); + if (pos.equals(vec)) return pt; + } } - } - } + return undefined; + }; - // Handle ARC entities - else if (entity.type === "ARC") { - const { center, radius, startAngle, endAngle } = entity; + // Process each entity in the DXF file + parsedData.entities.forEach((entity: DXFEntity) => { + // Handle LINE entities + if (entity.type === "LINE" && entity.vertices) { + // Create start and end vectors with unit conversion and position offset + const startVec = new Vector3( + entity.vertices[0].x / unit, + 0.01, // Slightly above ground to avoid z-fighting + -entity.vertices[0].y / unit // Invert Y-axis to match Three.js coordinate system + ).add(new Vector3(objValue.x, 0, objValue.z)); - // Validate required ARC properties - if ( - !center || - radius === undefined || - startAngle === undefined || - endAngle === undefined - ) { - return; - } + const endVec = new Vector3( + entity.vertices[1].x / unit, + 0.01, + -entity.vertices[1].y / unit + ).add(new Vector3(objValue.x, 0, objValue.z)); - // Convert ARC to series of line segments - const numSegments = 16; // Number of segments to approximate the arc - const angleStep = (endAngle - startAngle) / numSegments; - const arcPoints: Vector3[] = []; // Stores points along the arc + // Create start and end points + const existingStart = findExistingPoint(startVec); + const startPoint: Point = existingStart || { + pointUuid: MathUtils.generateUUID(), + pointType: "Wall", + position: [startVec.x, startVec.y, startVec.z], + layer: activeLayer, + }; - // Generate points along the arc - for (let i = 0; i <= numSegments; i++) { - const angle = startAngle + i * angleStep; - // Calculate arc point in DXF coordinate system - const x = center.x + radius * Math.cos(angle); - const y = -center.y + radius * Math.sin(angle); // Invert Y-axis + const existingEnd = findExistingPoint(endVec); + const endPoint: Point = existingEnd || { + pointUuid: MathUtils.generateUUID(), + pointType: "Wall", + position: [endVec.x, endVec.y, endVec.z], + layer: activeLayer, + }; - // Convert to Three.js vector with offset - const vec = new Vector3(x / unit, 0.01, y / unit).add( - new Vector3(objValue.x, 0, objValue.z) - ); + // Create the wall + const wallSet: Wall = { + wallUuid: MathUtils.generateUUID(), + points: [startPoint, endPoint], // Store start and end points + outsideMaterial: insideMaterial, + insideMaterial: outsideMaterial, + wallThickness: wallThickness, + wallHeight: wallHeight, + decals: [], + }; + wallVertex.push(wallSet); // Store wall segment in array + // Add the wall to the scene + // addWall(wallSet); + } - arcPoints.push(vec); - } + // Handle LWPOLYLINE entities (connected line segments) + else if (entity.type === "LWPOLYLINE" && entity.vertices) { + let firstPoint: Point | undefined; // Store first point for closing the polyline - // Create line segments between arc points - for (let i = 0; i < arcPoints.length - 1; i++) { - const startVec = arcPoints[i]; - const endVec = arcPoints[i + 1]; + // Process each vertex pair in the polyline + for (let i = 0; i < entity.vertices.length - 1; i++) { + // Convert vertices to Three.js vectors with offset + const startVec = new Vector3( + entity.vertices[i].x / unit, + 0.01, + -entity.vertices[i].y / unit + ).add(new Vector3(objValue.x, 0, objValue.z)); - // Create start and end points - const existingStart = findExistingPoint(startVec); - const startPoint: Point = existingStart || { - pointUuid: MathUtils.generateUUID(), - pointType: "Wall", - position: [startVec.x, startVec.y, startVec.z], - layer: activeLayer, - }; + const endVec = new Vector3( + entity.vertices[i + 1].x / unit, + 0.01, + -entity.vertices[i + 1].y / unit + ).add(new Vector3(objValue.x, 0, objValue.z)); - const existingEnd = findExistingPoint(endVec); - const endPoint: Point = existingEnd || { - pointUuid: MathUtils.generateUUID(), - pointType: "Wall", - position: [endVec.x, endVec.y, endVec.z], - layer: activeLayer, - }; + // Create start and end points + const existingStart = findExistingPoint(startVec); + const startPoint: Point = existingStart || { + pointUuid: MathUtils.generateUUID(), // Generate unique ID for new points + pointType: "Wall", // Type identifier + position: [startVec.x, startVec.y, startVec.z], // Position in 3D space + layer: activeLayer, + }; - // Create the wall segment - const wallSet: Wall = { - wallUuid: MathUtils.generateUUID(), - points: [startPoint, endPoint], - outsideMaterial: insideMaterial, - insideMaterial: outsideMaterial, - wallThickness: wallThickness, - wallHeight: wallHeight, - decals: [], - }; + const existingEnd = findExistingPoint(endVec); + const endPoint: Point = existingEnd || { + pointUuid: MathUtils.generateUUID(), // Generate unique ID for new points + pointType: "Wall", // Type identifier + position: [endVec.x, endVec.y, endVec.z], // Position in 3D space + layer: activeLayer, + }; - // Add the wall segment - // addWall(wallSet); - wallVertex.push(wallSet); - } - } + // Create the wall segment + const wallSet: Wall = { + wallUuid: MathUtils.generateUUID(), + points: [startPoint, endPoint], // Store start and end points + outsideMaterial: insideMaterial, + insideMaterial: outsideMaterial, + wallThickness: wallThickness, + wallHeight: wallHeight, + decals: [], + }; - // Log unsupported entity types - else { - console.error("Unsupported entity type:", entity.type); - } - }); - console.log("wallVertex: ", wallVertex); - // Return the generated walls through callback if provided - setDxfWallGenerate && setDxfWallGenerate(wallVertex); + // Add the wall segment + // addWall(wallSet); + wallVertex.push(wallSet); + // Store first point and create closing segment if this is the last vertex + if (i === 0) firstPoint = startPoint; + if (i === entity.vertices.length - 2 && firstPoint) { + const closingWallSet: Wall = { + wallUuid: MathUtils.generateUUID(), + points: [endPoint, firstPoint], // Create closing segment + outsideMaterial: insideMaterial, + insideMaterial: outsideMaterial, + wallThickness: wallThickness, + wallHeight: wallHeight, + decals: [], + }; + // Add the closing wall + wallVertex.push(closingWallSet); + // addWall(closingWallSet); + } + } + } + + // Handle ARC entities + else if (entity.type === "ARC") { + const { center, radius, startAngle, endAngle } = entity; + + // Validate required ARC properties + if ( + !center || + radius === undefined || + startAngle === undefined || + endAngle === undefined + ) { + return; + } + + // Convert ARC to series of line segments + const numSegments = 16; // Number of segments to approximate the arc + const angleStep = (endAngle - startAngle) / numSegments; + const arcPoints: Vector3[] = []; // Stores points along the arc + + // Generate points along the arc + for (let i = 0; i <= numSegments; i++) { + const angle = startAngle + i * angleStep; + // Calculate arc point in DXF coordinate system + const x = center.x + radius * Math.cos(angle); + const y = -center.y + radius * Math.sin(angle); // Invert Y-axis + + // Convert to Three.js vector with offset + const vec = new Vector3(x / unit, 0.01, y / unit).add( + new Vector3(objValue.x, 0, objValue.z) + ); + + arcPoints.push(vec); + } + + // Create line segments between arc points + for (let i = 0; i < arcPoints.length - 1; i++) { + const startVec = arcPoints[i]; + const endVec = arcPoints[i + 1]; + + // Create start and end points + const existingStart = findExistingPoint(startVec); + const startPoint: Point = existingStart || { + pointUuid: MathUtils.generateUUID(), + pointType: "Wall", + position: [startVec.x, startVec.y, startVec.z], + layer: activeLayer, + }; + + const existingEnd = findExistingPoint(endVec); + const endPoint: Point = existingEnd || { + pointUuid: MathUtils.generateUUID(), + pointType: "Wall", + position: [endVec.x, endVec.y, endVec.z], + layer: activeLayer, + }; + + // Create the wall segment + const wallSet: Wall = { + wallUuid: MathUtils.generateUUID(), + points: [startPoint, endPoint], + outsideMaterial: insideMaterial, + insideMaterial: outsideMaterial, + wallThickness: wallThickness, + wallHeight: wallHeight, + decals: [], + }; + + // Add the wall segment + // addWall(wallSet); + wallVertex.push(wallSet); + } + } + + // Log unsupported entity types + else { + console.error("Unsupported entity type:", entity.type); + } + }); + console.log("wallVertex: ", wallVertex); + // Return the generated walls through callback if provided + setDxfWallGenerate && setDxfWallGenerate(wallVertex); } diff --git a/app/src/modules/builder/floor/Instances/Instance/floor2DInstance.tsx b/app/src/modules/builder/floor/Instances/Instance/floor2DInstance.tsx index 1ba15f0..bcafa9f 100644 --- a/app/src/modules/builder/floor/Instances/Instance/floor2DInstance.tsx +++ b/app/src/modules/builder/floor/Instances/Instance/floor2DInstance.tsx @@ -3,7 +3,7 @@ import { DoubleSide, Shape, Vector2 } from 'three'; import { Extrude } from '@react-three/drei'; import * as Constants from '../../../../../types/world/worldConstants'; -function Floor2DInstance({ floor }: { floor: Floor }) { +function Floor2DInstance({ floor }: { readonly floor: Floor }) { const savedTheme: string | null = localStorage.getItem("theme"); const shape = useMemo(() => { diff --git a/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx b/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx index 4ea5b43..3559128 100644 --- a/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx +++ b/app/src/modules/builder/floor/Instances/Instance/floorInstance.tsx @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import { Shape, Vector2, DoubleSide, TextureLoader, RepeatWrapping, SRGBColorSpace, NoColorSpace, ExtrudeGeometry, Vector3, Euler, } from "three"; +import { Shape, Vector2, DoubleSide, TextureLoader, RepeatWrapping, SRGBColorSpace, NoColorSpace, ExtrudeGeometry } from "three"; import { useLoader } from "@react-three/fiber"; import useModuleStore from "../../../../../store/useModuleStore"; import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; @@ -28,7 +28,7 @@ import material4RoughnessMap from "../../../../../assets/textures/floor/tex3/met import material4MetalicMap from "../../../../../assets/textures/floor/tex3/metal_plate_metal_1k.png"; import material4NormalMap from "../../../../../assets/textures/floor/tex3/metal_plate_nor_gl_1k.png"; -function FloorInstance({ floor }: { floor: Floor }) { +function FloorInstance({ floor }: { readonly floor: Floor }) { const { toggleView } = useToggleView(); const { activeModule } = useModuleStore(); const { selectedFloor, setSelectedFloor, setSelectedDecal } = useBuilderStore(); diff --git a/app/src/modules/builder/floor/Instances/floorInstances.tsx b/app/src/modules/builder/floor/Instances/floorInstances.tsx index 2af5787..9ad65db 100644 --- a/app/src/modules/builder/floor/Instances/floorInstances.tsx +++ b/app/src/modules/builder/floor/Instances/floorInstances.tsx @@ -27,8 +27,8 @@ function FloorInstances() { if (toolMode !== 'cursor') { if (selectedFloor) setSelectedFloor(null); } - } else { - if (selectedFloor) setSelectedFloor(null); + } else if (selectedFloor) { + setSelectedFloor(null); } }, [toggleView, toolMode, activeModule, selectedFloor]); diff --git a/app/src/modules/builder/floor/floorCreator/floorCreator.tsx b/app/src/modules/builder/floor/floorCreator/floorCreator.tsx index c5c36d2..d63bd38 100644 --- a/app/src/modules/builder/floor/floorCreator/floorCreator.tsx +++ b/app/src/modules/builder/floor/floorCreator/floorCreator.tsx @@ -206,7 +206,6 @@ function FloorCreator() { setTempPoints(prev => [...prev, newPoint]); setIsCreating(true); } - }; const onContext = (event: any) => { diff --git a/app/src/modules/builder/floor/floorCreator/referenceFloor.tsx b/app/src/modules/builder/floor/floorCreator/referenceFloor.tsx index 71d376c..80b30b9 100644 --- a/app/src/modules/builder/floor/floorCreator/referenceFloor.tsx +++ b/app/src/modules/builder/floor/floorCreator/referenceFloor.tsx @@ -137,7 +137,7 @@ function ReferenceFloor({ tempPoints }: Readonly) { export default ReferenceFloor; -function Floor({ floor }: { floor: Point[] }) { +function Floor({ floor }: { readonly floor: Point[] }) { const savedTheme: string | null = localStorage.getItem('theme'); const shape = useMemo(() => { diff --git a/app/src/modules/builder/functions/computeArea.ts b/app/src/modules/builder/functions/computeArea.ts index 2bd499b..8a089ae 100644 --- a/app/src/modules/builder/functions/computeArea.ts +++ b/app/src/modules/builder/functions/computeArea.ts @@ -1,29 +1,29 @@ import { Vector2 } from "three"; export function computeArea(data: any, type: "zone" | "rooms" | "aisle"): any { - if (type === "zone") { - const points3D = data.map((p: any) => new Vector2(p[0], p[2])); - let area = 0; - for (let i = 0; i < points3D.length - 1; i++) { - const current = points3D[i]; - const next = points3D[i + 1]; - area += current.x * next.y - next.x * current.y; + if (type === "zone") { + const points3D = data.map((p: any) => new Vector2(p[0], p[2])); + let area = 0; + for (let i = 0; i < points3D.length - 1; i++) { + const current = points3D[i]; + const next = points3D[i + 1]; + area += current.x * next.y - next.x * current.y; + } + + return Math.abs(area) / 2; } - return Math.abs(area) / 2; - } - - if (type === "rooms") { - const points2D = data.coordinates.map( - (coordinate: any) => - new Vector2(coordinate.position.x, coordinate.position.z) - ); - let area = 0; - for (let i = 0; i < points2D.length - 1; i++) { - const current = points2D[i]; - const next = points2D[i + 1]; - area += current.x * next.y - next.x * current.y; + if (type === "rooms") { + const points2D = data.coordinates.map( + (coordinate: any) => + new Vector2(coordinate.position.x, coordinate.position.z) + ); + let area = 0; + for (let i = 0; i < points2D.length - 1; i++) { + const current = points2D[i]; + const next = points2D[i + 1]; + area += current.x * next.y - next.x * current.y; + } + return Math.abs(area) / 2; } - return Math.abs(area) / 2; - } } diff --git a/app/src/modules/builder/groups/calculateAreaGroup.tsx b/app/src/modules/builder/groups/calculateAreaGroup.tsx index f6a5057..ec27afd 100644 --- a/app/src/modules/builder/groups/calculateAreaGroup.tsx +++ b/app/src/modules/builder/groups/calculateAreaGroup.tsx @@ -6,109 +6,101 @@ import * as turf from "@turf/turf"; import * as THREE from "three"; const CalculateAreaGroup = () => { - const { roomsState } = useRoomsState(); - const { toggleView } = useToggleView(); - const savedTheme: string | null = localStorage.getItem("theme"); + const { roomsState } = useRoomsState(); + const { toggleView } = useToggleView(); + const savedTheme: string | null = localStorage.getItem("theme"); - return ( - - - {roomsState.length > 0 && - roomsState.flat().map((room: any, index: number) => { - const coordinates = room.coordinates; - if (!coordinates || coordinates.length < 3) return null; + return ( + + + {roomsState.length > 0 && + roomsState.flat().map((room: any, index: number) => { + const coordinates = room.coordinates; + if (!coordinates || coordinates.length < 3) return null; - const coords2D = coordinates.map( - (p: any) => new THREE.Vector2(p.position.x, p.position.z) - ); + const coords2D = coordinates.map((p: any) => new THREE.Vector2(p.position.x, p.position.z)); - if (!coords2D[0].equals(coords2D[coords2D.length - 1])) { - coords2D.push(coords2D[0]); - } + if (!coords2D[0].equals(coords2D[coords2D.length - 1])) { + coords2D.push(coords2D[0]); + } - const shape = new THREE.Shape(coords2D); - const extrudeSettings = { - depth: 0.01, - bevelEnabled: false, - }; + const shape = new THREE.Shape(coords2D); + const extrudeSettings = { + depth: 0.01, + bevelEnabled: false, + }; - const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); - geometry.rotateX(Math.PI / 2); + const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings); + geometry.rotateX(Math.PI / 2); - const material = new THREE.MeshBasicMaterial({ - color: savedTheme === "dark" ? "#d2baff" : "#6f42c1", - side: THREE.DoubleSide, - transparent: true, - opacity: 0.4, - depthWrite: false, - }); + const material = new THREE.MeshBasicMaterial({ + color: savedTheme === "dark" ? "#d2baff" : "#6f42c1", + side: THREE.DoubleSide, + transparent: true, + opacity: 0.4, + depthWrite: false, + }); - return ( - - - - ); - })} - - {roomsState.length > 0 && - roomsState.flat().map((room: any, index: number) => { - if (!toggleView) return null; - const coordinates = room.coordinates; + return ( + + + + ); + })} + + {roomsState.length > 0 && + roomsState.flat().map((room: any, index: number) => { + if (!toggleView) return null; + const coordinates = room.coordinates; - if (!coordinates || coordinates.length < 3) return null; + if (!coordinates || coordinates.length < 3) return null; - let coords2D = coordinates.map((p: any) => [ - p.position.x, - p.position.z, - ]); + let coords2D = coordinates.map((p: any) => [p.position.x, p.position.z,]); - const first = coords2D[0]; - const last = coords2D[coords2D.length - 1]; - if (first[0] !== last[0] || first[1] !== last[1]) { - coords2D.push(first); - } + const first = coords2D[0]; + const last = coords2D[coords2D.length - 1]; + if (first[0] !== last[0] || first[1] !== last[1]) { + coords2D.push(first); + } - const polygon = turf.polygon([coords2D]); - const center2D = turf.center(polygon).geometry.coordinates; + const polygon = turf.polygon([coords2D]); + const center2D = turf.center(polygon).geometry.coordinates; - const sumY = coordinates.reduce( - (sum: number, p: any) => sum + p.position.y, - 0 - ); - const avgY = sumY / coordinates.length; + const sumY = coordinates.reduce((sum: number, p: any) => sum + p.position.y, 0); + const avgY = sumY / coordinates.length; - const area = computeArea(room, "rooms"); - const formattedArea = `${area.toFixed(2)} m²`; + const area = computeArea(room, "rooms"); + const formattedArea = `${area.toFixed(2)} m²`; - const htmlPosition: [number, number, number] = [ - center2D[0], - avgY + CONSTANTS.zoneConfig.height, - center2D[1], - ]; + const htmlPosition: [number, number, number] = [ + center2D[0], + avgY + CONSTANTS.zoneConfig.height, + center2D[1], + ]; - return ( - -
- Room ({formattedArea}) -
- - ); - })} -
- ); + return ( + +
+ Room ({formattedArea}) +
+ + ); + })} +
+ ); }; export default CalculateAreaGroup; diff --git a/app/src/modules/builder/layout/layoutImage.tsx b/app/src/modules/builder/layout/layoutImage.tsx index 40c2c3c..4e28421 100644 --- a/app/src/modules/builder/layout/layoutImage.tsx +++ b/app/src/modules/builder/layout/layoutImage.tsx @@ -11,24 +11,24 @@ const modelPaths: Record = { }; function LayoutModel() { - const { toggleView } = useToggleView(); - const { currentLayout } = useLayoutStore(); + const { toggleView } = useToggleView(); + const { currentLayout } = useLayoutStore(); - // Always call the hook, but ensure it has a valid fallback - const path = currentLayout ? modelPaths[currentLayout] : modelPaths.layout1; + // Always call the hook, but ensure it has a valid fallback + const path = currentLayout ? modelPaths[currentLayout] : modelPaths.layout1; - // Explicitly cast the return type to ensure it's not an array - const gltf = useGLTF(path) as any; + // Explicitly cast the return type to ensure it's not an array + const gltf = useGLTF(path) as any; - const cloned = useMemo(() => gltf.scene.clone(), [gltf]); + const cloned = useMemo(() => gltf.scene.clone(), [gltf]); - if (!currentLayout || !toggleView) return null; + if (!currentLayout || !toggleView) return null; - return ( - - - - ); + return ( + + + + ); } export default LayoutModel; diff --git a/app/src/modules/builder/line/helpers/getClosestPointOnLineSegment.ts b/app/src/modules/builder/line/helpers/getClosestPointOnLineSegment.ts index 8b65282..b22c3da 100644 --- a/app/src/modules/builder/line/helpers/getClosestPointOnLineSegment.ts +++ b/app/src/modules/builder/line/helpers/getClosestPointOnLineSegment.ts @@ -1,7 +1,7 @@ import { Vector3 } from "three"; export default function closestPointOnLineSegment(p: Vector3, a: Vector3, b: Vector3) { - const ab = new Vector3().subVectors(b, a); + const ab = new Vector3().subVectors(a, b); const ap = new Vector3().subVectors(p, a); const abLengthSq = ab.lengthSq(); diff --git a/app/src/modules/builder/line/line.tsx b/app/src/modules/builder/line/line.tsx index 51391f8..dad7728 100644 --- a/app/src/modules/builder/line/line.tsx +++ b/app/src/modules/builder/line/line.tsx @@ -415,10 +415,10 @@ function Line({ points }: Readonly) { const walls = getConnectedWallsByWallId(wall.wallUuid, false); setInitialPositions({ walls }); } - } else if (points[0].pointType === 'Floor' && points[0].pointType === 'Floor') { + } else if (points[0].pointType === 'Floor') { const floors = getFloorsByPointId(points[0].pointUuid); setInitialPositions({ floors }); - } else if (points[0].pointType === 'Zone' && points[0].pointType === 'Zone') { + } else if (points[0].pointType === 'Zone') { const zones = getZonesByPointId(points[0].pointUuid); setInitialPositions({ zones }); } diff --git a/app/src/modules/builder/point/reference/referencePoint.tsx b/app/src/modules/builder/point/reference/referencePoint.tsx index 2f2cccd..50882f8 100644 --- a/app/src/modules/builder/point/reference/referencePoint.tsx +++ b/app/src/modules/builder/point/reference/referencePoint.tsx @@ -21,10 +21,16 @@ function ReferencePoint({ point }: { readonly point: Point }) { return null; } - const pointName = point.pointType === 'Wall' ? 'Wall-Point' : - point.pointType === 'Floor' ? 'Floor-Point' : - point.pointType === 'Aisle' ? 'Aisle-Point' : - point.pointType === 'Zone' ? 'Zone-Point' : 'Point'; + let pointName = 'Point'; + if (point.pointType === 'Wall') { + pointName = 'Wall-Point'; + } else if (point.pointType === 'Floor') { + pointName = 'Floor-Point'; + } else if (point.pointType === 'Aisle') { + pointName = 'Aisle-Point'; + } else if (point.pointType === 'Zone') { + pointName = 'Zone-Point'; + } return ( i.object.name.includes('WallReference')); - if (intersect && intersect.object.userData.wallUuid) { + if (intersect?.object.userData.wallUuid) { const newPoint = closestPointOnLineSegment( new THREE.Vector3(intersect.point.x, 0, intersect.point.z), new THREE.Vector3(...intersect.object.userData.points[0].position), @@ -243,57 +243,35 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { boundingBox.getCenter(center); return ( - <> - - - - - - - {gltfScene && ( - { - if (!toggleView && activeModule === 'builder' && selectedWallAsset && selectedWallAsset.userData.modelUuid === wallAsset.modelUuid) { - draggingRef.current = true; - e.stopPropagation(); - setSelectedWallAsset(groupRef.current); - if (controls) { - (controls as any).enabled = false; - } + + + + + + + {gltfScene && ( + { + if (!toggleView && activeModule === 'builder' && selectedWallAsset && selectedWallAsset.userData.modelUuid === wallAsset.modelUuid) { + draggingRef.current = true; + e.stopPropagation(); + setSelectedWallAsset(groupRef.current); + if (controls) { + (controls as any).enabled = false; } - }} - onClick={(e) => { - if (!toggleView && activeModule === 'builder' && activeTool !== 'delete') { - if (e.object) { - e.stopPropagation(); - let currentObject = e.object as THREE.Object3D; - while (currentObject) { - if (currentObject.userData.wallUuid) { - break; - } - currentObject = currentObject.parent as THREE.Object3D; - } - setSelectedWallAsset(currentObject); - } - } else if (!toggleView && activeModule === 'builder' && activeTool === 'delete') { - handlePointerClick(wallAsset); - } - }} - onPointerMissed={() => { - if (selectedWallAsset && selectedWallAsset.userData.modelUuid === wallAsset.modelUuid) { - setSelectedWallAsset(null); - } - }} - onPointerEnter={(e) => { - if (!toggleView) { + } + }} + onClick={(e) => { + if (!toggleView && activeModule === 'builder' && activeTool !== 'delete') { + if (e.object) { e.stopPropagation(); let currentObject = e.object as THREE.Object3D; while (currentObject) { @@ -302,22 +280,42 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { } currentObject = currentObject.parent as THREE.Object3D; } - handlePointerOver(wallAsset, currentObject); + setSelectedWallAsset(currentObject); } - }} - onPointerLeave={(e) => { - if (!toggleView) { - e.stopPropagation(); - handlePointerOut(e, wallAsset); + } else if (!toggleView && activeModule === 'builder' && activeTool === 'delete') { + handlePointerClick(wallAsset); + } + }} + onPointerMissed={() => { + if (selectedWallAsset && selectedWallAsset.userData.modelUuid === wallAsset.modelUuid) { + setSelectedWallAsset(null); + } + }} + onPointerEnter={(e) => { + if (!toggleView) { + e.stopPropagation(); + let currentObject = e.object as THREE.Object3D; + while (currentObject) { + if (currentObject.userData.wallUuid) { + break; + } + currentObject = currentObject.parent as THREE.Object3D; } - }} - userData={wallAsset} - > - - - )} - - + handlePointerOver(wallAsset, currentObject); + } + }} + onPointerLeave={(e) => { + if (!toggleView) { + e.stopPropagation(); + handlePointerOut(e, wallAsset); + } + }} + userData={wallAsset} + > + + + )} + ) } diff --git a/app/src/modules/builder/zone/Instances/Instance/zone2DInstance.tsx b/app/src/modules/builder/zone/Instances/Instance/zone2DInstance.tsx index 3489b32..c5a20bb 100644 --- a/app/src/modules/builder/zone/Instances/Instance/zone2DInstance.tsx +++ b/app/src/modules/builder/zone/Instances/Instance/zone2DInstance.tsx @@ -3,7 +3,7 @@ import { DoubleSide, Shape, Vector2 } from 'three'; import { Extrude } from '@react-three/drei'; import * as Constants from '../../../../../types/world/worldConstants'; -function Zone2DInstance({ zone }: { zone: Zone }) { +function Zone2DInstance({ zone }: { readonly zone: Zone }) { const savedTheme: string | null = localStorage.getItem("theme"); const shape = useMemo(() => { diff --git a/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx b/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx index e49400c..d00d398 100644 --- a/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx +++ b/app/src/modules/builder/zone/Instances/Instance/zoneInstance.tsx @@ -1,8 +1,7 @@ import { useMemo } from 'react' -import { Color, DoubleSide, ShaderMaterial } from 'three'; -import { Vector3 } from 'three'; +import { Color, DoubleSide, ShaderMaterial, Vector3 } from 'three'; -function ZoneInstance({ zone }: { zone: Zone }) { +function ZoneInstance({ zone }: { readonly zone: Zone }) { const zoneLayer = zone.points[0].layer; const zoneMaterial = useMemo(() => { @@ -32,41 +31,39 @@ function ZoneInstance({ zone }: { zone: Zone }) { }, []); return ( - <> - - {zone.points.map((point, index: number) => { - const nextPoint = zone.points[(index + 1) % zone.points.length]; + + {zone.points.map((point, index: number) => { + const nextPoint = zone.points[(index + 1) % zone.points.length]; - const point1 = new Vector3(point.position[0], point.position[1], point.position[2]); - const point2 = new Vector3(nextPoint.position[0], nextPoint.position[1], nextPoint.position[2]); + const point1 = new Vector3(point.position[0], point.position[1], point.position[2]); + const point2 = new Vector3(nextPoint.position[0], nextPoint.position[1], nextPoint.position[2]); - const planeWidth = point1.distanceTo(point2); - const planeHeight = zone.zoneHeight; + const planeWidth = point1.distanceTo(point2); + const planeHeight = zone.zoneHeight; - const midpoint = new Vector3((point1.x + point2.x) / 2, zone.zoneHeight / 2 + (zoneLayer - 1) * zone.zoneHeight, (point1.z + point2.z) / 2); + const midpoint = new Vector3((point1.x + point2.x) / 2, zone.zoneHeight / 2 + (zoneLayer - 1) * zone.zoneHeight, (point1.z + point2.z) / 2); - const angle = Math.atan2(point2.z - point1.z, point2.x - point1.x); + const angle = Math.atan2(point2.z - point1.z, point2.x - point1.x); - return ( - - - - - ); - })} + return ( + + + + + ); + })} - - + ) } diff --git a/app/src/modules/builder/zone/zoneCreator/referenceZone.tsx b/app/src/modules/builder/zone/zoneCreator/referenceZone.tsx index e5cdf9f..545226d 100644 --- a/app/src/modules/builder/zone/zoneCreator/referenceZone.tsx +++ b/app/src/modules/builder/zone/zoneCreator/referenceZone.tsx @@ -135,7 +135,7 @@ function ReferenceZone({ tempPoints }: Readonly) { export default ReferenceZone; -function Zone({ zone }: { zone: Point[] }) { +function Zone({ zone }: { readonly zone: Point[] }) { const savedTheme: string | null = localStorage.getItem('theme'); const shape = useMemo(() => { diff --git a/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx b/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx index 6e9e97c..c7cce3c 100644 --- a/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx +++ b/app/src/modules/builder/zone/zoneCreator/zoneCreator.tsx @@ -202,7 +202,6 @@ function ZoneCreator() { setTempPoints(prev => [...prev, newPoint]); setIsCreating(true); } - }; const onContext = (event: any) => { diff --git a/app/src/modules/collaboration/camera/collabCams.tsx b/app/src/modules/collaboration/camera/collabCams.tsx index ec313ec..02cd535 100644 --- a/app/src/modules/collaboration/camera/collabCams.tsx +++ b/app/src/modules/collaboration/camera/collabCams.tsx @@ -140,7 +140,6 @@ const CamModelsGroup = () => { }); socket.on("v1:camera:Response:update", (data: any) => { - // console.log('data: ', data); if ( !groupRef.current || socket.id === data.socketId || diff --git a/app/src/modules/collaboration/camera/collabUserIcon.tsx b/app/src/modules/collaboration/camera/collabUserIcon.tsx index e45d7a5..ce49c9a 100644 --- a/app/src/modules/collaboration/camera/collabUserIcon.tsx +++ b/app/src/modules/collaboration/camera/collabUserIcon.tsx @@ -4,66 +4,66 @@ import { useSelectedUserStore } from "../../../store/collaboration/useCollabStor import { useCamMode } from "../../../store/builder/store"; interface CollabUserIconProps { - userName: string; - userImage?: string; - color: string; - id: string; - position?: { - x: number; - y: number; - z: number; - }; - rotation?: { - x: number; - y: number; - z: number; - }; - target?: { - x: number; - y: number; - z: number; - }; + userName: string; + userImage?: string; + color: string; + id: string; + position?: { + x: number; + y: number; + z: number; + }; + rotation?: { + x: number; + y: number; + z: number; + }; + target?: { + x: number; + y: number; + z: number; + }; } const CollabUserIcon: React.FC = ({ - userImage, - userName, - id, - color, - position, - rotation, - target, + userImage, + userName, + id, + color, + position, + rotation, + target, }) => { - const { setSelectedUser } = useSelectedUserStore(); - const { setCamMode } = useCamMode(); - return ( -
- -
- {userName} -
-
- ); + const { setSelectedUser } = useSelectedUserStore(); + const { setCamMode } = useCamMode(); + return ( +
+ +
+ {userName} +
+
+ ); }; export default CollabUserIcon; diff --git a/app/src/modules/collaboration/comments/instances/commentInstance/commentInstance.tsx b/app/src/modules/collaboration/comments/instances/commentInstance/commentInstance.tsx index 8481b1a..5740b6e 100644 --- a/app/src/modules/collaboration/comments/instances/commentInstance/commentInstance.tsx +++ b/app/src/modules/collaboration/comments/instances/commentInstance/commentInstance.tsx @@ -6,7 +6,7 @@ import { useSelectedComment } from '../../../../../store/builder/store'; import { Group, Object3D, Vector2, Vector3 } from 'three'; import { useThree } from '@react-three/fiber'; -function CommentInstance({ comment }: { comment: CommentSchema }) { +function CommentInstance({ comment }: { readonly comment: CommentSchema }) { const { isPlaying } = usePlayButtonStore(); const CommentRef = useRef(null); const [selectedObject, setSelectedObject] = useState(null); @@ -14,6 +14,7 @@ function CommentInstance({ comment }: { comment: CommentSchema }) { const [transformMode, setTransformMode] = useState<"translate" | "rotate" | null>(null); const groupRef = useRef(null); const { size, camera } = useThree(); + // useEffect(() => { // const handleKeyDown = (e: KeyboardEvent) => { // const keyCombination = detectModifierKeys(e); @@ -76,7 +77,6 @@ function CommentInstance({ comment }: { comment: CommentSchema }) { onMouseUp={(e) => { console.log("sad"); }} - /> )} */} diff --git a/app/src/modules/collaboration/comments/instances/commentInstances.tsx b/app/src/modules/collaboration/comments/instances/commentInstances.tsx index aa363b1..a8d5ed8 100644 --- a/app/src/modules/collaboration/comments/instances/commentInstances.tsx +++ b/app/src/modules/collaboration/comments/instances/commentInstances.tsx @@ -14,13 +14,15 @@ function CommentInstances() { const { selectedVersionStore } = useVersionContext(); const { selectedVersion } = selectedVersionStore(); - const getThreads = async () => { - if (!projectId || !selectedVersion) return; - try { - const getComments = await getAllThreads(projectId, selectedVersion?.versionId); + useEffect(() => { + // console.log("comments", comments); + }, [comments]) - const formattedThreads = Array.isArray(getComments.data) - ? getComments.data.map((thread: any) => ({ + useEffect(() => { + if (!projectId || !selectedVersion) return; + getAllThreads(projectId, selectedVersion?.versionId).then((fetchedComments) => { + const formattedThreads = Array.isArray(fetchedComments.data) + ? fetchedComments.data.map((thread: any) => ({ ...thread, comments: Array.isArray(thread.comments) ? thread.comments.map((val: any) => ({ @@ -35,18 +37,11 @@ function CommentInstances() { })) : []; setComments(formattedThreads); - } catch (err) { - // console.error("Failed to fetch threads:", err); - } - } - - useEffect(() => { - getThreads(); + }).catch((err) => { + console.error("Failed to fetch threads:", err); + }) }, []); - useEffect(() => { - // console.log("comments", comments); - }, [comments]) return ( <> {comments?.map((comment: CommentSchema) => ( diff --git a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx index 3b6eb10..db0ebc2 100644 --- a/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx +++ b/app/src/modules/collaboration/socket/threadSocketResponses.dev.tsx @@ -81,10 +81,7 @@ const ThreadSocketResponsesDev = ({ setMessages, modeRef, messages }: ThreadSock }) ); - } else { - } - }; threadSocket.on('v1-Comment:response:add', handleAddComment); // --- Delete Comment Handler --- diff --git a/app/src/modules/collaboration/users/Avatar.tsx b/app/src/modules/collaboration/users/Avatar.tsx index 899ecb4..3f1b7a8 100644 --- a/app/src/modules/collaboration/users/Avatar.tsx +++ b/app/src/modules/collaboration/users/Avatar.tsx @@ -2,57 +2,57 @@ import React, { useEffect, useState } from "react"; import { getInitials } from "../functions/getInitials"; interface AvatarProps { - name: string; // Name can be a full name or initials - size?: number; - textColor?: string; - color?: string; // Optional color prop for future use + name: string; // Name can be a full name or initials + size?: number; + textColor?: string; + color?: string; // Optional color prop for future use } const CustomAvatar: React.FC = ({ - name, - size = 100, - textColor = "#ffffff", - color, // Optional color prop for future use + name, + size = 100, + textColor = "#ffffff", + color, // Optional color prop for future use }) => { - const [imageSrc, setImageSrc] = useState(null); + const [imageSrc, setImageSrc] = useState(null); - useEffect(() => { - const canvas = document.createElement("canvas"); // Create an offscreen canvas - canvas.width = size; - canvas.height = size; - const ctx = canvas.getContext("2d"); - if (ctx) { - const initials = getInitials(name); // Convert name to initials if needed + useEffect(() => { + const canvas = document.createElement("canvas"); // Create an offscreen canvas + canvas.width = size; + canvas.height = size; + const ctx = canvas.getContext("2d"); + if (ctx) { + const initials = getInitials(name); // Convert name to initials if needed - // Draw background - ctx.fillStyle = color ?? "#323232"; // Use color prop or generate color based on index - ctx.fillRect(0, 0, size, size); + // Draw background + ctx.fillStyle = color ?? "#323232"; // Use color prop or generate color based on index + ctx.fillRect(0, 0, size, size); - // Draw initials - ctx.fillStyle = textColor; - ctx.font = `bold ${size / 2}px Arial`; - ctx.textAlign = "center"; - ctx.textBaseline = "middle"; - ctx.fillText(initials, size / 2, size / 2); + // Draw initials + ctx.fillStyle = textColor; + ctx.font = `bold ${size / 2}px Arial`; + ctx.textAlign = "center"; + ctx.textBaseline = "middle"; + ctx.fillText(initials, size / 2, size / 2); - // Generate image source - const dataURL = canvas.toDataURL("image/png"); - setImageSrc(dataURL); + // Generate image source + const dataURL = canvas.toDataURL("image/png"); + setImageSrc(dataURL); + } + }, [color, name, size, textColor]); + + if (!imageSrc) { + return null; // Return null while the image is being generated } - }, [color, name, size, textColor]); - if (!imageSrc) { - return null; // Return null while the image is being generated - } - - return ( - User Avatar - ); + return ( + User Avatar + ); }; export default CustomAvatar; diff --git a/app/src/modules/scene/camera/camMode.tsx b/app/src/modules/scene/camera/camMode.tsx index 60d0798..31ae372 100644 --- a/app/src/modules/scene/camera/camMode.tsx +++ b/app/src/modules/scene/camera/camMode.tsx @@ -19,8 +19,7 @@ const CamMode: React.FC = () => { useEffect(() => { const handlePointerLockChange = async () => { - if (document.pointerLockElement && !toggleView) { - } else if (camMode === "FirstPerson" && !toggleView) { + if (camMode === "FirstPerson" && !toggleView) { setCamMode("ThirdPerson"); await switchToThirdPerson(state.controls, state.camera); } diff --git a/app/src/modules/scene/camera/switchView.tsx b/app/src/modules/scene/camera/switchView.tsx index 489d46a..9f45ac1 100644 --- a/app/src/modules/scene/camera/switchView.tsx +++ b/app/src/modules/scene/camera/switchView.tsx @@ -5,35 +5,32 @@ import { PerspectiveCamera, OrthographicCamera, CameraControls } from '@react-th import { useParams } from "react-router-dom"; import * as CONSTANTS from '../../../types/world/worldConstants'; import { getCameraApi } from "../../../services/factoryBuilder/camera/getCameraApi"; -import { getUserData } from "../../../functions/getUserData"; import { useToggleView } from "../../../store/builder/store"; export default function SwitchView() { const { toggleView } = useToggleView(); const { controls } = useThree(); const { projectId } = useParams(); - const { organization } = getUserData(); useEffect(() => { if (toggleView && controls) { (controls as any).mouseButtons.left = CONSTANTS.twoDimension.leftMouse; (controls as any).mouseButtons.right = CONSTANTS.twoDimension.rightMouse; } else { - try { - getCameraApi(organization, localStorage.getItem('userId')!, projectId).then((data) => { - if (data && data.position && data.target) { - (controls as CameraControls)?.setPosition(data.position.x, data.position.y, data.position.z); - (controls as CameraControls)?.setTarget(data.target.x, data.target.y, data.target.z); - } else { - (controls as CameraControls)?.setPosition(...CONSTANTS.threeDimension.defaultPosition); - (controls as CameraControls)?.setTarget(...CONSTANTS.threeDimension.defaultTarget); - } - }); - } catch (error) { + if (!projectId) return; + getCameraApi(projectId).then((data) => { + if (data?.position && data?.target) { + (controls as CameraControls)?.setPosition(data.position.x, data.position.y, data.position.z); + (controls as CameraControls)?.setTarget(data.target.x, data.target.y, data.target.z); + } else { + (controls as CameraControls)?.setPosition(...CONSTANTS.threeDimension.defaultPosition); + (controls as CameraControls)?.setTarget(...CONSTANTS.threeDimension.defaultTarget); + } + }).catch(() => { echo.error("Failed to retrieve camera position or target"); (controls as CameraControls)?.setPosition(...CONSTANTS.threeDimension.defaultPosition); (controls as CameraControls)?.setTarget(...CONSTANTS.threeDimension.defaultTarget); - } + }) if (controls) { (controls as any).mouseButtons.left = CONSTANTS.threeDimension.leftMouse; diff --git a/app/src/modules/scene/clouds/clouds.tsx b/app/src/modules/scene/clouds/clouds.tsx index f876530..e20719f 100644 --- a/app/src/modules/scene/clouds/clouds.tsx +++ b/app/src/modules/scene/clouds/clouds.tsx @@ -10,7 +10,7 @@ interface CloudGroupProps { height: number; } -function CloudGroup({ initialX, initialZ, speed, height }: CloudGroupProps) { +function CloudGroup({ initialX, initialZ, speed, height }: Readonly) { const group = useRef(null); useFrame((_, delta) => { diff --git a/app/src/modules/scene/controls/controls.tsx b/app/src/modules/scene/controls/controls.tsx index 3e9dca3..3e34faf 100644 --- a/app/src/modules/scene/controls/controls.tsx +++ b/app/src/modules/scene/controls/controls.tsx @@ -37,8 +37,9 @@ export default function Controls() { (controlsRef.current as any).mouseButtons.right = CONSTANTS.thirdPersonControls.rightMouse; } - getCameraApi(organization, userId, projectId).then((data) => { - if (data && data.position && data.target) { + if (!projectId) return; + getCameraApi(projectId).then((data) => { + if (data?.position && data?.target) { controlsRef.current?.setPosition(data.position.x, data.position.y, data.position.z); controlsRef.current?.setTarget(data.target.x, data.target.y, data.target.z); } else { @@ -46,7 +47,7 @@ export default function Controls() { controlsRef.current?.setTarget(...CONSTANTS.threeDimension.defaultTarget); } }).catch((error) => console.error("Failed to fetch camera data:", error)); - }, []); + }, [projectId]); useEffect(() => { if (resetCamera && projectId) { diff --git a/app/src/modules/scene/controls/selectionControls/selectionHelper.ts b/app/src/modules/scene/controls/selectionControls/helper/selectionHelper.ts similarity index 100% rename from app/src/modules/scene/controls/selectionControls/selectionHelper.ts rename to app/src/modules/scene/controls/selectionControls/helper/selectionHelper.ts diff --git a/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx b/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx index b87323e..413e26f 100644 --- a/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection2D/moveControls2D.tsx @@ -512,7 +512,7 @@ function MoveControls2D({ undoPoints.push({ type: 'Wall', lineData: actions[0].lineData as Wall, - newData: wallData as Wall, + newData: wallData, timeStamp: new Date().toISOString() }); } @@ -538,7 +538,7 @@ function MoveControls2D({ undoPoints.push({ type: 'Aisle', lineData: actions[0].lineData as Aisle, - newData: aisleData as Aisle, + newData: aisleData, timeStamp: new Date().toISOString() }); } @@ -566,7 +566,7 @@ function MoveControls2D({ undoPoints.push({ type: 'Floor', lineData: actions[0].lineData as Floor, - newData: floorData as Floor, + newData: floorData, timeStamp: new Date().toISOString() }); } @@ -594,7 +594,7 @@ function MoveControls2D({ undoPoints.push({ type: 'Zone', lineData: actions[0].lineData as Zone, - newData: zoneData as Zone, + newData: zoneData, timeStamp: new Date().toISOString() }); } diff --git a/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx b/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx index 1b29174..6cf9307 100644 --- a/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection2D/selectionControls2D.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import * as THREE from "three"; import { useThree } from "@react-three/fiber"; -import { SelectionHelper } from "../selectionHelper"; +import { SelectionHelper } from "../helper/selectionHelper"; import { SelectionBox } from "three/examples/jsm/interactive/SelectionBox"; import useModuleStore from "../../../../../store/useModuleStore"; @@ -557,7 +557,7 @@ const SelectionControls2D: React.FC = () => { updatedPoints.push({ type: 'Floor', lineData: actions[0].lineData as Floor, - newData: floorData as Floor, + newData: floorData, timeStamp: new Date().toISOString() }); } @@ -593,7 +593,7 @@ const SelectionControls2D: React.FC = () => { updatedPoints.push({ type: 'Zone', lineData: actions[0].lineData as Zone, - newData: zoneData as Zone, + newData: zoneData, timeStamp: new Date().toISOString() }); } @@ -643,11 +643,9 @@ const SelectionControls2D: React.FC = () => { }; return ( - <> - + - ); }; diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx index 4aa8bc6..1f3dbe7 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/rotateControls3D.tsx @@ -270,7 +270,7 @@ function RotateControls3D() { const assetsToUpdate: AssetData[] = []; rotatedObjects.forEach((obj: THREE.Object3D) => { - if (obj && obj.userData.modelUuid) { + if (obj?.userData.modelUuid) { const asset = assetStore.getState().getAssetById(obj.userData.modelUuid); if (!asset) return; diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx index b512ca7..5de1f82 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/selectionControls3D.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useMemo, useRef } from "react"; import * as THREE from "three"; import { useThree } from "@react-three/fiber"; -import { SelectionHelper } from "../selectionHelper"; +import { SelectionHelper } from "../helper/selectionHelper"; import { SelectionBox } from "three/examples/jsm/interactive/SelectionBox"; import useModuleStore from "../../../../../store/useModuleStore"; @@ -19,7 +19,7 @@ import RotateControls3D from "./rotateControls3D"; import TransformControls3D from "./transformControls3D"; import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; -import { deleteFloorAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi'; +import { deleteFloorAssetApi } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi'; const SelectionControls3D: React.FC = () => { const { camera, controls, gl, scene, raycaster, pointer } = useThree(); @@ -288,7 +288,7 @@ const SelectionControls3D: React.FC = () => { // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: selectedMesh.userData.modelUuid, modelName: selectedMesh.userData.modelName, versionId: selectedVersion?.versionId || '', diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts index 1c56a0b..f434e13 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DRedoHandler.ts @@ -8,7 +8,7 @@ import { useSocketStore } from "../../../../../store/builder/store"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; -import { deleteFloorAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi"; +import { deleteFloorAssetApi } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi"; function use3DRedoHandler() { const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); @@ -177,7 +177,7 @@ function use3DRedoHandler() { if (!socket?.connected) { // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: assetData.modelUuid, modelName: assetData.modelName, versionId: selectedVersion?.versionId || '', diff --git a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts index 620832f..a8cc7d3 100644 --- a/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts +++ b/app/src/modules/scene/controls/undoRedoControls/handlers/use3DUndoHandler.ts @@ -8,7 +8,7 @@ import { useSocketStore } from "../../../../../store/builder/store"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; -import { deleteFloorAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi"; +import { deleteFloorAssetApi } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi"; function use3DUndoHandler() { const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); @@ -176,7 +176,7 @@ function use3DUndoHandler() { if (!socket?.connected) { // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: assetData.modelUuid, modelName: assetData.modelName, versionId: selectedVersion?.versionId || '', @@ -259,7 +259,7 @@ function use3DUndoHandler() { if (!socket?.connected) { // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: assetData.modelUuid, modelName: assetData.modelName, versionId: selectedVersion?.versionId || '', @@ -301,7 +301,7 @@ function use3DUndoHandler() { if (!socket?.connected) { // REST - deleteFloorAssetsApi({ + deleteFloorAssetApi({ modelUuid: assetData.modelUuid, modelName: assetData.modelName, versionId: selectedVersion?.versionId || '', diff --git a/app/src/modules/scene/controls/undoRedoControls/undoRedo3D/undoRedo3DControls.tsx b/app/src/modules/scene/controls/undoRedoControls/undoRedo3D/undoRedo3DControls.tsx index 9331320..3ca5633 100644 --- a/app/src/modules/scene/controls/undoRedoControls/undoRedo3D/undoRedo3DControls.tsx +++ b/app/src/modules/scene/controls/undoRedoControls/undoRedo3D/undoRedo3DControls.tsx @@ -20,7 +20,7 @@ function UndoRedo3DControls() { const { selectedVersion } = selectedVersionStore(); useEffect(() => { - console.log(undoStack, redoStack); + // console.log(undoStack, redoStack); }, [undoStack, redoStack]); useEffect(() => { diff --git a/app/src/modules/scene/postProcessing/outlineInstances/outlineInstance/outlineInstance.tsx b/app/src/modules/scene/postProcessing/outlineInstances/outlineInstance/outlineInstance.tsx index cc7874b..e5d46d4 100644 --- a/app/src/modules/scene/postProcessing/outlineInstances/outlineInstance/outlineInstance.tsx +++ b/app/src/modules/scene/postProcessing/outlineInstances/outlineInstance/outlineInstance.tsx @@ -16,7 +16,7 @@ function OutlineInstance({ xRay = true, width = 2000, edgeStrength = 5, -}: OutlineInstanceProps) { +}: Readonly) { if (!selection) return null; const sel = Array.isArray(selection) ? selection : [selection]; diff --git a/app/src/modules/scene/tools/measurementTool.tsx b/app/src/modules/scene/tools/measurementTool.tsx index 9f8189d..b71bf1d 100644 --- a/app/src/modules/scene/tools/measurementTool.tsx +++ b/app/src/modules/scene/tools/measurementTool.tsx @@ -5,268 +5,266 @@ import { useToolMode } from "../../../store/builder/store"; import { Html, Line } from "@react-three/drei"; const MeasurementTool = () => { - const { gl, raycaster, pointer, camera, scene } = useThree(); - const { toolMode } = useToolMode(); + const { gl, raycaster, pointer, camera, scene } = useThree(); + const { toolMode } = useToolMode(); - const [points, setPoints] = useState([]); - const [linePoints, setLinePoints] = useState(null); - const [axisLock, setAxisLock] = useState<"x" | "y" | "z" | null>(null); - const groupRef = useRef(null); - const keysPressed = useRef>(new Set()); + const [points, setPoints] = useState([]); + const [linePoints, setLinePoints] = useState(null); + const [axisLock, setAxisLock] = useState<"x" | "y" | "z" | null>(null); + const groupRef = useRef(null); + const keysPressed = useRef>(new Set()); - // Axis lock key handling - useEffect(() => { - const handleKeyDown = (e: KeyboardEvent) => { - if (e.altKey) { - if (e.key.toLowerCase() === "x") keysPressed.current.add("x"); - else if (e.key.toLowerCase() === "y") keysPressed.current.add("y"); - else if (e.key.toLowerCase() === "z") keysPressed.current.add("z"); + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.altKey) { + if (e.key.toLowerCase() === "x") keysPressed.current.add("x"); + else if (e.key.toLowerCase() === "y") keysPressed.current.add("y"); + else if (e.key.toLowerCase() === "z") keysPressed.current.add("z"); - if (keysPressed.current.has("x")) setAxisLock("x"); - else if (keysPressed.current.has("y")) setAxisLock("y"); - else if (keysPressed.current.has("z")) setAxisLock("z"); - } else if (e.key === "Escape") { - setPoints([]); - setLinePoints(null); - setAxisLock(null); - } - }; + if (keysPressed.current.has("x")) setAxisLock("x"); + else if (keysPressed.current.has("y")) setAxisLock("y"); + else if (keysPressed.current.has("z")) setAxisLock("z"); + } else if (e.key === "Escape") { + setPoints([]); + setLinePoints(null); + setAxisLock(null); + } + }; - const handleKeyUp = (e: KeyboardEvent) => { - keysPressed.current.delete(e.key.toLowerCase()); - if (keysPressed.current.has("x")) setAxisLock("x"); - else if (keysPressed.current.has("y")) setAxisLock("y"); - else if (keysPressed.current.has("z")) setAxisLock("z"); - else setAxisLock(null); - }; + const handleKeyUp = (e: KeyboardEvent) => { + keysPressed.current.delete(e.key.toLowerCase()); + if (keysPressed.current.has("x")) setAxisLock("x"); + else if (keysPressed.current.has("y")) setAxisLock("y"); + else if (keysPressed.current.has("z")) setAxisLock("z"); + else setAxisLock(null); + }; - window.addEventListener("keydown", handleKeyDown); - window.addEventListener("keyup", handleKeyUp); - return () => { - window.removeEventListener("keydown", handleKeyDown); - window.removeEventListener("keyup", handleKeyUp); - }; - }, []); + window.addEventListener("keydown", handleKeyDown); + window.addEventListener("keyup", handleKeyUp); + return () => { + window.removeEventListener("keydown", handleKeyDown); + window.removeEventListener("keyup", handleKeyUp); + }; + }, []); - const getLineColor = useCallback(() => { - switch (axisLock) { - case "x": - return "#d94522"; // Red for X axis - case "y": - return "#22ab2e"; // Green for Y axis - case "z": - return "#227bd9"; // Blue for Z axis - default: - return "#b18ef1"; // Default purple - } - }, [axisLock]); - - // Apply axis lock to a point - const applyAxisLock = useCallback( - (point: THREE.Vector3, referencePoint: THREE.Vector3) => { - const lockedPoint = point.clone(); - - switch (axisLock) { - case "x": - lockedPoint.y = referencePoint.y; - lockedPoint.z = referencePoint.z; - break; - case "y": - lockedPoint.x = referencePoint.x; - lockedPoint.z = referencePoint.z; - break; - case "z": - lockedPoint.x = referencePoint.x; - lockedPoint.y = referencePoint.y; - break; - } - - return lockedPoint; - }, - [axisLock] - ); - - useEffect(() => { - const canvasElement = gl.domElement; - let drag = false; - let isLeftMouseDown = false; - - const onMouseDown = () => { - isLeftMouseDown = true; - drag = false; - }; - - const onMouseUp = (evt: any) => { - isLeftMouseDown = false; - if (evt.button === 0 && !drag) { - raycaster.setFromCamera(pointer, camera); - const intersects = raycaster - .intersectObjects(scene.children, true) - .filter( - (intersect) => - !intersect.object.name.includes("Roof") && - !intersect.object.name.includes("MeasurementReference") && - !intersect.object.name.includes("agv-collider") && - !intersect.object.name.includes("zonePlane") && - !intersect.object.name.includes("SelectionGroup") && - !intersect.object.name.includes("selectionAssetGroup") && - !intersect.object.name.includes( - "SelectionGroupBoundingBoxLine" - ) && - !intersect.object.name.includes("SelectionGroupBoundingBox") && - !intersect.object.name.includes("SelectionGroupBoundingLine") && - intersect.object.type !== "GridHelper" - ); - - if (intersects.length > 0) { - let intersectionPoint = intersects[0].point.clone(); - if (axisLock && points.length > 0) { - intersectionPoint = applyAxisLock( - intersectionPoint, - points[points.length - 1] - ); - } - if (points.length < 2) { - setPoints([...points, intersectionPoint]); - } else { - setPoints([intersectionPoint]); - } + const getLineColor = useCallback(() => { + switch (axisLock) { + case "x": + return "#d94522"; // Red for X axis + case "y": + return "#22ab2e"; // Green for Y axis + case "z": + return "#227bd9"; // Blue for Z axis + default: + return "#b18ef1"; // Default purple } - } - }; + }, [axisLock]); - const onMouseMove = () => { - if (isLeftMouseDown) drag = true; - }; + const applyAxisLock = useCallback( + (point: THREE.Vector3, referencePoint: THREE.Vector3) => { + const lockedPoint = point.clone(); - const onContextMenu = (evt: any) => { - evt.preventDefault(); - if (!drag) { - setPoints([]); - setLinePoints(null); - } - }; + switch (axisLock) { + case "x": + lockedPoint.y = referencePoint.y; + lockedPoint.z = referencePoint.z; + break; + case "y": + lockedPoint.x = referencePoint.x; + lockedPoint.z = referencePoint.z; + break; + case "z": + lockedPoint.x = referencePoint.x; + lockedPoint.y = referencePoint.y; + break; + } - if (toolMode === "MeasurementScale") { - canvasElement.addEventListener("pointerdown", onMouseDown); - canvasElement.addEventListener("pointermove", onMouseMove); - canvasElement.addEventListener("pointerup", onMouseUp); - canvasElement.addEventListener("contextmenu", onContextMenu); - } else { - setPoints([]); - setLinePoints(null); - } + return lockedPoint; + }, + [axisLock] + ); - return () => { - canvasElement.removeEventListener("pointerdown", onMouseDown); - canvasElement.removeEventListener("pointermove", onMouseMove); - canvasElement.removeEventListener("pointerup", onMouseUp); - canvasElement.removeEventListener("contextmenu", onContextMenu); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [toolMode, camera, raycaster, pointer, scene, points, axisLock]); + useEffect(() => { + const canvasElement = gl.domElement; + let drag = false; + let isLeftMouseDown = false; - useFrame(() => { - if (points.length === 1) { - // live preview for second point - raycaster.setFromCamera(pointer, camera); - const intersects = raycaster - .intersectObjects(scene.children, true) - .filter( - (intersect) => - !intersect.object.name.includes("Roof") && - !intersect.object.name.includes("MeasurementReference") && - !intersect.object.name.includes("agv-collider") && - !intersect.object.name.includes("zonePlane") && - !intersect.object.name.includes("SelectionGroup") && - !intersect.object.name.includes("selectionAssetGroup") && - !intersect.object.name.includes("SelectionGroupBoundingBoxLine") && - !intersect.object.name.includes("SelectionGroupBoundingBox") && - !intersect.object.name.includes("SelectionGroupBoundingLine") && - intersect.object.type !== "GridHelper" - ); + const onMouseDown = () => { + isLeftMouseDown = true; + drag = false; + }; - if (intersects.length > 0) { - let tempEnd = intersects[0].point.clone(); - if (axisLock) { - tempEnd = applyAxisLock(tempEnd, points[0]); + const onMouseUp = (evt: any) => { + isLeftMouseDown = false; + if (evt.button === 0 && !drag) { + raycaster.setFromCamera(pointer, camera); + const intersects = raycaster + .intersectObjects(scene.children, true) + .filter( + (intersect) => + !intersect.object.name.includes("Roof") && + !intersect.object.name.includes("MeasurementReference") && + !intersect.object.name.includes("agv-collider") && + !intersect.object.name.includes("zonePlane") && + !intersect.object.name.includes("SelectionGroup") && + !intersect.object.name.includes("selectionAssetGroup") && + !intersect.object.name.includes( + "SelectionGroupBoundingBoxLine" + ) && + !intersect.object.name.includes("SelectionGroupBoundingBox") && + !intersect.object.name.includes("SelectionGroupBoundingLine") && + intersect.object.type !== "GridHelper" + ); + + if (intersects.length > 0) { + let intersectionPoint = intersects[0].point.clone(); + if (axisLock && points.length > 0) { + intersectionPoint = applyAxisLock( + intersectionPoint, + points[points.length - 1] + ); + } + if (points.length < 2) { + setPoints([...points, intersectionPoint]); + } else { + setPoints([intersectionPoint]); + } + } + } + }; + + const onMouseMove = () => { + if (isLeftMouseDown) drag = true; + }; + + const onContextMenu = (evt: any) => { + evt.preventDefault(); + if (!drag) { + setPoints([]); + setLinePoints(null); + } + }; + + if (toolMode === "MeasurementScale") { + canvasElement.addEventListener("pointerdown", onMouseDown); + canvasElement.addEventListener("pointermove", onMouseMove); + canvasElement.addEventListener("pointerup", onMouseUp); + canvasElement.addEventListener("contextmenu", onContextMenu); + } else { + setPoints([]); + setLinePoints(null); } - updateMeasurement(points[0], tempEnd); - } - } else if (points.length === 2) { - // second point already fixed - updateMeasurement(points[0], points[1]); - } else { - setLinePoints(null); - } - }); - const updateMeasurement = (start: THREE.Vector3, end: THREE.Vector3) => { - setLinePoints([start.clone(), end.clone()]); - }; + return () => { + canvasElement.removeEventListener("pointerdown", onMouseDown); + canvasElement.removeEventListener("pointermove", onMouseMove); + canvasElement.removeEventListener("pointerup", onMouseUp); + canvasElement.removeEventListener("contextmenu", onContextMenu); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [toolMode, camera, raycaster, pointer, scene, points, axisLock]); - return ( - - {linePoints && ( - <> - {/* Outline line */} - + useFrame(() => { + if (points.length === 1) { + // live preview for second point + raycaster.setFromCamera(pointer, camera); + const intersects = raycaster + .intersectObjects(scene.children, true) + .filter( + (intersect) => + !intersect.object.name.includes("Roof") && + !intersect.object.name.includes("MeasurementReference") && + !intersect.object.name.includes("agv-collider") && + !intersect.object.name.includes("zonePlane") && + !intersect.object.name.includes("SelectionGroup") && + !intersect.object.name.includes("selectionAssetGroup") && + !intersect.object.name.includes("SelectionGroupBoundingBoxLine") && + !intersect.object.name.includes("SelectionGroupBoundingBox") && + !intersect.object.name.includes("SelectionGroupBoundingLine") && + intersect.object.type !== "GridHelper" + ); - {/* Main line */} - - - )} + if (intersects.length > 0) { + let tempEnd = intersects[0].point.clone(); + if (axisLock) { + tempEnd = applyAxisLock(tempEnd, points[0]); + } + updateMeasurement(points[0], tempEnd); + } + } else if (points.length === 2) { + // second point already fixed + updateMeasurement(points[0], points[1]); + } else { + setLinePoints(null); + } + }); - {points.map((point, index) => ( - -
- - ))} + const updateMeasurement = (start: THREE.Vector3, end: THREE.Vector3) => { + setLinePoints([start.clone(), end.clone()]); + }; - {linePoints && linePoints.length === 2 && ( - -
{linePoints[0].distanceTo(linePoints[1]).toFixed(2)} m
- - )} -
- ); + return ( + + {linePoints && ( + <> + {/* Outline line */} + + + {/* Main line */} + + + )} + + {points.map((point, index) => ( + +
+ + ))} + + {linePoints && linePoints.length === 2 && ( + +
{linePoints[0].distanceTo(linePoints[1]).toFixed(2)} m
+ + )} +
+ ); }; export default MeasurementTool; diff --git a/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts b/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts index 37c991c..feef780 100644 --- a/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts +++ b/app/src/modules/simulation/actions/storageUnit/actionHandler/useRetrieveHandler.ts @@ -192,7 +192,7 @@ export function useRetrieveHandler() { retrieveLogStatus(material.materialName, `is being picked by ${armBot?.modelName}`); } } - } else if (storageAction) { + } else { const material = createNewMaterial( lastMaterial.materialId, lastMaterial.materialType, diff --git a/app/src/modules/simulation/actions/useActionHandler.ts b/app/src/modules/simulation/actions/useActionHandler.ts index ec02943..73c34bb 100644 --- a/app/src/modules/simulation/actions/useActionHandler.ts +++ b/app/src/modules/simulation/actions/useActionHandler.ts @@ -27,25 +27,25 @@ export function useActionHandler() { try { switch (action.actionType) { case 'default': case 'spawn': case 'swap': case 'delay': case 'despawn': - handleConveyorAction(action as ConveyorAction, materialId as string); + handleConveyorAction(action, materialId as string); break; case 'travel': - handleVehicleAction(action as VehicleAction, materialId as string); + handleVehicleAction(action, materialId as string); break; case 'pickAndPlace': - handleRoboticArmAction(action as RoboticArmAction, materialId as string); + handleRoboticArmAction(action, materialId as string); break; case 'process': - handleMachineAction(action as MachineAction, materialId as string); + handleMachineAction(action, materialId as string); break; case 'store': case 'retrieve': - handleStorageAction(action as StorageAction, materialId as string); + handleStorageAction(action, materialId as string); break; case 'worker': case 'manufacturer': - handleHumanAction(action as HumanAction, materialId as string); + handleHumanAction(action, materialId as string); break; case 'pickAndDrop': - handleCraneAction(action as CraneAction, materialId as string); + handleCraneAction(action, materialId as string); break; default: console.warn(`Unknown action type: ${(action as Action).actionType}`); diff --git a/app/src/modules/simulation/analysis/ROI/roiData.tsx b/app/src/modules/simulation/analysis/ROI/roiData.tsx index b8bdf0f..662ba2b 100644 --- a/app/src/modules/simulation/analysis/ROI/roiData.tsx +++ b/app/src/modules/simulation/analysis/ROI/roiData.tsx @@ -51,7 +51,6 @@ export default function ROIData() { !isNaN(materialCost) && !isNaN(productionPeriod) && !isNaN(salvageValue) && !isNaN(sellingPrice) && !isNaN(shiftLength) && !isNaN(shiftsPerDay) && !isNaN(workingDaysPerYear) && productionCapacityData > 0) { - // const totalHoursPerYear = shiftLength * shiftsPerDay * workingDaysPerYear; // const annualProductionUnits = productionCapacityData * totalHoursPerYear; // const annualRevenue = annualProductionUnits * sellingPrice; diff --git a/app/src/modules/simulation/analysis/throughPut/throughPutData.tsx b/app/src/modules/simulation/analysis/throughPut/throughPutData.tsx index f6ea5c1..31fbf8a 100644 --- a/app/src/modules/simulation/analysis/throughPut/throughPutData.tsx +++ b/app/src/modules/simulation/analysis/throughPut/throughPutData.tsx @@ -100,7 +100,6 @@ export default function ThroughPutData() { .forEach(storage => { if (storage.activeTime > 0) { // totalActiveTime += storage.activeTime; - // } }); } @@ -178,7 +177,7 @@ export default function ThroughPutData() { } const allInactive = !anyArmActive && !anyVehicleActive && !anyMachineActive; - if (materials.length >= 0 && materialHistory.length > 0) { + if (materialHistory.length > 0) { let totalCycleTimeSum = 0; let cycleCount = 0; diff --git a/app/src/modules/simulation/conveyor/conveyor.tsx b/app/src/modules/simulation/conveyor/conveyor.tsx index bd21523..1067b5a 100644 --- a/app/src/modules/simulation/conveyor/conveyor.tsx +++ b/app/src/modules/simulation/conveyor/conveyor.tsx @@ -3,11 +3,9 @@ import ConveyorInstances from './instances/conveyorInstances' function Conveyor() { return ( - <> - + - ) } diff --git a/app/src/modules/simulation/conveyor/instances/conveyorInstances.tsx b/app/src/modules/simulation/conveyor/instances/conveyorInstances.tsx index 75557ed..dcdc40e 100644 --- a/app/src/modules/simulation/conveyor/instances/conveyorInstances.tsx +++ b/app/src/modules/simulation/conveyor/instances/conveyorInstances.tsx @@ -1,4 +1,3 @@ -import React from 'react' import ConveyorInstance from './conveyorInstance/conveyorInstance' import { useSceneContext } from '../../../scene/sceneContext'; diff --git a/app/src/modules/simulation/crane/crane.tsx b/app/src/modules/simulation/crane/crane.tsx index fdbb430..b8619ba 100644 --- a/app/src/modules/simulation/crane/crane.tsx +++ b/app/src/modules/simulation/crane/crane.tsx @@ -4,11 +4,9 @@ import CraneInstances from './instances/craneInstances' function Crane() { return ( - <> - + - ) } diff --git a/app/src/modules/simulation/crane/instances/animator/pillarJibAnimator.tsx b/app/src/modules/simulation/crane/instances/animator/pillarJibAnimator.tsx index 2af3223..cb4d863 100644 --- a/app/src/modules/simulation/crane/instances/animator/pillarJibAnimator.tsx +++ b/app/src/modules/simulation/crane/instances/animator/pillarJibAnimator.tsx @@ -12,14 +12,14 @@ function PillarJibAnimator({ animationPhase, setAnimationPhase, onAnimationComplete -}: { +}: Readonly<{ crane: CraneStatus; points: [THREE.Vector3, THREE.Vector3] | null; setPoints: (points: [THREE.Vector3, THREE.Vector3] | null) => void; animationPhase: string; setAnimationPhase: (phase: string) => void; onAnimationComplete: (action: string) => void; -}) { +}>) { const { scene } = useThree(); const { assetStore, productStore, materialStore } = useSceneContext(); const { getActionByUuid, getPointByUuid } = productStore(); @@ -95,7 +95,7 @@ function PillarJibAnimator({ useEffect(() => { const model = scene.getObjectByProperty('uuid', crane.modelUuid); - if (!model || !model.userData.fieldData) return; + if (!model?.userData.fieldData) return; const base = model.getObjectByName('base'); const trolley = model.getObjectByName('trolley'); diff --git a/app/src/modules/simulation/crane/instances/helper/pillarJibHelper.tsx b/app/src/modules/simulation/crane/instances/helper/pillarJibHelper.tsx index 40ac35a..0c07027 100644 --- a/app/src/modules/simulation/crane/instances/helper/pillarJibHelper.tsx +++ b/app/src/modules/simulation/crane/instances/helper/pillarJibHelper.tsx @@ -7,11 +7,11 @@ function PillarJibHelper({ crane, points, isHelperNeeded -}: { +}: Readonly<{ crane: CraneStatus, points: [THREE.Vector3, THREE.Vector3] | null; isHelperNeeded: boolean; -}) { +}>) { const { scene } = useThree(); const [clampedPoints, setClampedPoints] = useState<[THREE.Vector3, THREE.Vector3]>(); const [isInside, setIsInside] = useState<[boolean, boolean]>([false, false]); diff --git a/app/src/modules/simulation/crane/instances/instance/pillarJibInstance.tsx b/app/src/modules/simulation/crane/instances/instance/pillarJibInstance.tsx index 4e18eb2..67fcaab 100644 --- a/app/src/modules/simulation/crane/instances/instance/pillarJibInstance.tsx +++ b/app/src/modules/simulation/crane/instances/instance/pillarJibInstance.tsx @@ -9,7 +9,7 @@ import PillarJibAnimator from '../animator/pillarJibAnimator' import PillarJibHelper from '../helper/pillarJibHelper' import MaterialAnimator from '../animator/materialAnimator'; -function PillarJibInstance({ crane }: { crane: CraneStatus }) { +function PillarJibInstance({ crane }: { readonly crane: CraneStatus }) { const { isPlaying } = usePlayButtonStore(); const { craneStore, productStore, humanStore, assetStore } = useSceneContext(); const { triggerPointActions } = useTriggerHandler(); diff --git a/app/src/modules/simulation/events/arrows/arrows.tsx b/app/src/modules/simulation/events/arrows/arrows.tsx index 0b8e821..18db60c 100644 --- a/app/src/modules/simulation/events/arrows/arrows.tsx +++ b/app/src/modules/simulation/events/arrows/arrows.tsx @@ -190,12 +190,12 @@ export function ArrowOnQuadraticBezier({ mid, end, color = "#42a5f5", -}: { +}: Readonly<{ start: number[]; mid: number[]; end: number[]; color?: string; -}) { +}>) { const minScale = 0.5; const maxScale = 5; const segmentSize = 0.3; diff --git a/app/src/modules/simulation/events/points/creator/pointsCreator.tsx b/app/src/modules/simulation/events/points/creator/pointsCreator.tsx index 9fb27a9..f2353dc 100644 --- a/app/src/modules/simulation/events/points/creator/pointsCreator.tsx +++ b/app/src/modules/simulation/events/points/creator/pointsCreator.tsx @@ -100,7 +100,7 @@ function PointsCreator() { const updatedEvents: EventsSchema[] = []; if (triggers.length > 0) { - triggers.map((trigger) => { + triggers.forEach((trigger) => { const event = removeTrigger(selectedProduct.productUuid, trigger.triggerUuid); if (event) { updatedEvents.push(event); @@ -115,7 +115,7 @@ function PointsCreator() { } if (updatedEvents.length > 0) { - updatedEvents.map((updatedEvent) => { + updatedEvents.forEach((updatedEvent) => { updateBackend( selectedProduct.productName, selectedProduct.productUuid, diff --git a/app/src/modules/simulation/events/points/functions/handleAddEventToProduct.ts b/app/src/modules/simulation/events/points/functions/handleAddEventToProduct.ts index 0ba13a7..7cafc1d 100644 --- a/app/src/modules/simulation/events/points/functions/handleAddEventToProduct.ts +++ b/app/src/modules/simulation/events/points/functions/handleAddEventToProduct.ts @@ -29,8 +29,6 @@ export const handleAddEventToProduct = ({ versionId, projectId: projectId || '', eventDatas: event - }).then((data) => { - // console.log(data); }) if (clearSelectedAsset) { diff --git a/app/src/modules/simulation/events/points/instances/instance/pointInstance.tsx b/app/src/modules/simulation/events/points/instances/instance/pointInstance.tsx index cfac4bb..6671b27 100644 --- a/app/src/modules/simulation/events/points/instances/instance/pointInstance.tsx +++ b/app/src/modules/simulation/events/points/instances/instance/pointInstance.tsx @@ -23,7 +23,7 @@ export default function PointInstance({ modelUuid, color, ...meshProps -}: PointInstanceProps) { +}: Readonly) { const ref = useRef(null); const { setSelectedEventSphere } = useSelectedEventSphere(); const { deletableEventSphere, setDeletableEventSphere, clearDeletableEventSphere } = useDeletableEventSphere(); @@ -59,7 +59,7 @@ export default function PointInstance({ const updatedEvents: EventsSchema[] = []; if (triggers.length > 0) { - triggers.map((trigger) => { + triggers.forEach((trigger) => { const event = removeTrigger(selectedProduct.productUuid, trigger.triggerUuid); if (event) { updatedEvents.push(event); @@ -74,7 +74,7 @@ export default function PointInstance({ } if (updatedEvents.length > 0) { - updatedEvents.map((updatedEvent) => { + updatedEvents.forEach((updatedEvent) => { updateBackend( selectedProduct.productName, selectedProduct.productUuid, diff --git a/app/src/modules/simulation/events/points/points.tsx b/app/src/modules/simulation/events/points/points.tsx index c8b9d6d..33335c4 100644 --- a/app/src/modules/simulation/events/points/points.tsx +++ b/app/src/modules/simulation/events/points/points.tsx @@ -1,10 +1,11 @@ import PointsCreator from './creator/pointsCreator' function Points() { + return ( - <> - - + + + ) } diff --git a/app/src/modules/simulation/events/triggerConnections/triggerConnector.tsx b/app/src/modules/simulation/events/triggerConnections/triggerConnector.tsx index 21a85c3..400eaf1 100644 --- a/app/src/modules/simulation/events/triggerConnections/triggerConnector.tsx +++ b/app/src/modules/simulation/events/triggerConnections/triggerConnector.tsx @@ -31,7 +31,7 @@ function TriggerConnector() { const { selectedProduct } = selectedProductStore(); const [hoveredLineKey, setHoveredLineKey] = useState(null); const groupRefs = useRef>({}); - const [helperlineColor, setHelperLineColor] = useState("red"); + const [helperLineColor, setHelperLineColor] = useState("red"); const [currentLine, setCurrentLine] = useState<{ start: THREE.Vector3; end: THREE.Vector3; mid: THREE.Vector3; } | null>(null); const { toolMode } = useToolMode(); const { isPlaying } = usePlayButtonStore(); @@ -81,7 +81,7 @@ function TriggerConnector() { event.points.forEach(point => { if (point.action?.triggers) { point.action.triggers.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -98,7 +98,7 @@ function TriggerConnector() { const point = event.point; if (point.action?.triggers) { point.action.triggers.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -114,7 +114,7 @@ function TriggerConnector() { const point = event.point; point.actions?.forEach(action => { action.triggers?.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -126,11 +126,11 @@ function TriggerConnector() { }); } // Handle Machine point - else if (event.type === "machine" && 'point' in event) { + else if ((event.type === "machine") && 'point' in event) { const point = event.point; if (point.action?.triggers) { point.action.triggers.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -146,7 +146,7 @@ function TriggerConnector() { const point = event.point; point.actions?.forEach(action => { action.triggers?.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -162,7 +162,7 @@ function TriggerConnector() { const point = event.point; point.actions?.forEach(action => { action.triggers?.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -178,7 +178,7 @@ function TriggerConnector() { const point = event.point; point.actions?.forEach(action => { action.triggers?.forEach(trigger => { - if (trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint) { + if (trigger.triggeredAsset?.triggeredPoint) { newConnections.push({ id: `${point.uuid}-${trigger.triggeredAsset.triggeredPoint.pointUuid}-${trigger.triggerUuid}`, startPointUuid: point.uuid, @@ -540,7 +540,7 @@ function TriggerConnector() { start={currentLine.start.toArray()} end={currentLine.end.toArray()} mid={currentLine.mid.toArray()} - color={helperlineColor} + color={helperLineColor} lineWidth={4} dashed dashSize={1} @@ -550,7 +550,7 @@ function TriggerConnector() { start={currentLine.start.toArray()} mid={currentLine.mid.toArray()} end={currentLine.end.toArray()} - color={helperlineColor} + color={helperLineColor} /> )} diff --git a/app/src/modules/simulation/human/human.tsx b/app/src/modules/simulation/human/human.tsx index 767269c..f3ae920 100644 --- a/app/src/modules/simulation/human/human.tsx +++ b/app/src/modules/simulation/human/human.tsx @@ -11,7 +11,7 @@ function Human() { const { selectedAnimation } = useSelectedAnimation(); const { selectedEventSphere } = useSelectedEventSphere(); const { isPlaying } = usePlayButtonStore(); - const [isVehicleSelected, setIsHumanSelected] = useState(false); + const [isHumanSelected, setIsHumanSelected] = useState(false); useEffect(() => { if (selectedEventSphere) { @@ -29,7 +29,7 @@ function Human() { - {isVehicleSelected && selectedEventSphere && !isPlaying && + {isHumanSelected && selectedEventSphere && !isPlaying && } diff --git a/app/src/modules/simulation/human/instances/animator/manufacturerAnimator.tsx b/app/src/modules/simulation/human/instances/animator/manufacturerAnimator.tsx index 45d7658..db8ff5f 100644 --- a/app/src/modules/simulation/human/instances/animator/manufacturerAnimator.tsx +++ b/app/src/modules/simulation/human/instances/animator/manufacturerAnimator.tsx @@ -28,7 +28,7 @@ function ManufacturerAnimator({ path, handleCallBack, human, reset }: Readonly(false); const action = getActionByUuid(selectedProduct.productUuid, human?.currentAction?.actionUuid || ''); const [objectRotation, setObjectRotation] = useState<[number, number, number] | null>((action as HumanAction)?.manufacturePoint?.rotation || [0, 0, 0]); - const [restRotation, setRestingRotation] = useState(true); + const [restingRotation, setRestingRotation] = useState(true); const [currentPath, setCurrentPath] = useState<[number, number, number][]>([]); const { scene } = useThree(); @@ -124,7 +124,7 @@ function ManufacturerAnimator({ path, handleCallBack, human, reset }: Readonly= totalDistance) { - if (restRotation && objectRotation) { + if (restingRotation && objectRotation) { const targetEuler = new THREE.Euler(0, objectRotation[1], 0); const baseQuaternion = new THREE.Quaternion().setFromEuler(targetEuler); const y180 = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI); diff --git a/app/src/modules/simulation/human/instances/animator/operatorAnimator.tsx b/app/src/modules/simulation/human/instances/animator/operatorAnimator.tsx index 14934df..62fb8f4 100644 --- a/app/src/modules/simulation/human/instances/animator/operatorAnimator.tsx +++ b/app/src/modules/simulation/human/instances/animator/operatorAnimator.tsx @@ -29,7 +29,7 @@ function OperatorAnimator({ path, handleCallBack, human, reset }: Readonly(false); const action = getActionByUuid(selectedProduct.productUuid, human?.currentAction?.actionUuid || ''); const [objectRotation, setObjectRotation] = useState<[number, number, number] | null>((action as HumanAction)?.pickUpPoint?.rotation || [0, 0, 0]); - const [restRotation, setRestingRotation] = useState(true); + const [restingRotation, setRestingRotation] = useState(true); const [currentPath, setCurrentPath] = useState<[number, number, number][]>([]); const { scene } = useThree(); @@ -133,7 +133,7 @@ function OperatorAnimator({ path, handleCallBack, human, reset }: Readonly= totalDistance) { - if (restRotation && objectRotation) { + if (restingRotation && objectRotation) { const targetEuler = new THREE.Euler(0, objectRotation[1], 0); const baseQuaternion = new THREE.Quaternion().setFromEuler(targetEuler); const y180 = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI); diff --git a/app/src/modules/simulation/human/instances/animator/workerAnimator.tsx b/app/src/modules/simulation/human/instances/animator/workerAnimator.tsx index 6e6d2fc..eb6c5f9 100644 --- a/app/src/modules/simulation/human/instances/animator/workerAnimator.tsx +++ b/app/src/modules/simulation/human/instances/animator/workerAnimator.tsx @@ -30,7 +30,7 @@ function WorkerAnimator({ path, handleCallBack, human, reset, startUnloadingProc const completedRef = useRef(false); const action = getActionByUuid(selectedProduct.productUuid, human?.currentAction?.actionUuid || ''); const [objectRotation, setObjectRotation] = useState<[number, number, number] | null>((action as HumanAction)?.pickUpPoint?.rotation || [0, 0, 0]); - const [restRotation, setRestingRotation] = useState(true); + const [restingRotation, setRestingRotation] = useState(true); const [currentPath, setCurrentPath] = useState<[number, number, number][]>([]); const { scene } = useThree(); @@ -132,7 +132,7 @@ function WorkerAnimator({ path, handleCallBack, human, reset, startUnloadingProc } else { setCurrentAnimation(human.modelUuid, 'walking', true, true, true); } - } else { + } else if (!isAligned) { if (human.currentMaterials.length > 0 && (human.currentPhase !== 'init-pickup' && human.currentPhase !== 'init-manufacture' && human.currentPhase !== 'drop-pickup')) { setCurrentAnimation(human.modelUuid, 'idle_with_box', true, true, true); } else { @@ -142,7 +142,7 @@ function WorkerAnimator({ path, handleCallBack, human, reset, startUnloadingProc } if (progressRef.current >= totalDistance) { - if (restRotation && objectRotation) { + if (restingRotation && objectRotation) { const targetEuler = new THREE.Euler(0, objectRotation[1], 0); const baseQuaternion = new THREE.Quaternion().setFromEuler(targetEuler); const y180 = new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), Math.PI); diff --git a/app/src/modules/simulation/human/instances/instance/actions/manufacturerInstance.tsx b/app/src/modules/simulation/human/instances/instance/actions/manufacturerInstance.tsx index ae74a14..d9ec0d9 100644 --- a/app/src/modules/simulation/human/instances/instance/actions/manufacturerInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/actions/manufacturerInstance.tsx @@ -10,7 +10,7 @@ import { useProductContext } from '../../../../products/productContext'; import ManufacturerAnimator from '../../animator/manufacturerAnimator'; -function ManufacturerInstance({ human }: { human: HumanStatus }) { +function ManufacturerInstance({ human }: { readonly human: HumanStatus }) { const { navMesh } = useNavMesh(); const { isPlaying } = usePlayButtonStore(); const { scene } = useThree(); @@ -207,14 +207,12 @@ function ManufacturerInstance({ human }: { human: HumanStatus }) { } return ( - <> - - + ) } diff --git a/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx b/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx index fce077f..4500482 100644 --- a/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/actions/operatorInstance.tsx @@ -4,30 +4,21 @@ import { useThree } from '@react-three/fiber'; import { NavMeshQuery } from '@recast-navigation/core'; import { useNavMesh } from '../../../../../../store/builder/store'; import { useAnimationPlaySpeed, usePauseButtonStore, usePlayButtonStore } from '../../../../../../store/usePlayButtonStore'; -import { useTriggerHandler } from '../../../../triggers/triggerHandler/useTriggerHandler'; import { useSceneContext } from '../../../../../scene/sceneContext'; import { useProductContext } from '../../../../products/productContext'; import OperatorAnimator from '../../animator/operatorAnimator'; -function OperatorInstance({ human }: { human: HumanStatus }) { +function OperatorInstance({ human }: { readonly human: HumanStatus }) { const { navMesh } = useNavMesh(); const { isPlaying } = usePlayButtonStore(); const { scene } = useThree(); - const { assetStore, materialStore, armBotStore, conveyorStore, machineStore, vehicleStore, humanStore, storageUnitStore, craneStore, productStore } = useSceneContext(); - const { removeMaterial, setEndTime, setIsVisible } = materialStore(); - const { getStorageUnitById } = storageUnitStore(); - const { getArmBotById } = armBotStore(); - const { getConveyorById } = conveyorStore(); - const { getVehicleById } = vehicleStore(); - const { getMachineById } = machineStore(); - const { getCraneById } = craneStore(); - const { triggerPointActions } = useTriggerHandler(); + const { assetStore, humanStore, productStore } = useSceneContext(); const { setCurrentAnimation, resetAnimation, getAssetById } = assetStore(); - const { getActionByUuid, getEventByModelUuid, getTriggerByUuid } = productStore(); + const { getActionByUuid } = productStore(); const { selectedProductStore } = useProductContext(); const { selectedProduct } = selectedProductStore(); - const { setHumanActive, setHumanState, clearCurrentMaterials, setHumanLoad, setHumanScheduled, decrementHumanLoad, removeLastMaterial, incrementIdleTime, incrementActiveTime, resetTime, setCurrentPhase } = humanStore(); + const { setHumanActive, setHumanState, setHumanLoad, setHumanScheduled, resetTime, setCurrentPhase } = humanStore(); const [path, setPath] = useState<[number, number, number][]>([]); const pauseTimeRef = useRef(null); @@ -156,14 +147,12 @@ function OperatorInstance({ human }: { human: HumanStatus }) { } return ( - <> - - + ) } diff --git a/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx b/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx index 078f203..42d7d76 100644 --- a/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/actions/workerInstance.tsx @@ -10,7 +10,7 @@ import { useProductContext } from '../../../../products/productContext'; import WorkerAnimator from '../../animator/workerAnimator'; -function WorkerInstance({ human }: { human: HumanStatus }) { +function WorkerInstance({ human }: { readonly human: HumanStatus }) { const { navMesh } = useNavMesh(); const { isPlaying } = usePlayButtonStore(); const { scene } = useThree(); @@ -625,15 +625,13 @@ function WorkerInstance({ human }: { human: HumanStatus }) { } return ( - <> - - + ) } diff --git a/app/src/modules/simulation/human/instances/instance/humanInstance.tsx b/app/src/modules/simulation/human/instances/instance/humanInstance.tsx index 593e82a..8db35e3 100644 --- a/app/src/modules/simulation/human/instances/instance/humanInstance.tsx +++ b/app/src/modules/simulation/human/instances/instance/humanInstance.tsx @@ -8,7 +8,7 @@ import ManufacturerInstance from './actions/manufacturerInstance'; import WorkerInstance from './actions/workerInstance'; import OperatorInstance from './actions/operatorInstance'; -function HumanInstance({ human }: { human: HumanStatus }) { +function HumanInstance({ human }: {readonly human: HumanStatus }) { const { isPlaying } = usePlayButtonStore(); const { humanStore, productStore } = useSceneContext(); const { getActionByUuid } = productStore(); diff --git a/app/src/modules/simulation/human/instances/instance/humanUi.tsx b/app/src/modules/simulation/human/instances/instance/humanUi.tsx index abaceb5..730cb81 100644 --- a/app/src/modules/simulation/human/instances/instance/humanUi.tsx +++ b/app/src/modules/simulation/human/instances/instance/humanUi.tsx @@ -72,7 +72,7 @@ function HumanUi() { if (!selectedEventSphere || !selectedAction?.actionId) return; const selectedHuman = getHumanById(selectedEventSphere.userData.modelUuid); - if (!selectedHuman || !selectedHuman.point?.actions) return; + if (!selectedHuman?.point?.actions) return; setSelectedHumanData({ position: selectedHuman.position, @@ -150,10 +150,14 @@ function HumanUi() { if (outerGroup.current) { localPoint = outerGroup.current.worldToLocal(intersection.clone()); } - const marker = - state === "start" ? startMarker.current : - state === "end" ? endMarker.current : - manufactureMarker.current; + let marker; + if (state === "start") { + marker = startMarker.current; + } else if (state === "end") { + marker = endMarker.current; + } else { + marker = manufactureMarker.current; + } if (marker && localPoint) { const markerPos = new Vector3().copy(marker.position); dragOffset.current.copy(markerPos.sub(localPoint)); @@ -257,11 +261,14 @@ function HumanUi() { const deltaX = currentPointerX - prevMousePos.current.x; prevMousePos.current.x = currentPointerX; - const marker = - isRotating === "start" ? startMarker.current : - isRotating === "end" ? endMarker.current : - manufactureMarker.current; - + let marker; + if (isRotating === "start") { + marker = startMarker.current; + } else if (isRotating === "end") { + marker = endMarker.current; + } else { + marker = manufactureMarker.current; + } if (marker) { const rotationSpeed = 10; marker.rotation.y += deltaX * rotationSpeed; diff --git a/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx b/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx index f45f909..297b22f 100644 --- a/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx +++ b/app/src/modules/simulation/machine/instances/machineInstance/machineInstance.tsx @@ -131,11 +131,9 @@ function MachineInstance({ machineDetail }: { readonly machineDetail: MachineSta } return ( - <> - + - ) } diff --git a/app/src/modules/simulation/machine/instances/machineInstances.tsx b/app/src/modules/simulation/machine/instances/machineInstances.tsx index 2db71f1..65331a4 100644 --- a/app/src/modules/simulation/machine/instances/machineInstances.tsx +++ b/app/src/modules/simulation/machine/instances/machineInstances.tsx @@ -5,20 +5,20 @@ import { useSceneContext } from "../../../scene/sceneContext"; import { useViewSceneStore } from "../../../../store/builder/store"; function MachineInstances() { - const { machineStore } = useSceneContext(); - const { machines } = machineStore(); - const { viewSceneLabels } = useViewSceneStore(); + const { machineStore } = useSceneContext(); + const { machines } = machineStore(); + const { viewSceneLabels } = useViewSceneStore(); - return ( - <> - {machines.map((machine: MachineStatus) => ( - - - {viewSceneLabels && } - - ))} - - ); + return ( + <> + {machines.map((machine: MachineStatus) => ( + + + {viewSceneLabels && } + + ))} + + ); } export default MachineInstances; diff --git a/app/src/modules/simulation/machine/machine.tsx b/app/src/modules/simulation/machine/machine.tsx index 9e16e83..5ebcbb6 100644 --- a/app/src/modules/simulation/machine/machine.tsx +++ b/app/src/modules/simulation/machine/machine.tsx @@ -3,11 +3,9 @@ import MachineInstances from './instances/machineInstances' function Machine() { return ( - <> - + - ) } diff --git a/app/src/modules/simulation/materials/materials.tsx b/app/src/modules/simulation/materials/materials.tsx index 296f96c..d7d3d4a 100644 --- a/app/src/modules/simulation/materials/materials.tsx +++ b/app/src/modules/simulation/materials/materials.tsx @@ -1,8 +1,8 @@ import { useEffect } from 'react' -import MaterialInstances from './instances/materialInstances' import { usePlayButtonStore, useResetButtonStore } from '../../../store/usePlayButtonStore'; -// import MaterialCollisionDetector from './collisionDetection/materialCollitionDetector'; import { useSceneContext } from '../../scene/sceneContext'; +import MaterialInstances from './instances/materialInstances' +// import MaterialCollisionDetector from './collisionDetection/materialCollitionDetector'; function Materials() { const { materialStore } = useSceneContext(); diff --git a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx index d7a5058..0bc142d 100644 --- a/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx +++ b/app/src/modules/simulation/roboticArm/instances/animator/roboticArmAnimator.tsx @@ -21,7 +21,7 @@ interface RoboticArmAnimatorProps { currentPhase: string; } -function RoboticArmAnimator({ HandleCallback, restPosition, ikSolver, targetBone, armBot, path, currentPhase }: RoboticArmAnimatorProps) { +function RoboticArmAnimator({ HandleCallback, restPosition, ikSolver, targetBone, armBot, path, currentPhase }: Readonly) { const progressRef = useRef(0); const curveRef = useRef(null); const totalDistanceRef = useRef(0); diff --git a/app/src/modules/simulation/roboticArm/instances/armInstance/roboticArmInstance.tsx b/app/src/modules/simulation/roboticArm/instances/armInstance/roboticArmInstance.tsx index ee196f5..9c3fff6 100644 --- a/app/src/modules/simulation/roboticArm/instances/armInstance/roboticArmInstance.tsx +++ b/app/src/modules/simulation/roboticArm/instances/armInstance/roboticArmInstance.tsx @@ -17,7 +17,6 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { const pauseTimeRef = useRef(null); const isPausedRef = useRef(false); const isSpeedRef = useRef(null); - let startTime: number; const { selectedProductStore } = useProductContext(); const { materialStore, armBotStore, vehicleStore, storageUnitStore, productStore, assetStore } = useSceneContext(); @@ -45,9 +44,9 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { const action = getActionByUuid(selectedProduct.productUuid, armBot.currentAction?.actionUuid || ''); const handlePickUpTrigger = () => { - if (armBot.currentAction && armBot.currentAction.materialId) { + if (armBot?.currentAction?.materialId) { const material = getMaterialById(armBot.currentAction.materialId); - if (material && material.previous && material.previous.modelUuid) { + if (material?.previous?.modelUuid) { const previousModel = getEventByActionUuid(selectedProduct.productUuid, material.previous.actionUuid); if (previousModel) { if (previousModel.type === 'transfer') { @@ -77,7 +76,7 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { if (armBot.currentAction) { const action = getActionByUuid(selectedProduct.productUuid, armBot.currentAction.actionUuid); const model = getEventByModelUuid(selectedProduct.productUuid, action?.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || ''); - if (action && action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid) { + if (action?.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid) { if (!model) return; if (model.type === 'transfer') { setIsVisible(armBot.currentAction.materialId || '', true); @@ -124,7 +123,6 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { resetAsset(armBot.modelUuid); isPausedRef.current = false pauseTimeRef.current = null - startTime = 0 activeSecondsElapsed.current = 0; idleSecondsElapsed.current = 0; previousTimeRef.current = null; @@ -235,7 +233,6 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { setArmBotActive(armBot.modelUuid, true); setArmBotState(armBot.modelUuid, "running"); setCurrentPhase("start-to-end"); - startTime = 0 if (!action) return; const startPoint = (action as RoboticArmAction).process.startPoint; const endPoint = (action as RoboticArmAction).process.endPoint; @@ -254,7 +251,6 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { setArmBotActive(armBot.modelUuid, true); setArmBotState(armBot.modelUuid, "running"); setCurrentPhase("end-to-rest"); - startTime = 0; if (!action) return; const endPoint = (action as RoboticArmAction).process.endPoint; if (endPoint) { @@ -280,7 +276,6 @@ function RoboticArmInstance({ armBot }: { readonly armBot: ArmBotStatus }) { isPausedRef.current = false pauseTimeRef.current = null isPausedRef.current = false - startTime = 0 activeSecondsElapsed.current = 0; idleSecondsElapsed.current = 0; previousTimeRef.current = null; diff --git a/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx b/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx index b43c7fa..d875905 100644 --- a/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx +++ b/app/src/modules/simulation/roboticArm/instances/ikInstance/ikInstance.tsx @@ -9,7 +9,7 @@ type IKInstanceProps = { armBot: ArmBotStatus; }; -function IKInstance({ setIkSolver, armBot }: IKInstanceProps) { +function IKInstance({ setIkSolver, armBot }: Readonly) { const { scene } = useThree(); const { isPlaying } = usePlayButtonStore(); const { isReset } = useResetButtonStore(); @@ -22,7 +22,7 @@ function IKInstance({ setIkSolver, armBot }: IKInstanceProps) { const trySetup = () => { const targetMesh = scene?.getObjectByProperty("uuid", armBot.modelUuid); - if (!targetMesh || !targetMesh.userData.fieldData || targetMesh.userData.fieldData.length < 1) { + if (!targetMesh?.userData.fieldData || targetMesh?.userData.fieldData.length < 1) { retryId = setTimeout(trySetup, 100); return; } diff --git a/app/src/modules/simulation/simulator/functions/determineExecutionOrder.ts b/app/src/modules/simulation/simulator/functions/determineExecutionOrder.ts index f06992b..244a404 100644 --- a/app/src/modules/simulation/simulator/functions/determineExecutionOrder.ts +++ b/app/src/modules/simulation/simulator/functions/determineExecutionOrder.ts @@ -2,7 +2,6 @@ import { extractTriggersFromPoint } from "./extractTriggersFromPoint"; export function determineExecutionOrder(products: productsSchema): Action[] { // Create maps for all events and points - const eventMap = new Map(); const pointMap = new Map(); const allPoints: PointsScheme[] = []; const spawnActions: Action[] = []; @@ -10,7 +9,6 @@ export function determineExecutionOrder(products: productsSchema): Action[] { // First pass: collect all points and identify spawn actions products.forEach(product => { product.eventDatas.forEach(event => { - eventMap.set(event.modelUuid, event); if (event.type === 'transfer') { event.points.forEach(point => { @@ -34,7 +32,7 @@ export function determineExecutionOrder(products: productsSchema): Action[] { // Check for spawn actions in storage units and other types if (event.type === 'storageUnit') { - const storagePoint = event.point as StoragePointSchema; + const storagePoint = event.point; storagePoint.actions.forEach(action => { if (action.actionType === 'retrieve') { spawnActions.push(action); diff --git a/app/src/modules/simulation/spatialUI/arm/PickDropPoints.tsx b/app/src/modules/simulation/spatialUI/arm/PickDropPoints.tsx index c44eee8..744ee1c 100644 --- a/app/src/modules/simulation/spatialUI/arm/PickDropPoints.tsx +++ b/app/src/modules/simulation/spatialUI/arm/PickDropPoints.tsx @@ -3,59 +3,59 @@ import * as THREE from "three"; import { ThreeEvent } from "@react-three/fiber"; interface PickDropProps { - position: number[]; - modelUuid: string; - pointUuid: string; - actionType: "pick" | "drop"; - actionUuid: string; - gltfScene: THREE.Group; + position: number[]; + modelUuid: string; + pointUuid: string; + actionType: "pick" | "drop"; + actionUuid: string; + gltfScene: THREE.Group; - handlePointerDown: (e: ThreeEvent) => void; - isSelected: boolean; + handlePointerDown: (e: ThreeEvent) => void; + isSelected: boolean; } const PickDropPoints: React.FC = ({ - position, - modelUuid, - pointUuid, - actionType, - actionUuid, - gltfScene, - handlePointerDown, - isSelected, + position, + modelUuid, + pointUuid, + actionType, + actionUuid, + gltfScene, + handlePointerDown, + isSelected, }) => { - const groupRef = useRef(null); - return ( - { - - e.stopPropagation(); // Prevent event bubbling - if (!isSelected) return; - handlePointerDown(e); - }} - userData={{ modelUuid, pointUuid, actionType, actionUuid }} - > - { - const cloned = gltfScene.clone(); - cloned.traverse((child: any) => { - if (child.isMesh) { - child.userData = { modelUuid, pointUuid, actionType, actionUuid }; + const groupRef = useRef(null); + return ( + - - ); + onPointerDown={(e) => { + + e.stopPropagation(); // Prevent event bubbling + if (!isSelected) return; + handlePointerDown(e); + }} + userData={{ modelUuid, pointUuid, actionType, actionUuid }} + > + { + const cloned = gltfScene.clone(); + cloned.traverse((child: any) => { + if (child.isMesh) { + child.userData = { modelUuid, pointUuid, actionType, actionUuid }; + } + }); + return cloned; + })()} + position={[0, 0, 0]} + scale={[0.5, 0.5, 0.5]} + /> + + ); }; export default PickDropPoints; diff --git a/app/src/modules/simulation/spatialUI/vehicle/useDraggableGLTF.ts b/app/src/modules/simulation/spatialUI/vehicle/useDraggableGLTF.ts index b7e9272..8adec6b 100644 --- a/app/src/modules/simulation/spatialUI/vehicle/useDraggableGLTF.ts +++ b/app/src/modules/simulation/spatialUI/vehicle/useDraggableGLTF.ts @@ -5,126 +5,126 @@ import { ThreeEvent, useThree } from "@react-three/fiber"; type OnUpdateCallback = (object: THREE.Object3D) => void; export default function useDraggableGLTF(onUpdate: OnUpdateCallback) { - const { camera, gl, controls, scene } = useThree(); - const activeObjRef = useRef(null); - const planeRef = useRef( - new THREE.Plane(new THREE.Vector3(0, 1, 0), 0) - ); - const offsetRef = useRef(new THREE.Vector3()); - const initialPositionRef = useRef(new THREE.Vector3()); + const { camera, gl, controls, scene } = useThree(); + const activeObjRef = useRef(null); + const planeRef = useRef( + new THREE.Plane(new THREE.Vector3(0, 1, 0), 0) + ); + const offsetRef = useRef(new THREE.Vector3()); + const initialPositionRef = useRef(new THREE.Vector3()); - const raycaster = new THREE.Raycaster(); - const pointer = new THREE.Vector2(); + const raycaster = new THREE.Raycaster(); + const pointer = new THREE.Vector2(); - const handlePointerDown = (e: ThreeEvent) => { - e.stopPropagation(); + const handlePointerDown = (e: ThreeEvent) => { + e.stopPropagation(); - let obj: THREE.Object3D | null = e.object; + let obj: THREE.Object3D | null = e.object; - // Traverse up until we find modelUuid in userData - while (obj && !obj.userData?.modelUuid) { - obj = obj.parent; - } + // Traverse up until we find modelUuid in userData + while (obj && !obj.userData?.modelUuid) { + obj = obj.parent; + } - if (!obj) return; + if (!obj) return; - // Disable orbit controls while dragging - if (controls) (controls as any).enabled = false; + // Disable orbit controls while dragging + if (controls) (controls as any).enabled = false; - activeObjRef.current = obj; - initialPositionRef.current.copy(obj.position); + activeObjRef.current = obj; + initialPositionRef.current.copy(obj.position); - // Get world position - const objectWorldPos = new THREE.Vector3(); - obj.getWorldPosition(objectWorldPos); + // Get world position + const objectWorldPos = new THREE.Vector3(); + obj.getWorldPosition(objectWorldPos); - // Set plane at the object's Y level - planeRef.current.set(new THREE.Vector3(0, 1, 0), -objectWorldPos.y); + // Set plane at the object's Y level + planeRef.current.set(new THREE.Vector3(0, 1, 0), -objectWorldPos.y); - // Convert pointer to NDC - const rect = gl.domElement.getBoundingClientRect(); - pointer.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; - pointer.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; + // Convert pointer to NDC + const rect = gl.domElement.getBoundingClientRect(); + pointer.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; + pointer.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; - // Raycast to intersection - raycaster.setFromCamera(pointer, camera); - const intersection = new THREE.Vector3(); - raycaster.ray.intersectPlane(planeRef.current, intersection); + // Raycast to intersection + raycaster.setFromCamera(pointer, camera); + const intersection = new THREE.Vector3(); + raycaster.ray.intersectPlane(planeRef.current, intersection); - // Calculate offset - offsetRef.current.copy(objectWorldPos).sub(intersection); + // Calculate offset + offsetRef.current.copy(objectWorldPos).sub(intersection); - // Start listening for drag - gl.domElement.addEventListener("pointermove", handlePointerMove); - gl.domElement.addEventListener("pointerup", handlePointerUp); - }; + // Start listening for drag + gl.domElement.addEventListener("pointermove", handlePointerMove); + gl.domElement.addEventListener("pointerup", handlePointerUp); + }; - const handlePointerMove = (e: PointerEvent) => { - if (!activeObjRef.current) return; - - // Check if Shift key is pressed - const isShiftKeyPressed = e.shiftKey; - - // Get the mouse position relative to the canvas - const rect = gl.domElement.getBoundingClientRect(); - pointer.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; - pointer.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; - - // Update raycaster to point to the mouse position - raycaster.setFromCamera(pointer, camera); - - // Create a vector to store intersection point - const intersection = new THREE.Vector3(); - const intersects = raycaster.ray.intersectPlane(planeRef.current, intersection); - if (!intersects) return; - - // Add offset for dragging - intersection.add(offsetRef.current); - console.log('intersection: ', intersection); - - // Get the parent's world matrix if exists - const parent = activeObjRef.current.parent; - const targetPosition = new THREE.Vector3(); - - if (isShiftKeyPressed) { - console.log('isShiftKeyPressed: ', isShiftKeyPressed); - // For Y-axis only movement, maintain original X and Z - console.log('initialPositionRef: ', initialPositionRef); - console.log('intersection.y: ', intersection); - targetPosition.set( - initialPositionRef.current.x, - intersection.y, - initialPositionRef.current.z - ); - } else { - // For free movement - targetPosition.copy(intersection); - } - - // Convert world position to local if object is nested inside a parent - if (parent) { - parent.worldToLocal(targetPosition); - } - - // Update object position - activeObjRef.current.position.copy(targetPosition); - }; + const handlePointerMove = (e: PointerEvent) => { + if (!activeObjRef.current) return; - const handlePointerUp = () => { - if (controls) (controls as any).enabled = true; + // Check if Shift key is pressed + const isShiftKeyPressed = e.shiftKey; - if (activeObjRef.current) { - // Pass the updated position to the onUpdate callback to persist it - onUpdate(activeObjRef.current); - } + // Get the mouse position relative to the canvas + const rect = gl.domElement.getBoundingClientRect(); + pointer.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; + pointer.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; - gl.domElement.removeEventListener("pointermove", handlePointerMove); - gl.domElement.removeEventListener("pointerup", handlePointerUp); + // Update raycaster to point to the mouse position + raycaster.setFromCamera(pointer, camera); - activeObjRef.current = null; - }; + // Create a vector to store intersection point + const intersection = new THREE.Vector3(); + const intersects = raycaster.ray.intersectPlane(planeRef.current, intersection); + if (!intersects) return; - return { handlePointerDown }; + // Add offset for dragging + intersection.add(offsetRef.current); + console.log('intersection: ', intersection); + + // Get the parent's world matrix if exists + const parent = activeObjRef.current.parent; + const targetPosition = new THREE.Vector3(); + + if (isShiftKeyPressed) { + console.log('isShiftKeyPressed: ', isShiftKeyPressed); + // For Y-axis only movement, maintain original X and Z + console.log('initialPositionRef: ', initialPositionRef); + console.log('intersection.y: ', intersection); + targetPosition.set( + initialPositionRef.current.x, + intersection.y, + initialPositionRef.current.z + ); + } else { + // For free movement + targetPosition.copy(intersection); + } + + // Convert world position to local if object is nested inside a parent + if (parent) { + parent.worldToLocal(targetPosition); + } + + // Update object position + activeObjRef.current.position.copy(targetPosition); + }; + + const handlePointerUp = () => { + if (controls) (controls as any).enabled = true; + + if (activeObjRef.current) { + // Pass the updated position to the onUpdate callback to persist it + onUpdate(activeObjRef.current); + } + + gl.domElement.removeEventListener("pointermove", handlePointerMove); + gl.domElement.removeEventListener("pointerup", handlePointerUp); + + activeObjRef.current = null; + }; + + return { handlePointerDown }; } diff --git a/app/src/modules/simulation/storageUnit/instances/storageUnitInstance/storageUnitInstance.tsx b/app/src/modules/simulation/storageUnit/instances/storageUnitInstance/storageUnitInstance.tsx index b0f0514..4fcc093 100644 --- a/app/src/modules/simulation/storageUnit/instances/storageUnitInstance/storageUnitInstance.tsx +++ b/app/src/modules/simulation/storageUnit/instances/storageUnitInstance/storageUnitInstance.tsx @@ -1,14 +1,14 @@ -import React, { useEffect } from 'react' +import { useEffect } from 'react' import MaterialAnimator from '../animator/MaterialAnimator' function StorageUnitInstance({ storageUnit }: Readonly<{ storageUnit: StorageUnitStatus }>) { - useEffect(()=>{ + useEffect(() => { // console.log('storageUnit: ', storageUnit); - },[storageUnit]) + }, [storageUnit]) return ( - + ) } diff --git a/app/src/modules/simulation/storageUnit/storageUnit.tsx b/app/src/modules/simulation/storageUnit/storageUnit.tsx index 8d7f1b1..e230fa2 100644 --- a/app/src/modules/simulation/storageUnit/storageUnit.tsx +++ b/app/src/modules/simulation/storageUnit/storageUnit.tsx @@ -1,12 +1,11 @@ import StorageUnitInstances from './instances/storageUnitInstances' function StorageUnit() { + return ( - <> - + - ) } diff --git a/app/src/modules/simulation/triggers/trigger.tsx b/app/src/modules/simulation/triggers/trigger.tsx index 0af5881..bd3bd19 100644 --- a/app/src/modules/simulation/triggers/trigger.tsx +++ b/app/src/modules/simulation/triggers/trigger.tsx @@ -3,11 +3,9 @@ import TriggerConnector from '../events/triggerConnections/triggerConnector' function Trigger() { return ( - <> - + - ) } diff --git a/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts b/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts index 4072f9d..09a9b61 100644 --- a/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts +++ b/app/src/modules/simulation/triggers/triggerHandler/useTriggerHandler.ts @@ -39,7 +39,7 @@ export function useTriggerHandler() { if (fromEvent?.type === 'transfer') { if (toEvent?.type === 'transfer') { // Transfer to Transfer - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger?.triggeredAsset?.triggeredAction) { const material = getMaterialById(materialId); if (material) { if (material.next) { @@ -66,7 +66,7 @@ export function useTriggerHandler() { } } else if (toEvent?.type === 'vehicle') { // Transfer to Vehicle - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -121,7 +121,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'roboticArm') { // Transfer to Robotic Arm - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -149,7 +149,7 @@ export function useTriggerHandler() { if (action) { if (armBot) { - if (action && action.triggers.length > 0 && + if (action.triggers.length > 0 && action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid && action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid) { @@ -211,7 +211,7 @@ export function useTriggerHandler() { const machine = getMachineById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || ''); if (machine) { setIsPaused(materialId, true); - + addMachineToMonitor(machine.modelUuid, () => { handleAction(action, materialId); }) @@ -262,7 +262,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'human') { // Transfer to Human - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -290,7 +290,7 @@ export function useTriggerHandler() { if (action) { if (human) { - if (action && action.triggers.length > 0 && + if (action.triggers.length > 0 && action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid && action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid) { @@ -364,7 +364,7 @@ export function useTriggerHandler() { } } else if (toEvent?.type === 'crane') { // Transfer to Crane - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -392,7 +392,7 @@ export function useTriggerHandler() { if (action) { if (crane) { - if (action && action.triggers.length > 0 && + if (action.triggers.length > 0 && action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid && action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid) { @@ -426,7 +426,7 @@ export function useTriggerHandler() { } else if (fromEvent?.type === 'vehicle') { if (toEvent?.type === 'transfer') { // Vehicle to Transfer - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const conveyor = getConveyorById(toEvent.modelUuid); const material = getMaterialById(materialId); @@ -449,10 +449,7 @@ export function useTriggerHandler() { setIsVisible(materialId, true); - if (action && - action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && - action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid - ) { + if (action?.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid) { setNextLocation(material.materialId, { modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', @@ -476,7 +473,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'roboticArm') { // Vehicle to Robotic Arm - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); @@ -509,7 +506,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'storageUnit') { // Vehicle to Storage Unit - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); @@ -549,7 +546,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'human') { // Vehicle to Human - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); @@ -581,7 +578,7 @@ export function useTriggerHandler() { } } else if (toEvent?.type === 'crane') { // Vehicle to Crane - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -609,7 +606,7 @@ export function useTriggerHandler() { if (action) { if (crane) { - if (action && action.triggers.length > 0 && + if (action.triggers.length > 0 && action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid && action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid && action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid) { @@ -652,7 +649,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'roboticArm') { // Machine to Robotic Arm - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); setIsPaused(materialId, true); @@ -753,7 +750,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'human') { // Machine to Human - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); setIsPaused(materialId, true); @@ -837,7 +834,7 @@ export function useTriggerHandler() { } else if (fromEvent?.type === 'roboticArm') { if (toEvent?.type === 'transfer') { // Robotic Arm to Transfer - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -868,78 +865,76 @@ export function useTriggerHandler() { } else if (model?.type === 'vehicle') { const nextAction = getActionByUuid(selectedProduct.productUuid, action.triggers[0]?.triggeredAsset?.triggeredAction.actionUuid); - if (action) { - handleAction(action, material.materialId); + handleAction(action, material.materialId); - const vehicle = getVehicleById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); + const vehicle = getVehicleById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: trigger.triggeredAsset?.triggeredModel.modelUuid, - pointUuid: trigger.triggeredAsset?.triggeredPoint?.pointUuid, - actionUuid: trigger.triggeredAsset?.triggeredAction?.actionUuid, - }); + setCurrentLocation(material.materialId, { + modelUuid: trigger.triggeredAsset?.triggeredModel.modelUuid, + pointUuid: trigger.triggeredAsset?.triggeredPoint?.pointUuid, + actionUuid: trigger.triggeredAsset?.triggeredAction?.actionUuid, + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - if (nextAction) { + if (nextAction) { - if (vehicle) { + if (vehicle) { - if (vehicle.isActive === false && vehicle.state === 'idle' && vehicle.isPicking && vehicle.currentLoad < vehicle.point.action.loadCapacity) { + if (vehicle.isActive === false && vehicle.state === 'idle' && vehicle.isPicking && vehicle.currentLoad < vehicle.point.action.loadCapacity) { - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', - pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', - actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', - }); + setCurrentLocation(material.materialId, { + modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', + pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', + actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - setIsVisible(materialId, false); - setIsPaused(materialId, false); + setIsVisible(materialId, false); + setIsPaused(materialId, false); - // Handle current action from vehicle - handleAction(nextAction, materialId); + // Handle current action from vehicle + handleAction(nextAction, materialId); - } else { + } else { - // Handle current action using Event Manager - setIsPaused(materialId, true); + // Handle current action using Event Manager + setIsPaused(materialId, true); - addVehicleToMonitor(vehicle.modelUuid, - () => { - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + addVehicleToMonitor(vehicle.modelUuid, + () => { + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', - pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', - actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', - }); + setCurrentLocation(material.materialId, { + modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', + pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', + actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - setIsPaused(materialId, false); - setIsVisible(materialId, false); - handleAction(nextAction, materialId); - } - ) - } + setIsPaused(materialId, false); + setIsVisible(materialId, false); + handleAction(nextAction, materialId); + } + ) } } } @@ -973,7 +968,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'vehicle') { // Robotic Arm to Vehicle - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -1021,7 +1016,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'machine') { // Robotic Arm to Machine - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -1069,7 +1064,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'storageUnit') { // Robotic Arm to Storage Unit - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); @@ -1108,7 +1103,7 @@ export function useTriggerHandler() { } } else if (toEvent?.type === 'human') { // Robotic Arm to Human - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -1179,7 +1174,7 @@ export function useTriggerHandler() { if (toEvent?.type === 'transfer') { // Human to Transfer - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material && action.actionType === 'worker') { @@ -1210,78 +1205,76 @@ export function useTriggerHandler() { } else if (model?.type === 'vehicle') { const nextAction = getActionByUuid(selectedProduct.productUuid, action.triggers[0]?.triggeredAsset?.triggeredAction.actionUuid); - if (action) { - handleAction(action, material.materialId); + handleAction(action, material.materialId); - const vehicle = getVehicleById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); + const vehicle = getVehicleById(action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid); - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: trigger.triggeredAsset?.triggeredModel.modelUuid, - pointUuid: trigger.triggeredAsset?.triggeredPoint?.pointUuid, - actionUuid: trigger.triggeredAsset?.triggeredAction?.actionUuid, - }); + setCurrentLocation(material.materialId, { + modelUuid: trigger.triggeredAsset?.triggeredModel.modelUuid, + pointUuid: trigger.triggeredAsset?.triggeredPoint?.pointUuid, + actionUuid: trigger.triggeredAsset?.triggeredAction?.actionUuid, + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - if (nextAction) { + if (nextAction) { - if (vehicle) { + if (vehicle) { - if (vehicle.isActive === false && vehicle.state === 'idle' && vehicle.isPicking && vehicle.currentLoad < vehicle.point.action.loadCapacity) { + if (vehicle.isActive === false && vehicle.state === 'idle' && vehicle.isPicking && vehicle.currentLoad < vehicle.point.action.loadCapacity) { - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', - pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', - actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', - }); + setCurrentLocation(material.materialId, { + modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', + pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', + actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - setIsVisible(materialId, false); - setIsPaused(materialId, false); + setIsVisible(materialId, false); + setIsPaused(materialId, false); - // Handle current action from vehicle - handleAction(nextAction, materialId); + // Handle current action from vehicle + handleAction(nextAction, materialId); - } else { + } else { - // Handle current action using Event Manager - setIsPaused(materialId, true); + // Handle current action using Event Manager + setIsPaused(materialId, true); - addVehicleToMonitor(vehicle.modelUuid, - () => { - setPreviousLocation(material.materialId, { - modelUuid: material.current.modelUuid, - pointUuid: material.current.pointUuid, - actionUuid: material.current.actionUuid, - }) + addVehicleToMonitor(vehicle.modelUuid, + () => { + setPreviousLocation(material.materialId, { + modelUuid: material.current.modelUuid, + pointUuid: material.current.pointUuid, + actionUuid: material.current.actionUuid, + }) - setCurrentLocation(material.materialId, { - modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', - pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', - actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', - }); + setCurrentLocation(material.materialId, { + modelUuid: action.triggers[0]?.triggeredAsset?.triggeredModel.modelUuid || '', + pointUuid: action.triggers[0]?.triggeredAsset?.triggeredPoint?.pointUuid || '', + actionUuid: action.triggers[0]?.triggeredAsset?.triggeredAction?.actionUuid || '', + }); - setNextLocation(material.materialId, null); + setNextLocation(material.materialId, null); - setIsPaused(materialId, false); - setIsVisible(materialId, false); - handleAction(nextAction, materialId); - } - ) - } + setIsPaused(materialId, false); + setIsVisible(materialId, false); + handleAction(nextAction, materialId); + } + ) } } } @@ -1561,7 +1554,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'vehicle') { // Human to Vehicle - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -1630,7 +1623,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'machine') { // Human to Machine - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { @@ -1675,7 +1668,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'roboticArm') { // Human to Robotic Arm - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); @@ -1716,7 +1709,7 @@ export function useTriggerHandler() { } else if (toEvent?.type === 'storageUnit') { // Human to Storage Unit - if (materialId && trigger.triggeredAsset && trigger.triggeredAsset.triggeredPoint && trigger.triggeredAsset.triggeredAction) { + if (materialId && trigger?.triggeredAsset?.triggeredPoint && trigger.triggeredAsset.triggeredAction) { const material = getMaterialById(materialId); if (material) { const action = getActionByUuid(selectedProduct.productUuid, trigger.triggeredAsset.triggeredAction.actionUuid); diff --git a/app/src/modules/simulation/vehicle/instances/animator/interactivePoint.tsx b/app/src/modules/simulation/vehicle/instances/animator/interactivePoint.tsx index 5705cc5..53b21b2 100644 --- a/app/src/modules/simulation/vehicle/instances/animator/interactivePoint.tsx +++ b/app/src/modules/simulation/vehicle/instances/animator/interactivePoint.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react'; import * as THREE from 'three'; -import { Canvas, useThree, useFrame, ThreeEvent } from '@react-three/fiber'; -import { Line, OrbitControls } from '@react-three/drei'; +import { useThree, useFrame, ThreeEvent } from '@react-three/fiber'; +import { Line } from '@react-three/drei'; import { useAnimationPlaySpeed, usePauseButtonStore, usePlayButtonStore } from '../../../../../store/usePlayButtonStore'; import { useActiveTool, useSelectedPath } from '../../../../../store/builder/store'; @@ -10,7 +10,7 @@ interface InteractivePointsProps { } -export default function InteractivePoints({ agvUuid }: InteractivePointsProps) { +export default function InteractivePoints({ agvUuid }: Readonly) { const { gl, scene, raycaster } = useThree(); const [points, setPoints] = useState<[number, number, number][]>([]); const { isPaused } = usePauseButtonStore(); @@ -133,14 +133,12 @@ export default function InteractivePoints({ agvUuid }: InteractivePointsProps) { }; }, [isPlaying, handleClick, handleMouseDown]); - const updatePoint = (index: number, pos: THREE.Vector3) => { const updated = [...points]; updated[index] = pos.toArray() as [number, number, number]; setPoints(updated); }; - return ( <> {selectedPath === "manual" && @@ -165,28 +163,27 @@ export default function InteractivePoints({ agvUuid }: InteractivePointsProps) {
) } - {points && ( - points.map((pos, i) => { - if (i < points.length - 1) { - return ( - { - const updated = [...points]; - updated[i0] = p0.toArray() as [number, number, number]; - updated[i1] = p1.toArray() as [number, number, number]; - setPoints(updated); - }} - isAnyDragging={isAnyDragging} - setIsAnyDragging={setIsAnyDragging} - /> - ); - } - return null; - }) + {(points.map((_, i) => { + if (i < points.length - 1) { + return ( + { + const updated = [...points]; + updated[i0] = p0.toArray() as [number, number, number]; + updated[i1] = p1.toArray() as [number, number, number]; + setPoints(updated); + }} + isAnyDragging={isAnyDragging} + setIsAnyDragging={setIsAnyDragging} + /> + ); + } + return null; + }) )}
} @@ -195,20 +192,19 @@ export default function InteractivePoints({ agvUuid }: InteractivePointsProps) { } - function DraggableSphere({ index, position, onMove, isAnyDragging, setIsAnyDragging, -}: { +}: Readonly<{ index: number; position: THREE.Vector3; onMove: (index: number, pos: THREE.Vector3) => void; isAnyDragging: string; setIsAnyDragging: (val: string) => void; -}) { +}>) { const meshRef = useRef(null); const { gl, controls, raycaster } = useThree(); const plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); @@ -267,14 +263,14 @@ function DraggableLineSegment({ updatePoints, isAnyDragging, setIsAnyDragging, -}: { +}: Readonly<{ index: number; start: THREE.Vector3; end: THREE.Vector3; updatePoints: (i0: number, p0: THREE.Vector3, i1: number, p1: THREE.Vector3) => void; isAnyDragging: string; setIsAnyDragging: (val: string) => void; -}) { +}>) { const { gl, raycaster, controls } = useThree(); const { activeTool } = useActiveTool(); const plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); diff --git a/app/src/modules/simulation/vehicle/instances/animator/vehicleAnimator.tsx b/app/src/modules/simulation/vehicle/instances/animator/vehicleAnimator.tsx index c8463cf..81fbadc 100644 --- a/app/src/modules/simulation/vehicle/instances/animator/vehicleAnimator.tsx +++ b/app/src/modules/simulation/vehicle/instances/animator/vehicleAnimator.tsx @@ -1,4 +1,3 @@ - import { useEffect, useRef, useState } from 'react' import { useFrame, useThree, ThreeEvent } from '@react-three/fiber'; import * as THREE from 'three'; @@ -7,7 +6,6 @@ import { useAnimationPlaySpeed, usePauseButtonStore, usePlayButtonStore, useRese import { useSceneContext } from '../../../../scene/sceneContext'; import { useActiveTool, useSelectedPath } from '../../../../../store/builder/store'; - interface VehicleAnimatorProps { path: [number, number, number][]; handleCallBack: () => void; @@ -29,13 +27,12 @@ function VehicleAnimator({ path, handleCallBack, currentPhase, agvUuid, agvDetai const movingForward = useRef(true); const completedRef = useRef(false); const [objectRotation, setObjectRotation] = useState<{ x: number; y: number; z: number } | undefined>(agvDetail.point?.action?.pickUpPoint?.rotation || { x: 0, y: 0, z: 0 }) - const [restRotation, setRestingRotation] = useState(true); + const [restingRotation, setRestingRotation] = useState(true); const [currentPath, setCurrentPath] = useState<[number, number, number][]>([]); const { scene, controls } = useThree(); const { selectedPath } = useSelectedPath(); const [isAnyDragging, setIsAnyDragging] = useState(""); - useEffect(() => { if (currentPhase === 'stationed-pickup' && path.length > 0 && selectedPath === "auto") { setCurrentPath(path); @@ -136,7 +133,7 @@ function VehicleAnimator({ path, handleCallBack, currentPhase, agvUuid, agvDetai } if (progressRef.current >= totalDistance) { - if (restRotation && objectRotation) { + if (restingRotation && objectRotation) { const targetEuler = new THREE.Euler(0, objectRotation.y - agvDetail.point.action.steeringAngle, 0); const baseQuaternion = new THREE.Quaternion().setFromEuler(targetEuler); @@ -243,13 +240,13 @@ function DraggableSphere({ onMove, isAnyDragging, setIsAnyDragging, -}: { +}: Readonly<{ index: number; position: THREE.Vector3; onMove: (index: number, pos: THREE.Vector3) => void; isAnyDragging: string; setIsAnyDragging: (val: string) => void; -}) { +}>) { const meshRef = useRef(null); const { gl, controls, raycaster } = useThree(); const plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); @@ -308,14 +305,14 @@ function DraggableLineSegment({ updatePoints, isAnyDragging, setIsAnyDragging, -}: { +}: Readonly<{ index: number; start: THREE.Vector3; end: THREE.Vector3; updatePoints: (i0: number, p0: THREE.Vector3, i1: number, p1: THREE.Vector3) => void; isAnyDragging: string; setIsAnyDragging: (val: string) => void; -}) { +}>) { const { gl, raycaster, controls } = useThree(); const { activeTool } = useActiveTool(); const plane = new THREE.Plane(new THREE.Vector3(0, 1, 0), 0); diff --git a/app/src/modules/simulation/vehicle/instances/instance/vehicleInstance.tsx b/app/src/modules/simulation/vehicle/instances/instance/vehicleInstance.tsx index 26cc6b6..511f21a 100644 --- a/app/src/modules/simulation/vehicle/instances/instance/vehicleInstance.tsx +++ b/app/src/modules/simulation/vehicle/instances/instance/vehicleInstance.tsx @@ -487,7 +487,7 @@ function VehicleInstance({ agvDetail }: Readonly<{ agvDetail: VehicleStatus }>) const dropLoop = (currentTime: number) => { const conveyor = getConveyorById(conveyorId); - if (isPausedRef.current || (conveyor && conveyor.isPaused)) { + if (isPausedRef.current || (conveyor?.isPaused)) { if (pauseStartTime === null) { pauseStartTime = currentTime; } diff --git a/app/src/modules/simulation/vehicle/instances/vehicleInstances.tsx b/app/src/modules/simulation/vehicle/instances/vehicleInstances.tsx index 989242b..8f2b3f3 100644 --- a/app/src/modules/simulation/vehicle/instances/vehicleInstances.tsx +++ b/app/src/modules/simulation/vehicle/instances/vehicleInstances.tsx @@ -5,20 +5,20 @@ import { useSceneContext } from "../../../scene/sceneContext"; import { useViewSceneStore } from "../../../../store/builder/store"; function VehicleInstances() { - const { vehicleStore } = useSceneContext(); - const { vehicles } = vehicleStore(); - const { viewSceneLabels } = useViewSceneStore(); + const { vehicleStore } = useSceneContext(); + const { vehicles } = vehicleStore(); + const { viewSceneLabels } = useViewSceneStore(); - return ( - <> - {vehicles.map((vehicle: VehicleStatus) => ( - - - {viewSceneLabels && } - - ))} - - ); + return ( + <> + {vehicles.map((vehicle: VehicleStatus) => ( + + + {viewSceneLabels && } + + ))} + + ); } export default VehicleInstances; diff --git a/app/src/modules/simulation/vehicle/navMesh/polygonGenerator.tsx b/app/src/modules/simulation/vehicle/navMesh/polygonGenerator.tsx index 57f8ab2..338daf9 100644 --- a/app/src/modules/simulation/vehicle/navMesh/polygonGenerator.tsx +++ b/app/src/modules/simulation/vehicle/navMesh/polygonGenerator.tsx @@ -1,7 +1,6 @@ import * as THREE from "three"; import { useEffect } from "react"; import * as turf from "@turf/turf"; -import * as Types from "../../../../types/world/worldTypes"; import { useThree } from "@react-three/fiber"; import { useSceneContext } from "../../../scene/sceneContext"; @@ -47,7 +46,7 @@ export default function PolygonGenerator({ cloned.position.set(cloned.position.x, cloned.position.y + 5, cloned.position.z); cloned?.traverse((child) => { if (child instanceof THREE.Mesh && child.geometry instanceof THREE.ExtrudeGeometry) { - const extrudeGeometry = child.geometry as THREE.ExtrudeGeometry; + const extrudeGeometry = child.geometry; extrudeGeometry.scale(1, 1, 500); child.geometry = extrudeGeometry; child.position.set(cloned.position.x, cloned.position.y + 0.1, cloned.position.z) diff --git a/app/src/services/dashboard/deleteProject.ts b/app/src/services/dashboard/deleteProject.ts index b1c90a9..2063258 100644 --- a/app/src/services/dashboard/deleteProject.ts +++ b/app/src/services/dashboard/deleteProject.ts @@ -13,9 +13,9 @@ export const deleteProject = async ( { method: "PATCH", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, body: JSON.stringify({ userId, organization }), diff --git a/app/src/services/dashboard/deleteTrash.ts b/app/src/services/dashboard/deleteTrash.ts index 561ce28..42d60c9 100644 --- a/app/src/services/dashboard/deleteTrash.ts +++ b/app/src/services/dashboard/deleteTrash.ts @@ -8,9 +8,9 @@ export const deleteTrash = async (organization: string, projectId: string) => { { method: "PATCH", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/dashboard/duplicateProject.ts b/app/src/services/dashboard/duplicateProject.ts index ca341de..47e7ccb 100644 --- a/app/src/services/dashboard/duplicateProject.ts +++ b/app/src/services/dashboard/duplicateProject.ts @@ -12,9 +12,9 @@ export const duplicateProject = async ( { method: "POST", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, body: JSON.stringify({ diff --git a/app/src/services/dashboard/recentlyViewed.ts b/app/src/services/dashboard/recentlyViewed.ts index 06fa3fd..3d78cb1 100644 --- a/app/src/services/dashboard/recentlyViewed.ts +++ b/app/src/services/dashboard/recentlyViewed.ts @@ -7,9 +7,9 @@ export const recentlyViewed = async (organization: string, userId: string) => { { method: "GET", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/dashboard/restoreTrash.ts b/app/src/services/dashboard/restoreTrash.ts index fb52007..23f5a68 100644 --- a/app/src/services/dashboard/restoreTrash.ts +++ b/app/src/services/dashboard/restoreTrash.ts @@ -8,9 +8,9 @@ export const restoreTrash = async (organization: string, projectId: string) => { { method: "PATCH", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/dashboard/searchProjects.ts b/app/src/services/dashboard/searchProjects.ts index 7486b9f..139734d 100644 --- a/app/src/services/dashboard/searchProjects.ts +++ b/app/src/services/dashboard/searchProjects.ts @@ -11,9 +11,9 @@ export const searchProject = async ( { method: "GET", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/dashboard/trashSearchProject.ts b/app/src/services/dashboard/trashSearchProject.ts index 1e6c0f8..ae089af 100644 --- a/app/src/services/dashboard/trashSearchProject.ts +++ b/app/src/services/dashboard/trashSearchProject.ts @@ -11,9 +11,9 @@ export const trashSearchProject = async ( { method: "GET", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/dashboard/viewProject.ts b/app/src/services/dashboard/viewProject.ts index c1aab67..731033c 100644 --- a/app/src/services/dashboard/viewProject.ts +++ b/app/src/services/dashboard/viewProject.ts @@ -11,9 +11,9 @@ export const viewProject = async ( { method: "GET", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string + token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "", }, } diff --git a/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts b/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts index 28fde46..fa6ca6a 100644 --- a/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/deleteAisleApi.ts @@ -1,34 +1,28 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const deleteAisleApi = async (aisleUuid: string, projectId: string, versionId: string) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/DeleteAisle`, { - method: "PATCH", - headers: { - Authorization: "Bearer ", // Replace with actual token - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ aisleUuid, projectId, versionId }), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to clearPanel in the zone"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/DeleteAisle`, { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ aisleUuid, projectId, versionId }), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + if (!response.ok) { + echo.error("Failed to delete aisle"); + } - const result = await response.json(); - // console.log('result: ', result); - return result; - } catch (error) { - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to delete aisle"); } - } }; diff --git a/app/src/services/factoryBuilder/aisle/getAisleApi.ts b/app/src/services/factoryBuilder/aisle/getAisleApi.ts index dd79ac5..09bb6b1 100644 --- a/app/src/services/factoryBuilder/aisle/getAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/getAisleApi.ts @@ -1,33 +1,30 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getAisleApi = async (projectId: string, versionId: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Aisles/${projectId}/${versionId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", // Replace with actual token - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Aisles/${projectId}/${versionId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - // console.log("response: ", response); - if (!response.ok) { - console.error("Failed to fetch"); - } + if (!response.ok) { + echo.error("Failed to fetch aisles"); + } - return await response.json(); - } catch (error: any) { - console.error("Failed to get asset image:", error); - console.log(error.message); - } + return await response.json(); + } catch { + echo.error("Failed to fetch aisles"); + } }; diff --git a/app/src/services/factoryBuilder/aisle/upsertAisleApi.ts b/app/src/services/factoryBuilder/aisle/upsertAisleApi.ts index b980c61..d6ef8d3 100644 --- a/app/src/services/factoryBuilder/aisle/upsertAisleApi.ts +++ b/app/src/services/factoryBuilder/aisle/upsertAisleApi.ts @@ -1,41 +1,35 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const upsertAisleApi = async ( - aisleUuid: string, - points: any, - type: Object, - projectId: string, - versionId: string, + aisleUuid: string, + points: any, + type: Object, + projectId: string, + versionId: string, ) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/UpsertAisle`, { - method: "POST", - headers: { - Authorization: "Bearer ", // Replace with actual token - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", // Coerce null to empty string - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ aisleUuid, points, type, projectId, versionId }), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/UpsertAisle`, { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ aisleUuid, points, type, projectId, versionId }), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to add project"); - } + if (!response.ok) { + echo.error("Failed to update aisle"); + } - const result = await response.json(); - // console.log("result: ", result); - return result; - } catch (error) { - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to update aisle"); } - } }; diff --git a/app/src/services/factoryBuilder/asset/assets/getAssetImages.ts b/app/src/services/factoryBuilder/asset/assets/getAssetImages.ts index 7bc7fca..e64768d 100644 --- a/app/src/services/factoryBuilder/asset/assets/getAssetImages.ts +++ b/app/src/services/factoryBuilder/asset/assets/getAssetImages.ts @@ -1,24 +1,23 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; export const getAssetImages = async (cursor?: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/v3/AssetDatas?limit=10${cursor ? `&cursor=${cursor}` : ""}`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - } - ); + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/v3/AssetDatas?limit=10${cursor ? `&cursor=${cursor}` : ""}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + } + ); - if (!response.ok) { - console.error("Failed to fetch assets"); + if (!response.ok) { + echo.error("Failed to fetch assets"); + } + + return await response.json(); + } catch { + echo.error("Failed to fetch assets"); } - - return await response.json(); - } catch (error: any) { - echo.error("Failed to get asset image"); - console.log(error.message); - } }; diff --git a/app/src/services/factoryBuilder/asset/assets/getAssetModel.ts b/app/src/services/factoryBuilder/asset/assets/getAssetModel.ts index 27fe88a..d451bc4 100644 --- a/app/src/services/factoryBuilder/asset/assets/getAssetModel.ts +++ b/app/src/services/factoryBuilder/asset/assets/getAssetModel.ts @@ -1,29 +1,24 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; export const getAssetModel = async (modelId: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/v2/AssetFile/${modelId}`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - } - ); + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/v2/AssetFile/${modelId}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + } + ); - if (!response.ok) { - console.error("Failed to fetch model"); - } + if (!response.ok) { + echo.error("Failed to fetch model"); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get asset model"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to fetch model"); } - } }; diff --git a/app/src/services/factoryBuilder/asset/assets/getAssetThumbnail.ts b/app/src/services/factoryBuilder/asset/assets/getAssetThumbnail.ts index 77469a0..3e3a8e3 100644 --- a/app/src/services/factoryBuilder/asset/assets/getAssetThumbnail.ts +++ b/app/src/services/factoryBuilder/asset/assets/getAssetThumbnail.ts @@ -1,7 +1,6 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; -export const getAssetThumbnail = async (assetId: String) => { - +export const getAssetThumbnail = async (assetId: string) => { try { const response = await fetch( `${url_Backend_dwinzo}/api/v2/getAssetThumbnail/${assetId}`, @@ -21,13 +20,11 @@ export const getAssetThumbnail = async (assetId: String) => { } if (!response.ok) { - throw new Error("Failed to fetch assets"); + echo.error("Failed to fetch asset thumbnail"); } - // return await response.json(); - } catch (error: any) { - echo.error("Failed to get asset image"); - + } catch { + echo.error("Failed to fetch asset thumbnail"); } }; diff --git a/app/src/services/factoryBuilder/asset/assets/getCategoryAsset.ts b/app/src/services/factoryBuilder/asset/assets/getCategoryAsset.ts index 478d240..0fbf9a1 100644 --- a/app/src/services/factoryBuilder/asset/assets/getCategoryAsset.ts +++ b/app/src/services/factoryBuilder/asset/assets/getCategoryAsset.ts @@ -1,20 +1,20 @@ let BackEnd_url = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; -export const getCategoryAsset = async (categoryName: any) => { - try { - const response = await fetch( - `${BackEnd_url}/api/v2/getCategoryAssets/${categoryName}`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - } - ); - const result = await response.json(); - return result; - } catch (error: any) { - echo.error("Failed to get category asset"); - console.log(error.message); - } +export const getCategoryAsset = async (categoryName: string) => { + try { + const response = await fetch( + `${BackEnd_url}/api/v2/getCategoryAssets/${categoryName}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + } + ); + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get category assets"); + } }; diff --git a/app/src/services/factoryBuilder/asset/decals/getCategoryDecals.ts b/app/src/services/factoryBuilder/asset/decals/getCategoryDecals.ts index 9a4f2ba..f45a212 100644 --- a/app/src/services/factoryBuilder/asset/decals/getCategoryDecals.ts +++ b/app/src/services/factoryBuilder/asset/decals/getCategoryDecals.ts @@ -1,20 +1,20 @@ let BackEnd_url = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; -export const getCategoryDecals = async (category: any) => { - try { - const response = await fetch( - `${BackEnd_url}/api/v1/categoryDecalDatas/${category}`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - } - ); - const result = await response.json(); - return result; - } catch (error: any) { - echo.error("Failed to get category asset"); - console.log(error.message); - } +export const getCategoryDecals = async (category: string) => { + try { + const response = await fetch( + `${BackEnd_url}/api/v1/categoryDecalDatas/${category}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + } + ); + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get category decals"); + } }; \ No newline at end of file diff --git a/app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi.ts b/app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi.ts similarity index 72% rename from app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi.ts rename to app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi.ts index f752fe4..ae50916 100644 --- a/app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetsApi.ts +++ b/app/src/services/factoryBuilder/asset/floorAsset/deleteFloorAssetApi.ts @@ -7,7 +7,7 @@ export interface DeleteFloorAssetsParams { versionId: string; } -export const deleteFloorAssetsApi = async (params: DeleteFloorAssetsParams) => { +export const deleteFloorAssetApi = async (params: DeleteFloorAssetsParams) => { try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/assetDelete`, { method: "PATCH", @@ -26,17 +26,12 @@ export const deleteFloorAssetsApi = async (params: DeleteFloorAssetsParams) => { } if (!response.ok) { - console.error("Failed to delete Floor Asset"); + echo.error("Failed to delete Floor Asset"); } const result = await response.json(); return result; - } catch (error) { - console.error("Failed to delete floor asset"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } + } catch { + echo.error("Failed to delete Floor Asset"); } }; diff --git a/app/src/services/factoryBuilder/asset/floorAsset/getAssetField.ts b/app/src/services/factoryBuilder/asset/floorAsset/getAssetField.ts index 83567a9..e63a889 100644 --- a/app/src/services/factoryBuilder/asset/floorAsset/getAssetField.ts +++ b/app/src/services/factoryBuilder/asset/floorAsset/getAssetField.ts @@ -20,17 +20,12 @@ export const getAssetFieldApi = async (assetId: string) => { } if (!response.ok) { - console.error("Failed to fetch asset field"); + echo.error("Failed to fetch asset field"); } const result = await response.json(); return result; - } catch (error) { - echo.error("Failed to get asset field"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } + } catch { + echo.error("Failed to fetch asset field"); } }; diff --git a/app/src/services/factoryBuilder/asset/floorAsset/getFloorItemsApi.ts b/app/src/services/factoryBuilder/asset/floorAsset/getFloorItemsApi.ts index 5ead053..5e50734 100644 --- a/app/src/services/factoryBuilder/asset/floorAsset/getFloorItemsApi.ts +++ b/app/src/services/factoryBuilder/asset/floorAsset/getFloorItemsApi.ts @@ -1,39 +1,32 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -export const getFloorAssets = async (organization: string, projectId?: string, versionId?: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/floorAssets/${projectId}/${versionId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } +export const getFloorAssets = async (projectId: string, versionId: string) => { + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/floorAssets/${projectId}/${versionId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - // console.log('response: ', response); - if (!response.ok) { - console.error("Failed to get assets"); - } + if (!response.ok) { + echo.error("Failed to get assets"); + } - const result = await response.json(); + const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get floor asset"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + return result; + } catch { + echo.error("Failed to get assets"); } - } }; diff --git a/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts b/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts index 4b00bc3..ce63b60 100644 --- a/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts +++ b/app/src/services/factoryBuilder/asset/floorAsset/setAssetsApi.ts @@ -1,34 +1,42 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -export const setAssetsApi = async (data: any) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/setAsset`, { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(data), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to set or update Floor Item"); - } +type assetType = { + modelUuid?: string; + modelName?: string; + assetId?: string; + position?: [number, number, number]; + rotation?: { x: number; y: number; z: number; }; + isLocked?: boolean; + isVisible?: boolean; + eventData?: any; + projectId?: string, + versionId?: string +} - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to set floor items"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); +export const setAssetsApi = async (data: assetType) => { + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/setAsset`, { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(data), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + + if (!response.ok) { + echo.error("Failed to set or update Floor asset"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to set or update Floor asset"); } - } }; diff --git a/app/src/services/factoryBuilder/asset/wallAsset/deleteWallAssetApi.ts b/app/src/services/factoryBuilder/asset/wallAsset/deleteWallAssetApi.ts index 3751aae..11243dc 100644 --- a/app/src/services/factoryBuilder/asset/wallAsset/deleteWallAssetApi.ts +++ b/app/src/services/factoryBuilder/asset/wallAsset/deleteWallAssetApi.ts @@ -24,17 +24,12 @@ export const deleteWallAssetApi = async ( } if (!response.ok) { - console.error("Failed to delete wall asset:", response.statusText); + echo.error("Failed to delete wall asset"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to delete wall asset"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/asset/wallAsset/getWallAssetsApi.ts b/app/src/services/factoryBuilder/asset/wallAsset/getWallAssetsApi.ts index d6b12ed..59dd3fb 100644 --- a/app/src/services/factoryBuilder/asset/wallAsset/getWallAssetsApi.ts +++ b/app/src/services/factoryBuilder/asset/wallAsset/getWallAssetsApi.ts @@ -21,17 +21,12 @@ export const getWallAssetsApi = async ( } if (!response.ok) { - console.error("Failed to get wall assets:", response.statusText); + echo.error("Failed to get wall assets"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to get wall assets"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/asset/wallAsset/upsertWallAssetApi.ts b/app/src/services/factoryBuilder/asset/wallAsset/upsertWallAssetApi.ts index 9f94183..0150cdd 100644 --- a/app/src/services/factoryBuilder/asset/wallAsset/upsertWallAssetApi.ts +++ b/app/src/services/factoryBuilder/asset/wallAsset/upsertWallAssetApi.ts @@ -23,17 +23,12 @@ export const upsertWallAssetApi = async ( } if (!response.ok) { - console.error("Failed to upsert wall asset:", response.statusText); + echo.error("Failed to upsert wall asset"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to upsert wall asset"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/camera/getCameraApi.ts b/app/src/services/factoryBuilder/camera/getCameraApi.ts index 2ea25a9..b97085a 100644 --- a/app/src/services/factoryBuilder/camera/getCameraApi.ts +++ b/app/src/services/factoryBuilder/camera/getCameraApi.ts @@ -1,41 +1,35 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -export const getCameraApi = async (organization: string, userId: string, projectId?: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/cameras/${projectId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } +export const getCameraApi = async (projectId: string) => { + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/cameras/${projectId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to get Camera position and target"); - } + if (!response.ok) { + echo.error("Failed to get Camera position and target"); + } - const result = await response.json(); - if (result === "user not found") { - return null; - } else { - return result; + const result = await response.json(); + if (result === "user not found") { + return null; + } else { + return result; + } + } catch { + echo.error("Failed to get Camera position and target"); } - } catch (error) { - echo.error("Failed to get camera"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } - } }; diff --git a/app/src/services/factoryBuilder/camera/setCameraApi.ts b/app/src/services/factoryBuilder/camera/setCameraApi.ts index b3a2f78..58e5df3 100644 --- a/app/src/services/factoryBuilder/camera/setCameraApi.ts +++ b/app/src/services/factoryBuilder/camera/setCameraApi.ts @@ -28,17 +28,12 @@ export const setCameraApi = async ( } if (!response.ok) { - console.error("Failed to set Camera Position and Target"); + echo.error("Failed to set Camera Position and Target"); } const result = await response.json(); return result; - } catch (error) { - echo.error("Failed to set camera"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } + } catch { + echo.error("Failed to set Camera Position and Target"); } }; diff --git a/app/src/services/factoryBuilder/collab/getActiveUsers.ts b/app/src/services/factoryBuilder/collab/getActiveUsers.ts index 21a33f2..91eae88 100644 --- a/app/src/services/factoryBuilder/collab/getActiveUsers.ts +++ b/app/src/services/factoryBuilder/collab/getActiveUsers.ts @@ -1,41 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export default async function getActiveUsersData(organization: string) { - const apiUrl = `${url_Backend_dwinzo}/api/v1/activeCameras/${organization}`; + const apiUrl = `${url_Backend_dwinzo}/api/v1/activeCameras/${organization}`; - try { - const response = await fetch(apiUrl, { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - }); + try { + const response = await fetch(apiUrl, { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + + if (!response.ok) { + echo.error("Failed to get active users"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get active users"); } - - if (!response.ok) { - console.error(`Error: ${response.status} - ${response.statusText}`); - } - - if (!response.ok) { - console.error("Failed to get active cameras "); - } - - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get active users"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } - } } diff --git a/app/src/services/factoryBuilder/collab/getProjectSharedList.ts b/app/src/services/factoryBuilder/collab/getProjectSharedList.ts index 0c39b99..ee4b123 100644 --- a/app/src/services/factoryBuilder/collab/getProjectSharedList.ts +++ b/app/src/services/factoryBuilder/collab/getProjectSharedList.ts @@ -1,32 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getProjectSharedList = async (projectId: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/projectsharedList?projectId=${projectId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - throw new Error("Failed to get users"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/projectsharedList?projectId=${projectId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - return await response.json(); - } catch (error: any) { - echo.error("Failed to get users"); - console.log(error.message); - } + if (!response.ok) { + echo.error("Failed to get shared project users"); + } + + return await response.json(); + } catch { + echo.error("Failed to get shared project users"); + } }; diff --git a/app/src/services/factoryBuilder/collab/getSearchUsers.ts b/app/src/services/factoryBuilder/collab/getSearchUsers.ts index 01ab7a9..e24b909 100644 --- a/app/src/services/factoryBuilder/collab/getSearchUsers.ts +++ b/app/src/services/factoryBuilder/collab/getSearchUsers.ts @@ -1,32 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getSearchUsers = async (searchMail: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/searchMail?searchMail=${searchMail}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - throw new Error("Failed to get users"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/searchMail?searchMail=${searchMail}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - return await response.json(); - } catch (error: any) { - echo.error("Failed to get users"); - console.log(error.message); - } + if (!response.ok) { + echo.error("Failed to get users"); + } + + return await response.json(); + } catch { + echo.error("Failed to get users"); + } }; diff --git a/app/src/services/factoryBuilder/collab/getUsersApi.ts b/app/src/services/factoryBuilder/collab/getUsersApi.ts index a182c54..d1803df 100644 --- a/app/src/services/factoryBuilder/collab/getUsersApi.ts +++ b/app/src/services/factoryBuilder/collab/getUsersApi.ts @@ -1,40 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export default async function fetchShareUsers(organization: string) { - const apiUrl = `${url_Backend_dwinzo}/api/v1/findshareUsers?organization=${organization}`; + const apiUrl = `${url_Backend_dwinzo}/api/v1/findshareUsers?organization=${organization}`; - try { - const response = await fetch(apiUrl, { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - }); + try { + const response = await fetch(apiUrl, { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error(`Error: ${response.status} - ${response.statusText}`); - } + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to get users "); - } + if (!response.ok) { + console.error("Failed to get shared users"); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get user API"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get shared users"); } - } } diff --git a/app/src/services/factoryBuilder/collab/giveCollabAccess.ts b/app/src/services/factoryBuilder/collab/giveCollabAccess.ts index 558bcba..f620639 100644 --- a/app/src/services/factoryBuilder/collab/giveCollabAccess.ts +++ b/app/src/services/factoryBuilder/collab/giveCollabAccess.ts @@ -1,39 +1,34 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export default async function giveCollabAccess( - email: string, - isShare: boolean, - organization: string + email: string, + isShare: boolean, + organization: string ) { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/v1/shareUser`, { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ email, isShare, organization }), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to set Camera Position and Target"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/v1/shareUser`, { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ email, isShare, organization }), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to give collab access"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to give collab access"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to give collab access"); } - } } diff --git a/app/src/services/factoryBuilder/collab/shareAccess.ts b/app/src/services/factoryBuilder/collab/shareAccess.ts index de7a824..2310aa3 100644 --- a/app/src/services/factoryBuilder/collab/shareAccess.ts +++ b/app/src/services/factoryBuilder/collab/shareAccess.ts @@ -1,48 +1,38 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -// let url_Backend_dwinzo = `http://192.168.0.102:5000`; export const shareAccess = async ( - projectId: string, - targetUserId: string, - newAccessPoint: string + projectId: string, + targetUserId: string, + newAccessPoint: string ) => { - const body: any = { - projectId, - targetUserId, - newAccessPoint, - }; + const body = { projectId, targetUserId, newAccessPoint }; - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/sharedAccespoint`, - { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/sharedAccespoint`, + { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to clearPanel in the zone"); - } + if (!response.ok) { + echo.error("Failed to share accesspoint"); + } - const result = await response.json(); - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to share accesspoint"); } - } }; diff --git a/app/src/services/factoryBuilder/collab/shareProject.ts b/app/src/services/factoryBuilder/collab/shareProject.ts index eb14ffe..77f0021 100644 --- a/app/src/services/factoryBuilder/collab/shareProject.ts +++ b/app/src/services/factoryBuilder/collab/shareProject.ts @@ -1,36 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const shareProject = async (addUserId: string, projectId: string) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/projectshared`, { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ addUserId, projectId }), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to add project"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/projectshared`, { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ addUserId, projectId }), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - console.log("result: ", result); + if (!response.ok) { + echo.error("Failed to share project"); + } - return result; - } catch (error) { - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + + return result; + } catch { + echo.error("Failed to share project"); } - } }; diff --git a/app/src/services/factoryBuilder/comments/addCommentsApi.ts b/app/src/services/factoryBuilder/comments/addCommentsApi.ts index c222a99..3d40a89 100644 --- a/app/src/services/factoryBuilder/comments/addCommentsApi.ts +++ b/app/src/services/factoryBuilder/comments/addCommentsApi.ts @@ -1,54 +1,41 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const addCommentsApi = async ( - projectId: any, - comment: string, - threadId?: string, - commentId?: string, - versionId?: string + projectId: any, + comment: string, + threadId: string, + commentId: string, + versionId: string ) => { - console.log( - " projectId, comments, threadId: ", - projectId, - comment, - threadId, - commentId, - versionId - ); - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Thread/addComment`, - { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ projectId, comment, threadId, commentId }), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - - if (!response.ok) { - console.error("Failed to add project"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Thread/addComment`, + { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ projectId, comment, threadId, commentId, versionId }), + } + ); - const result = await response.json(); - console.log("result: ", result); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to add comment"); + } + + const result = await response.json(); + + return result; + } catch { + echo.error("Failed to add comment"); } - } }; diff --git a/app/src/services/factoryBuilder/comments/createThreadApi.ts b/app/src/services/factoryBuilder/comments/createThreadApi.ts index 576c7ba..f30578c 100644 --- a/app/src/services/factoryBuilder/comments/createThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/createThreadApi.ts @@ -1,47 +1,37 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const createThreadApi = async ( - projectId: any, - state: string, - position: any, - rotation: any, - threadTitle: any, - versionId?: string + projectId: any, + state: string, + position: any, + rotation: any, + threadTitle: any, + versionId: string ) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/upsetThread`, { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ - projectId, - state, - position, - rotation, - threadTitle, - versionId, - }), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/upsetThread`, { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ projectId, state, position, rotation, threadTitle, versionId }), + }); + + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + + if (!response.ok) { + echo.error("Failed to set or update thread"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to set or update thread"); } - if (!response.ok) { - console.error("Failed to add project"); - } - const result = await response.json(); - console.log("result: ", result); - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); - } - } }; diff --git a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts index 32371bb..8f3da5a 100644 --- a/app/src/services/factoryBuilder/comments/deleteCommentApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteCommentApi.ts @@ -1,49 +1,43 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -// let url_Backend_dwinzo = `http://192.168.0.102:5000`; export const deleteCommentApi = async ( - projectId: string, - threadId: string, - commentId: string, - versionId?: string + projectId: string, + threadId: string, + commentId: string, + versionId: string ) => { - const body: any = { - projectId, - threadId, - commentId, - versionId, - }; + const body: any = { + projectId, + threadId, + commentId, + versionId, + }; - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Thread/deleteComment`, - { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to clearPanel in the zone"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Thread/deleteComment`, + { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + if (!response.ok) { + echo.error("Failed to delete comments"); + } - const result = await response.json(); - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to delete comments"); } - } }; diff --git a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts index ab18ea1..8ff9dc6 100644 --- a/app/src/services/factoryBuilder/comments/deleteThreadApi.ts +++ b/app/src/services/factoryBuilder/comments/deleteThreadApi.ts @@ -1,44 +1,38 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -// let url_Backend_dwinzo = `http://192.168.0.102:5000`; export const deleteThreadApi = async ( - projectId: string, - threadId: string, - versionId: string + projectId: string, + threadId: string, + versionId: string ) => { - const body: any = { - projectId, - threadId, - versionId, - }; + const body: any = { + projectId, + threadId, + versionId, + }; - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/Thread/delete`, { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to clearPanel in the zone"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/Thread/delete`, { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + if (!response.ok) { + echo.error("Failed to delete thread"); + } - const result = await response.json(); - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to delete thread"); } - } }; diff --git a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts index 6ce11dc..89aeccd 100644 --- a/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts +++ b/app/src/services/factoryBuilder/comments/editThreadTitleApi.ts @@ -1,49 +1,43 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -// let url_Backend_dwinzo = `http://192.168.0.102:5000`; export const editThreadTitleApi = async ( - projectId: string, - threadId: string, - threadTitle: string, - versionId?: string + projectId: string, + threadId: string, + threadTitle: string, + versionId: string ) => { - const body: any = { - projectId, - threadId, - threadTitle, - versionId, - }; + const body: any = { + projectId, + threadId, + threadTitle, + versionId, + }; - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Thread/updateTitle`, - { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to clearPanel in the zone"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Thread/updateTitle`, + { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + if (!response.ok) { + echo.error("Failed to edit thread title"); + } - const result = await response.json(); - return result; - } catch (error) { - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to edit thread title"); } - } }; diff --git a/app/src/services/factoryBuilder/comments/getAllThreads.ts b/app/src/services/factoryBuilder/comments/getAllThreads.ts index 15a189f..6222cf2 100644 --- a/app/src/services/factoryBuilder/comments/getAllThreads.ts +++ b/app/src/services/factoryBuilder/comments/getAllThreads.ts @@ -1,39 +1,33 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getAllThreads = async (projectId: string, versionId: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Threads/${projectId}/${versionId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - - if (!response.ok) { - console.error("Failed to get assets"); - return; - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Threads/${projectId}/${versionId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); + if (!response.ok) { + echo.error("Failed to fetch threads"); + return; + } - return result; - } catch (error) { - echo.error("Failed to get floor asset"); - if (error instanceof Error) { - console.error(error.message); - } else { - console.error("An unknown error occurred"); + const result = await response.json(); + + return result; + } catch { + echo.error("Failed to fetch threads"); } - } }; diff --git a/app/src/services/factoryBuilder/environment/findEnvironment.ts b/app/src/services/factoryBuilder/environment/findEnvironment.ts index f20663e..1f652ab 100644 --- a/app/src/services/factoryBuilder/environment/findEnvironment.ts +++ b/app/src/services/factoryBuilder/environment/findEnvironment.ts @@ -1,38 +1,33 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; -export const findEnvironment = async (organization: string, userId: string, projectId?: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Environments/${projectId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } +export const findEnvironment = async (projectId: string) => { - if (!response.ok) { - console.error("Failed to get wall and roof visibility"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Environments/${projectId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to find env"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to get environment data"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get environment data"); } - } }; diff --git a/app/src/services/factoryBuilder/environment/setEnvironment.ts b/app/src/services/factoryBuilder/environment/setEnvironment.ts index d9f6073..e7b5c4c 100644 --- a/app/src/services/factoryBuilder/environment/setEnvironment.ts +++ b/app/src/services/factoryBuilder/environment/setEnvironment.ts @@ -1,58 +1,41 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const setEnvironment = async ( - organization: string, - userId: string, - wallVisibility: boolean, - roofVisibility: boolean, - shadowVisibility: boolean, - renderDistance: number, - limitDistance: boolean, - projectId?: string + organization: string, + userId: string, + wallVisibility: boolean, + roofVisibility: boolean, + shadowVisibility: boolean, + renderDistance: number, + limitDistance: boolean, + projectId: string ) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/SetEnvironments`, - { - method: "POST", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify({ - organization, - userId, - wallVisibility, - roofVisibility, - shadowVisibility, - renderDistance, - limitDistance, - projectId - }), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - // console.log('responseenv: ', response); - if (!response.ok) { - console.error("Failed to set wall and roof visibility"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/SetEnvironments`, + { + method: "POST", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify({ organization, userId, wallVisibility, roofVisibility, shadowVisibility, renderDistance, limitDistance, projectId }), + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } + if (!response.ok) { + echo.error("Failed to set environment data"); + } - const result = await response.json(); - // console.log('resultsetenv: ', result); - return result; - } catch (error) { - echo.error("Failed to set env"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to set environment data"); } - } }; diff --git a/app/src/services/factoryBuilder/floor/deleteFloorApi.ts b/app/src/services/factoryBuilder/floor/deleteFloorApi.ts index 3043646..1974052 100644 --- a/app/src/services/factoryBuilder/floor/deleteFloorApi.ts +++ b/app/src/services/factoryBuilder/floor/deleteFloorApi.ts @@ -23,17 +23,12 @@ export const deleteFloorApi = async ( } if (!response.ok) { - console.error("Failed to delete floor:", response.statusText); + echo.error("Failed to delete floor"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to delete floor"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/floor/getFloorsApi.ts b/app/src/services/factoryBuilder/floor/getFloorsApi.ts index 2659e61..3c17197 100644 --- a/app/src/services/factoryBuilder/floor/getFloorsApi.ts +++ b/app/src/services/factoryBuilder/floor/getFloorsApi.ts @@ -21,17 +21,12 @@ export const getFloorsApi = async ( } if (!response.ok) { - console.error("Failed to get floors:", response.statusText); + echo.error("Failed to get floors"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to get floors"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/floor/upsertFloorApi.ts b/app/src/services/factoryBuilder/floor/upsertFloorApi.ts index 45590c1..4656c77 100644 --- a/app/src/services/factoryBuilder/floor/upsertFloorApi.ts +++ b/app/src/services/factoryBuilder/floor/upsertFloorApi.ts @@ -23,17 +23,12 @@ export const upsertFloorApi = async ( } if (!response.ok) { - console.error("Failed to upsert floor:", response.statusText); + echo.error("Failed to upsert floor"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to upsert floor"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/signInSignUp/changePasswordApi.ts b/app/src/services/factoryBuilder/signInSignUp/changePasswordApi.ts index bc42635..7ab20ef 100644 --- a/app/src/services/factoryBuilder/signInSignUp/changePasswordApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/changePasswordApi.ts @@ -1,29 +1,30 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const changePasswordApi = async ( - resetToken: string, - newPassword: string, - confirmPassword: string + resetToken: string, + newPassword: string, + confirmPassword: string ) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Auth/reset-password/${resetToken}`, - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ newPassword, confirmPassword }), - } - ); - const result = await response.json(); + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Auth/reset-password/${resetToken}`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ newPassword, confirmPassword }), + } + ); - return result; - } catch (error) { - echo.error("Failed to create password"); - if (error instanceof Error) { - return { error: error.message }; - } else { - return { error: "An unknown error occurred" }; + const result = await response.json(); + + return result; + } catch (error) { + echo.error("Failed to create password"); + if (error instanceof Error) { + return { error: error.message }; + } else { + return { error: "An unknown error occurred" }; + } } - } }; diff --git a/app/src/services/factoryBuilder/signInSignUp/checkEmailApi.ts b/app/src/services/factoryBuilder/signInSignUp/checkEmailApi.ts index 6d8138a..59e2e85 100644 --- a/app/src/services/factoryBuilder/signInSignUp/checkEmailApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/checkEmailApi.ts @@ -1,25 +1,26 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const checkEmailApi = async (Email: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Auth/forgetPassword`, - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ Email }), - } - ); - const result = await response.json(); + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Auth/forgetPassword`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ Email }), + } + ); - return result; - } catch (error) { - echo.error("Failed to create password"); - if (error instanceof Error) { - return { error: error.message }; - } else { - return { error: "An unknown error occurred" }; + const result = await response.json(); + + return result; + } catch (error) { + echo.error("Failed to create password"); + if (error instanceof Error) { + return { error: error.message }; + } else { + return { error: "An unknown error occurred" }; + } } - } }; diff --git a/app/src/services/factoryBuilder/signInSignUp/signInApi.ts b/app/src/services/factoryBuilder/signInSignUp/signInApi.ts index 4082dac..57e1c67 100644 --- a/app/src/services/factoryBuilder/signInSignUp/signInApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/signInApi.ts @@ -1,22 +1,23 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const signInApi = async (Email: string, Password: Object, organization: Object, fingerprint: any) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/Auth/login`, { - method: "POST", - headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ Email, Password, organization, fingerprint }), - }); - const result = await response.json(); + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/Auth/login`, { + method: "POST", + headers: { "Content-Type": "application/json", }, + body: JSON.stringify({ Email, Password, organization, fingerprint }), + }); - return result; - } catch (error) { - echo.error("Failed to sign-in"); - if (error instanceof Error) { - return { error: error.message }; - } else { - return { error: "An unknown error occurred" }; - } - } + const result = await response.json(); + + return result; + } catch (error) { + echo.error("Failed to sign-in"); + if (error instanceof Error) { + return { error: error.message }; + } else { + return { error: "An unknown error occurred" }; + } + } }; diff --git a/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts b/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts index 91db59c..1ca1a16 100644 --- a/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/signUpApi.ts @@ -1,30 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const signUpApi = async ( - userName: string, - Email: string, - Password: Object, - organization: Object + userName: string, + Email: string, + Password: Object, + organization: Object ) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/Auth/signup`, { - method: "POST", - headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ userName, Email, Password, organization }), - }); - if (!response.ok) { - console.error("Failed to signUpApi"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/Auth/signup`, { + method: "POST", + headers: { "Content-Type": "application/json", }, + body: JSON.stringify({ userName, Email, Password, organization }), + }); - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to sign-up"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + console.error("Failed to signUpApi"); + } + + const result = await response.json(); + return result; + } catch (error) { + echo.error("Failed to sign-up"); + if (error instanceof Error) { + console.log(error.message); + } else { + console.log("An unknown error occurred"); + } } - } }; diff --git a/app/src/services/factoryBuilder/signInSignUp/verifyOtpApi.ts b/app/src/services/factoryBuilder/signInSignUp/verifyOtpApi.ts index 9b289e5..c3c091e 100644 --- a/app/src/services/factoryBuilder/signInSignUp/verifyOtpApi.ts +++ b/app/src/services/factoryBuilder/signInSignUp/verifyOtpApi.ts @@ -1,28 +1,29 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const verifyOtpApi = async (Email: string, Otp: number) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/Auth/validate-otp`, - { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - Email, - otp: Number(Otp), - }), - } - ); - const result = await response.json(); + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/Auth/validate-otp`, + { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + Email, + otp: Number(Otp), + }), + } + ); - return result; - } catch (error) { - echo.error("Failed to create password"); - if (error instanceof Error) { - return { error: error.message }; - } else { - return { error: "An unknown error occurred" }; - } - } + const result = await response.json(); + + return result; + } catch (error) { + echo.error("Failed to create password"); + if (error instanceof Error) { + return { error: error.message }; + } else { + return { error: "An unknown error occurred" }; + } + } }; diff --git a/app/src/services/factoryBuilder/versionControl/addVersionApi.ts b/app/src/services/factoryBuilder/versionControl/addVersionApi.ts index c554886..b3a545e 100644 --- a/app/src/services/factoryBuilder/versionControl/addVersionApi.ts +++ b/app/src/services/factoryBuilder/versionControl/addVersionApi.ts @@ -23,22 +23,16 @@ export const createVersionApi = async (projectId: string, createdBy: string, hie ); const newAccessToken = response.headers.get("x-access-token"); if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); + localStorage.setItem("token", newAccessToken); } if (!response.ok) { - console.error("Failed to create Version History"); + echo.error("Failed to create Version History"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to create Version History"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts b/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts index 5fbc205..50513e6 100644 --- a/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts +++ b/app/src/services/factoryBuilder/versionControl/getVersionDataApi.ts @@ -1,6 +1,7 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getVersionDataApi = async (projectId: string, versionId: string) => { + try { const response = await fetch( `${url_Backend_dwinzo}/api/V1/version/${versionId}/${projectId}`, @@ -16,22 +17,16 @@ export const getVersionDataApi = async (projectId: string, versionId: string) => ); const newAccessToken = response.headers.get("x-access-token"); if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); + localStorage.setItem("token", newAccessToken); } if (!response.ok) { - console.error("Failed to get Version Data"); + echo.error("Failed to get Version Data"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to get Version Data"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts b/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts index 005d6f6..53bd558 100644 --- a/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts +++ b/app/src/services/factoryBuilder/versionControl/getVersionHistoryApi.ts @@ -1,37 +1,31 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getVersionHistoryApi = async (projectId: string, page?: number, limit?: number) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/${projectId}/versions`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/${projectId}/versions`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to get Version History"); - } + if (!response.ok) { + echo.error("Failed to get Version History"); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get Version History"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to get Version History"); } - } }; diff --git a/app/src/services/factoryBuilder/wall/deleteWallApi.ts b/app/src/services/factoryBuilder/wall/deleteWallApi.ts index 8a91d11..4832941 100644 --- a/app/src/services/factoryBuilder/wall/deleteWallApi.ts +++ b/app/src/services/factoryBuilder/wall/deleteWallApi.ts @@ -5,6 +5,7 @@ export const deleteWallApi = async ( versionId: string, wallUuid: string ) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/deleteWall`, { method: "PATCH", @@ -23,17 +24,12 @@ export const deleteWallApi = async ( } if (!response.ok) { - console.error("Failed to delete wall:", response.statusText); + echo.error("Failed to delete wall"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to delete wall"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/wall/getWallsApi.ts b/app/src/services/factoryBuilder/wall/getWallsApi.ts index b3f94b0..23cbb01 100644 --- a/app/src/services/factoryBuilder/wall/getWallsApi.ts +++ b/app/src/services/factoryBuilder/wall/getWallsApi.ts @@ -4,6 +4,7 @@ export const getWallsApi = async ( projectId: string, versionId: string, ) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/Walls/${projectId}/${versionId}`, { method: "GET", @@ -21,17 +22,12 @@ export const getWallsApi = async ( } if (!response.ok) { - console.error("Failed to get walls:", response.statusText); + echo.error("Failed to get walls"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to get walls"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/wall/upsertWallApi.ts b/app/src/services/factoryBuilder/wall/upsertWallApi.ts index 023da68..5ad04c8 100644 --- a/app/src/services/factoryBuilder/wall/upsertWallApi.ts +++ b/app/src/services/factoryBuilder/wall/upsertWallApi.ts @@ -5,6 +5,7 @@ export const upsertWallApi = async ( versionId: string, wallData: Wall ) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/UpsertWall`, { method: "POST", @@ -23,17 +24,12 @@ export const upsertWallApi = async ( } if (!response.ok) { - console.error("Failed to upsert wall:", response.statusText); + echo.error("Failed to upsert wall"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to upsert wall"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/webWorkers/distanceWorker.js b/app/src/services/factoryBuilder/webWorkers/distanceWorker.js index 44111c5..74d49b5 100644 --- a/app/src/services/factoryBuilder/webWorkers/distanceWorker.js +++ b/app/src/services/factoryBuilder/webWorkers/distanceWorker.js @@ -13,9 +13,7 @@ onmessage = function (e) { } else if (isRendered && distance > renderDistance) { postMessage({ shouldRender: false, modelUuid }); } - } else { - if (!isRendered) { - postMessage({ shouldRender: true, modelUuid }); - } + } else if (!isRendered) { + postMessage({ shouldRender: true, modelUuid }); } }; diff --git a/app/src/services/factoryBuilder/zone/deleteZoneApi.ts b/app/src/services/factoryBuilder/zone/deleteZoneApi.ts index 87b80dd..504505b 100644 --- a/app/src/services/factoryBuilder/zone/deleteZoneApi.ts +++ b/app/src/services/factoryBuilder/zone/deleteZoneApi.ts @@ -5,6 +5,7 @@ export const deleteZoneApi = async ( versionId: string, zoneUuid: string ) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/zones/delete`, { method: "PATCH", @@ -23,17 +24,12 @@ export const deleteZoneApi = async ( } if (!response.ok) { - console.error("Failed to delete zone:", response.statusText); + echo.error("Failed to delete zone"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to delete zone"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/zone/getZonesApi.ts b/app/src/services/factoryBuilder/zone/getZonesApi.ts index 2714685..0186e30 100644 --- a/app/src/services/factoryBuilder/zone/getZonesApi.ts +++ b/app/src/services/factoryBuilder/zone/getZonesApi.ts @@ -1,6 +1,7 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getZonesApi = async (projectId: string, versionId: string,) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/zones/${projectId}/${versionId}`, { method: "GET", @@ -18,17 +19,12 @@ export const getZonesApi = async (projectId: string, versionId: string,) => { } if (!response.ok) { - console.error("Failed to get zones:", response.statusText); + echo.error("Failed to get zones"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to get zones"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/factoryBuilder/zone/upsertZoneApi.ts b/app/src/services/factoryBuilder/zone/upsertZoneApi.ts index e19eae8..044148c 100644 --- a/app/src/services/factoryBuilder/zone/upsertZoneApi.ts +++ b/app/src/services/factoryBuilder/zone/upsertZoneApi.ts @@ -5,6 +5,7 @@ export const upsertZoneApi = async ( versionId: string, zoneData: Zone ) => { + try { const response = await fetch(`${url_Backend_dwinzo}/api/V1/upsertZone`, { method: "POST", @@ -23,17 +24,12 @@ export const upsertZoneApi = async ( } if (!response.ok) { - console.error("Failed to upsert zone:", response.statusText); + echo.error("Failed to upsert zone"); } const result = await response.json(); return result; - } catch (error) { + } catch { echo.error("Failed to upsert zone"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } } }; diff --git a/app/src/services/simulation/products/UpsertProductOrEventApi.ts b/app/src/services/simulation/products/UpsertProductOrEventApi.ts index 2382762..f5cab65 100644 --- a/app/src/services/simulation/products/UpsertProductOrEventApi.ts +++ b/app/src/services/simulation/products/UpsertProductOrEventApi.ts @@ -1,6 +1,7 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const upsertProductOrEventApi = async (body: any) => { + try { const response = await fetch( `${url_Backend_dwinzo}/api/V1/ProductUpsert`, @@ -21,17 +22,12 @@ export const upsertProductOrEventApi = async (body: any) => { } if (!response.ok) { - console.error("Failed to add product or event"); + echo.error("Failed to add product or event"); } const result = await response.json(); return result; - } catch (error) { - echo.error("Failed to upsert product Or eventApi"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - } + } catch { + echo.error("Failed to upsert product or event"); } }; diff --git a/app/src/services/simulation/products/deleteEventDataApi.ts b/app/src/services/simulation/products/deleteEventDataApi.ts index 1faf312..0e5e728 100644 --- a/app/src/services/simulation/products/deleteEventDataApi.ts +++ b/app/src/services/simulation/products/deleteEventDataApi.ts @@ -1,40 +1,35 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const deleteEventDataApi = async (body: any) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/DeleteEvent`, - { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - } - ); - - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } + + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/DeleteEvent`, + { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + } + ); + + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - if (!response.ok) { - console.error("Failed to delete event data"); - } + if (!response.ok) { + echo.error("Failed to delete event data"); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to delete event data API"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + const result = await response.json(); + return result; + } catch { + echo.error("Failed to delete event data"); } - } }; diff --git a/app/src/services/simulation/products/deleteProductApi.ts b/app/src/services/simulation/products/deleteProductApi.ts index 4e6ab1a..20b3447 100644 --- a/app/src/services/simulation/products/deleteProductApi.ts +++ b/app/src/services/simulation/products/deleteProductApi.ts @@ -1,38 +1,33 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const deleteProductApi = async (body: any) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/DeleteProduct`, - { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to delete product data"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/DeleteProduct`, + { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to delete product API"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to delete product data"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to delete product"); } - } }; diff --git a/app/src/services/simulation/products/getProductApi.ts b/app/src/services/simulation/products/getProductApi.ts index b25c781..c557e33 100644 --- a/app/src/services/simulation/products/getProductApi.ts +++ b/app/src/services/simulation/products/getProductApi.ts @@ -1,40 +1,35 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getProductApi = async ( - productUuid: string, - projectId: string + productUuid: string, + projectId: string ) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/EventsByProduct?productUuid=${productUuid}&projectId=${projectId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to fetch product data"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/EventsByProduct?productUuid=${productUuid}&projectId=${projectId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get product asset"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to fetch product data"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to fetch product data"); } - } }; diff --git a/app/src/services/simulation/products/getallProductsApi.ts b/app/src/services/simulation/products/getallProductsApi.ts index 7d4902f..e7e54b0 100644 --- a/app/src/services/simulation/products/getallProductsApi.ts +++ b/app/src/services/simulation/products/getallProductsApi.ts @@ -1,37 +1,32 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const getAllProductsApi = async (projectId: string, versionId: string) => { - try { - const response = await fetch( - `${url_Backend_dwinzo}/api/V1/ProjectProducts/${projectId}/${versionId}`, - { - method: "GET", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - } - ); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to fetch all products data"); - } + try { + const response = await fetch( + `${url_Backend_dwinzo}/api/V1/ProjectProducts/${projectId}/${versionId}`, + { + method: "GET", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + } + ); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - return result; - } catch (error) { - echo.error("Failed to get all product API"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to fetch all products data"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to fetch all products data"); } - } }; diff --git a/app/src/services/simulation/products/renameProductApi.ts b/app/src/services/simulation/products/renameProductApi.ts index d43997e..fba1254 100644 --- a/app/src/services/simulation/products/renameProductApi.ts +++ b/app/src/services/simulation/products/renameProductApi.ts @@ -1,43 +1,35 @@ let url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_REST_API_BASE_URL}`; export const renameProductApi = async (body: { - productName: string; - productUuid: string; - projectId: string; - versionId: string; + productName: string; + productUuid: string; + projectId: string; + versionId: string; }) => { - try { - const response = await fetch(`${url_Backend_dwinzo}/api/V1/RenameProduct`, { - method: "PATCH", - headers: { - Authorization: "Bearer ", - "Content-Type": "application/json", - token: localStorage.getItem("token") || "", - refresh_token: localStorage.getItem("refreshToken") || "", - }, - body: JSON.stringify(body), - }); - const newAccessToken = response.headers.get("x-access-token"); - if (newAccessToken) { - //console.log("New token received:", newAccessToken); - localStorage.setItem("token", newAccessToken); - } - if (!response.ok) { - console.error("Failed to rename product"); - echo.error("Failed to rename product"); - } + try { + const response = await fetch(`${url_Backend_dwinzo}/api/V1/RenameProduct`, { + method: "PATCH", + headers: { + Authorization: "Bearer ", + "Content-Type": "application/json", + token: localStorage.getItem("token") || "", + refresh_token: localStorage.getItem("refreshToken") || "", + }, + body: JSON.stringify(body), + }); + const newAccessToken = response.headers.get("x-access-token"); + if (newAccessToken) { + localStorage.setItem("token", newAccessToken); + } - const result = await response.json(); - // console.log('result: ', result); - return result; - } catch (error) { - echo.error("Failed to rename product Api"); - if (error instanceof Error) { - console.log(error.message); - } else { - console.log("An unknown error occurred"); - echo.log("An unknown error occurred"); + if (!response.ok) { + echo.error("Failed to rename product"); + } + + const result = await response.json(); + return result; + } catch { + echo.error("Failed to rename product"); } - } }; diff --git a/app/src/services/visulization/zone/zoneCameraUpdation.ts b/app/src/services/visulization/zone/zoneCameraUpdation.ts index 9bb3b24..11b5707 100644 --- a/app/src/services/visulization/zone/zoneCameraUpdation.ts +++ b/app/src/services/visulization/zone/zoneCameraUpdation.ts @@ -6,7 +6,7 @@ export const zoneCameraUpdate = async (zoneData: {}, organization: string, proje const response = await fetch(`${url_Backend_dwinzo}/api/V1/upsertZone`, { method: "POST", headers: { - Authorization: "Bearer ", // Replace with actual token + Authorization: "Bearer ", "Content-Type": "application/json", token: localStorage.getItem("token") || "", refresh_token: localStorage.getItem("refreshToken") || "",