diff --git a/apps/sn/app/(map-layout)/map/components/gisEdit/GisEditSessionPanel.tsx b/apps/sn/app/(map-layout)/map/components/gisEdit/GisEditSessionPanel.tsx index 9d9d692ea..4978ce8bd 100644 --- a/apps/sn/app/(map-layout)/map/components/gisEdit/GisEditSessionPanel.tsx +++ b/apps/sn/app/(map-layout)/map/components/gisEdit/GisEditSessionPanel.tsx @@ -7,6 +7,8 @@ type Props = GisEditSessionSnapshot & { onRemoveLastChange: () => void; onClearChanges: () => void; onFocusChange: (changeId: string) => void; + onOpenPopup?: () => void; + variant?: "inline" | "popup"; className?: string; }; @@ -18,7 +20,7 @@ const TOOL_LABELS: Record = { }; const buildChangeItemClassName = (isFocused: boolean) => - `block w-full rounded border px-3 py-3 text-left text-[12px] transition ${ + `block w-full rounded border px-2 py-2 text-left text-[12px] transition ${ isFocused ? "border-[#5a9bd5] bg-[#eef7ff] shadow-[inset_0_0_0_1px_rgba(90,155,213,0.2)]" : "border-[#d8dee8] bg-[#fbfcfe] hover:border-[#bfd2e5] hover:bg-white" @@ -27,6 +29,14 @@ const buildChangeItemClassName = (isFocused: boolean) => const getChangeLabel = (change: GisEditSessionSnapshot["changes"][number]) => change.attributeOnly ? "상세정보수정" : TOOL_LABELS[change.editType]; +const getChangeSummary = (change: GisEditSessionSnapshot["changes"][number]) => { + if (change.attributeOnly) return "변경한 상세정보를 확인하세요."; + if (change.editType === "ADD") return "추가한 객체 위치를 확인하세요."; + if (change.editType === "MOVE") return "객체를 드래그해 위치를 조정하세요."; + if (change.editType === "VERTEX_EDIT") return "점을 옮기거나 선분을 끌어 추가하세요."; + return "삭제할 객체가 맞는지 확인하세요."; +}; + type ChangeListProps = { changes: GisEditSessionSnapshot["changes"]; focusedChangeId: string | null; @@ -42,24 +52,24 @@ const ChangeList = ({ changes, focusedChangeId, onFocusChange }: ChangeListProps className={buildChangeItemClassName(focusedChangeId === change.changeId)} onClick={() => onFocusChange(change.changeId)} > -
-
+
+
{index + 1}. {getChangeLabel(change)} / {change.objectLabel}
-
- {change.basicInfoSavedAt ? ( - - 기본정보 세션저장 +
+ {change.basicInfoSavedAt && focusedChangeId !== change.changeId ? ( + + 정보저장 ) : null} {focusedChangeId === change.changeId ? ( - + 지도 미리보기 선택 ) : null}
-
{change.summary}
+
{getChangeSummary(change)}
))} @@ -76,19 +86,39 @@ export default function GisEditSessionPanel({ onRemoveLastChange, onClearChanges, onFocusChange, + onOpenPopup, + variant = "inline", className = "", }: Props) { + const isCompactInline = variant === "inline" && changes.length === 0; + return (
-
-
- 레이어: {selectedLayerName || "미선택"} / 모드: {isEditMode ? (activeTool ? TOOL_LABELS[activeTool] : "대기") : "편집 모드 종료"} +
+
+ {variant === "inline" ? ( +
편집 세션
+ ) : null} +
+ 레이어: {selectedLayerName || "미선택"} / 모드: {isEditMode ? (activeTool ? TOOL_LABELS[activeTool] : "대기") : "편집 모드 종료"} +
+ {onOpenPopup ? ( + + ) : null}
-
+
-
+
{changes.length === 0 ? (
저장할 편집 변경분이 없습니다.
) : ( -
+
void; onClose?: () => void; onToggleSnap: () => void; onSelectTool: (tool: GisEditTool) => void; @@ -47,10 +45,8 @@ export default function GisEditToolbar({ canUseTools, canSave, isSaving = false, - sessionChangeCount = 0, statusMessage: _statusMessage, allowedTools = [], - onOpenSession, onClose, onToggleSnap, onSelectTool, @@ -59,7 +55,7 @@ export default function GisEditToolbar({ if (!isEditMode) return null; return ( -
+
@@ -124,21 +120,7 @@ export default function GisEditToolbar({
-
- - +
{ postMessageToOpener(WINDOW_POPUP_MESSAGE_TYPE.GIS_EDIT_SESSION_REMOVE_FOCUSED_CHANGE); }}