계획선 1차 로직 (2026-08-03 사용자 확정) - design_pipe_anchored_profile 신설: 배수유역도가 확정한 배관 배치 측점을 변화점으로 삼아 계획선이 각 배관 자리에서 지면선과 만나도록(계획고=지반고) 시작점→배관1→…→종점을 직선으로 잇고 기본 R을 얹는다. 배관(암거)은 계곡 유하부라 계획선이 그 지점에 붙어야 복토·유입 조건이 성립한다. - 기존 지반 추종 직선 분할 DP 선형은 2차 폴백으로, 구 균형 최적화 계획선은 3차 폴백으로 강등. 관 지점 파일의 노선 지문이 다르면 배관을 쓰지 않는다. - 테스트 프로젝트 solve 재실행으로 저장분 재계산 — 변화점이 배관 5개 자리와 일치하고 각 자리 계획고=지반고임을 검증. 유토곡선 UI (사용자 피드백 5건) - 기준 버튼 라디오화: 횡단/종단 택1로 그 기준 그래프만 전체 영역에 표시 (applyLegendToggle/normalizeVisibleBasis, B05·B06 공통 저장 키 공유). Y 범위도 표시 중인 기준으로 산정. - B05 Y축 이중 표시 제거: MassHaulAxis.axisX 신설 — 축 선·눈금을 종단 그래프 축과 같은 자리에 그리고 데이터 매핑은 유지해 측점 세로 정렬 불변. - 종단↔유토곡선 경계 드래그 리사이저(비율 0.25~0.75, 세션 보존, 기본 1:1). - B05 범례를 B06과 같은 오버레이 우상단 절대배치로 이동. - 도면 테이블: 구조물 배치로 갈라진 구배 블록 값을 기본 숨김(윤곽·툴팁만), 해당 측점 선택 시 하이라이트와 함께 표시. typecheck·vite build·ruff·B03 테스트 통과. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
98 lines
2.8 KiB
CSS
98 lines
2.8 KiB
CSS
/* =============================================================================
|
|
* B05_wf2_Route_UI_Style_MassHaul.css
|
|
* B05 계획 유토곡선 2차 슬라이드 패널 전용 스타일.
|
|
*
|
|
* 곡선·범례·요약 자체의 스타일은 공용(`common_util_mass_haul.css`)이 이미 정의한다.
|
|
* 여기서는 종단면 패널 안에서 그것들이 놓이는 **자리**만 잡는다.
|
|
* ========================================================================== */
|
|
|
|
/* 본문 칸을 세로로 쌓아 그래프 스크롤러 아래에 요약 막대·손잡이가 붙게 한다. */
|
|
.b05-route-profile__body-wrap {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.b05-profile__masshaul-bar {
|
|
display: flex;
|
|
flex: none;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: var(--spacing-8) var(--spacing-16);
|
|
border-top: 1px solid var(--color-border);
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
/* 범례 오버레이 — B06과 같은 문법으로 유토곡선 우상단에 절대배치한다(2026-08-03 지시).
|
|
공용 범례(.b06-masshaul__legend)가 이미 absolute + right 배치라 top만 이 래퍼가 정한다. */
|
|
.b05-profile__masshaul-legend {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
z-index: 3;
|
|
height: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-legend .b06-masshaul__legend {
|
|
pointer-events: auto;
|
|
}
|
|
|
|
/* 종단 그래프와 유토곡선 사이 경계 — 세로 드래그로 높이 배분을 바꾼다. */
|
|
.b05-profile__masshaul-split {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
height: 6px;
|
|
z-index: 2;
|
|
cursor: row-resize;
|
|
touch-action: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-split:hover {
|
|
background: color-mix(in srgb, var(--color-primary) 25%, transparent);
|
|
}
|
|
|
|
.b05-profile__masshaul-bar .b06-masshaul__summary {
|
|
border-top: none;
|
|
padding-top: 0;
|
|
}
|
|
|
|
.b05-profile__masshaul-empty {
|
|
padding: var(--spacing-8) var(--spacing-16);
|
|
color: var(--color-text-secondary);
|
|
font-size: var(--text-caption);
|
|
}
|
|
|
|
/* 2차 슬라이드 손잡이 — 바깥 패널 손잡이와 같은 문법이되 본문 폭 안에 눕혀 놓는다. */
|
|
.b05-profile__masshaul-handle {
|
|
position: relative;
|
|
display: flex;
|
|
flex: none;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--spacing-8);
|
|
height: 20px;
|
|
border-top: 1px solid var(--color-border);
|
|
background: var(--color-surface-raised);
|
|
}
|
|
|
|
.b05-profile__masshaul-caption {
|
|
color: var(--color-text-secondary);
|
|
font-size: var(--text-caption);
|
|
line-height: 1;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-handle.is-open .b05-profile__masshaul-caption {
|
|
color: var(--color-text-body);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* 공용 손잡이 버튼은 부모 바닥 경계에 절대배치되도록 만들어졌다 — 이 줄에서는 흐름에 둔다. */
|
|
.b05-profile__masshaul-handle .ui-workflow-overlay__handle {
|
|
position: static;
|
|
transform: none;
|
|
margin: 0;
|
|
}
|