added api fallback for sockets

This commit is contained in:
2025-09-01 17:36:40 +05:30
parent 765f4acb57
commit 8e7c5a1aa0
43 changed files with 2034 additions and 1863 deletions

View File

@@ -39,7 +39,7 @@ const DashboardHome: React.FC = () => {
if (JSON.stringify(projects) !== JSON.stringify(recentProjects)) { if (JSON.stringify(projects) !== JSON.stringify(recentProjects)) {
setRecentProjects(projects); setRecentProjects(projects);
} }
} catch (error) {} } catch (error) { }
}; };
const handleRecentProjectSearch = async (inputValue: string) => { const handleRecentProjectSearch = async (inputValue: string) => {
@@ -66,7 +66,7 @@ const DashboardHome: React.FC = () => {
// ); // );
// //
//socket for delete Project // SOCKET for delete Project
const deleteProject = { const deleteProject = {
projectId, projectId,
organization, organization,
@@ -90,7 +90,7 @@ const DashboardHome: React.FC = () => {
}; };
}); });
setIsSearchActive(false); setIsSearchActive(false);
} catch (error) {} } catch (error) { }
}; };
const handleDuplicateRecentProject = async ( const handleDuplicateRecentProject = async (
@@ -98,15 +98,18 @@ const DashboardHome: React.FC = () => {
projectName: string, projectName: string,
thumbnail: string thumbnail: string
) => { ) => {
const duplicateRecentProjectData = { if (projectSocket) {
userId,
thumbnail, const duplicateRecentProjectData = {
organization, userId,
projectUuid: generateUniqueId(), thumbnail,
refProjectID: projectId, organization,
projectName, projectUuid: generateUniqueId(),
}; refProjectID: projectId,
projectSocket.emit("v1:project:Duplicate", duplicateRecentProjectData); projectName,
};
projectSocket.emit("v1:project:Duplicate", duplicateRecentProjectData);
}
}; };
const renderProjects = () => { const renderProjects = () => {

View File

@@ -60,7 +60,7 @@ const DashboardProjects: React.FC = () => {
if (JSON.stringify(projects) !== JSON.stringify(workspaceProjects)) { if (JSON.stringify(projects) !== JSON.stringify(workspaceProjects)) {
setWorkspaceProjects(projects); setWorkspaceProjects(projects);
} }
} catch (error) {} } catch (error) { }
}; };
const handleDeleteProject = async (projectId: any) => { const handleDeleteProject = async (projectId: any) => {
@@ -77,7 +77,7 @@ const DashboardProjects: React.FC = () => {
userId, userId,
}; };
//socket for deleting the project // SOCKET for deleting the project
if (projectSocket) { if (projectSocket) {
projectSocket.emit("v1:project:delete", deleteProjects); projectSocket.emit("v1:project:delete", deleteProjects);
} else { } else {
@@ -95,7 +95,7 @@ const DashboardProjects: React.FC = () => {
}; };
}); });
setIsSearchActive(false); setIsSearchActive(false);
} catch (error) {} } catch (error) { }
}; };
const handleDuplicateWorkspaceProject = async ( const handleDuplicateWorkspaceProject = async (
@@ -110,16 +110,17 @@ const DashboardProjects: React.FC = () => {
// projectName // projectName
// ); // );
// console.log("duplicatedProject: ", duplicatedProject); // console.log("duplicatedProject: ", duplicatedProject);
if (projectSocket) {
const duplicateProjectData = { const duplicateProjectData = {
userId, userId,
thumbnail, thumbnail,
organization, organization,
projectUuid: generateUniqueId(), projectUuid: generateUniqueId(),
refProjectID: projectId, refProjectID: projectId,
projectName, projectName,
}; };
projectSocket.emit("v1:project:Duplicate", duplicateProjectData); projectSocket.emit("v1:project:Duplicate", duplicateProjectData);
}
}; };
const renderProjects = () => { const renderProjects = () => {
@@ -166,7 +167,7 @@ const DashboardProjects: React.FC = () => {
try { try {
const sharedWithMe = await sharedWithMeProjects(); const sharedWithMe = await sharedWithMeProjects();
setSharedWithMeProjects(sharedWithMe); setSharedWithMeProjects(sharedWithMe);
} catch {} } catch { }
}; };
useEffect(() => { useEffect(() => {

View File

@@ -38,12 +38,13 @@ const SidePannel: React.FC<SidePannelProps> = ({ setActiveTab, activeTab }) => {
const handleCreateNewProject = async () => { const handleCreateNewProject = async () => {
const token = localStorage.getItem("token"); const token = localStorage.getItem("token");
const refreshToken = localStorage.getItem("refreshToken"); const refreshToken = localStorage.getItem("refreshToken");
console.log("refreshToken: ", refreshToken); if (!token || !refreshToken) {
console.error('token expired');
return;
}
try { try {
const projectId = generateProjectId(); const projectId = generateProjectId();
useSocketStore useSocketStore.getState().initializeSocket(email, organization, token, refreshToken);
.getState()
.initializeSocket(email, organization, token, refreshToken);
//API for creating new Project //API for creating new Project
// const project = await createProject( // const project = await createProject(
@@ -60,7 +61,6 @@ const SidePannel: React.FC<SidePannelProps> = ({ setActiveTab, activeTab }) => {
projectUuid: projectId, projectUuid: projectId,
}; };
console.log("projectSocket: ", projectSocket);
if (projectSocket) { if (projectSocket) {
const handleResponse = (data: any) => { const handleResponse = (data: any) => {
if (data.message === "Project created successfully") { if (data.message === "Project created successfully") {
@@ -90,7 +90,7 @@ const SidePannel: React.FC<SidePannelProps> = ({ setActiveTab, activeTab }) => {
<div className="user-name"> <div className="user-name">
{userName {userName
? userName.charAt(0).toUpperCase() + ? userName.charAt(0).toUpperCase() +
userName.slice(1).toLowerCase() userName.slice(1).toLowerCase()
: "Anonymous"} : "Anonymous"}
</div> </div>
</div> </div>

View File

@@ -75,7 +75,7 @@ const Assets: React.FC = () => {
return ( return (
<div className="assets-container-main"> <div className="assets-container-main">
<Search onChange={setSearchValue} value={searchValue} /> <Search debounced onChange={setSearchValue} value={searchValue} />
<div className="assets-list-section"> <div className="assets-list-section">
<section> <section>
{isLoading ? ( {isLoading ? (

View File

@@ -282,11 +282,11 @@ const AisleProperties: React.FC = () => {
<button <button
key={val.id} key={val.id}
title={val.brief || val.id} title={val.brief || val.id}
className={`aisle-list ${aisleColor === val.color ? "selected" : ""}`} className={`aisle-list ${aisleColor === val.id ? "selected" : ""}`}
onClick={() => setAisleColor(val.id)} onClick={() => setAisleColor(val.id)}
aria-pressed={aisleColor === val.id} aria-pressed={aisleColor === val.id}
> >
<div <div
className={`texture-display ${val.id}`} className={`texture-display ${val.id}`}
style={{ background: val.id }} style={{ background: val.id }}
> >

View File

@@ -20,6 +20,8 @@ import { useSocketStore } from "../../../../store/builder/store";
import { getUserData } from "../../../../functions/getUserData"; import { getUserData } from "../../../../functions/getUserData";
import { aisleTextureList } from "./AisleProperties"; import { aisleTextureList } from "./AisleProperties";
import { upsertAisleApi } from "../../../../services/factoryBuilder/aisle/upsertAisleApi";
const SelectedAisleProperties: React.FC = () => { const SelectedAisleProperties: React.FC = () => {
const [collapsePresets, setCollapsePresets] = useState(false); const [collapsePresets, setCollapsePresets] = useState(false);
const [collapseTexture, setCollapseTexture] = useState(true); const [collapseTexture, setCollapseTexture] = useState(true);
@@ -44,23 +46,28 @@ const SelectedAisleProperties: React.FC = () => {
const updateBackend = (updatedAisle: Aisle) => { const updateBackend = (updatedAisle: Aisle) => {
if (updatedAisle && projectId) { if (updatedAisle && projectId) {
// API if (!socket?.active) {
// upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); // API
// SOCKET upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || '');
const data = { } else {
projectId: projectId,
versionId: selectedVersion?.versionId || '', // SOCKET
userId: userId,
organization: organization, const data = {
aisleUuid: updatedAisle.aisleUuid, projectId: projectId,
points: updatedAisle.points, versionId: selectedVersion?.versionId || '',
type: updatedAisle.type userId: userId,
organization: organization,
aisleUuid: updatedAisle.aisleUuid,
points: updatedAisle.points,
type: updatedAisle.type
}
socket.emit('v1:model-aisle:add', data);
} }
socket.emit('v1:model-aisle:add', data);
} }
} }

View File

@@ -7,8 +7,8 @@ import { useSocketStore } from "../../../../store/builder/store";
import InputRange from "../../../ui/inputs/InputRange"; import InputRange from "../../../ui/inputs/InputRange";
import { getUserData } from "../../../../functions/getUserData"; import { getUserData } from "../../../../functions/getUserData";
// import { upsertWallApi } from "../../../../services/factoryBuilder/wall/upsertWallApi"; import { upsertWallApi } from "../../../../services/factoryBuilder/wall/upsertWallApi";
// import { upsertFloorApi } from "../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../services/factoryBuilder/floor/upsertFloorApi";
const SelectedDecalProperties = () => { const SelectedDecalProperties = () => {
const { selectedDecal, setSelectedDecal } = useBuilderStore(); const { selectedDecal, setSelectedDecal } = useBuilderStore();
@@ -24,39 +24,45 @@ const SelectedDecalProperties = () => {
const updateBackend = (updatedData: Wall | Floor) => { const updateBackend = (updatedData: Wall | Floor) => {
if ('wallUuid' in updatedData) { if ('wallUuid' in updatedData) {
if (projectId && updatedData) { if (projectId && updatedData) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedData, wallData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
} else if ('floorUuid' in updatedData) { } else if ('floorUuid' in updatedData) {
if (projectId && updatedData) { if (projectId && updatedData) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedData, floorData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
} }
} }

View File

@@ -10,7 +10,7 @@ import { getUserData } from "../../../../functions/getUserData";
import { useSocketStore } from "../../../../store/builder/store"; import { useSocketStore } from "../../../../store/builder/store";
import { materials } from "./FloorProperties"; import { materials } from "./FloorProperties";
// import { upsertFloorApi } from "../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../services/factoryBuilder/floor/upsertFloorApi";
const SelectedFloorProperties = () => { const SelectedFloorProperties = () => {
const [depth, setDepth] = useState(""); const [depth, setDepth] = useState("");
@@ -43,22 +43,25 @@ const SelectedFloorProperties = () => {
if (!isNaN(parsed) && floor) { if (!isNaN(parsed) && floor) {
const updatedFloor = updateFloor(floor.floorUuid, { floorDepth: parsed }); const updatedFloor = updateFloor(floor.floorUuid, { floorDepth: parsed });
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
} }
}; };
@@ -69,10 +72,40 @@ const SelectedFloorProperties = () => {
if (!isNaN(parsed) && floor) { if (!isNaN(parsed) && floor) {
const updatedFloor = updateFloor(floor.floorUuid, { bevelStrength: parsed }); const updatedFloor = updateFloor(floor.floorUuid, { bevelStrength: parsed });
if (projectId) { if (projectId) {
if (!socket?.active) {
// API
upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET
const data = {
floorData: updatedFloor,
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Floor:add', data);
}
}
}
};
const handleIsBeveledToggle = () => {
setIsBeveled(!isBeveled);
if (!floor) return;
const updatedFloor = updateFloor(floor.floorUuid, { isBeveled: !floor.isBeveled });
if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
@@ -87,30 +120,6 @@ const SelectedFloorProperties = () => {
socket.emit('v1:model-Floor:add', data); socket.emit('v1:model-Floor:add', data);
} }
} }
};
const handleIsBeveledToggle = () => {
setIsBeveled(!isBeveled);
if (!floor) return;
const updatedFloor = updateFloor(floor.floorUuid, { isBeveled: !floor.isBeveled });
if (projectId) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
// SOCKET
const data = {
floorData: updatedFloor,
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Floor:add', data);
}
}; };
@@ -119,22 +128,25 @@ const SelectedFloorProperties = () => {
const key = activeSurface === "top" ? "topMaterial" : "sideMaterial"; const key = activeSurface === "top" ? "topMaterial" : "sideMaterial";
const updatedFloor = updateFloor(floor.floorUuid, { [key]: material.textureId }); const updatedFloor = updateFloor(floor.floorUuid, { [key]: material.textureId });
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}; };

View File

@@ -11,7 +11,7 @@ import { useParams } from "react-router-dom";
import { getUserData } from "../../../../functions/getUserData"; import { getUserData } from "../../../../functions/getUserData";
import { useSocketStore } from "../../../../store/builder/store"; import { useSocketStore } from "../../../../store/builder/store";
// import { upsertWallApi } from "../../../../services/factoryBuilder/wall/upsertWallApi"; import { upsertWallApi } from "../../../../services/factoryBuilder/wall/upsertWallApi";
const SelectedWallProperties = () => { const SelectedWallProperties = () => {
const [height, setHeight] = useState(""); const [height, setHeight] = useState("");
@@ -47,22 +47,25 @@ const SelectedWallProperties = () => {
if (!isNaN(height) && wall) { if (!isNaN(height) && wall) {
const updatedWall = updateWall(wall.wallUuid, { wallHeight: height }); const updatedWall = updateWall(wall.wallUuid, { wallHeight: height });
if (updatedWall && projectId) { if (updatedWall && projectId) {
if (!socket?.active) {
// API // API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedWall, wallData: updatedWall,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
} }
}; };
@@ -73,10 +76,41 @@ const SelectedWallProperties = () => {
if (!isNaN(thickness) && wall) { if (!isNaN(thickness) && wall) {
const updatedWall = updateWall(wall.wallUuid, { wallThickness: thickness }); const updatedWall = updateWall(wall.wallUuid, { wallThickness: thickness });
if (updatedWall && projectId) { if (updatedWall && projectId) {
if (!socket?.active) {
// API
upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET
const data = {
wallData: updatedWall,
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Wall:add', data);
}
}
}
};
const handleSelectMaterial = (material: { textureId: string; textureName: string }) => {
if (!wall) return;
const updated = (activeSide === "side1" ? { insideMaterial: material.textureId } : { outsideMaterial: material.textureId })
const updatedWall = updateWall(wall.wallUuid, updated);
if (updatedWall && projectId) {
if (!socket?.active) {
// API // API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); // upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
@@ -93,31 +127,6 @@ const SelectedWallProperties = () => {
} }
}; };
const handleSelectMaterial = (material: { textureId: string; textureName: string }) => {
if (!wall) return;
const updated = (activeSide === "side1" ? { insideMaterial: material.textureId } : { outsideMaterial: material.textureId })
const updatedWall = updateWall(wall.wallUuid, updated);
if (updatedWall && projectId) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
// SOCKET
const data = {
wallData: updatedWall,
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Wall:add', data);
}
};
if (!wall) return null; if (!wall) return null;
const selectedMaterials = { const selectedMaterials = {

View File

@@ -65,32 +65,34 @@ const Messages: React.FC<MessageProps> = ({ val, i, setMessages, mode, setIsEdit
if (isEditableThread && editedThread) { if (isEditableThread && editedThread) {
try { try {
// const editThreadTitle = await editThreadTitleApi(projectId, (val as CommentSchema).threadId, value, selectedVersion?.versionId || "") if (!threadSocket?.active) {
// if (editThreadTitle.message == "ThreadTitle updated Successfully") { const editThreadTitle = await editThreadTitleApi(projectId, (val as CommentSchema).threadId, value, selectedVersion?.versionId || "")
// const editedThread: CommentSchema = { if (editThreadTitle.message == "ThreadTitle updated Successfully") {
// state: 'active', const editedThread: CommentSchema = {
// threadId: editThreadTitle.data.replyId, state: 'active',
// creatorId: userId, threadId: editThreadTitle.data.replyId,
// createdAt: getRelativeTime(editThreadTitle.data.createdAt), creatorId: userId,
// threadTitle: value, createdAt: getRelativeTime(editThreadTitle.data.createdAt),
// lastUpdatedAt: new Date().toISOString(), threadTitle: value,
// position: editThreadTitle.data.position, lastUpdatedAt: new Date().toISOString(),
// rotation: [0, 0, 0], position: editThreadTitle.data.position,
// comments: [], rotation: [0, 0, 0],
// } comments: [],
// updateComment((val as CommentSchema).threadId, editedThread) }
// } updateComment((val as CommentSchema).threadId, editedThread)
// projectId, userId, threadTitle, organization, threadId }
const threadEdit = { } else {
projectId, const threadEdit = {
userId, projectId,
threadTitle: value, userId,
organization, threadTitle: value,
threadId: (val as CommentSchema).threadId || selectedComment.threadId, organization,
versionId: selectedVersion?.versionId || "" threadId: (val as CommentSchema).threadId || selectedComment.threadId,
} versionId: selectedVersion?.versionId || ""
}
threadSocket.emit('v1:thread:updateTitle', threadEdit) threadSocket.emit('v1:thread:updateTitle', threadEdit)
}
} catch { } catch {
} }
} else { } else {
@@ -277,7 +279,7 @@ const Messages: React.FC<MessageProps> = ({ val, i, setMessages, mode, setIsEdit
<div className="message"> <div className="message">
{"comment" in val ? val.comment : val.threadTitle} {"comment" in val ? val.comment : val.threadTitle}
</div> </div>
</div> </div>
</div > </div >
)} )}

View File

@@ -5,12 +5,14 @@ interface SearchProps {
value?: string | null; // The current value of the search input value?: string | null; // The current value of the search input
placeholder?: string; // Placeholder text for the input placeholder?: string; // Placeholder text for the input
onChange: (value: string) => void; // Callback function to handle input changes onChange: (value: string) => void; // Callback function to handle input changes
debounced?: boolean; // New prop: whether to debounce onChange
} }
const Search: React.FC<SearchProps> = ({ const Search: React.FC<SearchProps> = ({
value = "", value = "",
placeholder = "Search", placeholder = "Search",
onChange, onChange,
debounced = false, // Default false
}) => { }) => {
// State to track the input value and focus status // State to track the input value and focus status
const [inputValue, setInputValue] = useState(value); const [inputValue, setInputValue] = useState(value);
@@ -19,7 +21,10 @@ const Search: React.FC<SearchProps> = ({
const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => { const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {
const newValue = event.target.value; const newValue = event.target.value;
setInputValue(newValue); setInputValue(newValue);
onChange(newValue); // Call the onChange prop with the new value
if (!debounced) {
onChange(newValue); // Immediate call if not debounced
}
}; };
useEffect(() => { useEffect(() => {
@@ -29,26 +34,36 @@ const Search: React.FC<SearchProps> = ({
} }
}, [value]); }, [value]);
// Handle debounced effect
useEffect(() => {
if (!debounced) return;
const timer = setTimeout(() => {
onChange(inputValue ?? "");
}, 500);
return () => clearTimeout(timer);
}, [inputValue, debounced, onChange]);
const handleClear = () => { const handleClear = () => {
echo.warn("Search field cleared."); console.warn("Search field cleared.");
setInputValue(""); setInputValue("");
onChange(""); // Clear the input value onChange(""); // Clear immediately
}; };
const handleFocus = () => { const handleFocus = () => {
setIsFocused(true); // Set focus state to true setIsFocused(true);
}; };
const handleBlur = () => { const handleBlur = () => {
setIsFocused(false); // Set focus state to false setIsFocused(false);
}; };
return ( return (
<div className="search-wrapper"> <div className="search-wrapper">
<div <div
className={`search-container ${ className={`search-container ${isFocused || inputValue ? "active" : ""
isFocused || inputValue ? "active" : "" }`}
}`}
> >
<div className="icon-container"> <div className="icon-container">
<SearchIcon /> <SearchIcon />
@@ -76,4 +91,4 @@ const Search: React.FC<SearchProps> = ({
); );
}; };
export default Search; export default Search;

View File

@@ -9,8 +9,8 @@ import { useVersionContext } from '../../version/versionContext';
import { getUserData } from '../../../../functions/getUserData'; import { getUserData } from '../../../../functions/getUserData';
// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi';
// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi';
function DecalCreator() { function DecalCreator() {
const { wallStore, floorStore } = useSceneContext(); const { wallStore, floorStore } = useSceneContext();
@@ -63,22 +63,25 @@ function DecalCreator() {
setTimeout(() => { setTimeout(() => {
const updatedWall = getWallById(wallIntersect.object.userData.wallUuid); const updatedWall = getWallById(wallIntersect.object.userData.wallUuid);
if (updatedWall) { if (updatedWall) {
if (projectId && updatedWall) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedWall, wallData: updatedWall,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
} }
}, 0) }, 0)
@@ -107,21 +110,24 @@ function DecalCreator() {
setTimeout(() => { setTimeout(() => {
const updatedFloor = getFloorById(floorIntersect.object.userData.floorUuid); const updatedFloor = getFloorById(floorIntersect.object.userData.floorUuid);
if (projectId && updatedFloor) { if (projectId && updatedFloor) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}, 0) }, 0)
} }

View File

@@ -13,8 +13,8 @@ import { useSceneContext } from '../../../scene/sceneContext';
import { detectModifierKeys } from '../../../../utils/shortcutkeys/detectModifierKeys'; import { detectModifierKeys } from '../../../../utils/shortcutkeys/detectModifierKeys';
import handleDecalPositionSnap from '../functions/handleDecalPositionSnap'; import handleDecalPositionSnap from '../functions/handleDecalPositionSnap';
// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi';
// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi';
export function useDecalEventHandlers({ export function useDecalEventHandlers({
parent, parent,
@@ -147,22 +147,25 @@ export function useDecalEventHandlers({
setTimeout(() => { setTimeout(() => {
const updatedWall = getWallById(parent.wallUuid); const updatedWall = getWallById(parent.wallUuid);
if (updatedWall) { if (updatedWall) {
if (projectId && updatedWall) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedWall, wallData: updatedWall,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
} }
}, 0) }, 0)
@@ -171,21 +174,24 @@ export function useDecalEventHandlers({
const updatedFloor = parent; const updatedFloor = parent;
if (projectId && updatedFloor) { if (projectId && updatedFloor) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}, 0) }, 0)
} }
@@ -197,41 +203,47 @@ export function useDecalEventHandlers({
const updatedWall = removeDecalInWall(decalUuid); const updatedWall = removeDecalInWall(decalUuid);
if (projectId && updatedWall) { if (projectId && updatedWall) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedWall, wallData: updatedWall,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
} else if ('floorUuid' in parent) { } else if ('floorUuid' in parent) {
const updatedFloor = removeDecalInFloor(decalUuid); const updatedFloor = removeDecalInFloor(decalUuid);
if (projectId && updatedFloor) { if (projectId && updatedFloor) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
} }
} }

View File

@@ -10,7 +10,7 @@ import ReferenceAisle from './referenceAisle';
import ReferencePoint from '../../point/reference/referencePoint'; import ReferencePoint from '../../point/reference/referencePoint';
import { getUserData } from '../../../../functions/getUserData'; import { getUserData } from '../../../../functions/getUserData';
// import { upsertAisleApi } from '../../../../services/factoryBuilder/aisle/upsertAisleApi'; import { upsertAisleApi } from '../../../../services/factoryBuilder/aisle/upsertAisleApi';
function AisleCreator() { function AisleCreator() {
const { scene, camera, raycaster, gl, pointer } = useThree(); const { scene, camera, raycaster, gl, pointer } = useThree();
@@ -93,431 +93,70 @@ function AisleCreator() {
} }
} }
if (aisleType === 'solid-aisle') { const aisleConfigs: Record<string, (color: string) => any> = {
"solid-aisle": (color) => ({ aisleType: "solid-aisle", aisleColor: color, aisleWidth }),
"dashed-aisle": (color) => ({ aisleType: "dashed-aisle", aisleColor: color, aisleWidth, dashLength, gapLength }),
"dotted-aisle": (color) => ({ aisleType: "dotted-aisle", aisleColor: color, dotRadius, gapLength }),
"arrow-aisle": (color) => ({ aisleType: "arrow-aisle", aisleColor: color, aisleWidth }),
"arrows-aisle": (color) => ({ aisleType: "arrows-aisle", aisleColor: color, aisleWidth, aisleLength, gapLength }),
"arc-aisle": (color) => ({ aisleType: "arc-aisle", aisleColor: color, aisleWidth, isFlipped }),
"circle-aisle": (color) => ({ aisleType: "circle-aisle", aisleColor: color, aisleWidth }),
"junction-aisle": (color) => ({ aisleType: "junction-aisle", aisleColor: color, aisleWidth, isFlipped })
};
if (!aisleType || !(aisleType in aisleConfigs)) return;
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
return;
}
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: aisleConfigs[aisleType](aisleColor)
};
addAisle(aisle);
push2D({
type: "Draw",
actions: [{
actionType: "Line-Create",
point: { type: "Aisle", lineData: aisle, timeStamp: new Date().toISOString() }
}]
});
addAilseToBackend(aisle);
setTempPoints([newPoint]);
};
const addAilseToBackend = (aisle: Aisle) => {
if (projectId) {
if (!socket?.active) {
// API
upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else { } else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'solid-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth
}
};
addAisle(aisle); // SOCKET
push2D({ socket.emit("v1:model-aisle:add", {
type: 'Draw', projectId,
actions: [ versionId: selectedVersion?.versionId || "",
{ userId,
actionType: 'Line-Create', organization,
point: { aisleUuid: aisle.aisleUuid,
type: 'Aisle', points: aisle.points,
lineData: aisle, type: aisle.type
timeStamp: new Date().toISOString(), });
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'dashed-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'dashed-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth,
dashLength: dashLength,
gapLength: gapLength
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'dotted-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'dotted-aisle',
aisleColor: aisleColor,
dotRadius: dotRadius,
gapLength: gapLength
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'arrow-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'arrow-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'arrows-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'arrows-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth,
aisleLength: aisleLength,
gapLength: gapLength
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'arc-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'arc-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth,
isFlipped: isFlipped
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'circle-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'circle-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
}
} else if (aisleType === 'junction-aisle') {
if (tempPoints.length === 0) {
setTempPoints([newPoint]);
setIsCreating(true);
} else {
const aisle: Aisle = {
aisleUuid: THREE.MathUtils.generateUUID(),
points: [tempPoints[0], newPoint],
type: {
aisleType: 'junction-aisle',
aisleColor: aisleColor,
aisleWidth: aisleWidth,
isFlipped: isFlipped
}
};
addAisle(aisle);
push2D({
type: 'Draw',
actions: [
{
actionType: 'Line-Create',
point: {
type: 'Aisle',
lineData: aisle,
timeStamp: new Date().toISOString(),
}
}
],
})
if (projectId) {
// API
// upsertAisleApi(aisle.aisleUuid, aisle.points, aisle.type, projectId, selectedVersion?.versionId || '')
// SOCKET
socket.emit('v1:model-aisle:add', {
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization,
aisleUuid: aisle.aisleUuid,
points: aisle.points,
type: aisle.type
})
}
setTempPoints([newPoint]);
} }
} }
}; }
const onContext = (event: any) => { const onContext = (event: any) => {
event.preventDefault(); event.preventDefault();

View File

@@ -7,14 +7,14 @@ import * as CONSTANTS from "../../../../types/world/worldConstants";
import PointsCalculator from "../../../simulation/events/points/functions/pointsCalculator"; import PointsCalculator from "../../../simulation/events/points/functions/pointsCalculator";
import { getUserData } from "../../../../functions/getUserData"; import { getUserData } from "../../../../functions/getUserData";
// import { setAssetsApi } from '../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; import { setAssetsApi } from '../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi';
async function addAssetModel( async function addAssetModel(
scene: THREE.Scene, scene: THREE.Scene,
raycaster: THREE.Raycaster, raycaster: THREE.Raycaster,
camera: THREE.Camera, camera: THREE.Camera,
pointer: THREE.Vector2, pointer: THREE.Vector2,
socket: Socket<any>, socket: Socket<any> | null,
selectedItem: any, selectedItem: any,
setSelectedItem: any, setSelectedItem: any,
addEvent: (event: EventsSchema) => void, addEvent: (event: EventsSchema) => void,
@@ -106,7 +106,7 @@ async function handleModelLoad(
selectedItem: any, selectedItem: any,
addEvent: (event: EventsSchema) => void, addEvent: (event: EventsSchema) => void,
addAsset: (asset: Asset) => void, addAsset: (asset: Asset) => void,
socket: Socket<any>, socket: Socket<any> | null,
versionId: string, versionId: string,
projectId?: string, projectId?: string,
userId?: string userId?: string
@@ -140,22 +140,6 @@ async function handleModelLoad(
opacity: 1, opacity: 1,
}; };
// API
// await setAssetsApi(
// organization,
// newFloorItem.modelUuid,
// newFloorItem.modelName,
// newFloorItem.assetId,
// newFloorItem.position,
// { x: 0, y: 0, z: 0 },
// false,
// true,
// );
// SOCKET
if (selectedItem.type) { if (selectedItem.type) {
const data = PointsCalculator( const data = PointsCalculator(
selectedItem.type, selectedItem.type,
@@ -449,14 +433,34 @@ async function handleModelLoad(
rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id || '',
eventData: eventData, eventData: eventData,
versionId: versionId, versionId: versionId,
projectId: projectId, projectId: projectId,
userId: userId, userId: userId,
}; };
socket.emit("v1:model-asset:add", completeData); if (!socket?.active) {
// API
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
position: newFloorItem.position,
assetId: newFloorItem.assetId,
rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, },
eventData: eventData,
isLocked: false,
isVisible: true,
versionId: versionId,
projectId: projectId,
});
} else {
// SOCKET
socket.emit("v1:model-asset:add", completeData);
}
const asset: Asset = { const asset: Asset = {
modelUuid: completeData.modelUuid, modelUuid: completeData.modelUuid,
@@ -482,13 +486,32 @@ async function handleModelLoad(
rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, }, rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id || '',
versionId: versionId, versionId: versionId,
projectId: projectId, projectId: projectId,
userId: userId, userId: userId,
}; };
socket.emit("v1:model-asset:add", data); if (!socket?.active) {
// API
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
position: newFloorItem.position,
assetId: newFloorItem.assetId,
rotation: { x: model.rotation.x, y: model.rotation.y, z: model.rotation.z, },
isLocked: false,
isVisible: true,
versionId: versionId,
projectId: projectId,
});
} else {
// SOCKET
socket.emit("v1:model-asset:add", data);
}
const asset = { const asset = {
modelUuid: data.modelUuid, modelUuid: data.modelUuid,

View File

@@ -16,7 +16,7 @@ import { useSelectedAsset } from '../../../../../../store/simulation/useSimulati
import { useBuilderStore } from '../../../../../../store/builder/useBuilderStore'; import { useBuilderStore } from '../../../../../../store/builder/useBuilderStore';
import { upsertProductOrEventApi } from '../../../../../../services/simulation/products/UpsertProductOrEventApi'; import { upsertProductOrEventApi } from '../../../../../../services/simulation/products/UpsertProductOrEventApi';
// import { deleteFloorItem } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; import { deleteFloorItem } from '../../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi';
export function useModelEventHandlers({ export function useModelEventHandlers({
boundingBox, boundingBox,
@@ -146,24 +146,28 @@ export function useModelEventHandlers({
if (leftDrag.current || toggleView) return; if (leftDrag.current || toggleView) return;
if (activeTool === 'delete' && deletableFloorAsset && deletableFloorAsset.uuid === asset.modelUuid) { if (activeTool === 'delete' && deletableFloorAsset && deletableFloorAsset.uuid === asset.modelUuid) {
//REST if (!socket?.active) {
// const response = await deleteFloorItem(organization, asset.modelUuid, asset.modelName); // REST
//SOCKET deleteFloorItem(organization, asset.modelUuid, asset.modelName);
const data = { } else {
organization, // SOCKET
modelUuid: asset.modelUuid,
modelName: asset.modelName, const data = {
socketId: socket.id, organization,
userId, modelUuid: asset.modelUuid,
versionId: selectedVersion?.versionId || '', modelName: asset.modelName,
projectId socketId: socket.id,
userId,
versionId: selectedVersion?.versionId || '',
projectId
}
socket.emit('v1:model-asset:delete', data)
} }
const response = socket.emit('v1:model-asset:delete', data)
removeEvent(asset.modelUuid); removeEvent(asset.modelUuid);
const updatedEvents = deleteEvent(asset.modelUuid); const updatedEvents = deleteEvent(asset.modelUuid);
@@ -176,27 +180,24 @@ export function useModelEventHandlers({
); );
}) })
if (response) { removeAsset(asset.modelUuid);
removeAsset(asset.modelUuid); push3D({
type: 'Scene',
push3D({ actions: [
type: 'Scene', {
actions: [ module: "builder",
{ actionType: "Asset-Delete",
module: "builder", asset: {
actionType: "Asset-Delete", type: "Asset",
asset: { assetData: asset,
type: "Asset", timeStap: new Date().toISOString()
assetData: asset,
timeStap: new Date().toISOString()
}
} }
] }
}); ]
});
echo.success("Model Removed!"); echo.success("Model Removed!");
}
} else if (activeModule === 'simulation' && subModule === "simulations" && activeTool === 'pen') { } else if (activeModule === 'simulation' && subModule === "simulations" && activeTool === 'pen') {
if (asset.eventData && asset.eventData.type === 'Conveyor') { if (asset.eventData && asset.eventData.type === 'Conveyor') {

View File

@@ -9,6 +9,8 @@ import { useVersionContext } from '../version/versionContext';
import { useBuilderStore } from '../../../store/builder/useBuilderStore'; import { useBuilderStore } from '../../../store/builder/useBuilderStore';
import { useSceneContext } from '../../scene/sceneContext'; import { useSceneContext } from '../../scene/sceneContext';
import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi';
/** /**
* DxfFile component handles the rendering and manipulation of DXf file data in a 3D scene. * DxfFile component handles the rendering and manipulation of DXf file data in a 3D scene.
* It processes the DXF data to create points and lines representing walls and allows * It processes the DXF data to create points and lines representing walls and allows
@@ -39,20 +41,25 @@ const DxfFile = () => {
if (dfxWallGenerate) { if (dfxWallGenerate) {
dfxWallGenerate.map((wall: Wall) => { dfxWallGenerate.map((wall: Wall) => {
const data = { if (projectId) {
wallData: wall, if (!socket?.active) {
projectId: projectId, // API
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
addWall(wall);
socket.emit('v1:model-Wall:add', data);
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall); } else {
// } // SOCKET
const data = {
wallData: wall,
projectId: projectId,
versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
addWall(wall);
socket.emit('v1:model-Wall:add', data);
}
}
}) })
} }
}, [dfxWallGenerate]); }, [dfxWallGenerate]);

View File

@@ -10,7 +10,7 @@ import { getUserData } from '../../../../functions/getUserData';
import ReferencePoint from '../../point/reference/referencePoint'; import ReferencePoint from '../../point/reference/referencePoint';
import ReferenceFloor from './referenceFloor'; import ReferenceFloor from './referenceFloor';
// import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi'; import { upsertFloorApi } from '../../../../services/factoryBuilder/floor/upsertFloorApi';
function FloorCreator() { function FloorCreator() {
const { scene, camera, raycaster, gl, pointer } = useThree(); const { scene, camera, raycaster, gl, pointer } = useThree();
@@ -120,23 +120,25 @@ function FloorCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
setTempPoints([]); setTempPoints([]);
setIsCreating(false); setIsCreating(false);
@@ -174,23 +176,25 @@ function FloorCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
setTempPoints([]); setTempPoints([]);
setIsCreating(false); setIsCreating(false);
@@ -238,23 +242,25 @@ function FloorCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
} }
setTempPoints([]); setTempPoints([]);

View File

@@ -13,14 +13,14 @@ import { handleCanvasCursors } from '../../../utils/mouseUtils/handleCanvasCurso
import { useSelectedPoints } from '../../../store/simulation/useSimulationStore'; import { useSelectedPoints } from '../../../store/simulation/useSimulationStore';
import { calculateAssetTransformationOnWall } from '../wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall'; import { calculateAssetTransformationOnWall } from '../wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall';
// import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi';
// import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi';
// import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi';
// import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi';
// import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi';
// import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi';
// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi';
// import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi';
interface LineProps { interface LineProps {
points: [Point, Point]; points: [Point, Point];
@@ -120,43 +120,48 @@ function Line({ points }: Readonly<LineProps>) {
if (projectId && asset) { if (projectId && asset) {
removeWallAsset(asset.modelUuid); removeWallAsset(asset.modelUuid);
if (!socket?.active) {
// API // API
// deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
modelUuid: asset.modelUuid, modelUuid: asset.modelUuid,
wallUuid: asset.wallUuid wallUuid: asset.wallUuid
}
socket.emit('v1:wall-asset:delete', data);
} }
socket.emit('v1:wall-asset:delete', data);
} }
}) })
if (!socket?.active) {
// API // API
// deleteWallApi(projectId, selectedVersion?.versionId || '', removedWall.wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', removedWall.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: removedWall.wallUuid, wallUuid: removedWall.wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
push2D({ push2D({
type: 'Draw', type: 'Draw',
actions: [ actions: [
@@ -180,22 +185,25 @@ function Line({ points }: Readonly<LineProps>) {
if (removedFloors.length > 0) { if (removedFloors.length > 0) {
removedFloors.forEach(floor => { removedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorUuid: floor.floorUuid, floorUuid: floor.floorUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:delete', data);
} }
socket.emit('v1:model-Floor:delete', data);
} }
}); });
@@ -218,22 +226,25 @@ function Line({ points }: Readonly<LineProps>) {
if (updatedFloors.length > 0) { if (updatedFloors.length > 0) {
updatedFloors.forEach(floor => { updatedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}); });
@@ -263,22 +274,25 @@ function Line({ points }: Readonly<LineProps>) {
if (removedZones.length > 0) { if (removedZones.length > 0) {
removedZones.forEach(zone => { removedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneUuid: zone.zoneUuid, zoneUuid: zone.zoneUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:delete', data);
} }
socket.emit('v1:zone:delete', data);
} }
}); });
@@ -301,22 +315,25 @@ function Line({ points }: Readonly<LineProps>) {
if (updatedZones.length > 0) { if (updatedZones.length > 0) {
updatedZones.forEach(zone => { updatedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
}); });
@@ -435,40 +452,47 @@ function Line({ points }: Readonly<LineProps>) {
}); });
if (projectId && updatedWallAsset) { if (projectId && updatedWallAsset) {
// API if (!socket?.active) {
// API
// upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallAssetData: updatedWallAsset, wallAssetData: updatedWallAsset,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:wall-asset:add', data);
} }
socket.emit('v1:wall-asset:add', data);
} }
}); });
} }
// API if (!socket?.active) {
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); // API
// SOCKET upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
const data = { // SOCKET
wallData: updatedWall,
projectId: projectId, const data = {
versionId: selectedVersion?.versionId || '', wallData: updatedWall,
userId: userId, projectId: projectId,
organization: organization versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
}) })
if (initialPositions.walls && initialPositions.walls.length > 0) { if (initialPositions.walls && initialPositions.walls.length > 0) {
@@ -495,22 +519,25 @@ function Line({ points }: Readonly<LineProps>) {
if (updatedFloors.length > 0 && projectId) { if (updatedFloors.length > 0 && projectId) {
updatedFloors.forEach(updatedFloor => { updatedFloors.forEach(updatedFloor => {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
}) })
if (initialPositions.floors && initialPositions.floors.length > 0) { if (initialPositions.floors && initialPositions.floors.length > 0) {
@@ -537,22 +564,25 @@ function Line({ points }: Readonly<LineProps>) {
if (updatedZones.length > 0 && projectId) { if (updatedZones.length > 0 && projectId) {
updatedZones.forEach(updatedZone => { updatedZones.forEach(updatedZone => {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: updatedZone, zoneData: updatedZone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
}) })
if (initialPositions.zones && initialPositions.zones.length > 0) { if (initialPositions.zones && initialPositions.zones.length > 0) {

View File

@@ -11,16 +11,16 @@ import { useParams } from 'react-router-dom';
import { useVersionContext } from '../version/versionContext'; import { useVersionContext } from '../version/versionContext';
import { useSceneContext } from '../../scene/sceneContext'; import { useSceneContext } from '../../scene/sceneContext';
// import { upsertAisleApi } from '../../../services/factoryBuilder/aisle/upsertAisleApi'; import { upsertAisleApi } from '../../../services/factoryBuilder/aisle/upsertAisleApi';
// import { deleteAisleApi } from '../../../services/factoryBuilder/aisle/deleteAisleApi'; import { deleteAisleApi } from '../../../services/factoryBuilder/aisle/deleteAisleApi';
// import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi'; import { upsertWallApi } from '../../../services/factoryBuilder/wall/upsertWallApi';
// import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi'; import { deleteWallApi } from '../../../services/factoryBuilder/wall/deleteWallApi';
// import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi'; import { upsertFloorApi } from '../../../services/factoryBuilder/floor/upsertFloorApi';
// import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi'; import { deleteFloorApi } from '../../../services/factoryBuilder/floor/deleteFloorApi';
// import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi'; import { upsertZoneApi } from '../../../services/factoryBuilder/zone/upsertZoneApi';
// import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi'; import { deleteZoneApi } from '../../../services/factoryBuilder/zone/deleteZoneApi';
// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi';
// import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; import { deleteWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi';
import { getUserData } from '../../../functions/getUserData'; import { getUserData } from '../../../functions/getUserData';
import { handleCanvasCursors } from '../../../utils/mouseUtils/handleCanvasCursors'; import { handleCanvasCursors } from '../../../utils/mouseUtils/handleCanvasCursors';
@@ -190,22 +190,25 @@ function Point({ point }: { readonly point: Point }) {
const updatedAisles = getAislesByPointId(point.pointUuid); const updatedAisles = getAislesByPointId(point.pointUuid);
if (updatedAisles.length > 0 && projectId) { if (updatedAisles.length > 0 && projectId) {
updatedAisles.forEach((updatedAisle) => { updatedAisles.forEach((updatedAisle) => {
if (!socket?.active) {
// API // API
// upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
socket.emit('v1:model-aisle:add', { socket.emit('v1:model-aisle:add', {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
aisleUuid: updatedAisle.aisleUuid, aisleUuid: updatedAisle.aisleUuid,
points: updatedAisle.points, points: updatedAisle.points,
type: updatedAisle.type type: updatedAisle.type
}) })
}
}) })
if (initialStates.aisles && initialStates.aisles.length > 0) { if (initialStates.aisles && initialStates.aisles.length > 0) {
@@ -244,40 +247,47 @@ function Point({ point }: { readonly point: Point }) {
}); });
if (projectId && updatedWallAsset) { if (projectId && updatedWallAsset) {
// API if (!socket?.active) {
// API
// upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallAssetData: updatedWallAsset, wallAssetData: updatedWallAsset,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:wall-asset:add', data);
} }
socket.emit('v1:wall-asset:add', data);
} }
}); });
} }
// API if (!socket?.active) {
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); // API
// SOCKET upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
const data = { // SOCKET
wallData: updatedWall,
projectId: projectId, const data = {
versionId: selectedVersion?.versionId || '', wallData: updatedWall,
userId: userId, projectId: projectId,
organization: organization versionId: selectedVersion?.versionId || '',
userId: userId,
organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
}); });
} }
@@ -301,22 +311,25 @@ function Point({ point }: { readonly point: Point }) {
const updatedFloors = getFloorsByPointId(point.pointUuid); const updatedFloors = getFloorsByPointId(point.pointUuid);
if (updatedFloors && updatedFloors.length > 0 && projectId) { if (updatedFloors && updatedFloors.length > 0 && projectId) {
updatedFloors.forEach((updatedFloor) => { updatedFloors.forEach((updatedFloor) => {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedFloor, floorData: updatedFloor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
}); });
} }
@@ -340,22 +353,25 @@ function Point({ point }: { readonly point: Point }) {
const updatedZones = getZonesByPointId(point.pointUuid); const updatedZones = getZonesByPointId(point.pointUuid);
if (updatedZones && updatedZones.length > 0 && projectId) { if (updatedZones && updatedZones.length > 0 && projectId) {
updatedZones.forEach((updatedZone) => { updatedZones.forEach((updatedZone) => {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: updatedZone, zoneData: updatedZone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
}); });
} }
@@ -388,23 +404,26 @@ function Point({ point }: { readonly point: Point }) {
if (removedAisles.length > 0) { if (removedAisles.length > 0) {
removedAisles.forEach(aisle => { removedAisles.forEach(aisle => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
aisleUuid: aisle.aisleUuid aisleUuid: aisle.aisleUuid
}
socket.emit('v1:model-aisle:delete', data);
} }
socket.emit('v1:model-aisle:delete', data);
} }
}); });
@@ -436,44 +455,50 @@ function Point({ point }: { readonly point: Point }) {
if (projectId && asset) { if (projectId && asset) {
removeWallAsset(asset.modelUuid); removeWallAsset(asset.modelUuid);
if (!socket?.active) {
// API // API
// deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
modelUuid: asset.modelUuid, modelUuid: asset.modelUuid,
wallUuid: asset.wallUuid wallUuid: asset.wallUuid
}
socket.emit('v1:wall-asset:delete', data);
} }
socket.emit('v1:wall-asset:delete', data);
} }
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: wall.wallUuid, wallUuid: wall.wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
} }
}); });
@@ -501,22 +526,25 @@ function Point({ point }: { readonly point: Point }) {
if (removedFloors.length > 0) { if (removedFloors.length > 0) {
removedFloors.forEach(floor => { removedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorUuid: floor.floorUuid, floorUuid: floor.floorUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:delete', data);
} }
socket.emit('v1:model-Floor:delete', data);
} }
}); });
@@ -539,22 +567,25 @@ function Point({ point }: { readonly point: Point }) {
if (updatedFloors.length > 0) { if (updatedFloors.length > 0) {
updatedFloors.forEach(floor => { updatedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}); });
@@ -583,22 +614,25 @@ function Point({ point }: { readonly point: Point }) {
if (removedZones.length > 0) { if (removedZones.length > 0) {
removedZones.forEach(zone => { removedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneUuid: zone.zoneUuid, zoneUuid: zone.zoneUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:delete', data);
} }
socket.emit('v1:zone:delete', data);
} }
}); });
@@ -621,22 +655,25 @@ function Point({ point }: { readonly point: Point }) {
if (updatedZones.length > 0) { if (updatedZones.length > 0) {
updatedZones.forEach(zone => { updatedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
}); });

View File

@@ -12,8 +12,8 @@ import getClosestIntersection from '../../line/helpers/getClosestIntersection';
import ReferencePoint from '../../point/reference/referencePoint'; import ReferencePoint from '../../point/reference/referencePoint';
import ReferenceWall from './referenceWall'; import ReferenceWall from './referenceWall';
// import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi'; import { upsertWallApi } from '../../../../services/factoryBuilder/wall/upsertWallApi';
// import { deleteWallApi } from '../../../../services/factoryBuilder/wall/deleteWallApi'; import { deleteWallApi } from '../../../../services/factoryBuilder/wall/deleteWallApi';
function WallCreator() { function WallCreator() {
const { scene, camera, raycaster, gl, pointer } = useThree(); const { scene, camera, raycaster, gl, pointer } = useThree();
@@ -94,23 +94,26 @@ function WallCreator() {
removeWall(wall.wallUuid); removeWall(wall.wallUuid);
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: wall.wallUuid, wallUuid: wall.wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
} }
const point1: Point = { const point1: Point = {
@@ -147,24 +150,27 @@ function WallCreator() {
addWall(wall2); addWall(wall2);
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall2);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); } else {
// }
// SOCKET // SOCKET
const data = { const data = {
wallData: wall2, wallData: wall2,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
}
} }
socket.emit('v1:model-Wall:add', data);
const wall3: Wall = { const wall3: Wall = {
wallUuid: THREE.MathUtils.generateUUID(), wallUuid: THREE.MathUtils.generateUUID(),
points: [point2, newPoint], points: [point2, newPoint],
@@ -204,24 +210,27 @@ function WallCreator() {
], ],
}) })
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall3);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); } else {
// }
// SOCKET // SOCKET
const data2 = { const data2 = {
wallData: wall3, wallData: wall3,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data2);
}
} }
socket.emit('v1:model-Wall:add', data2);
setTempPoints([newPoint]); setTempPoints([newPoint]);
setIsCreating(true); setIsCreating(true);
} else { } else {
@@ -237,24 +246,27 @@ function WallCreator() {
addWall(wall1); addWall(wall1);
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall1);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall1); } else {
// }
// SOCKET // SOCKET
const data = { const data = {
wallData: wall1, wallData: wall1,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
}
} }
socket.emit('v1:model-Wall:add', data);
const wall2: Wall = { const wall2: Wall = {
wallUuid: THREE.MathUtils.generateUUID(), wallUuid: THREE.MathUtils.generateUUID(),
points: [point1, newPoint], points: [point1, newPoint],
@@ -267,24 +279,27 @@ function WallCreator() {
addWall(wall2); addWall(wall2);
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall2);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall2); } else {
// }
// SOCKET // SOCKET
const data1 = { const data1 = {
wallData: wall2, wallData: wall2,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data1);
}
} }
socket.emit('v1:model-Wall:add', data1);
const wall3: Wall = { const wall3: Wall = {
wallUuid: THREE.MathUtils.generateUUID(), wallUuid: THREE.MathUtils.generateUUID(),
points: [point2, newPoint], points: [point2, newPoint],
@@ -328,24 +343,27 @@ function WallCreator() {
], ],
}) })
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall3);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall3); } else {
// }
// SOCKET // SOCKET
const data3 = { const data3 = {
wallData: wall3, wallData: wall3,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data3);
}
} }
socket.emit('v1:model-Wall:add', data3);
setTempPoints([newPoint]); setTempPoints([newPoint]);
} }
@@ -411,24 +429,27 @@ function WallCreator() {
], ],
}) })
// API if (projectId) {
if (!socket?.active) {
// API
// if (projectId) { upsertWallApi(projectId, selectedVersion?.versionId || '', wall);
// upsertWallApi(projectId, selectedVersion?.versionId || '', wall); } else {
// }
// SOCKET // SOCKET
const data = { const data = {
wallData: wall, wallData: wall,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
}
} }
socket.emit('v1:model-Wall:add', data);
setTempPoints([newPoint]); setTempPoints([newPoint]);
} }

View File

@@ -14,8 +14,8 @@ import { useVersionContext } from '../../../version/versionContext';
import { getUserData } from '../../../../../functions/getUserData'; import { getUserData } from '../../../../../functions/getUserData';
import closestPointOnLineSegment from '../../../line/helpers/getClosestPointOnLineSegment'; import closestPointOnLineSegment from '../../../line/helpers/getClosestPointOnLineSegment';
// import { upsertWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; import { upsertWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi';
// import { deleteWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi'; import { deleteWallAssetApi } from '../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi';
function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) { function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) {
const url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`; const url_Backend_dwinzo = `http://${process.env.REACT_APP_SERVER_MARKETPLACE_URL}`;
@@ -126,23 +126,25 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) {
const updatedWallAsset = getWallAssetById(wallAsset.modelUuid); const updatedWallAsset = getWallAssetById(wallAsset.modelUuid);
if (projectId && updatedWallAsset) { if (projectId && updatedWallAsset) {
if (!socket?.active) {
// API // API
// upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallAssetData: updatedWallAsset, wallAssetData: updatedWallAsset,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:wall-asset:add', data);
} }
socket.emit('v1:wall-asset:add', data);
} }
} }
} }
@@ -194,24 +196,26 @@ function WallAssetInstance({ wallAsset }: { wallAsset: WallAsset }) {
const removedWallAsset = removeWallAsset(wallAsset.modelUuid); const removedWallAsset = removeWallAsset(wallAsset.modelUuid);
if (projectId && removedWallAsset) { if (projectId && removedWallAsset) {
if (!socket?.active) {
// API // API
// deleteWallAssetApi(projectId, selectedVersion?.versionId || '', removedWallAsset.modelUuid, removedWallAsset.wallUuid); deleteWallAssetApi(projectId, selectedVersion?.versionId || '', removedWallAsset.modelUuid, removedWallAsset.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
modelUuid: removedWallAsset.modelUuid, modelUuid: removedWallAsset.modelUuid,
wallUuid: removedWallAsset.wallUuid wallUuid: removedWallAsset.wallUuid
}
socket.emit('v1:wall-asset:delete', data);
} }
socket.emit('v1:wall-asset:delete', data);
} }
} }
}, [activeTool, activeModule, deletableWallAsset, socket]) }, [activeTool, activeModule, deletableWallAsset, socket])

View File

@@ -9,7 +9,7 @@ import { useVersionContext } from '../version/versionContext';
import { getUserData } from '../../../functions/getUserData'; import { getUserData } from '../../../functions/getUserData';
import closestPointOnLineSegment from '../line/helpers/getClosestPointOnLineSegment'; import closestPointOnLineSegment from '../line/helpers/getClosestPointOnLineSegment';
// import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi'; import { upsertWallAssetApi } from '../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi';
function WallAssetCreator() { function WallAssetCreator() {
const { socket } = useSocketStore(); const { socket } = useSocketStore();
@@ -62,23 +62,25 @@ function WallAssetCreator() {
addWallAsset(newWallAsset); addWallAsset(newWallAsset);
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertWallAssetApi(projectId, selectedVersion?.versionId || '', newWallAsset); upsertWallAssetApi(projectId, selectedVersion?.versionId || '', newWallAsset);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallAssetData: newWallAsset, wallAssetData: newWallAsset,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:wall-asset:add', data);
} }
socket.emit('v1:wall-asset:add', data);
} }
} }
} }

View File

@@ -10,7 +10,7 @@ import { getUserData } from '../../../../functions/getUserData';
import ReferencePoint from '../../point/reference/referencePoint'; import ReferencePoint from '../../point/reference/referencePoint';
import ReferenceZone from './referenceZone'; import ReferenceZone from './referenceZone';
// import { upsertZoneApi } from '../../../../services/factoryBuilder/zone/upsertZoneApi'; import { upsertZoneApi } from '../../../../services/factoryBuilder/zone/upsertZoneApi';
function ZoneCreator() { function ZoneCreator() {
const { scene, camera, raycaster, gl, pointer } = useThree(); const { scene, camera, raycaster, gl, pointer } = useThree();
@@ -33,7 +33,6 @@ function ZoneCreator() {
const [isCreating, setIsCreating] = useState(false); const [isCreating, setIsCreating] = useState(false);
const { zoneColor, zoneHeight, snappedPosition, snappedPoint, setSnappedPoint, setSnappedPosition } = useBuilderStore(); const { zoneColor, zoneHeight, snappedPosition, snappedPoint, setSnappedPoint, setSnappedPosition } = useBuilderStore();
useEffect(() => { useEffect(() => {
const canvasElement = gl.domElement; const canvasElement = gl.domElement;
@@ -119,23 +118,25 @@ function ZoneCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
setTempPoints([]); setTempPoints([]);
setIsCreating(false); setIsCreating(false);
@@ -171,23 +172,25 @@ function ZoneCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
setTempPoints([]); setTempPoints([]);
setIsCreating(false); setIsCreating(false);
@@ -233,23 +236,25 @@ function ZoneCreator() {
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
} }
setTempPoints([]); setTempPoints([]);

View File

@@ -5,12 +5,16 @@ export default function SocketResponses() {
const { socket } = useSocketStore(); const { socket } = useSocketStore();
useEffect(() => { useEffect(() => {
socket.on("v1:model-asset:response:add", (data: any) => { if (socket) {
// console.log('data: ', data); socket.on("v1:model-asset:response:add", (data: any) => {
}); // console.log('data: ', data);
});
}
return () => { return () => {
socket.off("v1:model-asset:response:add"); if (socket) {
socket.off("v1:model-asset:response:add");
}
} }
}, [socket]) }, [socket])

View File

@@ -48,7 +48,7 @@ export default function Controls() {
}, []); }, []);
useEffect(() => { useEffect(() => {
if (resetCamera) { if (resetCamera && socket) {
controlsRef.current?.setPosition(...CONSTANTS.threeDimension.defaultPosition); controlsRef.current?.setPosition(...CONSTANTS.threeDimension.defaultPosition);
controlsRef.current?.setTarget(...CONSTANTS.threeDimension.defaultTarget); controlsRef.current?.setTarget(...CONSTANTS.threeDimension.defaultTarget);
controlsRef.current?.rotateAzimuthTo(CONSTANTS.threeDimension.defaultAzimuth); controlsRef.current?.rotateAzimuthTo(CONSTANTS.threeDimension.defaultAzimuth);
@@ -75,7 +75,7 @@ export default function Controls() {
let intervalId: NodeJS.Timeout | null = null; let intervalId: NodeJS.Timeout | null = null;
const handleRest = () => { const handleRest = () => {
if (hasInteracted && controlsRef.current && state.camera.position && !toggleView) { if (hasInteracted && controlsRef.current && state.camera.position && !toggleView && socket) {
const position = state.camera.position; const position = state.camera.position;
if (position.x === 0 && position.y === 0 && position.z === 0) return; if (position.x === 0 && position.y === 0 && position.z === 0) return;
updateCamPosition(controlsRef, socket, position, state.camera.rotation, projectId); updateCamPosition(controlsRef, socket, position, state.camera.rotation, projectId);

View File

@@ -11,10 +11,11 @@ import { useSelectedPoints } from "../../../../../store/simulation/useSimulation
import useModuleStore from "../../../../../store/useModuleStore"; import useModuleStore from "../../../../../store/useModuleStore";
import { calculateAssetTransformationOnWall } from "../../../../builder/wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall"; import { calculateAssetTransformationOnWall } from "../../../../builder/wallAsset/Instances/Instance/functions/calculateAssetTransformationOnWall";
// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi";
// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi";
// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi";
// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi";
import { upsertWallAssetApi } from "../../../../../services/factoryBuilder/asset/wallAsset/upsertWallAssetApi";
function MoveControls2D({ function MoveControls2D({
movedObjects, movedObjects,
@@ -270,21 +271,24 @@ function MoveControls2D({
if (updatedAisles.length > 0 && projectId) { if (updatedAisles.length > 0 && projectId) {
updatedAisles.forEach((updatedAisle) => { updatedAisles.forEach((updatedAisle) => {
// API if (!socket?.active) {
// API
// upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || ''); upsertAisleApi(updatedAisle.aisleUuid, updatedAisle.points, updatedAisle.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
socket.emit('v1:model-aisle:add', { socket.emit('v1:model-aisle:add', {
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization, organization,
aisleUuid: updatedAisle.aisleUuid, aisleUuid: updatedAisle.aisleUuid,
points: updatedAisle.points, points: updatedAisle.points,
type: updatedAisle.type type: updatedAisle.type
}); });
}
const old = initialStates[movedObject.uuid]; const old = initialStates[movedObject.uuid];
if (old) { if (old) {
@@ -330,19 +334,22 @@ function MoveControls2D({
}); });
} }
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedWall);
} else {
// SOCKET // SOCKET
socket.emit('v1:model-Wall:add', { socket.emit('v1:model-Wall:add', {
wallData: updatedWall, wallData: updatedWall,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}); });
}
const old = initialStates[movedObject.uuid]; const old = initialStates[movedObject.uuid];
if (old) { if (old) {
@@ -371,19 +378,22 @@ function MoveControls2D({
if (updatedFloors?.length && projectId) { if (updatedFloors?.length && projectId) {
updatedFloors.forEach(updatedFloor => { updatedFloors.forEach(updatedFloor => {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedFloor);
} else {
// SOCKET // SOCKET
socket.emit('v1:model-Floor:add', { socket.emit('v1:model-Floor:add', {
floorData: updatedFloor, floorData: updatedFloor,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}); });
}
const updatedFloorsData = updatedFloors.map((floor) => { const updatedFloorsData = updatedFloors.map((floor) => {
const originalFloor = Floors.find(f => f.floorUuid === floor.floorUuid) || floor; const originalFloor = Floors.find(f => f.floorUuid === floor.floorUuid) || floor;
@@ -410,19 +420,22 @@ function MoveControls2D({
if (updatedZones?.length && projectId) { if (updatedZones?.length && projectId) {
updatedZones.forEach(updatedZone => { updatedZones.forEach(updatedZone => {
// API if (!socket?.active) {
// API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone); upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedZone);
} else {
// SOCKET // SOCKET
socket.emit('v1:zone:add', { socket.emit('v1:zone:add', {
zoneData: updatedZone, zoneData: updatedZone,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}); });
}
const updatedZonesData = updatedZones.map((zone) => { const updatedZonesData = updatedZones.map((zone) => {
const originalZone = Zones.find(z => z.zoneUuid === zone.zoneUuid) || zone; const originalZone = Zones.find(z => z.zoneUuid === zone.zoneUuid) || zone;
@@ -459,21 +472,24 @@ function MoveControls2D({
rotation: updatedWallAsset.rotation rotation: updatedWallAsset.rotation
}); });
// API if (!socket?.active) {
// API
// upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset); upsertWallAssetApi(projectId, selectedVersion?.versionId || '', updatedWallAsset);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallAssetData: updatedWallAsset, wallAssetData: updatedWallAsset,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:wall-asset:add', data);
} }
socket.emit('v1:wall-asset:add', data);
} }
}); });
} }

View File

@@ -14,12 +14,13 @@ import { useSelectedPoints } from "../../../../../store/simulation/useSimulation
import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; import { useBuilderStore } from "../../../../../store/builder/useBuilderStore";
import MoveControls2D from "./moveControls2D"; import MoveControls2D from "./moveControls2D";
// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi";
// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi";
// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi";
// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi";
// import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi";
// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi";
import { deleteWallAssetApi } from "../../../../../services/factoryBuilder/asset/wallAsset/deleteWallAssetApi";
const SelectionControls2D: React.FC = () => { const SelectionControls2D: React.FC = () => {
const { camera, controls, gl, scene, pointer } = useThree(); const { camera, controls, gl, scene, pointer } = useThree();
@@ -240,22 +241,25 @@ const SelectionControls2D: React.FC = () => {
if (removedAisles.length > 0) { if (removedAisles.length > 0) {
removedAisles.forEach(aisle => { removedAisles.forEach(aisle => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || ''); deleteAisleApi(aisle.aisleUuid, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization, organization: organization,
aisleUuid: aisle.aisleUuid aisleUuid: aisle.aisleUuid
}
socket.emit('v1:model-aisle:delete', data);
} }
socket.emit('v1:model-aisle:delete', data);
} }
}); });
@@ -280,43 +284,49 @@ const SelectionControls2D: React.FC = () => {
removeWallAsset(asset.modelUuid); removeWallAsset(asset.modelUuid);
// API if (!socket?.active) {
// deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid); // API
// SOCKET deleteWallAssetApi(projectId, selectedVersion?.versionId || '', asset.modelUuid, asset.wallUuid);
} else {
const data = { // SOCKET
projectId: projectId,
versionId: selectedVersion?.versionId || '', const data = {
userId: userId, projectId: projectId,
organization: organization, versionId: selectedVersion?.versionId || '',
modelUuid: asset.modelUuid, userId: userId,
wallUuid: asset.wallUuid organization: organization,
modelUuid: asset.modelUuid,
wallUuid: asset.wallUuid
}
socket.emit('v1:wall-asset:delete', data);
} }
socket.emit('v1:wall-asset:delete', data);
} }
}) })
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', wall.wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: wall.wallUuid, wallUuid: wall.wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
} }
}); });
@@ -335,22 +345,25 @@ const SelectionControls2D: React.FC = () => {
if (removedFloors.length > 0) { if (removedFloors.length > 0) {
removedFloors.forEach(floor => { removedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid); deleteFloorApi(projectId, selectedVersion?.versionId || '', floor.floorUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorUuid: floor.floorUuid, floorUuid: floor.floorUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:delete', data);
} }
socket.emit('v1:model-Floor:delete', data);
} }
}); });
@@ -365,22 +378,25 @@ const SelectionControls2D: React.FC = () => {
if (updatedFloors.length > 0) { if (updatedFloors.length > 0) {
updatedFloors.forEach(floor => { updatedFloors.forEach(floor => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floor); upsertFloorApi(projectId, selectedVersion?.versionId || '', floor);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floor, floorData: floor,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}); });
@@ -400,22 +416,25 @@ const SelectionControls2D: React.FC = () => {
if (removedZones.length > 0) { if (removedZones.length > 0) {
removedZones.forEach(zone => { removedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid); deleteZoneApi(projectId, selectedVersion?.versionId || '', zone.zoneUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneUuid: zone.zoneUuid, zoneUuid: zone.zoneUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:delete', data);
} }
socket.emit('v1:zone:delete', data);
} }
}); });
@@ -430,22 +449,25 @@ const SelectionControls2D: React.FC = () => {
if (updatedZones.length > 0) { if (updatedZones.length > 0) {
updatedZones.forEach(zone => { updatedZones.forEach(zone => {
if (projectId) { if (projectId) {
if (!socket?.active) {
// API // API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zone); upsertZoneApi(projectId, selectedVersion?.versionId || '', zone);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zone, zoneData: zone,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
}); });

View File

@@ -10,7 +10,7 @@ import { getUserData } from "../../../../../functions/getUserData";
import { useSceneContext } from "../../../sceneContext"; import { useSceneContext } from "../../../sceneContext";
import { useVersionContext } from "../../../../builder/version/versionContext"; import { useVersionContext } from "../../../../builder/version/versionContext";
// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi";
const CopyPasteControls3D = () => { const CopyPasteControls3D = () => {
const { camera, controls, gl, scene, pointer, raycaster } = useThree(); const { camera, controls, gl, scene, pointer, raycaster } = useThree();
@@ -481,20 +481,34 @@ const CopyPasteControls3D = () => {
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
eventData: eventData, eventData: eventData,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
projectId projectId
}; };
//REST if (!socket?.active) {
// REST
// await setAssetsApi(data); setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: [position.x, 0, position.z],
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
isLocked: false,
isVisible: true,
eventData: eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
const asset: Asset = { const asset: Asset = {
modelUuid: data.modelUuid, modelUuid: data.modelUuid,
@@ -520,13 +534,32 @@ const CopyPasteControls3D = () => {
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z }, rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
socket.emit("v1:model-asset:add", data); if (!socket?.active) {
// REST
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: [position.x, 0, position.z],
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
// SOCKET
socket.emit("v1:model-asset:add", data);
}
const asset: Asset = { const asset: Asset = {
modelUuid: data.modelUuid, modelUuid: data.modelUuid,

View File

@@ -11,7 +11,7 @@ import { useSceneContext } from "../../../sceneContext";
import { useVersionContext } from "../../../../builder/version/versionContext"; import { useVersionContext } from "../../../../builder/version/versionContext";
import { handleAssetPositionSnap } from "./functions/handleAssetPositionSnap"; import { handleAssetPositionSnap } from "./functions/handleAssetPositionSnap";
// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi";
const DuplicationControls3D = () => { const DuplicationControls3D = () => {
const { camera, controls, gl, scene, pointer, raycaster } = useThree(); const { camera, controls, gl, scene, pointer, raycaster } = useThree();
@@ -550,20 +550,34 @@ const DuplicationControls3D = () => {
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
eventData: eventData, eventData: eventData,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
projectId projectId
}; };
//REST if (!socket?.active) {
// REST
// await setAssetsApi(data); setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: [position.x, position.y, position.z],
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
isLocked: false,
isVisible: true,
eventData: eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
const asset: Asset = { const asset: Asset = {
modelUuid: data.modelUuid, modelUuid: data.modelUuid,
@@ -589,14 +603,32 @@ const DuplicationControls3D = () => {
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z }, rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
socket.emit("v1:model-asset:add", data); if (!socket?.active) {
// REST
setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: [position.x, position.y, position.z],
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
// SOCKET
socket.emit("v1:model-asset:add", data);
}
const asset: Asset = { const asset: Asset = {
modelUuid: data.modelUuid, modelUuid: data.modelUuid,
modelName: data.modelName, modelName: data.modelName,

View File

@@ -14,7 +14,7 @@ import { useSceneContext } from "../../../sceneContext";
import { useVersionContext } from "../../../../builder/version/versionContext"; import { useVersionContext } from "../../../../builder/version/versionContext";
import useModuleStore from "../../../../../store/useModuleStore"; import useModuleStore from "../../../../../store/useModuleStore";
// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi';
function MoveControls3D({ boundingBoxRef }: any) { function MoveControls3D({ boundingBoxRef }: any) {
const { camera, controls, gl, scene, pointer, raycaster } = useThree(); const { camera, controls, gl, scene, pointer, raycaster } = useThree();
@@ -420,19 +420,32 @@ function MoveControls3D({ boundingBoxRef }: any) {
rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z }, rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
//REST if (!socket?.active) {
// REST
// await setAssetsApi(data); setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: newFloorItem.position,
rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
}); });

View File

@@ -13,7 +13,7 @@ import { detectModifierKeys } from "../../../../../utils/shortcutkeys/detectModi
import { handleAssetRotationSnap } from "./functions/handleAssetRotationSnap"; import { handleAssetRotationSnap } from "./functions/handleAssetRotationSnap";
import useModuleStore from "../../../../../store/useModuleStore"; import useModuleStore from "../../../../../store/useModuleStore";
// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi';
function RotateControls3D() { function RotateControls3D() {
const { camera, gl, scene, pointer, raycaster } = useThree(); const { camera, gl, scene, pointer, raycaster } = useThree();
@@ -364,19 +364,32 @@ function RotateControls3D() {
rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z }, rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
//REST if (!socket?.active) {
// REST
// await setAssetsApi(data); setAssetsApi({
modelUuid: newFloorItem.modelUuid,
modelName: newFloorItem.modelName,
assetId: newFloorItem.assetId,
position: newFloorItem.position,
rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
}); });

View File

@@ -19,7 +19,7 @@ import RotateControls3D from "./rotateControls3D";
import TransformControls3D from "./transformControls3D"; import TransformControls3D from "./transformControls3D";
import { useBuilderStore } from "../../../../../store/builder/useBuilderStore"; import { useBuilderStore } from "../../../../../store/builder/useBuilderStore";
// import { deleteFloorItem } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi'; import { deleteFloorItem } from '../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi';
const SelectionControls3D: React.FC = () => { const SelectionControls3D: React.FC = () => {
const { camera, controls, gl, scene, raycaster, pointer } = useThree(); const { camera, controls, gl, scene, raycaster, pointer } = useThree();
@@ -284,23 +284,28 @@ const SelectionControls3D: React.FC = () => {
const asset = getAssetById(selectedMesh.userData.modelUuid); const asset = getAssetById(selectedMesh.userData.modelUuid);
if (!asset) return; if (!asset) return;
//REST
// const response = deleteFloorItem(organization, selectedMesh.userData.modelUuid, selectedMesh.userData.modelName); if (!socket?.active) {
//SOCKET // REST
const data = { deleteFloorItem(organization, selectedMesh.userData.modelUuid, selectedMesh.userData.modelName);
organization, } else {
modelUuid: selectedMesh.userData.modelUuid,
modelName: selectedMesh.userData.modelName,
socketId: socket.id,
projectId,
versionId: selectedVersion?.versionId || '',
userId
};
const response = socket.emit("v1:model-asset:delete", data); // SOCKET
const data = {
organization,
modelUuid: selectedMesh.userData.modelUuid,
modelName: selectedMesh.userData.modelName,
socketId: socket.id,
projectId,
versionId: selectedVersion?.versionId || '',
userId
};
socket.emit("v1:model-asset:delete", data);
}
eventStore.getState().removeEvent(selectedMesh.uuid); eventStore.getState().removeEvent(selectedMesh.uuid);
const updatedEvents = productStore.getState().deleteEvent(selectedMesh.uuid); const updatedEvents = productStore.getState().deleteEvent(selectedMesh.uuid);
@@ -314,12 +319,9 @@ const SelectionControls3D: React.FC = () => {
); );
}) })
if (response) { removeAsset(selectedMesh.uuid);
removeAsset(selectedMesh.uuid); echo.success("Model Removed!");
echo.success("Model Removed!");
}
selectedMesh.traverse((child: THREE.Object3D) => { selectedMesh.traverse((child: THREE.Object3D) => {
if (child instanceof THREE.Mesh) { if (child instanceof THREE.Mesh) {

View File

@@ -11,7 +11,7 @@ import { useParams } from 'react-router-dom';
import { getUserData } from '../../../../../functions/getUserData'; import { getUserData } from '../../../../../functions/getUserData';
import { upsertProductOrEventApi } from '../../../../../services/simulation/products/UpsertProductOrEventApi'; import { upsertProductOrEventApi } from '../../../../../services/simulation/products/UpsertProductOrEventApi';
import { detectModifierKeys } from '../../../../../utils/shortcutkeys/detectModifierKeys'; import { detectModifierKeys } from '../../../../../utils/shortcutkeys/detectModifierKeys';
// import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi'; import { setAssetsApi } from '../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi';
function TransformControls3D() { function TransformControls3D() {
const { toolMode } = useToolMode(); const { toolMode } = useToolMode();
@@ -135,37 +135,42 @@ function TransformControls3D() {
} }
} }
//REST
// setAssetsApi( if (!socket?.active) {
// organization, // API
// asset.modelUuid,
// asset.modelName,
// [obj.position.x, 0, obj.position.z],
// { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
// asset.assetId,
// false,
// true,
// );
//SOCKET setAssetsApi({
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [obj.position.x, obj.position.y, obj.position.z],
rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
const data = { // SOCKET
organization,
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [obj.position.x, obj.position.y, obj.position.z],
rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
isLocked: false,
isVisible: true,
socketId: socket.id,
versionId: selectedVersion?.versionId || '',
userId,
projectId
};
socket.emit("v1:model-asset:add", data); const data = {
organization,
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [obj.position.x, obj.position.y, obj.position.z],
rotation: { x: obj.rotation.x, y: obj.rotation.y, z: obj.rotation.z },
isLocked: false,
isVisible: true,
socketId: socket.id,
versionId: selectedVersion?.versionId || '',
userId,
projectId
};
socket.emit("v1:model-asset:add", data);
}
}); });
}, [selectedAssets, setSelectedAssets, getAssetById, updateAsset, eventStore, productStore, selectedProduct, updateBackend, projectId, organization, socket, selectedVersion, userId, push3D]); }, [selectedAssets, setSelectedAssets, getAssetById, updateAsset, eventStore, productStore, selectedProduct, updateBackend, projectId, organization, socket, selectedVersion, userId, push3D]);

View File

@@ -12,7 +12,7 @@ import { useBuilderStore } from "../../../../store/builder/useBuilderStore";
import { detectModifierKeys } from "../../../../utils/shortcutkeys/detectModifierKeys"; import { detectModifierKeys } from "../../../../utils/shortcutkeys/detectModifierKeys";
import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi"; import { upsertProductOrEventApi } from "../../../../services/simulation/products/UpsertProductOrEventApi";
// import { setAssetsApi } from "../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; import { setAssetsApi } from "../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi";
export default function TransformControl() { export default function TransformControl() {
const state = useThree(); const state = useThree();
@@ -110,37 +110,42 @@ export default function TransformControl() {
rotation: [selectedFloorAsset.rotation.x, selectedFloorAsset.rotation.y, selectedFloorAsset.rotation.z] as [number, number, number], rotation: [selectedFloorAsset.rotation.x, selectedFloorAsset.rotation.y, selectedFloorAsset.rotation.z] as [number, number, number],
}); });
//REST if (!socket?.active) {
// await setAssetsApi( // API
// organization,
// asset.modelUuid,
// asset.modelName,
// [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z,
// { "x": selectedFloorAsset.rotation.x, "y": selectedFloorAsset.rotation.y, "z": selectedFloorAsset.rotation.z },
// asset.assetId,
// false,
// true,
// );
//SOCKET setAssetsApi({
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number],
rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
const data = { // SOCKET
organization,
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number],
rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z },
isLocked: false,
isVisible: true,
socketId: socket.id,
versionId: selectedVersion?.versionId || '',
userId,
projectId
};
socket.emit("v1:model-asset:add", data); const data = {
organization,
modelUuid: asset.modelUuid,
modelName: asset.modelName,
assetId: asset.assetId,
position: [selectedFloorAsset.position.x, 0, selectedFloorAsset.position.z] as [number, number, number],
rotation: { x: selectedFloorAsset.rotation.x, y: selectedFloorAsset.rotation.y, z: selectedFloorAsset.rotation.z },
isLocked: false,
isVisible: true,
socketId: socket.id,
versionId: selectedVersion?.versionId || '',
userId,
projectId
};
socket.emit("v1:model-asset:add", data);
}
push3D({ push3D({
type: 'Scene', type: 'Scene',

View File

@@ -4,17 +4,17 @@ import { useVersionContext } from "../../../../builder/version/versionContext";
import { useSceneContext } from "../../../sceneContext"; import { useSceneContext } from "../../../sceneContext";
import { useSocketStore } from "../../../../../store/builder/store"; import { useSocketStore } from "../../../../../store/builder/store";
// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi";
// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi";
// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi";
// import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi"; import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi";
// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi";
// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi";
// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi";
// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi";
function use2DRedoHandler() { function use2DRedoHandler() {
const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext(); const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext();
@@ -100,252 +100,288 @@ function use2DRedoHandler() {
const createWallFromBackend = (wallData: Wall) => { const createWallFromBackend = (wallData: Wall) => {
addWall(wallData); addWall(wallData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); upsertWallApi(projectId, selectedVersion?.versionId || '', wallData);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: wallData, wallData: wallData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
}; };
const removeWallFromBackend = (wallUuid: string) => { const removeWallFromBackend = (wallUuid: string) => {
removeWall(wallUuid); removeWall(wallUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: wallUuid, wallUuid: wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
} }
}; };
const updateWallFromBackend = (wallUuid: string, updatedData: Wall) => { const updateWallFromBackend = (wallUuid: string, updatedData: Wall) => {
updateWall(wallUuid, updatedData); updateWall(wallUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedData, wallData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
}; };
const createFloorFromBackend = (floorData: Floor) => { const createFloorFromBackend = (floorData: Floor) => {
addFloor(floorData); addFloor(floorData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floorData, floorData: floorData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}; };
const removeFloorFromBackend = (floorUuid: string) => { const removeFloorFromBackend = (floorUuid: string) => {
removeFloor(floorUuid); removeFloor(floorUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorUuid: floorUuid, floorUuid: floorUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:delete', data);
} }
socket.emit('v1:model-Floor:delete', data);
} }
}; };
const updateFloorFromBackend = (floorUuid: string, updatedData: Floor) => { const updateFloorFromBackend = (floorUuid: string, updatedData: Floor) => {
updateFloor(floorUuid, updatedData); updateFloor(floorUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedData, floorData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}; };
const createZoneFromBackend = (zoneData: Zone) => { const createZoneFromBackend = (zoneData: Zone) => {
addZone(zoneData); addZone(zoneData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zoneData, zoneData: zoneData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
}; };
const removeZoneFromBackend = (zoneUuid: string) => { const removeZoneFromBackend = (zoneUuid: string) => {
removeZone(zoneUuid); removeZone(zoneUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneUuid, zoneUuid,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:zone:delete', data); socket.emit('v1:zone:delete', data);
}
} }
}; };
const updateZoneFromBackend = (zoneUuid: string, updatedData: Zone) => { const updateZoneFromBackend = (zoneUuid: string, updatedData: Zone) => {
updateZone(zoneUuid, updatedData); updateZone(zoneUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: updatedData, zoneData: updatedData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:zone:add', data); socket.emit('v1:zone:add', data);
}
} }
}; };
const createAisleFromBackend = (aisleData: Aisle) => { const createAisleFromBackend = (aisleData: Aisle) => {
addAisle(aisleData); addAisle(aisleData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertAisleApi(projectId, selectedVersion?.versionId || '', aisleData); upsertAisleApi(aisleData.aisleUuid, aisleData.points, aisleData.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
...aisleData, ...aisleData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:add', data); socket.emit('v1:model-aisle:add', data);
}
} }
}; };
const removeAisleFromBackend = (aisleUuid: string) => { const removeAisleFromBackend = (aisleUuid: string) => {
removeAisle(aisleUuid); removeAisle(aisleUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
aisleUuid, aisleUuid,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:delete', data); socket.emit('v1:model-aisle:delete', data);
}
} }
}; };
const updateAisleFromBackend = (aisleUuid: string, updatedData: Aisle) => { const updateAisleFromBackend = (aisleUuid: string, updatedData: Aisle) => {
updateAisle(aisleUuid, updatedData); updateAisle(aisleUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertAisleApi(projectId, selectedVersion?.versionId || '', updatedData); upsertAisleApi(updatedData.aisleUuid, updatedData.points, updatedData.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
...updatedData, ...updatedData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:add', data); socket.emit('v1:model-aisle:add', data);
}
} }
}; };

View File

@@ -4,17 +4,17 @@ import { useVersionContext } from "../../../../builder/version/versionContext";
import { useSceneContext } from "../../../sceneContext"; import { useSceneContext } from "../../../sceneContext";
import { useSocketStore } from "../../../../../store/builder/store"; import { useSocketStore } from "../../../../../store/builder/store";
// import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi"; import { upsertWallApi } from "../../../../../services/factoryBuilder/wall/upsertWallApi";
// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi";
// import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi"; import { upsertZoneApi } from "../../../../../services/factoryBuilder/zone/upsertZoneApi";
// import { deleteWallApi } from "../../../../../services/factoryBuilder/wall/deleteWallApi"; import { deleteZoneApi } from "../../../../../services/factoryBuilder/zone/deleteZoneApi";
// import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi"; import { upsertFloorApi } from "../../../../../services/factoryBuilder/floor/upsertFloorApi";
// import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi"; import { deleteFloorApi } from "../../../../../services/factoryBuilder/floor/deleteFloorApi";
// import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi"; import { upsertAisleApi } from "../../../../../services/factoryBuilder/aisle/upsertAisleApi";
// import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi"; import { deleteAisleApi } from "../../../../../services/factoryBuilder/aisle/deleteAisleApi";
function use2DUndoHandler() { function use2DUndoHandler() {
const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext(); const { undoRedo2DStore, wallStore, floorStore, zoneStore, aisleStore } = useSceneContext();
@@ -100,252 +100,288 @@ function use2DUndoHandler() {
const createWallToBackend = (wallData: Wall) => { const createWallToBackend = (wallData: Wall) => {
addWall(wallData); addWall(wallData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', wallData); upsertWallApi(projectId, selectedVersion?.versionId || '', wallData);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: wallData, wallData: wallData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
}; };
const removeWallToBackend = (wallUuid: string) => { const removeWallToBackend = (wallUuid: string) => {
removeWall(wallUuid); removeWall(wallUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid); deleteWallApi(projectId, selectedVersion?.versionId || '', wallUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallUuid: wallUuid, wallUuid: wallUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:delete', data);
} }
socket.emit('v1:model-Wall:delete', data);
} }
}; };
const updateWallToBackend = (wallUuid: string, updatedData: Wall) => { const updateWallToBackend = (wallUuid: string, updatedData: Wall) => {
updateWall(wallUuid, updatedData); updateWall(wallUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData); upsertWallApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
wallData: updatedData, wallData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Wall:add', data);
} }
socket.emit('v1:model-Wall:add', data);
} }
}; };
const createFloorToBackend = (floorData: Floor) => { const createFloorToBackend = (floorData: Floor) => {
addFloor(floorData); addFloor(floorData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData); upsertFloorApi(projectId, selectedVersion?.versionId || '', floorData);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: floorData, floorData: floorData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}; };
const removeFloorToBackend = (floorUuid: string) => { const removeFloorToBackend = (floorUuid: string) => {
removeFloor(floorUuid); removeFloor(floorUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid); deleteFloorApi(projectId, selectedVersion?.versionId || '', floorUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorUuid: floorUuid, floorUuid: floorUuid,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:delete', data);
} }
socket.emit('v1:model-Floor:delete', data);
} }
}; };
const updateFloorToBackend = (floorUuid: string, updatedData: Floor) => { const updateFloorToBackend = (floorUuid: string, updatedData: Floor) => {
updateFloor(floorUuid, updatedData); updateFloor(floorUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData); upsertFloorApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
floorData: updatedData, floorData: updatedData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:model-Floor:add', data);
} }
socket.emit('v1:model-Floor:add', data);
} }
}; };
const createZoneToBackend = (zoneData: Zone) => { const createZoneToBackend = (zoneData: Zone) => {
addZone(zoneData); addZone(zoneData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData); upsertZoneApi(projectId, selectedVersion?.versionId || '', zoneData);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: zoneData, zoneData: zoneData,
projectId: projectId, projectId: projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId: userId, userId: userId,
organization: organization organization: organization
}
socket.emit('v1:zone:add', data);
} }
socket.emit('v1:zone:add', data);
} }
}; };
const removeZoneToBackend = (zoneUuid: string) => { const removeZoneToBackend = (zoneUuid: string) => {
removeZone(zoneUuid); removeZone(zoneUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid); deleteZoneApi(projectId, selectedVersion?.versionId || '', zoneUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneUuid, zoneUuid,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:zone:delete', data); socket.emit('v1:zone:delete', data);
}
} }
}; };
const updateZoneToBackend = (zoneUuid: string, updatedData: Zone) => { const updateZoneToBackend = (zoneUuid: string, updatedData: Zone) => {
updateZone(zoneUuid, updatedData); updateZone(zoneUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData); upsertZoneApi(projectId, selectedVersion?.versionId || '', updatedData);
} else {
// SOCKET // SOCKET
const data = { const data = {
zoneData: updatedData, zoneData: updatedData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:zone:add', data); socket.emit('v1:zone:add', data);
}
} }
}; };
const createAisleToBackend = (aisleData: Aisle) => { const createAisleToBackend = (aisleData: Aisle) => {
addAisle(aisleData); addAisle(aisleData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertAisleApi(projectId, selectedVersion?.versionId || '', aisleData); upsertAisleApi(aisleData.aisleUuid, aisleData.points, aisleData.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
...aisleData, ...aisleData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:add', data); socket.emit('v1:model-aisle:add', data);
}
} }
}; };
const removeAisleToBackend = (aisleUuid: string) => { const removeAisleToBackend = (aisleUuid: string) => {
removeAisle(aisleUuid); removeAisle(aisleUuid);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid); deleteAisleApi(projectId, selectedVersion?.versionId || '', aisleUuid);
} else {
// SOCKET // SOCKET
const data = { const data = {
aisleUuid, aisleUuid,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:delete', data); socket.emit('v1:model-aisle:delete', data);
}
} }
}; };
const updateAisleToBackend = (aisleUuid: string, updatedData: Aisle) => { const updateAisleToBackend = (aisleUuid: string, updatedData: Aisle) => {
updateAisle(aisleUuid, updatedData); updateAisle(aisleUuid, updatedData);
if (projectId) { if (projectId) {
// API if (!socket?.active) {
// API
// upsertAisleApi(projectId, selectedVersion?.versionId || '', updatedData); upsertAisleApi(updatedData.aisleUuid, updatedData.points, updatedData.type, projectId, selectedVersion?.versionId || '');
} else {
// SOCKET // SOCKET
const data = { const data = {
...updatedData, ...updatedData,
projectId, projectId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
userId, userId,
organization organization
}; };
socket.emit('v1:model-aisle:add', data); socket.emit('v1:model-aisle:add', data);
}
} }
}; };

View File

@@ -7,8 +7,8 @@ import { useSocketStore } from "../../../../../store/builder/store";
import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi";
// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi";
// import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi";
function use3DRedoHandler() { function use3DRedoHandler() {
const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext();
@@ -138,7 +138,7 @@ function use3DRedoHandler() {
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
eventData: {}, eventData: {},
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
@@ -149,35 +149,52 @@ function use3DRedoHandler() {
addEvent(assetData.eventData as EventsSchema); addEvent(assetData.eventData as EventsSchema);
} }
// API if (!socket?.active) {
// REST
// setAssetsApi(data); setAssetsApi({
modelUuid: assetData.modelUuid,
modelName: assetData.modelName,
assetId: assetData.assetId,
position: assetData.position,
rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] },
isLocked: false,
isVisible: true,
eventData: data.eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }
const deleteAssetToBackend = (assetData: Asset) => { const deleteAssetToBackend = (assetData: Asset) => {
//REST if (!socket?.active) {
// REST
// const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); deleteFloorItem(organization, assetData.modelUuid, assetData.modelName);
} else {
//SOCKET // SOCKET
const data = { const data = {
organization, organization,
modelUuid: assetData.modelUuid, modelUuid: assetData.modelUuid,
modelName: assetData.modelName, modelName: assetData.modelName,
socketId: socket.id, socketId: socket.id,
userId, userId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId projectId
}
socket.emit('v1:model-asset:delete', data)
} }
const response = socket.emit('v1:model-asset:delete', data)
removeEvent(assetData.modelUuid); removeEvent(assetData.modelUuid);
const updatedEvents = deleteEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid);
@@ -190,10 +207,7 @@ function use3DRedoHandler() {
); );
}) })
if (response) { removeAsset(assetData.modelUuid);
removeAsset(assetData.modelUuid);
}
} }
const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => { const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => {
@@ -208,19 +222,32 @@ function use3DRedoHandler() {
rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
// API if (!socket?.active) {
// REST
// setAssetsApi(data); setAssetsApi({
modelUuid: updatedData.modelUuid,
modelName: updatedData.modelName,
assetId: updatedData.assetId,
position: updatedData.position,
rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }
@@ -237,7 +264,7 @@ function use3DRedoHandler() {
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
eventData: {}, eventData: {},
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
@@ -248,13 +275,27 @@ function use3DRedoHandler() {
addEvent(assetData.eventData as EventsSchema); addEvent(assetData.eventData as EventsSchema);
} }
// API if (!socket?.active) {
// REST
// setAssetsApi(data); setAssetsApi({
modelUuid: assetData.modelUuid,
modelName: assetData.modelName,
assetId: assetData.assetId,
position: assetData.position,
rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] },
isLocked: false,
isVisible: true,
eventData: data.eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }
@@ -271,7 +312,7 @@ function use3DRedoHandler() {
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
eventData: {}, eventData: {},
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
@@ -282,13 +323,27 @@ function use3DRedoHandler() {
addEvent(assetData.eventData as EventsSchema); addEvent(assetData.eventData as EventsSchema);
} }
// API if (!socket?.active) {
//REST
// setAssetsApi(data); setAssetsApi({
modelUuid: assetData.modelUuid,
modelName: assetData.modelName,
assetId: assetData.assetId,
position: assetData.position,
rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] },
isLocked: false,
isVisible: true,
eventData: data.eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET //SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }

View File

@@ -7,8 +7,8 @@ import { useSocketStore } from "../../../../../store/builder/store";
import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi"; import { upsertProductOrEventApi } from "../../../../../services/simulation/products/UpsertProductOrEventApi";
// import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi"; import { setAssetsApi } from "../../../../../services/factoryBuilder/asset/floorAsset/setAssetsApi";
// import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi"; import { deleteFloorItem } from "../../../../../services/factoryBuilder/asset/floorAsset/deleteFloorItemApi";
function use3DUndoHandler() { function use3DUndoHandler() {
const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext(); const { undoRedo3DStore, assetStore, productStore, eventStore } = useSceneContext();
@@ -137,7 +137,7 @@ function use3DUndoHandler() {
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
eventData: {}, eventData: {},
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
@@ -148,35 +148,52 @@ function use3DUndoHandler() {
addEvent(assetData.eventData as EventsSchema); addEvent(assetData.eventData as EventsSchema);
} }
// API if (!socket?.active) {
// REST
// setAssetsApi(data); setAssetsApi({
modelUuid: assetData.modelUuid,
modelName: assetData.modelName,
assetId: assetData.assetId,
position: assetData.position,
rotation: { x: assetData.rotation[0], y: assetData.rotation[1], z: assetData.rotation[2] },
isLocked: false,
isVisible: true,
eventData: data.eventData,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }
const deleteAssetToBackend = (assetData: Asset) => { const deleteAssetToBackend = (assetData: Asset) => {
//REST if (!socket?.active) {
// REST
// const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); deleteFloorItem(organization, assetData.modelUuid, assetData.modelName);
} else {
//SOCKET // SOCKET
const data = { const data = {
organization, organization,
modelUuid: assetData.modelUuid, modelUuid: assetData.modelUuid,
modelName: assetData.modelName, modelName: assetData.modelName,
socketId: socket.id, socketId: socket.id,
userId, userId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId projectId
}
socket.emit('v1:model-asset:delete', data)
} }
const response = socket.emit('v1:model-asset:delete', data)
removeEvent(assetData.modelUuid); removeEvent(assetData.modelUuid);
const updatedEvents = deleteEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid);
@@ -189,10 +206,7 @@ function use3DUndoHandler() {
); );
}) })
if (response) { removeAsset(assetData.modelUuid);
removeAsset(assetData.modelUuid);
}
} }
const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => { const updateAssetToBackend = (modelUuid: string, updatedData: Asset) => {
@@ -207,41 +221,57 @@ function use3DUndoHandler() {
rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] }, rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] },
isLocked: false, isLocked: false,
isVisible: true, isVisible: true,
socketId: socket.id, socketId: socket?.id,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId, projectId,
userId userId
}; };
// API if (!socket?.active) {
// REST
// setAssetsApi(data); setAssetsApi({
modelUuid: updatedData.modelUuid,
modelName: updatedData.modelName,
assetId: updatedData.assetId,
position: updatedData.position,
rotation: { x: updatedData.rotation[0], y: updatedData.rotation[1], z: updatedData.rotation[2] },
isLocked: false,
isVisible: true,
versionId: selectedVersion?.versionId || '',
projectId: projectId,
});
} else {
//SOCKET // SOCKET
socket.emit("v1:model-asset:add", data); socket.emit("v1:model-asset:add", data);
}
} }
} }
const copyAssetToBackend = (assetData: Asset) => { const copyAssetToBackend = (assetData: Asset) => {
//REST if (!socket?.active) {
// REST
// const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); deleteFloorItem(organization, assetData.modelUuid, assetData.modelName);
} else {
//SOCKET // SOCKET
const data = { const data = {
organization, organization,
modelUuid: assetData.modelUuid, modelUuid: assetData.modelUuid,
modelName: assetData.modelName, modelName: assetData.modelName,
socketId: socket.id, socketId: socket.id,
userId, userId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId projectId
}
socket.emit('v1:model-asset:delete', data)
} }
const response = socket.emit('v1:model-asset:delete', data)
removeEvent(assetData.modelUuid); removeEvent(assetData.modelUuid);
const updatedEvents = deleteEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid);
@@ -254,31 +284,31 @@ function use3DUndoHandler() {
); );
}) })
if (response) { removeAsset(assetData.modelUuid);
removeAsset(assetData.modelUuid);
}
} }
const duplicateAssetToBackend = (assetData: Asset) => { const duplicateAssetToBackend = (assetData: Asset) => {
//REST if (!socket?.active) {
// REST
// const response = deleteFloorItem(organization, assetData.modelUuid, assetData.modelName); deleteFloorItem(organization, assetData.modelUuid, assetData.modelName);
} else {
//SOCKET // SOCKET
const data = { const data = {
organization, organization,
modelUuid: assetData.modelUuid, modelUuid: assetData.modelUuid,
modelName: assetData.modelName, modelName: assetData.modelName,
socketId: socket.id, socketId: socket.id,
userId, userId,
versionId: selectedVersion?.versionId || '', versionId: selectedVersion?.versionId || '',
projectId projectId
}
socket.emit('v1:model-asset:delete', data)
} }
const response = socket.emit('v1:model-asset:delete', data)
removeEvent(assetData.modelUuid); removeEvent(assetData.modelUuid);
const updatedEvents = deleteEvent(assetData.modelUuid); const updatedEvents = deleteEvent(assetData.modelUuid);
@@ -291,10 +321,7 @@ function use3DUndoHandler() {
); );
}) })
if (response) { removeAsset(assetData.modelUuid);
removeAsset(assetData.modelUuid);
}
} }
const addWallAssetToBackend = (assetData: WallAsset) => { const addWallAssetToBackend = (assetData: WallAsset) => {

View File

@@ -34,11 +34,11 @@ export default function Scene({ layout }: { readonly layout: "Main Layout" | "Co
useEffect(() => { useEffect(() => {
if (!projectId || loadingProgress !== 0) return; if (!projectId || loadingProgress !== 0) return;
getAllProjects(userId, organization).then((projects) => { getAllProjects(userId, organization).then((projects) => {
if (!projects || !projects.Projects) return; if (!projects.Projects) return;
let project = projects.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId); let project = projects.Projects.find((val: any) => val.projectUuid === projectId || val._id === projectId);
const canvas = document.getElementById("sceneCanvas")?.getElementsByTagName("canvas")[0]; const canvas = document.getElementById("sceneCanvas")?.getElementsByTagName("canvas")[0];
if (!canvas) return; if (!canvas) return;
compressImage((canvas as HTMLCanvasElement)?.toDataURL("image/png")).then((screenshotDataUrl) => { compressImage(canvas.toDataURL("image/png")).then((screenshotDataUrl) => {
const updateProjects = { const updateProjects = {
projectId: project?._id, projectId: project?._id,
organization, organization,

View File

@@ -17,7 +17,7 @@ const Dashboard: React.FC = () => {
useEffect(() => { useEffect(() => {
const token = localStorage.getItem("token"); const token = localStorage.getItem("token");
const refreshToken = localStorage.getItem("refreshToken") const refreshToken = localStorage.getItem("refreshToken")
if (token) { if (token && refreshToken) {
useSocketStore.getState().initializeSocket(email, organization, token, refreshToken); useSocketStore.getState().initializeSocket(email, organization, token, refreshToken);
} else { } else {

View File

@@ -102,7 +102,7 @@ const Project: React.FC = () => {
const token = localStorage.getItem("token"); const token = localStorage.getItem("token");
const refreshToken = localStorage.getItem("refreshToken"); const refreshToken = localStorage.getItem("refreshToken");
echo.warn('Validating token'); echo.warn('Validating token');
if (token) { if (token && refreshToken) {
useSocketStore useSocketStore
.getState() .getState()
.initializeSocket(email, organization, token, refreshToken); .initializeSocket(email, organization, token, refreshToken);

View File

@@ -1,10 +1,28 @@
import { Object3D } from "three";
import { create } from "zustand"; import { create } from "zustand";
import { io } from "socket.io-client"; import { io } from "socket.io-client";
import * as CONSTANTS from "../../types/world/worldConstants"; import * as CONSTANTS from "../../types/world/worldConstants";
export const useSocketStore = create<any>((set: any, get: any) => ({ type SocketStore = {
socket: ReturnType<typeof io> | null;
visualizationSocket?: ReturnType<typeof io> | null;
dashBoardSocket?: ReturnType<typeof io> | null;
projectSocket?: ReturnType<typeof io> | null;
threadSocket?: ReturnType<typeof io> | null;
initializeSocket: (
email?: string,
organization?: string,
token?: string,
refreshToken?: string
) => void;
disconnectSocket: () => void;
};
export const useSocketStore = create<SocketStore>((set, get) => ({
socket: null, socket: null,
visualizationSocket: null,
dashBoardSocket: null,
projectSocket: null,
threadSocket: null,
initializeSocket: ( initializeSocket: (
email?: string, email?: string,
organization?: string, organization?: string,
@@ -63,13 +81,19 @@ export const useSocketStore = create<any>((set: any, get: any) => ({
}); });
}, },
disconnectSocket: () => { disconnectSocket: () => {
set((state: any) => { set((state) => {
state.socket?.disconnect(); state.socket?.disconnect();
state.visualizationSocket?.disconnect(); state.visualizationSocket?.disconnect();
state.dashBoardSocket?.disconnect(); state.dashBoardSocket?.disconnect();
state.projectSocket?.disconnect(); state.projectSocket?.disconnect();
state.threadSocket?.disconnect(); state.threadSocket?.disconnect();
return { socket: null }; return {
socket: null,
visualizationSocket: null,
dashBoardSocket: null,
projectSocket: null,
threadSocket: null,
};
}); });
}, },
})); }));