Merge remote-tracking branch 'origin/main_desktop_1' into main_laptop_1
This commit is contained in:
@@ -222,7 +222,7 @@ const BASE_CSS = `
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: rgba(38, 17, 74, 0.35);
|
||||
z-index: var(--z-overlay);
|
||||
z-index: var(--z-confirm);
|
||||
}
|
||||
.ui-confirm__panel {
|
||||
min-width: 300px;
|
||||
|
||||
@@ -364,8 +364,8 @@ export const ui_locales_b1 = {
|
||||
"A file for this slot is already selected.",
|
||||
],
|
||||
B03_File_Error_RequiredSlots: [
|
||||
"필수 카드를 모두 채우세요 — 계획노선(CSV 또는 shapefile 한 벌), LAS/LAZ, 지형 PRJ·TFW.",
|
||||
"Fill every required card: the planned route (a CSV or a full shapefile set), " +
|
||||
"필수 카드를 모두 채우세요 — 계획노선(shapefile 한 벌 또는 CSV), LAS/LAZ, 지형 PRJ·TFW.",
|
||||
"Fill every required card: the planned route (a full shapefile set or a CSV), " +
|
||||
"LAS/LAZ, and the terrain PRJ and TFW.",
|
||||
],
|
||||
B03_File_Error_SlotType: [
|
||||
|
||||
@@ -93,6 +93,24 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* 제목 줄 오른쪽 프로젝트 이름 (2026-09-04 사용자 지시) — 길면 말줄임, 전체는 툴팁.
|
||||
줄어드는 쪽은 이름만 — 페이지 제목은 짧은 고정 문구라 밀리면 안 된다. */
|
||||
.ui-workflow-overlay__panel--title .ui-workflow-overlay__title {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.ui-workflow-overlay__project {
|
||||
flex: 0 1 auto;
|
||||
max-width: 60%;
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
color: var(--color-text-muted, var(--color-text));
|
||||
font-size: var(--text-body-sm);
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui-workflow-overlay__toggle {
|
||||
flex: 0 0 auto;
|
||||
width: var(--spacing-32);
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import "./ui_template_overlay.css";
|
||||
import { CURRENT_PROJECT_ID_KEY } from "@config/config_frontend";
|
||||
import { t } from "./ui_template_locale";
|
||||
import { makePanelDraggable } from "./ui_template_overlay_drag";
|
||||
import { fetchProjectWorkflowState } from "../B01_Dashboard/B01_Dashboard_Api_Fetch";
|
||||
|
||||
const TITLE_OVERLAY_STATE_KEY = "frd_workflow_title_overlay_open";
|
||||
const PROGRESS_OVERLAY_STATE_KEY = "frd_workflow_progress_overlay_open";
|
||||
@@ -110,12 +112,38 @@ function splitSidebarActions(body: HTMLElement): void {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 제목 줄 오른쪽에 붙는 프로젝트 이름 (2026-09-04 사용자 지시).
|
||||
*
|
||||
* 화면이 들고 있는 것은 프로젝트 id 뿐이라 워크플로 상태 응답에서 이름을 받아 온다 —
|
||||
* 새로고침·주소 직접 입력으로 들어와도 따라온다. 이름이 없으면 칸을 비워 둔다.
|
||||
* 여기 한 곳에 두어 제목 패널을 쓰는 화면(B03~B08)이 모두 같은 값을 보인다.
|
||||
*/
|
||||
function createProjectNameTag(): HTMLElement {
|
||||
const tag = document.createElement("span");
|
||||
tag.className = "ui-workflow-overlay__project";
|
||||
const projectId = localStorage.getItem(CURRENT_PROJECT_ID_KEY);
|
||||
if (!projectId) return tag;
|
||||
void fetchProjectWorkflowState(projectId)
|
||||
.then((state) => {
|
||||
const name = state.project_name ?? "";
|
||||
tag.textContent = name;
|
||||
// 이름이 길면 말줄임으로 자르고 전체는 툴팁으로 본다.
|
||||
if (name) tag.title = name;
|
||||
})
|
||||
.catch(() => {
|
||||
/* 조회 실패는 제목만 보이면 된다 — 빈 칸으로 둔다. */
|
||||
});
|
||||
return tag;
|
||||
}
|
||||
|
||||
function createPanel(
|
||||
variant: "title" | "progress",
|
||||
titleText: string,
|
||||
body: HTMLElement,
|
||||
storageKey: string,
|
||||
onOpenChange?: (isOpen: boolean) => void,
|
||||
titleAside?: HTMLElement,
|
||||
): { root: HTMLElement; setOpen: (isOpen: boolean) => void } {
|
||||
const root = document.createElement("aside");
|
||||
root.className = `ui-workflow-overlay__panel ui-workflow-overlay__panel--${variant}`;
|
||||
@@ -137,6 +165,8 @@ function createPanel(
|
||||
|
||||
if (isSidebar) {
|
||||
header.append(title);
|
||||
// 제목은 왼쪽, 프로젝트 이름은 같은 행 오른쪽 끝 (2026-09-04 사용자 지시).
|
||||
if (titleAside) header.append(titleAside);
|
||||
root.append(header, toggle);
|
||||
} else {
|
||||
header.append(title, toggle);
|
||||
@@ -210,6 +240,7 @@ export function createWorkflowOverlays(options: WorkflowOverlayOptions): Workflo
|
||||
titleBody,
|
||||
TITLE_OVERLAY_STATE_KEY,
|
||||
options.onOptionsOpenChange,
|
||||
createProjectNameTag(),
|
||||
);
|
||||
root.append(titlePanel.root);
|
||||
setTitleOpen = titlePanel.setOpen;
|
||||
|
||||
@@ -197,6 +197,8 @@
|
||||
--z-dropdown: 200;
|
||||
--z-overlay: 900;
|
||||
--z-modal: 1000;
|
||||
/* 확인창은 모달 위에 떠야 한다 — 모달 닫기 확인이 모달 뒤에 깔리면 못 누른다. */
|
||||
--z-confirm: 1050;
|
||||
--z-toast: 1100;
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user