85 lines
4.4 KiB
TypeScript
85 lines
4.4 KiB
TypeScript
import { state } from '../core/state';
|
|
import { renderPcList } from './List/PcListView';
|
|
import { renderServerList } from './List/ServerListView';
|
|
import { renderStorageList } from './List/StorageListView';
|
|
import { renderEquipmentList } from './List/EquipmentListView';
|
|
import { renderMobileList } from './List/MobileListView';
|
|
import { renderSwList } from './List/SwListView';
|
|
import { renderCloudList } from './List/CloudListView';
|
|
import { renderDomainList } from './List/DomainListView';
|
|
import { renderNetworkList } from './List/NetworkListView';
|
|
import { renderPcPartList } from './List/PcPartListView';
|
|
import { renderPartsMasterList } from './List/PartsMasterListView';
|
|
import { renderSpaceInfoList } from './List/SpaceInfoListView';
|
|
import { renderGiftList } from './List/GiftListView';
|
|
import { renderFacilityList } from './List/FacilityListView';
|
|
import { renderCostList } from './List/CostListView';
|
|
import { renderUserList } from './List/UserListView';
|
|
import { createIcons, Plus, X, LayoutDashboard, Monitor, Server, Database, Laptop, CalendarClock, Key, Cpu, Layers, Users, Paperclip, Edit2, RefreshCcw, BookOpen, Settings } from 'lucide';
|
|
|
|
/**
|
|
* 자산 목록 테이블 렌더링 통합 허브 (Vercel Style Normalized)
|
|
*/
|
|
export function renderSWTable(mainContent: HTMLElement) {
|
|
if (!mainContent) return;
|
|
console.log(`📂 Rendering Table for: ${state.activeCategory} / ${state.activeSubTab}`);
|
|
|
|
mainContent.innerHTML = `
|
|
<div class="view-content-wrapper">
|
|
<div id="list-view-container" style="flex: 1; display: flex; flex-direction: column; overflow: hidden;"></div>
|
|
</div>
|
|
`;
|
|
|
|
const container = document.getElementById('list-view-container')!;
|
|
|
|
try {
|
|
const tab = state.activeSubTab;
|
|
|
|
if (state.activeCategory === 'hw') {
|
|
if (tab === 'PC') renderPcList(container);
|
|
else if (tab === '서버') renderServerList(container);
|
|
else if (tab === '스토리지') renderStorageList(container);
|
|
else if (tab === '업무지원장비') renderEquipmentList(container);
|
|
else if (tab === '네트워크') renderNetworkList(container);
|
|
else if (tab === 'PC부품') renderPcPartList(container);
|
|
else if (tab === '부품 마스터') renderPartsMasterList(container);
|
|
else if (tab === '공간정보장비') renderSpaceInfoList(container);
|
|
else {
|
|
container.innerHTML = `<div style="padding:2rem; color:var(--text-muted);">"${tab}" 탭에 대한 하드웨어 리스트 뷰가 정의되지 않았습니다.</div>`;
|
|
}
|
|
} else if (state.activeCategory === 'sw') {
|
|
if (tab === '외부SW' || tab === '내부SW') {
|
|
renderSwList(container);
|
|
} else {
|
|
container.innerHTML = `<div style="padding:2rem; color:var(--text-muted);">"${tab}" 탭에 대한 소프트웨어 리스트 뷰가 정의되지 않았습니다.</div>`;
|
|
}
|
|
} else if (state.activeCategory === 'ops') {
|
|
if (tab === '도메인') renderDomainList(container);
|
|
else if (tab === '클라우드') renderCloudList(container);
|
|
else if (tab === '비용관리') renderCostList(container);
|
|
else if (tab === '사용자') renderUserList(container);
|
|
else {
|
|
container.innerHTML = `<div style="padding:2rem; color:var(--text-muted);">"${tab}" 탭에 대한 운영지원 리스트 뷰가 정의되지 않았습니다.</div>`;
|
|
}
|
|
} else if (state.activeCategory === 'vip') {
|
|
if (tab === '선물') renderGiftList(container);
|
|
else {
|
|
container.innerHTML = `<div style="padding:2rem; color:var(--text-muted); text-align:center; margin-top:3rem;">내빈/외빈(${tab}) 관리 기능은 현재 준비 중입니다.</div>`;
|
|
}
|
|
} else if (state.activeCategory === 'fac') {
|
|
if (tab === '사무가구') renderFacilityList(container);
|
|
else {
|
|
container.innerHTML = `<div style="padding:2rem; color:var(--text-muted); text-align:center; margin-top:3rem;">시설자산(${tab}) 관리 기능은 현재 준비 중입니다.</div>`;
|
|
}
|
|
}
|
|
|
|
// 전역 아이콘 초기화
|
|
createIcons({
|
|
icons: { Plus, X, LayoutDashboard, Monitor, Server, Database, Laptop, CalendarClock, Key, Cpu, Layers, Users, Paperclip, Edit2, RefreshCcw, BookOpen, Settings }
|
|
});
|
|
} catch (err: any) {
|
|
console.error('❌ Error rendering table view:', err);
|
|
mainContent.innerHTML = `<div style="padding:2rem; color:var(--danger);">목록을 불러오는 중 오류가 발생했습니다: ${err?.message || err}</div>`;
|
|
}
|
|
}
|