From c5d7f4cf679fd2bba24a31e3c2e93bae1e5dff25 Mon Sep 17 00:00:00 2001 From: JooWangi Date: Fri, 17 Apr 2026 17:01:27 +0900 Subject: [PATCH] Refactor: Rename AssetTableView to SW_Table and sync with main --- src/main.ts | 32 +++++++++++++------- src/views/{AssetTableView.ts => SW_Table.ts} | 5 ++- 2 files changed, 25 insertions(+), 12 deletions(-) rename src/views/{AssetTableView.ts => SW_Table.ts} (92%) diff --git a/src/main.ts b/src/main.ts index a73d363..263102a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,13 +1,14 @@ import { state, loadMasterDataFromDB } from './core/state'; import { renderNavigation } from './components/Navigation'; import { renderDashboard } from './views/DashboardView'; -import { renderTable } from './views/AssetTableView'; +import { renderSWTable } from './views/SW_Table'; import { downloadTemplate, exportToExcel, parseExcel, HardwareAsset, SoftwareAsset, SWUser } from './core/excelHandler'; import { initBaseModal } from './components/Modal/BaseModal'; import { initPcModal } from './components/Modal/PCModal'; import { initHwModal, openHwModal } from './components/Modal/HWModal'; import { initStorageModal } from './components/Modal/StorageModal'; -import { initSwModal } from './components/Modal/SWModal'; +import { initSwModal, openSwModal } from './components/Modal/SWModal'; +import { initCloudModal, openCloudModal } from './components/Modal/CloudModal'; import { initSwUserModal } from './components/Modal/SWUserModal'; import { initDashboardDetailModal } from './components/Modal/DashboardDetailModal'; import { createIcons, Download, Upload, FileSpreadsheet, Plus, X, LayoutDashboard, Monitor, Server, Database, Laptop, CalendarClock, Key, Cpu, Layers, Users, Paperclip, Edit2, History, RefreshCcw } from 'lucide'; @@ -69,33 +70,38 @@ function initApp() { if (tab === '대시보드') { renderDashboard(mainContent); } else { - renderTable(mainContent); + renderSWTable(mainContent); } }); initPcModal(() => { saveAllHwToDB(state.masterData.hw); - renderTable(mainContent); + renderSWTable(mainContent); }, closeAllModals); initHwModal(() => { saveAllHwToDB(state.masterData.hw); - renderTable(mainContent); + renderSWTable(mainContent); }, closeAllModals); initStorageModal(() => { saveAllHwToDB(state.masterData.hw); - renderTable(mainContent); + renderSWTable(mainContent); }, closeAllModals); initSwModal(() => { saveAllSwToDB(state.masterData.sw); - renderTable(mainContent); + renderSWTable(mainContent); + }, closeAllModals); + + initCloudModal(() => { + saveAllSwToDB(state.masterData.sw); + renderSWTable(mainContent); }, closeAllModals); initSwUserModal(() => { saveAllSwUsersToDB(state.masterData.swUsers); - renderTable(mainContent); + renderSWTable(mainContent); }, closeAllModals); initDashboardDetailModal(); @@ -110,7 +116,7 @@ function initApp() { loadMasterDataFromDB().then((success) => { if (success) { if (state.activeSubTab === '대시보드') renderDashboard(mainContent); - else renderTable(mainContent); + else renderSWTable(mainContent); } }); @@ -130,17 +136,21 @@ function initApp() { saveAllSwToDB(data.sw), saveAllSwUsersToDB(data.swUsers) ]); - renderTable(mainContent); + renderSWTable(mainContent); } }); document.getElementById('btn-add-asset')?.addEventListener('click', () => { - if (state.activeSubTab === '서버' || state.activeSubTab === '전산비품' || state.activeSubTab === '스토리지') { + if (['개인PC', '서버', '전산비품', '스토리지'].includes(state.activeSubTab)) { openHwModal({ id: Math.random().toString(36).substring(2, 9), type: state.activeSubTab, 법인: '한맥', 자산코드: '', 명칭: '', 위치: '', 관리자: '', IP주소: '', MACaddress: '', HW사양: '', OS: '', 납품업체: '', 품의서명: '' } as any); + } else if (state.activeSubTab === '클라우드') { + openCloudModal({ type: '클라우드', 제품명: '', 금액: '', 수량: 1, 계정명: '', 납품업체: '', 비고: '', 법인: '한맥', 플랫폼명: '' } as any); + } else if (state.activeSubTab === '구독SW' || state.activeSubTab === '영구SW') { + openSwModal({ type: state.activeSubTab, 제품명: '', 금액: '', 수량: 1, 계정명: '', 납품업체: '', 비고: '', 법인: '한맥' } as any); } }); diff --git a/src/views/AssetTableView.ts b/src/views/SW_Table.ts similarity index 92% rename from src/views/AssetTableView.ts rename to src/views/SW_Table.ts index a665c6b..0288cd9 100644 --- a/src/views/AssetTableView.ts +++ b/src/views/SW_Table.ts @@ -4,12 +4,13 @@ import { renderServerList } from './List/ServerListView'; import { renderStorageList } from './List/StorageListView'; import { renderEquipmentList } from './List/EquipmentListView'; import { renderSwList } from './List/SwListView'; +import { renderCloudList } from './List/CloudListView'; import { createIcons, Download, Upload, FileSpreadsheet, Plus, X, LayoutDashboard, Monitor, Server, Database, Laptop, CalendarClock, Key, Cpu, Layers, Users, Paperclip, Edit2, RefreshCcw } from 'lucide'; /** * 자산 목록 테이블 렌더링 통합 허브 */ -export function renderTable(mainContent: HTMLElement) { +export function renderSWTable(mainContent: HTMLElement) { if (!mainContent) return; console.log(`📂 Rendering Table for: ${state.activeCategory} / ${state.activeSubTab}`); @@ -31,6 +32,8 @@ export function renderTable(mainContent: HTMLElement) { } else if (state.activeCategory === 'sw') { if (tab === '구독SW' || tab === '영구SW') { renderSwList(container); + } else if (tab === '클라우드') { + renderCloudList(container); } else { container.innerHTML = `
"${tab}" 탭에 대한 소프트웨어 리스트 뷰가 정의되지 않았습니다.
`; }