Files
MH-DashBoard-organization/frontend/public/index.html
2026-03-26 11:40:41 +09:00

181 lines
8.3 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MH 조직현황 대시보드</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Pretendard:wght@400;600;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/legacy/static/common.css">
<link rel="stylesheet" href="/styles.css?v=20260325-11">
</head>
<body>
<section id="login-panel" class="login-screen">
<div class="login-backdrop">
<form id="login-form" class="login-card">
<div class="login-brand">
<p class="eyebrow">GPD/TDC</p>
<h1>MH Dash Board</h1>
</div>
<div class="login-form-wrap">
<label>
<span>사번</span>
<input name="username" type="text" placeholder="사번 입력" required>
</label>
<label>
<span>비번</span>
<input name="password" type="password" placeholder="비밀번호 입력" required>
</label>
<button type="submit">로그인</button>
<p id="login-message" class="helper-text"></p>
</div>
</form>
</div>
</section>
<section id="dashboard-panel" class="dashboard-shell hidden">
<header class="dashboard-header">
<div class="brand-block">
<p class="eyebrow">MH Dashboard</p>
<h2 id="current-view-title">조직 현황</h2>
</div>
<div class="header-center">
<button class="nav-pill" type="button" data-view="ledger">사업관리대장</button>
<button class="nav-pill" type="button" data-view="project">프로젝트별 분석</button>
<button class="nav-pill" type="button" data-view="team">팀/개인별 분석</button>
<button class="nav-pill active" type="button" data-view="organization">조직 현황</button>
</div>
<div class="header-actions">
<button id="user-badge" class="ghost-button ghost-button-soft user-chip" type="button"></button>
<div id="user-popover" class="user-popover hidden"></div>
<button id="logout-btn" class="ghost-button icon-button" type="button" title="로그아웃" aria-label="로그아웃">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path>
<polyline points="16 17 21 12 16 7"></polyline>
<line x1="21" y1="12" x2="9" y2="12"></line>
</svg>
</button>
</div>
</header>
<main class="dashboard-main">
<section id="organization-stage" class="main-stage">
<div class="stage-frame">
<iframe id="organization-frame" src="/legacy/organization?v=20260325-11" data-src="/legacy/organization?v=20260325-11" title="조직도 메인 화면"></iframe>
</div>
</section>
<section id="seatmap-admin-stage" class="main-stage" hidden>
<div class="seatmap-layout">
<div class="seatmap-topbar">
<div>
<p class="eyebrow">Seat Layout</p>
<h3 id="seatmap-admin-name">자리배치도</h3>
</div>
<div id="seatmap-admin-office-tabs" class="seatmap-office-tabs"></div>
<div class="seatmap-actions" id="seatmap-admin-actions">
<button id="seatmap-admin-save-btn" class="ghost-button" type="button" hidden disabled>저장</button>
<button id="seatmap-admin-exit-btn" class="ghost-button ghost-button-soft" type="button" hidden>나가기</button>
</div>
</div>
<p id="seatmap-admin-status" class="seatmap-status" role="status"></p>
<div class="seatmap-content">
<div class="seatmap-board-panel">
<div id="seatmap-admin-empty" class="seatmap-empty hidden"></div>
<div id="seatmap-admin-board-wrap" class="seatmap-board-wrap hidden">
<div id="seatmap-admin-board" class="seatmap-board"></div>
</div>
</div>
<aside class="seatmap-sidebar">
<section id="seatmap-admin-settings-panel" class="seatmap-panel hidden">
<div class="seatmap-panel-head">
<h4>도면 설정</h4>
<p>현재는 기술개발센터 고정 도면을 사용합니다.</p>
</div>
<form id="seatmap-admin-settings-form" class="seatmap-form">
<label>
<span>도면 이름</span>
<input id="seatmap-admin-form-name" name="name" type="text" placeholder="예: 기술개발센터" required>
</label>
<div>
<span>DXF 파일</span>
<label class="seatmap-file-input" for="seatmap-admin-form-image">
<input id="seatmap-admin-form-image" name="image" type="file" accept=".dxf" required>
<span class="seatmap-file-button">DXF 선택</span>
<strong id="seatmap-admin-file-name" class="seatmap-file-name">선택된 파일 없음</strong>
</label>
</div>
<button id="seatmap-admin-settings-submit" type="submit">DXF 업로드</button>
</form>
</section>
<section class="seatmap-panel">
<div class="seatmap-panel-head">
<h4 id="seatmap-admin-sidebar-title">전체 인원</h4>
<p id="seatmap-admin-sidebar-desc">미배치 인원은 상단, 배치 완료 인원은 하단에 표시됩니다.</p>
</div>
<label class="seatmap-search">
<span class="hidden">구성원 검색</span>
<input id="seatmap-admin-search" type="search" placeholder="이름 또는 부서 검색">
</label>
<div id="seatmap-admin-unassigned" class="seatmap-member-list"></div>
</section>
</aside>
</div>
</div>
</section>
<section id="seatmap-readonly-stage" class="main-stage" hidden>
<div class="seatmap-layout">
<div class="seatmap-topbar">
<div>
<p class="eyebrow">Seat Layout</p>
<h3 id="seatmap-readonly-name">자리배치도</h3>
</div>
<div id="seatmap-readonly-office-tabs" class="seatmap-office-tabs"></div>
<div class="seatmap-actions" id="seatmap-readonly-actions">
<button id="seatmap-readonly-exit-btn" class="ghost-button ghost-button-soft" type="button" hidden>나가기</button>
</div>
</div>
<p id="seatmap-readonly-status" class="seatmap-status" role="status"></p>
<div class="seatmap-content">
<div class="seatmap-board-panel">
<div id="seatmap-readonly-empty" class="seatmap-empty hidden"></div>
<div id="seatmap-readonly-board-wrap" class="seatmap-board-wrap hidden">
<div id="seatmap-readonly-board" class="seatmap-board"></div>
</div>
</div>
<aside class="seatmap-sidebar">
<section class="seatmap-panel">
<div class="seatmap-panel-head">
<h4 id="seatmap-readonly-sidebar-title">배치 인원 검색</h4>
<p id="seatmap-readonly-sidebar-desc">이름이나 부서를 검색하고 클릭하면 해당 좌석으로 바로 확대 이동합니다.</p>
</div>
<label class="seatmap-search">
<span class="hidden">구성원 검색</span>
<input id="seatmap-readonly-search" type="search" placeholder="이름 또는 부서 검색">
</label>
<div id="seatmap-readonly-unassigned" class="seatmap-member-list"></div>
</section>
</aside>
</div>
</div>
</section>
<section id="empty-stage" class="main-stage" hidden>
<div class="stage-empty"></div>
</section>
</main>
</section>
<script src="/app.js?v=20260325-11"></script>
</body>
</html>