- 접은 판 높이 0 · 머리줄 bottom 100%(배수유역 접힘 꼴) - 접은 때 [창 분할] 숨김 · 새 창으로 뗀 [창 결합] 그대로 - 시험 354_1 확인 더함 · 224_1c 글 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QfHKQs7J3hQELKMWQMUJEy
252 lines
8.2 KiB
CSS
252 lines
8.2 KiB
CSS
/* =============================================================================
|
|
* B05_Profile_UI_Style_MassHaul.css
|
|
* B05 계획 유토곡선 2차 슬라이드 패널 전용 스타일.
|
|
*
|
|
* 곡선·범례·요약 자체의 스타일은 공용(`common_util_mass_haul.css`)이 이미 정의한다.
|
|
* 여기서는 종단면 패널 안에서 그것들이 놓이는 **자리**만 잡는다.
|
|
* ========================================================================== */
|
|
|
|
/* 가로 스크롤에도 고정되는 Y축(눈금 오버레이) — buildStickyYAxis(이 파일을 import하는
|
|
_UI_Profile_MassHaul.ts)가 만든다. B05 종단·유토곡선과 B06 종단·유토곡선이 함께 쓰므로
|
|
여기가 정의처다. 0크기 sticky 앵커에 축을 절대배치해 레이아웃 불변. */
|
|
.b05-profile__yaxis {
|
|
position: sticky;
|
|
left: 0;
|
|
/* 계획고 편집 버튼 층(z4)보다 위 — 스크롤로 지나가는 ▲▼·⬆⬇ 버튼이 축 라벨 위에
|
|
떠 보이면 안 된다(2026-08-04 사용자 보고). 버튼은 축 띠 아래로 지나간다. */
|
|
z-index: 5;
|
|
width: 0;
|
|
height: 0;
|
|
}
|
|
|
|
.b05-profile__yaxis-inner {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
box-sizing: border-box;
|
|
/* 자기 그래프 영역 밖으로 눈금이 새면 아래 그래프의 축처럼 읽힌다. */
|
|
overflow: hidden;
|
|
/* SVG 배경(b06-chart__bg)과 같은 색으로 스크롤되는 그래프를 가려 값 누출을 막는다. */
|
|
background: var(--color-surface-raised);
|
|
border-right: 1px solid var(--color-text-secondary);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.b05-profile__yaxis-tick {
|
|
position: absolute;
|
|
right: 6px;
|
|
color: var(--color-text-secondary);
|
|
/* 10px는 작아 안 읽힌다 — 종단도·유토곡선 공통으로 키운다(2026-08-05 사용자 지시). */
|
|
font-size: 13px;
|
|
white-space: nowrap;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
/* 본문 칸을 세로로 쌓아 그래프 스크롤러 아래에 손잡이가 붙게 한다.
|
|
테이블 겹침 판의 절대배치 기준이기도 하다. */
|
|
.b05-route-profile__body-wrap {
|
|
position: relative;
|
|
flex-direction: column;
|
|
}
|
|
|
|
/* 종단 열 = 종단 칸 + 그 아래 유토곡선 판(354-1) — 배수유역도는 열 오른쪽. */
|
|
.b05-route-profile__column {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
flex-direction: column;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
}
|
|
|
|
/* 유토곡선 판 — 종단 칸 아래 자기 칸(354-1). 종단도 · 테이블을 덮지 않는다.
|
|
높이는 위 경계 리사이저가 --b05-masshaul-height로 조절한다. */
|
|
.b05-profile__masshaul-overlay {
|
|
position: relative;
|
|
display: flex;
|
|
flex: none;
|
|
flex-direction: column;
|
|
height: var(--b05-masshaul-height, 280px);
|
|
border-top: 1px solid var(--color-border);
|
|
background: var(--color-surface-raised);
|
|
}
|
|
|
|
/* 머리줄 — 펼침에선 곡선 위 여백(padTop)에 떠 자리를 안 먹고, 접으면 판에 머리줄만 남는다. */
|
|
.b05-profile__masshaul-head {
|
|
position: absolute;
|
|
top: 4px;
|
|
right: 0;
|
|
left: var(--spacing-8);
|
|
/* 고정 Y축(z5 · 불투명) 위 — 아래면 [창 분할]이 축 띠에 가려짐 */
|
|
z-index: 6;
|
|
display: flex;
|
|
align-items: center;
|
|
min-height: 24px;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-head > * {
|
|
pointer-events: auto;
|
|
}
|
|
|
|
/* 접음 = 판 높이 0 · 손잡이만 판 위 경계에 매달림(배수유역 접힘 꼴 · 367-2). */
|
|
.b05-profile__masshaul-overlay.is-collapsed:not(.is-popout) {
|
|
height: 0;
|
|
}
|
|
|
|
.b05-profile__masshaul-overlay.is-collapsed:not(.is-popout) > :not(.b05-profile__masshaul-head) {
|
|
display: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-overlay.is-collapsed:not(.is-popout) > .b05-profile__masshaul-head {
|
|
top: auto;
|
|
bottom: 100%;
|
|
}
|
|
|
|
/* [창 분할]은 펼친 때만(367-2) — 새 창으로 뗀 [창 결합]은 그대로. */
|
|
.b05-profile__masshaul-overlay.is-collapsed:not(.is-popout) .b05-subpanel__popout {
|
|
display: none;
|
|
}
|
|
|
|
/* 종단 패널을 접으면 판도 함께 숨는다(배수유역도와 같음). */
|
|
.b05-route-profile.is-collapsed .b05-profile__masshaul-overlay {
|
|
display: none;
|
|
}
|
|
|
|
/* 공용 리사이저는 절대배치라 오버레이 위 경계에 그대로 앉는다. */
|
|
.b05-profile__masshaul-overlay > .ui-resizer--vertical {
|
|
top: -3px;
|
|
}
|
|
|
|
/* 요약 막대는 2026-09-06 종단 상단줄로 올라갔다 — 이 자리는 안내 문구가 있을 때만 쓴다.
|
|
비어 있으면 테두리 한 줄도 남기지 않고 접어 곡선이 그만큼 넓게 쓴다. */
|
|
.b05-profile__masshaul-bar:empty {
|
|
display: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-bar {
|
|
display: flex;
|
|
flex: none;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: var(--spacing-8) var(--spacing-16);
|
|
border-bottom: 1px solid var(--color-border);
|
|
background: var(--color-surface);
|
|
}
|
|
|
|
/* 곡선 칸 — 늘 전체 맞춤이라 스크롤 없음(367-1). */
|
|
.b05-profile__masshaul-scroll {
|
|
position: relative;
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-x: hidden;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
/* 범례 오버레이 — 유토곡선 우상단에 절대배치(B06과 같은 문법). 요약 막대 아래에 앉힌다.
|
|
공용 범례(.b06-masshaul__legend)가 이미 absolute + right 배치라 top만 이 래퍼가 정한다. */
|
|
.b05-profile__masshaul-legend {
|
|
position: absolute;
|
|
top: 4px;
|
|
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-bar .b06-masshaul__summary {
|
|
border-top: none;
|
|
padding-top: 0;
|
|
}
|
|
|
|
/* 재계산 대기 표시 — 곡선을 지우지 않고(2026-09-03 깜빡임 제거) 곡선 영역 우측 상단에
|
|
**떠 있는** 알림으로 둔다. 요약 막대에 붙이면 막대가 줄바꿈되며 곡선을 밀어냈다
|
|
(2026-09-04 사용자 보고). 범례(top: 4px) 아래 줄에 앉혀 서로 가리지 않는다. */
|
|
.b05-profile__masshaul-pending {
|
|
position: absolute;
|
|
top: 32px;
|
|
right: var(--spacing-8);
|
|
z-index: 4;
|
|
padding: 2px var(--spacing-8);
|
|
border: 1px solid var(--color-border);
|
|
border-radius: var(--radius-pills);
|
|
background: var(--color-surface-raised);
|
|
color: var(--color-text-secondary);
|
|
font-size: var(--text-caption);
|
|
line-height: 1.2;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.b05-profile__masshaul-empty {
|
|
padding: var(--spacing-8) var(--spacing-16);
|
|
color: var(--color-text-secondary);
|
|
font-size: var(--text-caption);
|
|
}
|
|
|
|
/* 접기 손잡이 — 다른 패널들과 **같은 표준 삼각형 손잡이**를 그대로 쓴다
|
|
(2026-08-04 사용자 지시). 판 머리줄에 앉아 접어도 닿는다(354-1). 테이블 손잡이와
|
|
겹치지 않게 중앙에서 우측으로 비켜 세운다(2026-08-05 사용자 지시 — 좌: 테이블, 우: 유토곡선). */
|
|
.b05-profile__masshaul-handle {
|
|
position: absolute;
|
|
top: 0;
|
|
left: calc(50% + 44px);
|
|
z-index: 6;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
/* 공용 손잡이는 부모 경계 밖(top: -24px) 절대배치로 만들어졌다 — 여기서는 래퍼가
|
|
자리를 잡으므로 흐름에 되돌린다. 크기·모양(64×24 삼각형)은 공용 규칙 그대로다. */
|
|
.b05-profile__masshaul-handle .ui-workflow-overlay__handle {
|
|
position: static;
|
|
transform: none;
|
|
margin: 0;
|
|
}
|
|
|
|
/* ── 테이블 오버레이 서브패널 (2026-08-05 사용자 지시) ──────────────────────
|
|
종단 칸 바닥에 붙어 종단도 위를 덮는다. 유토곡선은 그 아래 자기 판(354-1). */
|
|
.b05-profile__table-overlay {
|
|
position: absolute;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
z-index: 5;
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: var(--b05-table-height, 204px);
|
|
border-top: 1px solid var(--color-border);
|
|
background: var(--color-surface-raised);
|
|
box-shadow: 0 -4px 12px rgb(0 0 0 / 18%);
|
|
}
|
|
|
|
.b05-profile__table-overlay > .ui-resizer--vertical {
|
|
top: -3px;
|
|
}
|
|
|
|
/* 테이블 가로 스크롤러 — 종단 스크롤러와 scrollLeft 동기화(JS). */
|
|
.b05-profile__table-scroll {
|
|
position: relative;
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
overflow-x: scroll;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
/* 테이블 손잡이 — 유토곡선 손잡이 왼쪽에 일렬 배치. */
|
|
.b05-profile__table-handle {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: calc(50% - 44px);
|
|
z-index: 6;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.b05-profile__table-handle .ui-workflow-overlay__handle {
|
|
position: static;
|
|
transform: none;
|
|
margin: 0;
|
|
}
|