Merge remote-tracking branch 'origin/sub_laptop_4' into main_laptop_1
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
import type { CrossSection, SectionDetailResponse } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import { effectiveStandardCross } from "../../B06_Section/B06_Section_UI_Standard_Panel";
|
||||
import type { CrossInput, SectionSpecs } from "../../B05_Profile/logic/B05_Profile_Pipeline_Detail";
|
||||
import type { PipelineStation } from "./design_pipeline_types";
|
||||
import type { PipelineStation } from "./logic/design_pipeline_types";
|
||||
|
||||
export interface PipelineCrossSource {
|
||||
input: CrossInput;
|
||||
|
||||
@@ -19,26 +19,26 @@
|
||||
* [저장](sub5)이 서버 정본 — 노선을 먼저 보내고 `pendingAlignment(DRAFT_ROUTE_ID)` 를 새 노선에 보냄.
|
||||
* ========================================================================== */
|
||||
|
||||
import { createDesignPipeline, publishToStore, type DesignPipeline } from "./design_pipeline";
|
||||
import { createDesignPipeline, publishToStore, type DesignPipeline } from "./logic/design_pipeline";
|
||||
import { pipelineCrossSource, type PipelineCrossSource } from "./design_pipeline_cross";
|
||||
import { createStationsStage } from "./design_pipeline_stations";
|
||||
import { createStationsStage } from "./logic/design_pipeline_stations";
|
||||
import type {
|
||||
PipelineInputs,
|
||||
PipelineStation,
|
||||
RouteDraft,
|
||||
StageFn,
|
||||
Vertex,
|
||||
} from "./design_pipeline_types";
|
||||
} from "./logic/design_pipeline_types";
|
||||
import { useDesignStore } from "./design_store";
|
||||
import { fetchDetailPipePoints } from "../../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import type { SectionDetailResponse } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import { createCrossStage } from "../../B06_Section/B06_Section_Cross_Stage";
|
||||
import { createCrossStage } from "../../B06_Section/logic/B06_Section_Cross_Stage";
|
||||
import {
|
||||
emptyEdits,
|
||||
type AlignmentBase,
|
||||
type AlignmentEdits,
|
||||
type ProfileAlignment,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import {
|
||||
markAlignmentSaved,
|
||||
readAlignmentDraft,
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
hasLegacyAlignment,
|
||||
readAlignment,
|
||||
toDesignProfile,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Data";
|
||||
} from "../../B05_Profile/logic/B05_Profile_UI_Profile_Data";
|
||||
import { createProgressCircle } from "@ui/ui_template_progress";
|
||||
import { showToast } from "@ui/ui_template_elements";
|
||||
import { saveProfileAlignment } from "../../B05_Profile/B05_Profile_Api_Fetch";
|
||||
@@ -39,12 +39,12 @@ import type {
|
||||
AlignmentBase,
|
||||
AlignmentEdits,
|
||||
ProfileAlignment,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import {
|
||||
buildAlignment,
|
||||
emptyEdits,
|
||||
toAlignmentBase,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { createProfileEditStore } from "../../B05_Profile/B05_Profile_UI_Profile_Edit";
|
||||
import {
|
||||
structureGroupMenuItems,
|
||||
@@ -69,7 +69,7 @@ import {
|
||||
createElevationHold,
|
||||
createProfileDrag,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Drag";
|
||||
import { planCurveWarning, sampleAt } from "../../B05_Profile/B05_Profile_UI_Profile_Guard";
|
||||
import { planCurveWarning, sampleAt } from "../../B05_Profile/logic/B05_Profile_UI_Profile_Guard";
|
||||
import { listedBase } from "./design_profile_base";
|
||||
import * as pagePipeline from "./design_pipeline_page";
|
||||
import type { RouteProfilePanelCallbacks } from "../../B05_Profile/B05_Profile_UI_Profile_Panel_Types";
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import type { SectionDetailResponse } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { AlignmentBase } from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentBase } from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { IrregularStation } from "../../B05_Profile/B05_Profile_UI_IrregularStations";
|
||||
import {
|
||||
irregularGraphStations,
|
||||
|
||||
@@ -17,7 +17,7 @@ import {
|
||||
parseWindowTransform,
|
||||
type ChartWindow,
|
||||
type FreeDraw,
|
||||
} from "./design_profile_free";
|
||||
} from "./logic/design_profile_free";
|
||||
|
||||
const SVG_NS = "http://www.w3.org/2000/svg";
|
||||
|
||||
|
||||
@@ -24,10 +24,10 @@ import type { StateName } from "../b_page_state";
|
||||
import { CURRENT_PROJECT_ID_KEY } from "../../config/config_frontend";
|
||||
import type { StructureInstance } from "../../B05_Profile/B05_Profile_Api_Structures";
|
||||
import type { DetailPipeInput } from "../../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import type { AlignmentEdits } from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentEdits } from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { SectionDetailResponse } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { ProfileAlignment } from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
import type { PipelineStation, PlanFootprint, RouteDraft } from "./design_pipeline_types";
|
||||
import type { ProfileAlignment } from "../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { PipelineStation, PlanFootprint, RouteDraft } from "./logic/design_pipeline_types";
|
||||
|
||||
/** 한 페이지의 두 보기(계획서 24-1). */
|
||||
export type DesignView = "profile" | "cross";
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
import { fordSection } from "../../B05_Profile/B05_Profile_UI_Drainage_Facility_Fields";
|
||||
import type { SpecForm } from "./design_structure_form";
|
||||
import type { SpecContainer, SpecItem } from "./design_structure_spec";
|
||||
import type { SpecContainer, SpecItem } from "./logic/design_structure_spec";
|
||||
|
||||
/** 월류 폭(m) → 필요 월류 높이(m) · 0.01 m 올림. 유량 · 폭이 없으면 null. */
|
||||
export function fordHeightM(designFlowM3s: number | null, widthM: number): number | null {
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
type SpecState,
|
||||
type SplitRole,
|
||||
type StructureSpec,
|
||||
} from "./design_structure_spec";
|
||||
} from "./logic/design_structure_spec";
|
||||
import {
|
||||
group,
|
||||
grid,
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
import type { CrossSection } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import { computeStoredLayouts } from "../../B06_Section/B06_Section_Structure_Layouts";
|
||||
export { DEFAULT_BASIN_SHAPE } from "../../B06_Section/B06_Section_UI_Cross_Culvert_Basin";
|
||||
export { pipeLengthText } from "../../B06_Section/B06_Section_UI_Cross_Culvert_Const"; // 「8 m (7.6)」(225-1)
|
||||
export { DEFAULT_BASIN_SHAPE } from "../../B06_Section/logic/B06_Section_UI_Cross_Culvert_Basin";
|
||||
export { pipeLengthText } from "../../B06_Section/logic/B06_Section_UI_Cross_Culvert_Const"; // 「8 m (7.6)」(225-1)
|
||||
import { PIPE_MATCH_M } from "./design_selection";
|
||||
|
||||
/** 횡단 측점 목록을 대는 곳 — 횡단 보기가 자료를 받으면 걸어 둠(종단만 연 동안은 없음). */
|
||||
|
||||
@@ -43,7 +43,10 @@ import { savingDesign } from "./design_save";
|
||||
import { applyStructurePick } from "../../B06_Section/B06_Section_UI_Page_Structure_Pick";
|
||||
import { bindCrossPick } from "../../B06_Section/B06_Section_UI_Page_Pick_Sync";
|
||||
import { createSectionView } from "../../B06_Section/B06_Section_UI_Section_View";
|
||||
import { revetFormOf, revetWallSpec } from "../../B06_Section/B06_Section_UI_Cross_Culvert_Const";
|
||||
import {
|
||||
revetFormOf,
|
||||
revetWallSpec,
|
||||
} from "../../B06_Section/logic/B06_Section_UI_Cross_Culvert_Const";
|
||||
import {
|
||||
applyPipeOptionsToCache,
|
||||
type PipeOptionsContext,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* =============================================================================
|
||||
* A00_Common/design/design_pipeline.ts
|
||||
* A00_Common/design/logic/design_pipeline.ts
|
||||
* 실시간 계산 묶음 하나(PLAN 344-4) — 조작마다 차례 번호(generation) +1 · 단계 사이마다 번호
|
||||
* 확인 · 옛 번호 결과 버림 · 뒤 단계 요청은 AbortController 로 끊음. 계약(키 모양 · 단계 · deps)
|
||||
* = `design_pipeline_types.ts` 머리 주석.
|
||||
@@ -13,7 +13,7 @@
|
||||
* 화면 · fetch · 세션은 단계 함수(주입) 몫 — 이 파일은 차례 · 버림 · 범위 · 기록만.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { DesignStore } from "./design_store";
|
||||
import type { DesignStore } from "../design_store";
|
||||
import type {
|
||||
ChangeRange,
|
||||
ChangeSource,
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/* =============================================================================
|
||||
* A00_Common/design/design_pipeline_stations.ts
|
||||
* A00_Common/design/logic/design_pipeline_stations.ts
|
||||
* 계산 묶음 stations 단계(PLAN 346-1) — 측점 계산은 `B05_Profile/logic/B05_Profile_Sections_Stations.ts`
|
||||
* (서버 `generate_sections` 짝) · 여기는 단계 꼴 · 범위 밖 앞 값 재사용만.
|
||||
* ========================================================================== */
|
||||
@@ -8,12 +8,12 @@ import {
|
||||
buildStations,
|
||||
REUSE_MARGIN_M,
|
||||
type StationsOptions,
|
||||
} from "../../B05_Profile/logic/B05_Profile_Sections_Stations";
|
||||
} from "../../../B05_Profile/logic/B05_Profile_Sections_Stations";
|
||||
import type {
|
||||
PlanPipe,
|
||||
PlanStructure,
|
||||
PlanType,
|
||||
} from "../../common_util/common_util_structure_station";
|
||||
} from "../../../common_util/common_util_structure_station";
|
||||
import type { PipelineStation, StageContext, StageFn } from "./design_pipeline_types";
|
||||
|
||||
/** 범위 밖 측점은 앞 값(같은 열쇠 · 같은 자리)을 그대로 — 뒤 단계가 같은 객체로 「안 바뀜」을 앎. */
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/* =============================================================================
|
||||
* A00_Common/design/design_pipeline_types.ts
|
||||
* A00_Common/design/logic/design_pipeline_types.ts
|
||||
* 실시간 계산 묶음 **계약**(PLAN 344-4) — 키별 모양 · 단계 입력 · 출력. 다른 창(sub1 · sub2 ·
|
||||
* sub3 · sub6 · sub8)은 이 모양대로 단계 함수를 만들어 `createDesignPipeline({ stages })` 에 넣음.
|
||||
* 계산 묶음 본체 = `design_pipeline.ts`.
|
||||
@@ -53,7 +53,7 @@ import type {
|
||||
AlignmentBase,
|
||||
AlignmentEdits,
|
||||
ProfileAlignment,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
|
||||
/** 평면 좌표(m) — 도면 좌표계 x · y. */
|
||||
export type Vertex = [number, number];
|
||||
+4
-4
@@ -1,5 +1,5 @@
|
||||
/* =============================================================================
|
||||
* A00_Common/design/design_profile_free.ts
|
||||
* A00_Common/design/logic/design_profile_free.ts
|
||||
* 종단 [자유지정] 계산 — 범위 · 클릭 점 · 측점선 붙음 · 높이 변환 · 기울기 판정 · 적용(215-1).
|
||||
*
|
||||
* 흐름: 세로 측점선 둘로 범위를 고름 → 시작(또는 끝) 세로선 근처 클릭 = 그 측점 계획고에 이은
|
||||
@@ -17,16 +17,16 @@ import type {
|
||||
AlignmentBase,
|
||||
AlignmentEdits,
|
||||
ProfileAlignment,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import {
|
||||
buildAlignment,
|
||||
chainageKey,
|
||||
controlElevationAt,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../../B05_Profile/logic/B05_Profile_UI_Profile_Alignment";
|
||||
import {
|
||||
baseElevationAt,
|
||||
defaultCurveLength,
|
||||
} from "../../B05_Profile/B05_Profile_UI_Profile_Straighten";
|
||||
} from "../../../B05_Profile/logic/B05_Profile_UI_Profile_Straighten";
|
||||
|
||||
/** 두 chainage 를 같은 측점으로 볼 허용 오차(m). */
|
||||
const SAME_M = 1e-6;
|
||||
+1
-1
@@ -18,7 +18,7 @@ import { BOX_SPEC } from "./design_structure_box";
|
||||
import { FORD_SPEC } from "./design_structure_ford";
|
||||
import { FORD_PAVEMENT_SPEC } from "./design_structure_ford_pavement";
|
||||
import { ETC_SPEC, PAVEMENT_SPEC } from "./design_structure_road";
|
||||
import { baseType } from "../../common_util/common_util_structure_catalog";
|
||||
import { baseType } from "../../../common_util/common_util_structure_catalog";
|
||||
|
||||
const SOIL = "기슭막이"; // 저장 값(옛 키 그대로) — 화면 이름은 흙막이
|
||||
const BASIN = "집수정";
|
||||
@@ -39,7 +39,7 @@ import {
|
||||
pointAtChainage,
|
||||
resampleRoute,
|
||||
type RoutePoint,
|
||||
} from "./B04_PreProcess_UI_RouteSamples";
|
||||
} from "./logic/B04_PreProcess_UI_RouteSamples";
|
||||
import { PIPE_MATCH_M } from "../A00_Common/design/design_selection";
|
||||
|
||||
function L(key: keyof typeof ui_locales): string {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
import "@ui/ui_template_flow_legend.css";
|
||||
import { currentLanguageIndex, ui_locales } from "@ui/ui_template_locale";
|
||||
import { themeColor } from "@ui/ui_template_palette";
|
||||
import type { RoutePoint } from "./B04_PreProcess_UI_RouteSamples";
|
||||
import type { RoutePoint } from "./logic/B04_PreProcess_UI_RouteSamples";
|
||||
|
||||
/** 강도 색띠 — 파랑(적음) → 빨강(많음). 정의처는 `ui_template_theme.css`. */
|
||||
const RAMP_TOKENS: ReadonlyArray<[name: string, fallback: string]> = [
|
||||
|
||||
@@ -27,7 +27,11 @@ import {
|
||||
normalizeStrength,
|
||||
rampColor,
|
||||
} from "./B04_PreProcess_UI_FlowRamp";
|
||||
import { pointAtChainage, resampleRoute, type RoutePoint } from "./B04_PreProcess_UI_RouteSamples";
|
||||
import {
|
||||
pointAtChainage,
|
||||
resampleRoute,
|
||||
type RoutePoint,
|
||||
} from "./logic/B04_PreProcess_UI_RouteSamples";
|
||||
|
||||
function L(key: keyof typeof ui_locales): string {
|
||||
return ui_locales[key][currentLanguageIndex];
|
||||
|
||||
@@ -41,7 +41,7 @@ import {
|
||||
type PreparedLayer,
|
||||
type ViewState,
|
||||
} from "./B04_PreProcess_UI_MapRender";
|
||||
import { prepareLayer, prepareMetricPolyline } from "./B04_PreProcess_UI_MapRender_Prepare";
|
||||
import { prepareLayer, prepareMetricPolyline } from "./logic/B04_PreProcess_UI_MapRender_Prepare";
|
||||
import { drawStationTicks } from "./B04_PreProcess_UI_MapOverlays";
|
||||
import type { WatershedAnalysis } from "./B04_PreProcess_Api_Fetch";
|
||||
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@
|
||||
* 순환 참조가 생기지 않는다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { VWorldMeta } from "./B04_PreProcess_Api_Fetch";
|
||||
import type { VWorldMeta } from "../B04_PreProcess_Api_Fetch";
|
||||
import type {
|
||||
GeoJsonCollection,
|
||||
GeoJsonGeometry,
|
||||
@@ -16,7 +16,7 @@ import type {
|
||||
PreparedFeature,
|
||||
PreparedLayer,
|
||||
PreparedPart,
|
||||
} from "./B04_PreProcess_UI_MapRender";
|
||||
} from "../B04_PreProcess_UI_MapRender";
|
||||
|
||||
function isPoint(value: unknown): value is [number, number] {
|
||||
return Array.isArray(value) && typeof value[0] === "number" && typeof value[1] === "number";
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
import { API_BASE_URL } from "@config/config_frontend";
|
||||
import type { HaulPlan } from "@util/common_util_mass_haul_balance";
|
||||
import type { StageContext } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { StageContext } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
import type { MassHaulStageOutput } from "./logic/B05_Profile_MassHaul_Stage";
|
||||
|
||||
/** 서버가 돌려주는 배분 한 벌 — **화면이 쓰는 꼴 그대로**라 그리기 코드가 손대지 않는다.
|
||||
|
||||
@@ -18,7 +18,7 @@ import { API_BASE_URL } from "@config/config_frontend";
|
||||
import { readState, writeState } from "../A00_Common/b_page_state";
|
||||
import { heightAt } from "../common_util/common_util_surface_sampler";
|
||||
import { loadDesignTerrainGrid } from "./B05_Profile_Api_TerrainGrid";
|
||||
import type { RouteDraft } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { RouteDraft } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
/** 편집 창 분석 지형 — las = 확정 지표면(라이다) · sheet = 수치지형도 서피스. */
|
||||
export type AnalysisTerrain = "las" | "sheet";
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
type DefinedSpot,
|
||||
type StructureDefinition,
|
||||
withDefinition,
|
||||
} from "./B05_Profile_UI_Structures_Define";
|
||||
} from "./logic/B05_Profile_UI_Structures_Define";
|
||||
|
||||
/** 배치형태 — 점형(측점 1개) / 구간형(시~종점) / 부지형(위치+면적). */
|
||||
export type StructurePlacement = "point" | "interval" | "site";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
API — `POST /api/projects/{id}/route/replan`(`B05_Profile_Router_Replan.replan_route`):
|
||||
요청 `RouteSaveRequest` = 옛 칸(`vertices` · `initial` · `balanced_profile` · `terrain` ·
|
||||
`station_snap`) +
|
||||
`draft` — 계약 `RouteDraft`(`A00_Common/design/design_pipeline_types.ts`) 그대로
|
||||
`draft` — 계약 `RouteDraft`(`A00_Common/design/logic/design_pipeline_types.ts`) 그대로
|
||||
`{rev, nodes: [[x, y]…], curveOn: [bool…], curveRadius: [m | null…], curveLock, curveArc,
|
||||
stationSnap, terrain}` · 오면 `vertices` · `station_snap` · `terrain` 대신 이것.
|
||||
`as_initial` — 추천 노선 [적용](초기값 다시 뜸) · 손으로 고친 노선 저장은 false(초기값 그대로).
|
||||
|
||||
@@ -38,20 +38,20 @@ import {
|
||||
lerpPoints,
|
||||
slerpLeft,
|
||||
type PieceControl,
|
||||
} from "./B05_Profile_UI_Corridor_Frames";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Frames";
|
||||
import { buildCorridorStructures, type RouteFrame } from "./B05_Profile_UI_Corridor_Structures";
|
||||
export type { CorridorStructure, StructureFrame } from "./B05_Profile_UI_Corridor_Structures";
|
||||
import type {
|
||||
CorridorBuildResult,
|
||||
CorridorCap,
|
||||
CorridorRibbon,
|
||||
} from "./B05_Profile_UI_Corridor_Build_Types";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Build_Types";
|
||||
// 결과 자료형은 `_Build_Types` 에 있다(2026-09-02 분리) — 호출부 경로 유지를 위해 재수출.
|
||||
export type {
|
||||
CorridorBuildResult,
|
||||
CorridorCap,
|
||||
CorridorRibbon,
|
||||
} from "./B05_Profile_UI_Corridor_Build_Types";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Build_Types";
|
||||
import { structureSilhouettes } from "./B05_Profile_UI_Corridor_Station_Structure";
|
||||
|
||||
/** 종방향 세분 간격(m) — 곡선 각짐 방지(2026-08-23 사용자: 노선 폴리라인 따라 세분).
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
import type { CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { CorridorStructure } from "./B05_Profile_UI_Corridor_Structures";
|
||||
import { structureSilhouettes } from "./B05_Profile_UI_Corridor_Station_Structure";
|
||||
import type { DeformLimit, DeformSide } from "./B05_Profile_UI_Corridor_Deform";
|
||||
import type { DeformLimit, DeformSide } from "./logic/B05_Profile_UI_Corridor_Deform";
|
||||
|
||||
/** 측점 프레임 축(모델 좌표) — 중심 · 좌향 단위 벡터. */
|
||||
interface StationAxis {
|
||||
|
||||
@@ -12,7 +12,10 @@
|
||||
|
||||
import type { SectionDetailResponse } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { RoutePoint } from "./B05_Profile_Api_Fetch";
|
||||
import type { CorridorBuildResult, CorridorRibbon } from "./B05_Profile_UI_Corridor_Build_Types";
|
||||
import type {
|
||||
CorridorBuildResult,
|
||||
CorridorRibbon,
|
||||
} from "./logic/B05_Profile_UI_Corridor_Build_Types";
|
||||
import { structureHashParts } from "./B05_Profile_UI_Corridor_Structures";
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
|
||||
import type * as THREE from "three";
|
||||
import type { ModelBounds } from "./B05_Profile_UI_Markers";
|
||||
import type { CorridorBuildResult } from "./B05_Profile_UI_Corridor_Build_Types";
|
||||
import type { CorridorBuildResult } from "./logic/B05_Profile_UI_Corridor_Build_Types";
|
||||
import type { TerrainBandSplit } from "./B05_Profile_UI_Corridor_Split";
|
||||
import type { TerrainHeightIndex } from "./B05_Profile_UI_Corridor_Terrain";
|
||||
import { roadRows } from "./B05_Profile_UI_Corridor_Deform";
|
||||
import { roadRows } from "./logic/B05_Profile_UI_Corridor_Deform";
|
||||
import { noFillLimits } from "./B05_Profile_UI_Corridor_Deform_Structure";
|
||||
import { tinTerrain, type TinDesigner, type TinStats } from "./B05_Profile_UI_Corridor_Tin";
|
||||
import {
|
||||
@@ -27,7 +27,7 @@ import {
|
||||
SECTION_STEP_M,
|
||||
structureTopLoops,
|
||||
type TinDesign,
|
||||
} from "./B05_Profile_UI_Corridor_Tin_Design";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Tin_Design";
|
||||
import {
|
||||
EDGE_ANCHOR,
|
||||
EDGE_DESIGN,
|
||||
@@ -39,7 +39,7 @@ import {
|
||||
TAG_CUT,
|
||||
TAG_FILL,
|
||||
TAG_HOLE,
|
||||
} from "./B05_Profile_UI_Corridor_Tin_Pslg";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Tin_Pslg";
|
||||
import {
|
||||
arcFractions,
|
||||
atFraction,
|
||||
@@ -50,8 +50,8 @@ import {
|
||||
stationLofts,
|
||||
} from "./B05_Profile_UI_Corridor_Loft_Profile";
|
||||
import { smoothSlopeNormals } from "./B05_Profile_UI_Corridor_Loft_Shade";
|
||||
import { gauss, pinBack, smoothToe } from "./B05_Profile_UI_Corridor_Loft_Toe";
|
||||
import { taubin, type GridRow } from "./B05_Profile_UI_Corridor_Loft_Grid";
|
||||
import { gauss, pinBack, smoothToe } from "./logic/B05_Profile_UI_Corridor_Loft_Toe";
|
||||
import { taubin, type GridRow } from "./logic/B05_Profile_UI_Corridor_Loft_Grid";
|
||||
|
||||
// ponytail: 이보다 짧은 비탈은 없는 것으로(10 cm) — 부채꼴 끝 0.2 m 행 사이 실오라기 삼각형을 막음.
|
||||
const MIN_SLOPE_M = 0.1;
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
fordLayoutOf,
|
||||
wallSpanOf,
|
||||
} from "./B05_Profile_UI_Corridor_Structures";
|
||||
import { groundInterpolator } from "../B06_Section/B06_Section_UI_Cross_Culvert_Solve";
|
||||
import { groundInterpolator } from "../B06_Section/logic/B06_Section_UI_Cross_Culvert_Solve";
|
||||
|
||||
/** 한 측의 구조물 실루엣 — 비탈 조각을 이걸로 갈아 끼운다. */
|
||||
export interface StructureSilhouette {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
* 폴리곤을 갈아 끼워(`polygons`) 측점 사이를 Catmull-Rom으로 잇는다. 벽은 여전히 하나다.
|
||||
* ========================================================================== */
|
||||
|
||||
import { structureHashParts, wallSweepAt } from "./B05_Profile_UI_Corridor_Structures_Hash";
|
||||
import { structureHashParts, wallSweepAt } from "./logic/B05_Profile_UI_Corridor_Structures_Hash";
|
||||
import type { CrossSection, CulvertSideSpec } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import { computeCulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
|
||||
import {
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
restrictToSide,
|
||||
tierSpanOf,
|
||||
} from "../B06_Section/B06_Section_UI_Cross_Culvert_Wire";
|
||||
import { pipeWallThicknessM } from "../B06_Section/B06_Section_UI_Cross_Culvert_Const";
|
||||
import { pipeWallThicknessM } from "../B06_Section/logic/B06_Section_UI_Cross_Culvert_Const";
|
||||
import type { CulvertLayout } from "../B06_Section/B06_Section_UI_Cross_Culvert";
|
||||
import { computeFordLayout, fordAdjustOf } from "../B06_Section/B06_Section_UI_Cross_Ford";
|
||||
import type { FordLayout } from "../B06_Section/B06_Section_UI_Cross_Ford";
|
||||
@@ -42,7 +42,7 @@ import {
|
||||
import type { SectionPolygon } from "./B05_Profile_UI_Corridor_Structures_Box";
|
||||
import { computeBoxLayout, DEFAULT_BOX_SIDE_ADJUST } from "../B06_Section/B06_Section_UI_Cross_Box";
|
||||
import type { BoxAdjust, BoxLayout } from "../B06_Section/B06_Section_UI_Cross_Box";
|
||||
import { buildWingSolids } from "./B05_Profile_UI_Corridor_Structures_Wing";
|
||||
import { buildWingSolids } from "./logic/B05_Profile_UI_Corridor_Structures_Wing";
|
||||
import {
|
||||
buildWallPath,
|
||||
detachedControlsOf,
|
||||
@@ -54,7 +54,7 @@ import { computeRevetmentLayout } from "../B06_Section/B06_Section_UI_Cross_Reve
|
||||
import { withoutGuardedFill } from "../B06_Section/B06_Section_UI_Cross_Body_Guard";
|
||||
import { chuteBands, fordPavementChute } from "./B05_Profile_UI_Corridor_Structures_Chute";
|
||||
import { isChuteSegment } from "../B06_Section/B06_Section_UI_Cross_Wall_Hatch";
|
||||
import { builds, culvertBody, ownsBody } from "./B05_Profile_UI_Corridor_Structures_Pick";
|
||||
import { builds, culvertBody, ownsBody } from "./logic/B05_Profile_UI_Corridor_Structures_Pick";
|
||||
|
||||
/** 스윕 프레임 하나 — 노선 위 한 지점의 중심 XY·좌향 단위벡터와 종단 표고 오프셋. */
|
||||
export interface StructureFrame {
|
||||
@@ -695,4 +695,4 @@ export function buildCorridorStructures(
|
||||
}
|
||||
|
||||
// 해시 요약은 `_Structures_Hash.ts` 에 있다(2026-09-02 분리) — 호출부 경로 유지를 위해 재수출.
|
||||
export { structureHashParts } from "./B05_Profile_UI_Corridor_Structures_Hash";
|
||||
export { structureHashParts } from "./logic/B05_Profile_UI_Corridor_Structures_Hash";
|
||||
|
||||
@@ -15,7 +15,7 @@ import type { CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import { computeBoxLayout } from "../B06_Section/B06_Section_UI_Cross_Box";
|
||||
import type { BoxAdjust } from "../B06_Section/B06_Section_UI_Cross_Box";
|
||||
import type { CorridorStructure, StructureFrame } from "./B05_Profile_UI_Corridor_Structures";
|
||||
import { buildWingSolids } from "./B05_Profile_UI_Corridor_Structures_Wing";
|
||||
import { buildWingSolids } from "./logic/B05_Profile_UI_Corridor_Structures_Wing";
|
||||
import { chuteBands } from "./B05_Profile_UI_Corridor_Structures_Chute";
|
||||
|
||||
/** 단면 폴리곤 한 장 — [offset, elevation] 목록. */
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
import * as THREE from "three";
|
||||
import type { ModelBounds } from "./B05_Profile_UI_Markers";
|
||||
import type { CorridorBuildResult } from "./B05_Profile_UI_Corridor_Build_Types";
|
||||
import type { CorridorBuildResult } from "./logic/B05_Profile_UI_Corridor_Build_Types";
|
||||
import type { TerrainBandSplit } from "./B05_Profile_UI_Corridor_Split";
|
||||
import type { TerrainHeightIndex } from "./B05_Profile_UI_Corridor_Terrain";
|
||||
import { CellRegion } from "./B05_Profile_UI_Corridor_Region";
|
||||
import type { TinDesign } from "./B05_Profile_UI_Corridor_Tin_Design";
|
||||
import { CellRegion } from "./logic/B05_Profile_UI_Corridor_Region";
|
||||
import type { TinDesign } from "./logic/B05_Profile_UI_Corridor_Tin_Design";
|
||||
import {
|
||||
EDGE_TERRAIN,
|
||||
LoopIndex,
|
||||
@@ -28,7 +28,7 @@ import {
|
||||
TAG_FILL,
|
||||
TAG_TERRAIN,
|
||||
TriGrid,
|
||||
} from "./B05_Profile_UI_Corridor_Tin_Pslg";
|
||||
} from "./logic/B05_Profile_UI_Corridor_Tin_Pslg";
|
||||
|
||||
/** 절토 · 성토 색 — 리본 색과 같은 값. */
|
||||
const CUT_COLOR = new THREE.Color(0xb5179e);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* 시설 종류는 구조물 배치의 "종류" 드롭다운이, 위치(시작·기준·종료 측점)는 위치
|
||||
* 칸이 담당하므로 여기에는 부속 옵션 필드만 있다.
|
||||
*
|
||||
* 배관 부속(PLAN 52-1): 사용자 구조물 표 01 명세 폼(`A00_Common/design/design_structure_pipe`)
|
||||
* 배관 부속(PLAN 52-1): 사용자 구조물 표 01 명세 폼(`A00_Common/design/logic/design_structure_pipe`)
|
||||
* — 관 · 관 보호공(유입 · 유출) · 흙막이 추가 · 도수로/돌붙임 컨테이너. 저장 키는 옛 키 그대로 ·
|
||||
* 옛 관종 · 날개벽 · 집수정 형식 칸은 화면에서 빠지고 값은 남음(지난 정의 값).
|
||||
*
|
||||
@@ -56,15 +56,15 @@ import {
|
||||
type SpecForm,
|
||||
type SpecLinks,
|
||||
} from "../A00_Common/design/design_structure_form";
|
||||
import { PIPE_SPEC } from "../A00_Common/design/design_structure_pipe";
|
||||
import { PIPE_SPEC } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { catalogRow } from "../common_util/common_util_structure_catalog";
|
||||
import {
|
||||
BOX_SPEC,
|
||||
bodyOf,
|
||||
bodyOptions,
|
||||
boxOptionsIn,
|
||||
} from "../A00_Common/design/design_structure_box";
|
||||
import { FORD_SPEC, withLegacyGuards } from "../A00_Common/design/design_structure_ford";
|
||||
} from "../A00_Common/design/logic/design_structure_box";
|
||||
import { FORD_SPEC, withLegacyGuards } from "../A00_Common/design/logic/design_structure_ford";
|
||||
import { overflowSync } from "../A00_Common/design/design_structure_ford_calc";
|
||||
import {
|
||||
pipeDrawn,
|
||||
@@ -78,7 +78,7 @@ import {
|
||||
type GroupItems,
|
||||
type SummaryItem,
|
||||
} from "../common_util/common_util_summary_item";
|
||||
import { FORD_PAVEMENT_SPEC } from "../A00_Common/design/design_structure_ford_pavement";
|
||||
import { FORD_PAVEMENT_SPEC } from "../A00_Common/design/logic/design_structure_ford_pavement";
|
||||
import { createHiddenOptions } from "./B05_Profile_UI_Drainage_Facility_Hidden";
|
||||
|
||||
export type { InletStructureKind }; // 목록은 700줄 한계로 `_Fields` 로 옮김 — 부르던 곳은 그대로
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* · 필수 검사는 이 폼에 없다(레지스트리 옵션 칸은 `renderOptionFields` 가 숨긴 칸을 뺌).
|
||||
* ========================================================================== */
|
||||
|
||||
import { hiddenFormKeys } from "./B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { hiddenFormKeys } from "./logic/B05_Profile_UI_Drainage_Facility_Merge";
|
||||
|
||||
export interface HiddenOptions {
|
||||
/** 폼이 받은 옵션 — 숨긴 칸의 옛 값 보존용. `setFacility` 가 부른다. */
|
||||
|
||||
@@ -15,7 +15,7 @@ import { API_BASE_URL } from "@config/config_frontend";
|
||||
import { createProgressCircle } from "@ui/ui_template_progress";
|
||||
import { openModal } from "@ui/ui_template_modal";
|
||||
import { readStateRaw, writeStateRaw } from "../A00_Common/b_page_state";
|
||||
import type { StageFn } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { StageFn } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
import {
|
||||
computeDetailBasins,
|
||||
type DetailBasinResponse,
|
||||
|
||||
@@ -24,16 +24,16 @@ import {
|
||||
import {
|
||||
prepareLayer,
|
||||
prepareMetricPolyline,
|
||||
} from "../B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare";
|
||||
} from "../B04_PreProcess/logic/B04_PreProcess_UI_MapRender_Prepare";
|
||||
import { type RoutePoint } from "./B05_Profile_Api_Fetch";
|
||||
import type { FlowArrow } from "../B04_PreProcess/B04_PreProcess_UI_FlowArrows";
|
||||
import { buildStrengthArray } from "../B04_PreProcess/B04_PreProcess_UI_FlowRamp";
|
||||
import { resampleRoute } from "../B04_PreProcess/B04_PreProcess_UI_RouteSamples";
|
||||
import { resampleRoute } from "../B04_PreProcess/logic/B04_PreProcess_UI_RouteSamples";
|
||||
import { batched, createPipeEditor } from "./B05_Profile_UI_Drainage_Pipes";
|
||||
import { followMovedPipe, PIPE_MATCH_M } from "../A00_Common/design/design_pipe_ids";
|
||||
import { snapStructureStation } from "../common_util/common_util_structure_station";
|
||||
import { createFacilityStore } from "./B05_Profile_UI_Drainage_Facility";
|
||||
import { mergeFacilityOptions } from "./B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { mergeFacilityOptions } from "./logic/B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { readPendingPipes, writePendingPipes } from "./B05_Profile_Api_Pipes_Draft";
|
||||
import { buildPipeReports } from "./B05_Profile_UI_Drainage_Report";
|
||||
import { fillFordHeights, fordWaitsOf, waitsFordHeight } from "./B05_Profile_UI_Drainage_Ford_Fill";
|
||||
|
||||
@@ -13,7 +13,7 @@ import type { FacilityAttributes } from "./B05_Profile_UI_Drainage_Facility";
|
||||
import type { PipeFacility, PipeSource } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import type { MapContextMenuItem } from "@ui/ui_template_context_menu";
|
||||
import type { RouteSpanBand } from "./B05_Profile_UI_Drainage_Spans";
|
||||
import type { StageFn } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { StageFn } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
export interface DrainagePanel {
|
||||
root: HTMLElement;
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
import type { DetailBasin, VWorldMeta } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import { drawFlowArrows, type FlowArrow } from "../B04_PreProcess/B04_PreProcess_UI_FlowArrows";
|
||||
import { drawStrengthLine } from "../B04_PreProcess/B04_PreProcess_UI_FlowRamp";
|
||||
import type { RoutePoint } from "../B04_PreProcess/B04_PreProcess_UI_RouteSamples";
|
||||
import type { RoutePoint } from "../B04_PreProcess/logic/B04_PreProcess_UI_RouteSamples";
|
||||
import {
|
||||
basinColor,
|
||||
createMetricProjector,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 않는다. 이름은 안 적는다(종단에 이미 있고, 지도에 글자를 얹으면 눈금·유역 번호와 겹친다).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { RoutePoint } from "../B04_PreProcess/B04_PreProcess_UI_RouteSamples";
|
||||
import type { RoutePoint } from "../B04_PreProcess/logic/B04_PreProcess_UI_RouteSamples";
|
||||
import type { StructureInstance, StructureType } from "./B05_Profile_Api_Structures";
|
||||
|
||||
/** 계획선 위에 얹을 구간 하나 — 누가거리 두 값과 색. */
|
||||
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
import type { IrregularStation } from "./B05_Profile_UI_IrregularStations";
|
||||
import type { createRoutePanel } from "./B05_Profile_UI_Panel";
|
||||
import type { createRouteProfilePanel } from "./B05_Profile_UI_Profile_Panel";
|
||||
import { followedStation } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { followedStation } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { followSnapped } from "./B05_Profile_UI_Structures_Snap";
|
||||
import { plantsStation } from "./B05_Profile_UI_Profile_Structures";
|
||||
import { listPick } from "../common_util/common_util_structure_catalog";
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* 표시줄은 상태를 갖지 않는다 — 그릴 때마다 현재 선형·편집 상태를 인자로 받는다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import type { ProfileAlignment } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { MinCoverViolation } from "./B05_Profile_UI_Profile_MinCover";
|
||||
|
||||
export interface BalanceBarParams {
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
* 라벨에 가려 보이지 않기 때문이다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { AlignmentEdits, ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { chainageKey, emptyEdits, hasEdits } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentEdits, ProfileAlignment } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { chainageKey, emptyEdits, hasEdits } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import {
|
||||
ALIGNMENT_DRAFT_KEY_PREFIX,
|
||||
draftProjectId,
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import { LONG_PAD } from "../B06_Section/B06_Section_UI_Section_Common";
|
||||
import { normalizedLongitudinal } from "./B05_Profile_UI_Profile_Data";
|
||||
import { normalizedLongitudinal } from "./logic/B05_Profile_UI_Profile_Data";
|
||||
import { TABLE_TARGET_FONT_PX, tableCellWidthFor } from "./B05_Profile_UI_Profile_Table";
|
||||
import type { LongitudinalSection, SectionStation } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import {
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import { showToast } from "@ui/ui_template_elements";
|
||||
import { controlElevationAt } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentBase, ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { controlElevationAt } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentBase, ProfileAlignment } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
|
||||
import type { PipeFacility } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@ import type {
|
||||
AlignmentBase,
|
||||
AlignmentEdits,
|
||||
ProfileAlignment,
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { adjustStation } from "./B05_Profile_UI_Profile_Alignment";
|
||||
} from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { adjustStation } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { HOLD_DELAY_MS, HOLD_INTERVAL_MS } from "./B05_Profile_UI_Profile_Edit";
|
||||
import {
|
||||
createProfileHistory,
|
||||
@@ -30,9 +30,9 @@ import {
|
||||
shiftStraightRuns,
|
||||
straightenBetween,
|
||||
tiltStraightRun,
|
||||
} from "./B05_Profile_UI_Profile_Straighten";
|
||||
} from "./logic/B05_Profile_UI_Profile_Straighten";
|
||||
import type { IrregularStation } from "./B05_Profile_UI_IrregularStations";
|
||||
import { createFreeDraw } from "../A00_Common/design/design_profile_free";
|
||||
import { createFreeDraw } from "../A00_Common/design/logic/design_profile_free";
|
||||
import { createFreeView, type FreeChartGeom } from "../A00_Common/design/design_profile_free_view";
|
||||
import { arrowsBelongToProfile } from "../B06_Section/B06_Section_UI_Cross_Panel_Base";
|
||||
import { stepStructureStation } from "../common_util/common_util_structure_station";
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* 끌기 중에는 계속 호출되므로 디바운스하고, 늦게 온 응답은 seq 비교로 버린다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { AlignmentEdits, ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import type { AlignmentEdits, ProfileAlignment } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { holdScreenAlignment, refreshCrossDesigns } from "../B06_Section/B06_Section_Cross_Refresh";
|
||||
import { staleChainages } from "../B06_Section/B06_Section_UI_Section_Common";
|
||||
import type { SectionDetailResponse } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
|
||||
@@ -20,14 +20,14 @@ import {
|
||||
windowElevationRange,
|
||||
} from "../B06_Section/B06_Section_UI_Section_Common";
|
||||
import type { SectionDetailResponse } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import { normalizedLongitudinal, toDesignProfile } from "./B05_Profile_UI_Profile_Data";
|
||||
import { normalizedLongitudinal, toDesignProfile } from "./logic/B05_Profile_UI_Profile_Data";
|
||||
import {
|
||||
adjustStation,
|
||||
setCurveRadius,
|
||||
type AlignmentBase,
|
||||
type AlignmentEdits,
|
||||
type ProfileAlignment,
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
} from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { createEditOverlay } from "./B05_Profile_UI_Profile_Edit";
|
||||
import { createRunHighlight } from "./B05_Profile_UI_Profile_RunHighlight";
|
||||
import {
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
* (`onYAxis`)에서 되짚는다 — 두 눈금의 (표고, y) 두 쌍이면 1차식이 정해진다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import type { StraightRun } from "./B05_Profile_UI_Profile_Straighten";
|
||||
import type { ProfileAlignment } from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import type { StraightRun } from "./logic/B05_Profile_UI_Profile_Straighten";
|
||||
|
||||
const SVG_NS = "http://www.w3.org/2000/svg";
|
||||
/** 두 chainage를 같은 변화점으로 볼 허용 오차(m). */
|
||||
|
||||
@@ -17,7 +17,7 @@ import type {
|
||||
AlignmentCurve,
|
||||
AlignmentSegment,
|
||||
ProfileAlignment,
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
} from "./logic/B05_Profile_UI_Profile_Alignment";
|
||||
import { stationLabel } from "../B06_Section/B06_Section_UI_Section_Common";
|
||||
import {
|
||||
irregularStationId,
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
* [자유지정] → 범위를 고르고 클릭으로 계획선을 잇는다(`design_profile_free` 몫 · 215-1).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { StraightRun } from "./B05_Profile_UI_Profile_Straighten";
|
||||
import { sameRun } from "./B05_Profile_UI_Profile_Straighten";
|
||||
import type { StraightRun } from "./logic/B05_Profile_UI_Profile_Straighten";
|
||||
import { sameRun } from "./logic/B05_Profile_UI_Profile_Straighten";
|
||||
import type { FreeChartGeom } from "../A00_Common/design/design_profile_free_view";
|
||||
|
||||
export type ProfileToolMode = "none" | "straighten" | "shift" | "free";
|
||||
|
||||
@@ -41,7 +41,7 @@ import {
|
||||
buildEditedPolyline,
|
||||
type EditedCurve,
|
||||
type EditedNode,
|
||||
} from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
import { drawRouteEditScene, polylineLengthM } from "./B05_Profile_UI_RouteEdit_Render";
|
||||
import { bindNodeSplice, bindRouteEditNavigation } from "./B05_Profile_UI_RouteEdit_Input";
|
||||
import { bindRouteEditPointer } from "./B05_Profile_UI_RouteEdit_Pointer";
|
||||
@@ -61,7 +61,11 @@ import {
|
||||
viewPxPerMeter,
|
||||
} from "./B05_Profile_UI_RouteEdit_View";
|
||||
import { createCurveBar } from "./B05_Profile_UI_RouteEdit_CurveBar";
|
||||
import { curveSpans, snapCurveStations, stationsAlong } from "./B05_Profile_UI_RouteEdit_Frame";
|
||||
import {
|
||||
curveSpans,
|
||||
snapCurveStations,
|
||||
stationsAlong,
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Frame";
|
||||
import {
|
||||
lockColumn,
|
||||
readRouteLocks,
|
||||
@@ -76,7 +80,7 @@ import {
|
||||
flattenServerPlan,
|
||||
spliceNode,
|
||||
type CurveLock,
|
||||
} from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
import {
|
||||
bindHistoryControls,
|
||||
createRouteEditHistory,
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import { clearDrafts, clearResults } from "../A00_Common/b_page_state";
|
||||
import type { RouteDraft } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { RouteDraft } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
import { useDesignStore } from "../A00_Common/design/design_store";
|
||||
import { currentRoute, remountRoute } from "../A00_Common/router";
|
||||
import { hideLoadingOverlay, showLoadingOverlay, showToast } from "@ui/ui_template_elements";
|
||||
|
||||
@@ -21,7 +21,7 @@ import {
|
||||
import {
|
||||
prepareLayer,
|
||||
prepareMetricPolylines,
|
||||
} from "../B04_PreProcess/B04_PreProcess_UI_MapRender_Prepare";
|
||||
} from "../B04_PreProcess/logic/B04_PreProcess_UI_MapRender_Prepare";
|
||||
import type { VWorldMeta } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
|
||||
/** 도엽 등고선의 표고 속성 이름 — B04 지도가 쓰는 것과 같은 키. */
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import { svgElement, svgText } from "@util/common_util_svg";
|
||||
import type { ContentBounds } from "../A00_Common/b_svg_zoom_pan";
|
||||
import type { CrossSection } from "./../B06_Section/B06_Section_Api_Fetch";
|
||||
import { fillSlopeLengths, toeOffsets } from "./../B06_Section/B06_Section_UI_Cross_Fit";
|
||||
import { fillSlopeLengths, toeOffsets } from "../B06_Section/logic/B06_Section_UI_Cross_Fit";
|
||||
import type { CrossPreviewResponse } from "./B05_Profile_Api_Replan";
|
||||
|
||||
/** 그림 가장자리 여백(px) — 위는 범례 한 줄, 아래는 눈금 안내 한 줄 몫이다. */
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
* 들고 간다. 두 벌로 두면 교각이 바뀔 때 서로 어긋난다(`_Edits.ts` 설명 참고).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { EditedCurve, EditedNode, Vertex } from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
import type { EditedCurve, EditedNode, Vertex } from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
import {
|
||||
curveOptionalAt,
|
||||
deflectionRad,
|
||||
radiusFloorM,
|
||||
type CurveLock,
|
||||
} from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
import {
|
||||
centerDirectionOf,
|
||||
createCurveLabel,
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* 초안은 `fromPage` 로 편집기 새 걸음이 됨. 사진첩이 없으면 편집기 사진 그대로.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { RouteDraft } from "../A00_Common/design/design_pipeline_types";
|
||||
import type { RouteDraft } from "../A00_Common/design/logic/design_pipeline_types";
|
||||
import { pageHistory } from "./B05_Profile_UI_Profile_History";
|
||||
import {
|
||||
sameLine,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import { draftProjectId, useDesignStore } from "../A00_Common/design/design_store";
|
||||
import type { Vertex } from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
import type { Vertex } from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
import {
|
||||
type FootprintStrokeKind,
|
||||
type FootprintValue,
|
||||
|
||||
@@ -10,7 +10,7 @@ import type {
|
||||
RouteInitialLogic,
|
||||
RouteInitialWeights,
|
||||
} from "./B05_Profile_Api_RouteInitial";
|
||||
import { flattenServerPlan } from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
import { flattenServerPlan } from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
import type { RouteEditSnapshot } from "./B05_Profile_UI_RouteEdit_History";
|
||||
import { parseBalance, type BalanceProfile } from "./B05_Profile_UI_RouteEdit_Recommend_Profile";
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import { pickPx, wheelZoomsIn } from "../A00_Common/touch_bridge";
|
||||
import { computeMaxScale, type ViewState } from "../B04_PreProcess/B04_PreProcess_UI_MapRender";
|
||||
import type { VWorldMeta } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import type { StationLabelBox } from "../B04_PreProcess/B04_PreProcess_UI_MapOverlays";
|
||||
import { curveArcVertices, type EditedCurve } from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
import { curveArcVertices, type EditedCurve } from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
|
||||
/** 배수유역도와 같은 값 — 한 번에 얼마나 확대·축소할지. */
|
||||
const ZOOM_IN_FACTOR = 1.15;
|
||||
|
||||
@@ -22,11 +22,14 @@
|
||||
|
||||
import { createButton } from "@ui/ui_template_elements";
|
||||
import { numberField, toggleButton } from "./B05_Profile_UI_Panel_Fields";
|
||||
import { CURVE_OPTIONAL_INNER_ANGLE_DEG, type CurveLock } from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
import {
|
||||
CURVE_OPTIONAL_INNER_ANGLE_DEG,
|
||||
type CurveLock,
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
|
||||
// `deflectionRad` 는 화면을 안 만지는 셈이라 `_Edits.ts` 로 옮겼다(2026-09-12) — 순수
|
||||
// 함수가 DOM 파일에 얹혀 있으면 시험이 화면째 들여와야 한다. 재수출로 부르던 자리를 지킨다.
|
||||
export { deflectionRad } from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
export { deflectionRad } from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
|
||||
/** 곡선 중심이 있는 **화면 방향**(단위벡터) — 패널을 그 반대쪽에 붙이는 데 쓴다.
|
||||
*
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
type EditedCurve,
|
||||
type EditedNode,
|
||||
type Vertex,
|
||||
} from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
import {
|
||||
arcAtScreen,
|
||||
handleAtScreen,
|
||||
@@ -30,7 +30,7 @@ import {
|
||||
radiusFloorM,
|
||||
shortfallCrossed,
|
||||
type CurveLock,
|
||||
} from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
} from "./logic/B05_Profile_UI_RouteEdit_Edits";
|
||||
|
||||
/** 노드를 잡았다고 볼 거리(px). 손가락·마우스 모두 무리 없는 크기. */
|
||||
const NODE_HIT_PX = 9;
|
||||
|
||||
@@ -24,10 +24,10 @@ import {
|
||||
drawStationTicks,
|
||||
type StationLabelBox,
|
||||
} from "../B04_PreProcess/B04_PreProcess_UI_MapOverlays";
|
||||
import type { EditedCurve, EditedNode, Vertex } from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
import type { EditedCurve, EditedNode, Vertex } from "./logic/B05_Profile_UI_RouteEdit_Curve";
|
||||
import { contourBandRect, setStationLabelBoxes } from "./B05_Profile_UI_RouteEdit_Input";
|
||||
import type { CrossWatch } from "./B05_Profile_UI_RouteEdit_Cross";
|
||||
import { stationFrameAt } from "./B05_Profile_UI_RouteEdit_Frame";
|
||||
import { stationFrameAt } from "./logic/B05_Profile_UI_RouteEdit_Frame";
|
||||
import type { MeasureMark } from "./B05_Profile_UI_RouteEdit_Measure";
|
||||
import { stationLabel as formatStation } from "../common_util/common_util_station";
|
||||
import { arcLocked, straightLocked } from "./B05_Profile_UI_RouteEdit_Lock";
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
* ========================================================================== */
|
||||
|
||||
import type { StructureType } from "./B05_Profile_Api_Structures";
|
||||
import { ruleDefaults, ruleStates } from "./B05_Profile_UI_Structures_Define";
|
||||
import { isOptionVisible } from "./B05_Profile_UI_Structures_Summary";
|
||||
import { ruleDefaults, ruleStates } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import { isOptionVisible } from "./logic/B05_Profile_UI_Structures_Summary";
|
||||
|
||||
/** 시설 폼이 가릴 옵션 키 — 「구조물 옵션 보이기」에서 끈 것 + 정의 「안 씀」. */
|
||||
export function hiddenOptionKeys(type: StructureType | null): string[] {
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
* 저장은 누가거리(m), 화면 입출력만 측점번호+잔여거리.
|
||||
* ========================================================================== */
|
||||
|
||||
import { chainageToStation, stationToChainage } from "./B05_Profile_Util_Station";
|
||||
import { DEFAULT_BASIN_SHAPE } from "../B06_Section/B06_Section_UI_Cross_Culvert_Basin";
|
||||
import { chainageToStation, stationToChainage } from "./logic/B05_Profile_Util_Station";
|
||||
import { DEFAULT_BASIN_SHAPE } from "../B06_Section/logic/B06_Section_UI_Cross_Culvert_Basin";
|
||||
import { fillPipeHeights } from "../common_util/common_util_culvert_sets";
|
||||
import { snapStructureStation } from "../common_util/common_util_structure_station";
|
||||
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
import { openItemPicker } from "@ui/ui_template_item_picker";
|
||||
import { pipeStructureId } from "@ui/ui_template_item_picker_project";
|
||||
import type { StructureType } from "./B05_Profile_Api_Structures";
|
||||
import { hiddenFormKeys } from "./B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { hiddenFormKeys } from "./logic/B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { buildSummaryRow, type SummaryRow } from "./B05_Profile_UI_Structures_Summary_Row";
|
||||
import { isOptionVisible } from "./B05_Profile_UI_Structures_Summary";
|
||||
import { SHAPE_FIELDS, shapeFields, shapeKey } from "./B05_Profile_UI_Structures_Define";
|
||||
import { isOptionVisible } from "./logic/B05_Profile_UI_Structures_Summary";
|
||||
import { SHAPE_FIELDS, shapeFields, shapeKey } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import { numberInput } from "./B05_Profile_UI_Structures_Fields";
|
||||
import { grid, group as boxOf, labeled, stepper } from "./B05_Profile_UI_Drainage_Facility_Fields";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import {
|
||||
GROUP_JOIN,
|
||||
type GroupItems,
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
summaryTooltip,
|
||||
type SummaryItem,
|
||||
} from "../common_util/common_util_summary_item";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { PIPE_MATCH_M } from "../A00_Common/design/design_selection";
|
||||
import { pipeExtraCount } from "../A00_Common/design/design_structure_pipe_calc";
|
||||
import {
|
||||
@@ -30,9 +30,9 @@ import {
|
||||
isNone,
|
||||
linkOf,
|
||||
readState,
|
||||
} from "../A00_Common/design/design_structure_spec";
|
||||
import { withLegacyGuards } from "../A00_Common/design/design_structure_ford";
|
||||
import { asRoad } from "./B05_Profile_UI_Structures_Define";
|
||||
} from "../A00_Common/design/logic/design_structure_spec";
|
||||
import { withLegacyGuards } from "../A00_Common/design/logic/design_structure_ford";
|
||||
import { asRoad } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
|
||||
export interface StructureListParams {
|
||||
/** 목록을 담을 <ul>. 그릴 때마다 통째로 갈아 끼운다. */
|
||||
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
type StructureType,
|
||||
} from "./B05_Profile_Api_Structures";
|
||||
import { etcName, numberDuplicateNames } from "./B05_Profile_UI_Structures_List";
|
||||
import { balloonLines, type ContainerCount } from "./B05_Profile_UI_Structures_Balloon";
|
||||
import { balloonLines, type ContainerCount } from "./logic/B05_Profile_UI_Structures_Balloon";
|
||||
import { stationLabel as formatStation } from "../common_util/common_util_station";
|
||||
import { frameOf } from "../common_util/common_util_view_window";
|
||||
import { catalogRow } from "../common_util/common_util_structure_catalog";
|
||||
|
||||
@@ -43,7 +43,7 @@ import {
|
||||
} from "./B05_Profile_UI_Structures_Panel_Commit";
|
||||
import { renderStructureList } from "./B05_Profile_UI_Structures_List";
|
||||
import { addsAtOnce, finishAdd } from "./B05_Profile_UI_Structures_Panel_AddAt";
|
||||
import { showsAnchor } from "./B05_Profile_UI_Structures_Define";
|
||||
import { showsAnchor } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import { hiddenOptionKeys } from "./B05_Profile_UI_Structures_Define_Form";
|
||||
import { stationLabel as formatStation } from "../common_util/common_util_station";
|
||||
import { PIPE_MATCH_M, resolveSelection } from "../A00_Common/design/design_selection";
|
||||
|
||||
@@ -18,11 +18,11 @@ import type { PipeFacility } from "../B04_PreProcess/B04_PreProcess_Api_Fetch";
|
||||
import type { FacilityAttributes, FacilityOptionsForm } from "./B05_Profile_UI_Drainage_Facility";
|
||||
import type { StationFields } from "./B05_Profile_UI_Structures_Fields";
|
||||
import { splitPavementRange } from "./B05_Profile_UI_Structures_Pavement";
|
||||
import { mergeStructureOptions } from "./B05_Profile_UI_Structures_Summary";
|
||||
import { mergeStructureOptions } from "./logic/B05_Profile_UI_Structures_Summary";
|
||||
import { readStructureSpec, specRenderedKeys } from "./B05_Profile_UI_Structures_Spec";
|
||||
import { asRoad } from "./B05_Profile_UI_Structures_Define";
|
||||
import { asRoad } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import type { GroupBoxes } from "./B05_Profile_UI_Structures_Groups";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { snapStructureStation } from "../common_util/common_util_structure_station";
|
||||
import {
|
||||
readGroupItems,
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
type StructureType,
|
||||
} from "./B05_Profile_Api_Structures";
|
||||
import type { StructuresCommitContext } from "./B05_Profile_UI_Structures_Panel_Commit";
|
||||
import { asRoad } from "./B05_Profile_UI_Structures_Define";
|
||||
import { asRoad } from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import { readState, writeState } from "../A00_Common/b_page_state";
|
||||
import { NO_SELECTION, PIPE_MATCH_M, selectDesign } from "../A00_Common/design/design_selection";
|
||||
import { readGroupItems, readSummaryItem } from "../common_util/common_util_summary_item";
|
||||
|
||||
@@ -18,13 +18,17 @@ import {
|
||||
ruleDefaults,
|
||||
ruleStates,
|
||||
staleValues,
|
||||
} from "./B05_Profile_UI_Structures_Define";
|
||||
import { FORM_OPTION_KEYS } from "./B05_Profile_UI_Drainage_Facility_Merge";
|
||||
} from "./logic/B05_Profile_UI_Structures_Define";
|
||||
import { FORM_OPTION_KEYS } from "./logic/B05_Profile_UI_Drainage_Facility_Merge";
|
||||
import { stepper } from "./B05_Profile_UI_Drainage_Facility_Fields";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { baseType } from "../common_util/common_util_structure_catalog";
|
||||
import { paintStructureSpec, specOwnedKeys } from "./B05_Profile_UI_Structures_Spec";
|
||||
import { solveSplit, specKeys, type SplitRole } from "../A00_Common/design/design_structure_spec";
|
||||
import {
|
||||
solveSplit,
|
||||
specKeys,
|
||||
type SplitRole,
|
||||
} from "../A00_Common/design/logic/design_structure_spec";
|
||||
|
||||
/** 종류 단위 「구조물 조합」 줄을 가릴 종류인지 — 구조물 명세 컨테이너 · 정의 그룹 상자(그룹마다 잇기 줄)로
|
||||
* 그리는 종류(PLAN 52-1 · 52-6b · 52-7) · 종단배수(B군 · 조합 잇기 없음 · 표 07). */
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
} from "./B05_Profile_Api_Structures";
|
||||
import type { DesignSelection, ResolvedSelection } from "../A00_Common/design/design_selection";
|
||||
import type { GroupItems, SummaryItem } from "../common_util/common_util_summary_item";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { catalogRow } from "../common_util/common_util_structure_catalog";
|
||||
|
||||
/** 구조물군 표시 이름. 리스트 기호(A~G)만으로는 무엇인지 알기 어렵다.
|
||||
|
||||
@@ -15,10 +15,10 @@ import {
|
||||
type SpecFormHooks,
|
||||
type SpecLinks,
|
||||
} from "../A00_Common/design/design_structure_form";
|
||||
import { specFor } from "../A00_Common/design/design_structure_pipe";
|
||||
import { ADDON_SPECS } from "../A00_Common/design/design_structure_slope_tier";
|
||||
import { specFor } from "../A00_Common/design/logic/design_structure_pipe";
|
||||
import { ADDON_SPECS } from "../A00_Common/design/logic/design_structure_slope_tier";
|
||||
import { baseType } from "../common_util/common_util_structure_catalog";
|
||||
import { specKeys, type StructureSpec } from "../A00_Common/design/design_structure_spec";
|
||||
import { specKeys, type StructureSpec } from "../A00_Common/design/logic/design_structure_spec";
|
||||
import { hiddenOptionKeys, optionDefaults } from "./B05_Profile_UI_Structures_Fields";
|
||||
import type { WideningBox } from "./B05_Profile_UI_Structures_Widening";
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
wideningArea,
|
||||
wideningRuns,
|
||||
type WideningRun,
|
||||
} from "../A00_Common/design/design_structure_widening";
|
||||
} from "../A00_Common/design/logic/design_structure_widening";
|
||||
import { stationLabel } from "../common_util/common_util_station";
|
||||
import { group } from "./B05_Profile_UI_Drainage_Facility_Fields";
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
① 짝(ts ↔ py · 거울 시험):
|
||||
|
||||
- `UI_RouteEdit_Curve.ts` ↔ `common_util_route_polyline.py` · `test_route_polyline_browser_mirror.py`
|
||||
- `UI_RouteEdit_Frame.ts` ↔ `Engine_Sections_Core.py`(측점 틀 · 스냅) · `test_b05_routeedit_frame_mirror.py` · `test_224_2_station_snap.py`
|
||||
- `logic/UI_RouteEdit_Curve.ts` ↔ `common_util_route_polyline.py` · `test_route_polyline_browser_mirror.py`
|
||||
- `logic/UI_RouteEdit_Frame.ts` ↔ `Engine_Sections_Core.py`(측점 틀 · 스냅) · `test_b05_routeedit_frame_mirror.py` · `test_224_2_station_snap.py`
|
||||
- `UI_Drainage_Facility.ts` carryIndices ↔ `common_util_drainage_pipes.py` · `test_b05_facility_carry.py`
|
||||
- `logic/B05_Profile_PlanFootprint.ts` ↔ `B07_DesignDetail_Engine_Cad_PlanSlope.py` · `test_346_2_plan_footprint_mirror.py`
|
||||
- 지형 표본 = `common_util_surface_sampler.build_surface_sampler` 하나 · 2 m 비용면은 노선 추천 점수만
|
||||
|
||||
@@ -15,7 +15,7 @@ import type {
|
||||
CrossStationResult,
|
||||
PipelineStation,
|
||||
StageContext,
|
||||
} from "../../A00_Common/design/design_pipeline_types";
|
||||
} from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
import {
|
||||
footprintLines,
|
||||
footprintRecord,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* 조각이 바뀌는 점은 앞뒤 조각이 함께 가짐(선이 끊겨 보이지 않게 · `splitRuns` 와 같은 규칙).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { PlanFootprint, Vertex } from "../../A00_Common/design/design_pipeline_types";
|
||||
import type { PlanFootprint, Vertex } from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
export type FootprintStrokeKind = "road" | "cut" | "fill" | "slope";
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
chainageKey,
|
||||
type AlignmentEdits,
|
||||
type AlignmentNode,
|
||||
} from "../B05_Profile_UI_Profile_Alignment";
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
|
||||
/** 같은 정점으로 볼 거리(m) — 파이썬 `SAME_VERTEX_M` 짝. */
|
||||
export const SAME_VERTEX_M = 1e-3;
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
evaluateAt,
|
||||
type AlignmentNode,
|
||||
type AlignmentPolicy,
|
||||
} from "../B05_Profile_UI_Profile_Alignment";
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
|
||||
/** 종단 지반 표본 한 점 — 저장 종단 `samples[]` 꼴. */
|
||||
export interface GroundSample {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
import { computeMassHaulSeries, type MassHaulSeries } from "@util/common_util_mass_haul";
|
||||
import type { EarthworkConversion, MassHaulSection } from "@util/common_util_mass_haul_types";
|
||||
import type { StageContext } from "../../A00_Common/design/design_pipeline_types";
|
||||
import type { StageContext } from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
export interface MassHaulStageContext {
|
||||
conversion: EarthworkConversion;
|
||||
|
||||
@@ -22,8 +22,8 @@ import type {
|
||||
CrossOutput,
|
||||
GroundOutput,
|
||||
PipelineStation,
|
||||
} from "../../A00_Common/design/design_pipeline_types";
|
||||
import type { ProfileAlignment } from "../B05_Profile_UI_Profile_Alignment";
|
||||
} from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
import type { ProfileAlignment } from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { stationLabel } from "../../common_util/common_util_station";
|
||||
import { stationIdOf } from "./B05_Profile_Pipeline_Grade";
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* =============================================================================
|
||||
* B05_Profile_Pipeline_Grade.ts
|
||||
* 계산 묶음(PLAN 346-1) **follow · planline · profile 단계** + 바뀐 범위 — 계약 =
|
||||
* `A00_Common/design/design_pipeline_types.ts`. 셈은 이미 있는 짝을 부르기만(어댑터):
|
||||
* `A00_Common/design/logic/design_pipeline_types.ts`. 셈은 이미 있는 짝을 부르기만(어댑터):
|
||||
*
|
||||
* follow — 관 · 구조물 좌표 따라감(`common_util_route_follow`) · 계획고 편집 옮김(`Grade_Carry`
|
||||
* `carryProfileEdits` 의 edits 몫 · 옛 노선 `before.route` 가 있을 때만).
|
||||
@@ -17,7 +17,7 @@ import type {
|
||||
RangePart,
|
||||
StageFn,
|
||||
Vertex,
|
||||
} from "../../A00_Common/design/design_pipeline_types";
|
||||
} from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
import {
|
||||
followStructures,
|
||||
projectPipePoints,
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
emptyEdits,
|
||||
type AlignmentBase,
|
||||
type AlignmentEdits,
|
||||
} from "../B05_Profile_UI_Profile_Alignment";
|
||||
} from "./B05_Profile_UI_Profile_Alignment";
|
||||
import { carryProfileEdits, changedSpan } from "./B05_Profile_Grade_Carry";
|
||||
import { groundFollowingBasePvi, groundProfile } from "./B05_Profile_Grade_Ground";
|
||||
|
||||
|
||||
@@ -22,10 +22,10 @@ import type {
|
||||
StageFn,
|
||||
StationGround,
|
||||
Vertex,
|
||||
} from "../../A00_Common/design/design_pipeline_types";
|
||||
} from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
import { type DtmGrid, heightAt } from "../../common_util/common_util_surface_sampler";
|
||||
import { buildEditedPolyline } from "../B05_Profile_UI_RouteEdit_Curve";
|
||||
import { applyArcLocks } from "../B05_Profile_UI_RouteEdit_Edits";
|
||||
import { buildEditedPolyline } from "./B05_Profile_UI_RouteEdit_Curve";
|
||||
import { applyArcLocks } from "./B05_Profile_UI_RouteEdit_Edits";
|
||||
import {
|
||||
crossOffsets,
|
||||
longitudinalPoints,
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* 순수 계산 — 화면 · three · fetch · sessionStorage 없음 · 좌표 = 사업지 m · 오프셋 좌(+) · 우(-).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { PlanFootprint, Vertex } from "../../A00_Common/design/design_pipeline_types";
|
||||
import type { PlanFootprint, Vertex } from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
/** 횡단 설계선 · 지반 표본 한 점(`CrossDesignEdge` · `CrossGroundSample` 꼴). */
|
||||
export interface FootprintPoint {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
import { type DtmGrid, heightAt } from "../../common_util/common_util_surface_sampler";
|
||||
import type { CrossDesignEdge } from "../../common_util/common_util_cross_design";
|
||||
import { stationFrameAt, stationsAlong } from "../B05_Profile_UI_RouteEdit_Frame";
|
||||
import { stationFrameAt, stationsAlong } from "./B05_Profile_UI_RouteEdit_Frame";
|
||||
|
||||
type Vertex = [number, number];
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/* =============================================================================
|
||||
* B05_Profile/logic/B05_Profile_Sections_Stations.ts
|
||||
* 측점 한 벌(PLAN 344-3 뼈대 · 346-1) — 그린 노선 + 관 · 구조물 → 측점(지반 null). 계산 묶음 stations
|
||||
* 단계(`A00_Common/design/design_pipeline_stations.ts`)가 부름. 측점 열쇠 규칙 한 곳(`stationKey` ·
|
||||
* 계약 = `A00_Common/design/design_pipeline_types.ts` 머리).
|
||||
* 단계(`A00_Common/design/logic/design_pipeline_stations.ts`)가 부름. 측점 열쇠 규칙 한 곳(`stationKey` ·
|
||||
* 계약 = `A00_Common/design/logic/design_pipeline_types.ts` 머리).
|
||||
*
|
||||
* ⚠ 파이썬·TS 짝 — `B05_Profile_Engine_Sections_Core.py` `generate_sections` 의 측점 부분
|
||||
* (격자 · 스냅 · 구조물 측점 병합 · 종류 · 틀 · 방위각) ↔ `buildStations` ·
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
snapCurveStations,
|
||||
stationFrameAt,
|
||||
stationsAlong,
|
||||
} from "../B05_Profile_UI_RouteEdit_Frame";
|
||||
} from "./B05_Profile_UI_RouteEdit_Frame";
|
||||
import {
|
||||
planStations,
|
||||
type PlanPipe,
|
||||
@@ -33,7 +33,7 @@ import type {
|
||||
PipelineStation,
|
||||
StationKind,
|
||||
Vertex,
|
||||
} from "../../A00_Common/design/design_pipeline_types";
|
||||
} from "../../A00_Common/design/logic/design_pipeline_types";
|
||||
|
||||
/** 짝: `config_system_design.py` 같은 이름. */
|
||||
export const SECTION_STATION_INTERVAL_M = 20.0;
|
||||
|
||||
+3
-3
@@ -7,9 +7,9 @@
|
||||
* (`... from "./B05_Profile_UI_Corridor_Build"`)는 전부 유효하다.
|
||||
* ========================================================================== */
|
||||
|
||||
import type { CrossSection } from "../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { CorridorKind, CorridorSide } from "./B05_Profile_UI_Corridor_Station";
|
||||
import type { CorridorStructure } from "./B05_Profile_UI_Corridor_Structures";
|
||||
import type { CrossSection } from "../../B06_Section/B06_Section_Api_Fetch";
|
||||
import type { CorridorKind, CorridorSide } from "../B05_Profile_UI_Corridor_Station";
|
||||
import type { CorridorStructure } from "../B05_Profile_UI_Corridor_Structures";
|
||||
|
||||
export interface CorridorRibbon {
|
||||
kind: CorridorKind;
|
||||
+2
-2
@@ -10,8 +10,8 @@
|
||||
* 테이퍼가 생긴다. 접속 길이 기준 = **인접 측점까지**(2026-08-24 사용자 확정).
|
||||
* ========================================================================== */
|
||||
|
||||
import type { OffsetPoint, StationPieces, XY } from "./B05_Profile_UI_Corridor_Station";
|
||||
import type { RoutePoint } from "./B05_Profile_Api_Fetch";
|
||||
import type { OffsetPoint, StationPieces, XY } from "../B05_Profile_UI_Corridor_Station";
|
||||
import type { RoutePoint } from "../B05_Profile_Api_Fetch";
|
||||
|
||||
/** 제어점 하나 — 그 누가거리에서 쓸 단면과 출처. */
|
||||
export interface PieceControl {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user