창고 3d 위젯 기능 삭제

This commit is contained in:
dohyeons
2025-10-17 13:44:51 +09:00
parent d948aa3d3d
commit 3b57d4acda
9 changed files with 135 additions and 867 deletions

View File

@@ -98,17 +98,6 @@ const DocumentWidget = dynamic(() => import("@/components/dashboard/widgets/Docu
loading: () => <div className="flex h-full items-center justify-center text-sm text-gray-500"> ...</div>,
});
const Warehouse3DWidget = dynamic(
() =>
import("@/components/admin/dashboard/widgets/Warehouse3DWidget").then((mod) => ({
default: mod.Warehouse3DWidget,
})),
{
ssr: false,
loading: () => <div className="flex h-full items-center justify-center text-sm text-gray-500"> ...</div>,
},
);
// 시계 위젯 임포트
import { ClockWidget } from "./widgets/ClockWidget";
// 달력 위젯 임포트
@@ -231,20 +220,16 @@ export function CanvasElement({
const subGridSize = Math.floor(cellSize / 3);
const gridSize = cellSize + 5; // GAP 포함한 실제 그리드 크기
const magneticThreshold = 15; // 큰 그리드에 끌리는 거리 (px)
// X 좌표 스냅 (큰 그리드 우선, 없으면 서브그리드)
const nearestGridX = Math.round(rawX / gridSize) * gridSize;
const distToGridX = Math.abs(rawX - nearestGridX);
const snappedX = distToGridX <= magneticThreshold
? nearestGridX
: Math.round(rawX / subGridSize) * subGridSize;
const snappedX = distToGridX <= magneticThreshold ? nearestGridX : Math.round(rawX / subGridSize) * subGridSize;
// Y 좌표 스냅 (큰 그리드 우선, 없으면 서브그리드)
const nearestGridY = Math.round(rawY / gridSize) * gridSize;
const distToGridY = Math.abs(rawY - nearestGridY);
const snappedY = distToGridY <= magneticThreshold
? nearestGridY
: Math.round(rawY / subGridSize) * subGridSize;
const snappedY = distToGridY <= magneticThreshold ? nearestGridY : Math.round(rawY / subGridSize) * subGridSize;
setTempPosition({ x: snappedX, y: snappedY });
} else if (isResizing) {
@@ -293,45 +278,49 @@ export function CanvasElement({
const subGridSize = Math.floor(cellSize / 3);
const gridSize = cellSize + 5; // GAP 포함한 실제 그리드 크기
const magneticThreshold = 15;
// 위치 스냅
const nearestGridX = Math.round(newX / gridSize) * gridSize;
const distToGridX = Math.abs(newX - nearestGridX);
const snappedX = distToGridX <= magneticThreshold
? nearestGridX
: Math.round(newX / subGridSize) * subGridSize;
const snappedX = distToGridX <= magneticThreshold ? nearestGridX : Math.round(newX / subGridSize) * subGridSize;
const nearestGridY = Math.round(newY / gridSize) * gridSize;
const distToGridY = Math.abs(newY - nearestGridY);
const snappedY = distToGridY <= magneticThreshold
? nearestGridY
: Math.round(newY / subGridSize) * subGridSize;
const snappedY = distToGridY <= magneticThreshold ? nearestGridY : Math.round(newY / subGridSize) * subGridSize;
// 크기 스냅 (그리드 칸 단위로 스냅하되, 마지막 GAP은 제외)
// 예: 1칸 = cellSize, 2칸 = cellSize*2 + GAP, 3칸 = cellSize*3 + GAP*2
const calculateGridWidth = (cells: number) => cells * cellSize + Math.max(0, cells - 1) * 5;
// 가장 가까운 그리드 칸 수 계산
const nearestWidthCells = Math.round(newWidth / gridSize);
const nearestGridWidth = calculateGridWidth(nearestWidthCells);
const distToGridWidth = Math.abs(newWidth - nearestGridWidth);
const snappedWidth = distToGridWidth <= magneticThreshold
? nearestGridWidth
: Math.round(newWidth / subGridSize) * subGridSize;
const snappedWidth =
distToGridWidth <= magneticThreshold ? nearestGridWidth : Math.round(newWidth / subGridSize) * subGridSize;
const nearestHeightCells = Math.round(newHeight / gridSize);
const nearestGridHeight = calculateGridWidth(nearestHeightCells);
const distToGridHeight = Math.abs(newHeight - nearestGridHeight);
const snappedHeight = distToGridHeight <= magneticThreshold
? nearestGridHeight
: Math.round(newHeight / subGridSize) * subGridSize;
const snappedHeight =
distToGridHeight <= magneticThreshold ? nearestGridHeight : Math.round(newHeight / subGridSize) * subGridSize;
// 임시 크기/위치 저장 (스냅됨)
setTempPosition({ x: Math.max(0, snappedX), y: Math.max(0, snappedY) });
setTempSize({ width: snappedWidth, height: snappedHeight });
}
},
[isDragging, isResizing, dragStart, resizeStart, element.size.width, element.type, element.subtype, canvasWidth, cellSize],
[
isDragging,
isResizing,
dragStart,
resizeStart,
element.size.width,
element.type,
element.subtype,
canvasWidth,
cellSize,
],
);
// 마우스 업 처리 (이미 스냅된 위치 사용)
@@ -738,11 +727,6 @@ export function CanvasElement({
<div className="widget-interactive-area h-full w-full">
<DocumentWidget />
</div>
) : element.type === "widget" && element.subtype === "warehouse-3d" ? (
// 창고 현황 3D 위젯 렌더링
<div className="widget-interactive-area h-full w-full">
<Warehouse3DWidget element={element} />
</div>
) : (
// 기타 위젯 렌더링
<div