BARON-SSO 로그인 연동
All checks were successful
ITAM Code Check / build-and-config-check (push) Successful in 12s
ITAM Docker Build Check / docker-build-check (push) Successful in 33s

This commit is contained in:
2026-06-30 15:35:51 +09:00
20 changed files with 578 additions and 86 deletions

View File

@@ -6,6 +6,7 @@ import { renderDashboard } from './views/DashboardView';
import { renderSWTable } from './views/SW_Table';
import { renderLocationView } from './views/LocationView';
import { renderAuditApprovalView } from './views/AuditApprovalView';
import { MapEditor } from './views/MapEditor';
import { initBaseModal } from './components/Modal/BaseModal';
import { initHwModal, openHwModal } from './components/Modal/HWModal';
import { initSwModal, openSwModal } from './components/Modal/SWModal';
@@ -28,11 +29,19 @@ interface AuthSessionResponse {
let phoneLoginPollTimer: number | undefined;
let activeMapEditorInstance: MapEditor | null = null;
// 화면 갱신 통합 핸들러
function refreshView(tab?: string) {
async function refreshView(tab?: string) {
const mainContent = document.getElementById('main-content')!;
if (!mainContent) return;
// Clean up any active MapEditor instance when navigating away
if (activeMapEditorInstance) {
activeMapEditorInstance.destroy();
activeMapEditorInstance = null;
}
const activeTab = tab || state.activeSubTab;
if (activeTab === '대시보드') {
@@ -41,7 +50,48 @@ function refreshView(tab?: string) {
}
if (activeTab === '실사 승인') {
renderAuditApprovalView(mainContent);
await renderAuditApprovalView(mainContent);
return;
}
if (activeTab === '위치지정') {
// Render Map Editor directly into main content to maximize working area
mainContent.innerHTML = `
<div class="map-editor-page-wrapper" style="display: flex; flex: 1; height: calc(100vh - var(--header-height) - 48px); overflow: hidden; width: 100%;">
<!-- Left: File Selector -->
<div class="file-sidebar" id="file-sidebar"></div>
<!-- Center: Main Editor -->
<div class="editor-container" id="container">
<div class="img-wrapper" id="wrapper">
<img src="" id="target-img" alt="Map Image">
</div>
</div>
<!-- Right: Control Panel -->
<div class="sidebar">
<h2>Map Editor <small class="editor-version">v3.0</small></h2>
<div class="current-path" id="current-path">파일을 선택하세요</div>
<p>
드래그하여 구역을 정의하세요. 저장 버튼을 누르면 즉시 시스템에 반영됩니다.
</p>
<div class="box-list" id="box-list"></div>
<div class="actions" style="display: flex; flex-direction: column; gap: 0.5rem;">
<button id="btn-clear-all" class="btn btn-outline">전체 삭제</button>
<button id="btn-print-map-qrs" class="btn btn-outline btn-primary">이 도면 QR 일괄인쇄</button>
<button id="btn-save-server" class="btn btn-primary">서버에 즉시 저장</button>
<div id="save-status"></div>
</div>
</div>
</div>
`;
// Initialize MapEditor instance
const editor = new MapEditor();
await editor.init();
activeMapEditorInstance = editor;
return;
}