feat(B06): 종단면도 구조물 라벨도 배수관 표기로 통일
관종·관경(`파형강관 D1200`) 대신 `배수관` 을 적음 — 횡단 카드와 같은 규칙. 판정을 `structureDisplayName()`(`_UI_Section_Common`) 한 곳으로 모아 두 렌더러가 같은 문자열을 쓰게 함. 저장 라벨은 그대로 — 재진입 이관이 라벨로 종류를 되짚음. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,8 +6,6 @@
|
|||||||
* 만든다. 여기 있는 것은 전부 **읽어서 붙이는 값**이라 카드 상태(줌·선택)를 건드리지 않는다.
|
* 만든다. 여기 있는 것은 전부 **읽어서 붙이는 값**이라 카드 상태(줌·선택)를 건드리지 않는다.
|
||||||
* ========================================================================== */
|
* ========================================================================== */
|
||||||
|
|
||||||
import { PIPE_TYPES } from "@config/config_frontend";
|
|
||||||
import { PIPE_DISPLAY_NAME } from "../B05_Profile/B05_Profile_UI_IrregularStations";
|
|
||||||
import type { CrossSection } from "./B06_Section_Api_Fetch";
|
import type { CrossSection } from "./B06_Section_Api_Fetch";
|
||||||
import type { RockBoundaryControl } from "./B06_Section_UI_Cross_Design";
|
import type { RockBoundaryControl } from "./B06_Section_UI_Cross_Design";
|
||||||
import {
|
import {
|
||||||
@@ -16,7 +14,12 @@ import {
|
|||||||
sectionModeLabel,
|
sectionModeLabel,
|
||||||
} from "./B06_Section_UI_Cross_Design";
|
} from "./B06_Section_UI_Cross_Design";
|
||||||
import { type FillSlopeLength, fillSlopeLengths } from "./B06_Section_UI_Cross_Fit";
|
import { type FillSlopeLength, fillSlopeLengths } from "./B06_Section_UI_Cross_Fit";
|
||||||
import { type DesignChangeHandler, L, stationLabel } from "./B06_Section_UI_Section_Common";
|
import {
|
||||||
|
type DesignChangeHandler,
|
||||||
|
L,
|
||||||
|
stationLabel,
|
||||||
|
structureDisplayName,
|
||||||
|
} from "./B06_Section_UI_Section_Common";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 성토사면 경사길이 표기 칸 — 성토측이 없으면 null.
|
* 성토사면 경사길이 표기 칸 — 성토측이 없으면 null.
|
||||||
@@ -87,10 +90,8 @@ export function appendCardHeader(
|
|||||||
const structure = document.createElement("span");
|
const structure = document.createElement("span");
|
||||||
structure.className = "b06-cross-card__structure";
|
structure.className = "b06-cross-card__structure";
|
||||||
// 배수관은 관종·관경(`파형강관 D1200`)이 아니라 표시 이름 하나로 적는다
|
// 배수관은 관종·관경(`파형강관 D1200`)이 아니라 표시 이름 하나로 적는다
|
||||||
// (2026-09-03 사용자 지시 — 2026-08-17 확정한 `PIPE_DISPLAY_NAME` 규칙과 같다).
|
// (2026-09-03 사용자 지시). 관종·관경은 툴팁에 남긴다.
|
||||||
// 관종·관경은 툴팁에 남긴다.
|
structure.textContent = structureDisplayName(structureName);
|
||||||
const isPipe = PIPE_TYPES.some((kind) => structureName.startsWith(`${kind} D`));
|
|
||||||
structure.textContent = isPipe ? PIPE_DISPLAY_NAME : structureName;
|
|
||||||
structure.title = `구조물: ${structureName}`;
|
structure.title = `구조물: ${structureName}`;
|
||||||
meta.append(structure);
|
meta.append(structure);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import {
|
|||||||
longitudinalMaxChainage,
|
longitudinalMaxChainage,
|
||||||
niceTickStep,
|
niceTickStep,
|
||||||
stationLabel,
|
stationLabel,
|
||||||
|
structureDisplayName,
|
||||||
svgElement,
|
svgElement,
|
||||||
svgText,
|
svgText,
|
||||||
validElevation,
|
validElevation,
|
||||||
@@ -327,7 +328,8 @@ export function createLongitudinalProfile(
|
|||||||
// 이미 쓰고 있어 서로 겹쳤다(2026-08-02 사용자 지시).
|
// 이미 쓰고 있어 서로 겹쳤다(2026-08-02 사용자 지시).
|
||||||
if (station.structure) {
|
if (station.structure) {
|
||||||
structureLabels.push(
|
structureLabels.push(
|
||||||
svgText(station.structure, {
|
// 배수관은 관종·관경 대신 표시 이름 하나로 적는다(2026-09-03 — 횡단 카드와 같은 규칙).
|
||||||
|
svgText(structureDisplayName(station.structure), {
|
||||||
x: stationX,
|
x: stationX,
|
||||||
y: heightPx - padBottom - 5,
|
y: heightPx - padBottom - 5,
|
||||||
"text-anchor": "middle",
|
"text-anchor": "middle",
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
* 이 모듈을 참조한다. 색상 하드코딩 금지 원칙은 그대로이며 여기서는 지오메트리 계산만 다룬다.
|
* 이 모듈을 참조한다. 색상 하드코딩 금지 원칙은 그대로이며 여기서는 지오메트리 계산만 다룬다.
|
||||||
* ========================================================================== */
|
* ========================================================================== */
|
||||||
|
|
||||||
|
import { PIPE_TYPES } from "@config/config_frontend";
|
||||||
|
import { PIPE_DISPLAY_NAME } from "../B05_Profile/B05_Profile_UI_IrregularStations";
|
||||||
import type { CrossDesignChange } from "./B06_Section_UI_Cross_Design";
|
import type { CrossDesignChange } from "./B06_Section_UI_Cross_Design";
|
||||||
import type {
|
import type {
|
||||||
DesignProfile,
|
DesignProfile,
|
||||||
@@ -56,6 +58,17 @@ export interface YScaleOptions {
|
|||||||
globalMaxElevation: number;
|
globalMaxElevation: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 구조물 라벨의 **표시 이름** — 배수관은 관종·관경(`파형강관 D1200`) 대신 `배수관` 하나로
|
||||||
|
* 적는다(2026-08-17 확정한 `PIPE_DISPLAY_NAME` 규칙, 2026-09-03 종·횡단 표기에 적용).
|
||||||
|
*
|
||||||
|
* 저장 라벨은 그대로 두어야 한다 — 재진입 이관(`B05_Profile_Structures_Migration`)이 라벨
|
||||||
|
* 문자열로 구조물 종류를 되짚는다. 그래서 바꾸는 것은 화면에 찍는 순간뿐이다.
|
||||||
|
*/
|
||||||
|
export function structureDisplayName(label: string): string {
|
||||||
|
return PIPE_TYPES.some((kind) => label.startsWith(`${kind} D`)) ? PIPE_DISPLAY_NAME : label;
|
||||||
|
}
|
||||||
|
|
||||||
export function validElevation(
|
export function validElevation(
|
||||||
sample: SectionSample,
|
sample: SectionSample,
|
||||||
): sample is SectionSample & { elevation_m: number } {
|
): sample is SectionSample & { elevation_m: number } {
|
||||||
|
|||||||
Reference in New Issue
Block a user