Merge remote-tracking branch 'origin/sub_laptop_8' into sub_laptop_3
This commit is contained in:
@@ -75,6 +75,8 @@ export interface DesignPageShared {
|
||||
panel: DesignPanel | null;
|
||||
profile: DesignProfile | null;
|
||||
structures: StructuresSection | null;
|
||||
/** 배수유역도가 마지막으로 알린 관 목록 — 뒤늦게 서는 보기가 처음부터 같은 관 목록을 쥔다(24-7a). */
|
||||
lastPipes?: Parameters<NonNullable<RouteProfilePanelCallbacks["onPipesChanged"]>>[0];
|
||||
/** 횡단 보기가 서기 전에 종단 보기가 고친 관 옵션 — 횡단 보기가 서면 캐시에 얹는다. */
|
||||
pipeOptionQueue: Array<[number, Record<string, number | string>]>;
|
||||
/** 접힌 좌측 패널을 편다(바깥에서 고른 것이 폼에 실릴 때). */
|
||||
@@ -152,7 +154,10 @@ export function sharedProfile(shared: DesignPageShared): DesignProfile {
|
||||
onSelectStation: (stationId) => bound(shared).profile?.onSelectStation(stationId),
|
||||
onResetAll: () => bound(shared).profile?.onResetAll?.(),
|
||||
callbacks: {
|
||||
onPipesChanged: toAll(shared, "onPipesChanged"),
|
||||
onPipesChanged: (pipes) => {
|
||||
shared.lastPipes = pipes;
|
||||
toAll(shared, "onPipesChanged")(pipes);
|
||||
},
|
||||
onCrossDesignsUpdated: toAll(shared, "onCrossDesignsUpdated"),
|
||||
onStructureMove: toView(shared, "onStructureMove"),
|
||||
onStructureRemove: toView(shared, "onStructureRemove"),
|
||||
|
||||
@@ -38,11 +38,13 @@ import {
|
||||
import { maxToeFitHalfWidth } from "../../B06_Section/B06_Section_UI_Cross_Fit";
|
||||
import { readStructurePick } from "../../B05_Profile/B05_Profile_UI_Structure_Pick_Session";
|
||||
import { NO_SELECTION, PIPE_MATCH_M, selectDesign } from "./design_selection";
|
||||
import { readPendingPipes } from "../../B05_Profile/B05_Profile_Api_Pipes_Draft";
|
||||
import { applyStructurePick } from "../../B06_Section/B06_Section_UI_Page_Structure_Pick";
|
||||
import { createSectionView } from "../../B06_Section/B06_Section_UI_Section_View";
|
||||
import { revetWallSpec } from "../../B06_Section/B06_Section_UI_Cross_Culvert_Const";
|
||||
import {
|
||||
applyPipeOptionsToCache,
|
||||
replayDraftPipeOptions,
|
||||
type PipeOptionsContext,
|
||||
} from "../../B06_Section/B06_Section_UI_Page_Pipe_Options";
|
||||
import {
|
||||
@@ -580,6 +582,8 @@ export async function mountCrossView(
|
||||
bindPipeOptions(shared, (chainageM, patch) =>
|
||||
applyPipeOptionsToCache(pipeOptionsContext, chainageM, patch),
|
||||
);
|
||||
// 새로고침 뒤 캐시 상세는 저장분 — 저장 전에 고친 관 옵션을 초안에서 다시 얹는다(24-7a).
|
||||
replayDraftPipeOptions(pipeOptionsContext, readPendingPipes(projectId));
|
||||
renderSectionDetail();
|
||||
// 측점이 없는 구조물 알림 — 관을 나중에 놓으면 그 측점이 안 생겨 수량에서 조용히 빠진다
|
||||
// (계획서 3-14 ㉯). 만드는 것은 사용자가 누를 때만.
|
||||
|
||||
@@ -114,7 +114,7 @@ export async function mountProfileView(
|
||||
from: "b05",
|
||||
});
|
||||
/** 배수유역도가 마지막으로 알린 관 목록 — 숨어 있다 다시 보일 때 폼 · 3D 에 다시 싣는다. */
|
||||
let lastPipes: PipeReport | null = null;
|
||||
let lastPipes: PipeReport | null = shared.lastPipes ?? null;
|
||||
const applyPipes = (pipes: PipeReport): void => {
|
||||
// 횡단배수는 계획선을 그 지점에 물리는 시설이라 그래프 세로 점선·계획고 틸팅
|
||||
// 버튼이 필요하다(2026-08-17 사용자 지시). 알약 레인은 종류·선택을 맡는다.
|
||||
@@ -616,6 +616,9 @@ export async function mountProfileView(
|
||||
|
||||
// ③ 종단면·횡단 자료 — 하단 패널을 3D보다 먼저 채운다.
|
||||
if (latestResponse.route) await restoreSections(latestResponse.route.id);
|
||||
// 횡단 보기가 먼저 서서 배수유역도가 관 목록을 이미 알렸다면 그것을 먼저 싣는다 — 빈 목록으로
|
||||
// 시작하면 아래 구조물 로딩이 관 대조로 관을 지우고 초안 옵션이 자동 배치로 되돌아간다(24-7a).
|
||||
if (lastPipes) applyPipes(lastPipes);
|
||||
// 구조물 타입 레지스트리·정본 — 노선이 없어도 목록은 보여 준다(추가는 노선 이후).
|
||||
await bridge.load();
|
||||
advanceLoading("");
|
||||
|
||||
Reference in New Issue
Block a user