Files
GhiVideo/docs/history/2026-06-24_0941_화면표시옵션-기본값버튼-툴팁.md
T
b23042andClaude Opus 4.8 78fc090360 초기 커밋: 스테이션(측점) 기반 주행영상 플레이어
- 클라이언트(React/Vite): Video.js 플레이어, 하단 스테이션바, POI/구조물 영상 오버레이, 카메라 파라미터 보정, 미니맵/RoutePanel
- 서버(Express): Range 스트리밍, HLS 변환, 프레임 추출, tus 업로드, 주석 API
- 최근 작업: 스테이션바 종점역 표출/양끝 정렬/미도착(재생불가) 표시, POI 라벨 '구분' 우선·컴팩트 팝업·겹침제외 토글·동일좌표 다중행, 진행방향(상/하) 우선 표출, 커서 배지 크기·픽셀 떨림 개선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:37:57 +09:00

2.5 KiB
Raw Blame History

화면표시 옵션 — "기본값" 버튼 + 설명문구 툴팁화

날짜: 2026-06-24 수정 파일: client/src/components/overlay/StationOverlay.tsx

요구

  1. 화면표시 옵션 창 우측 하단에 "기본값" 버튼 → 누르면 옵션 일괄 복귀.
  2. 컨트롤 사이의 설명문구가 세로 공간을 차지 → 마우스 오버 툴팁으로 바꿔 패널 높이 축소.

구현

1. 기본값(DISPLAY_DEFAULTS) + 버튼

  • 사용자 확정 기본값(스크린샷 기준)을 모듈 상수로 정의, useState 초기값과 단일 출처 공유:
    const DISPLAY_DEFAULTS = {
      showCenterline: true, showDronePath: true,
      dronePathZ: 58, dronePathAlpha: 0.75,
      smoothHalf: 60, emaAlpha: 1.0,
      maxPoiFront: 310, maxPoiSide: 135,
      poiDroneHeight: true, droneHeightDrop: 24,
    };
    
    (이전 코드 기본값 dronePathZ 78 / maxPoiFront 240 / maxPoiSide 80 → 스크린샷 값으로 갱신.)
  • resetDisplayDefaults() 콜백이 위 10개 상태를 일괄 set. POI 보정/편집모드는 제외(별도 "보정 초기화" 유지).
  • 패널 최하단에 카메라 패널의 "초기화"와 동일한 스타일의 "기본값" 버튼(우측 정렬) 추가.
  • 참고: localStorage 영속화 대상(maxPoiFront/Side·smoothHalf·emaAlpha·params)은 버튼 클릭 후 디바운스 저장으로 기본값이 유지됨. 나머지(dronePathZ 등)는 원래 세션 한정.

2. 설명문구 → 툴팁

  • ParamRowtip?: string 추가: 있으면 라벨에 점선 밑줄 + 마우스오버 네이티브 툴팁(title).
  • 별도 InfoTip 컴포넌트(작은 , title 툴팁) 추가 → 섹션 헤더용.
  • 기존 text-gray-600 설명 div 6개 제거하고 해당 컨트롤/헤더의 tip으로 이전:
    기존 설명 div 이전 위치
    GPS 측정점 표고/α 경로표고·투명도 ParamRow tip
    ±fr=±ms smooth ParamRow tip
    α→lag ms EMA α ParamRow tip
    진행방향 앞/옆 이내 표시 POI 앞쪽·옆쪽 ParamRow tip
    POI 드론 아래 배치 이격거리 ParamRow tip
    편집/DEM 안내 "POI 위치 편집" 헤더 InfoTip
  • 편집모드 안내문(긴 1줄)도 헤더 툴팁으로 이전, 상태줄은 보정된 POI N개/드래그 중만 표시.
  • 동적 수치(ms·lag·현재값)는 툴팁 문자열에 그대로 보간 → 정보 손실 없음.

검증

  • npm run build -w client (node20) tsc + vite build 통과.

소요 시간: 약 25분 Context 사용량: input ~140k / output ~9k tokens