fix(pc-view): restore pc list view rendering and enable status view toggle for PC
This commit is contained in:
@@ -167,9 +167,9 @@ export function createListView(container: HTMLElement, config: ListViewConfig) {
|
|||||||
let sortState: SortState = config.persistentSortState || { key: '', direction: 'asc' };
|
let sortState: SortState = config.persistentSortState || { key: '', direction: 'asc' };
|
||||||
let currentFilters: any = { keyword: '', corp: '', dept: '', loc: '', field: '', type: '' };
|
let currentFilters: any = { keyword: '', corp: '', dept: '', loc: '', field: '', type: '' };
|
||||||
|
|
||||||
// 서버 탭이 아닐 경우 '자산 현황(대시보드)' 뷰 진입 방지 및 강제 'asset' 모드
|
// 서버 및 PC 탭이 아닐 경우 '자산 현황' 뷰 진입 방지 및 강제 'asset' 모드
|
||||||
const isServer = config.title === '서버';
|
const isServerOrPc = config.title === '서버' || config.title === 'PC';
|
||||||
if (!isServer) {
|
if (!isServerOrPc) {
|
||||||
(state as any).currentViewMode = 'asset';
|
(state as any).currentViewMode = 'asset';
|
||||||
} else if (!(state as any).currentViewMode) {
|
} else if (!(state as any).currentViewMode) {
|
||||||
(state as any).currentViewMode = 'system';
|
(state as any).currentViewMode = 'system';
|
||||||
@@ -182,7 +182,7 @@ export function createListView(container: HTMLElement, config: ListViewConfig) {
|
|||||||
const showPcFlowBtn = config.title === 'PC';
|
const showPcFlowBtn = config.title === 'PC';
|
||||||
toggleWrapper.innerHTML = `
|
toggleWrapper.innerHTML = `
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
|
<div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
|
||||||
<div class="view-toggle" style="display: ${isServer ? 'flex' : 'none'}; gap: 0;">
|
<div class="view-toggle" style="display: ${isServerOrPc ? 'flex' : 'none'}; gap: 0;">
|
||||||
<button class="toggle-btn ${(state as any).currentViewMode === 'system' ? 'active' : ''}" data-mode="system">자산 현황</button>
|
<button class="toggle-btn ${(state as any).currentViewMode === 'system' ? 'active' : ''}" data-mode="system">자산 현황</button>
|
||||||
<button class="toggle-btn ${(state as any).currentViewMode === 'asset' ? 'active' : ''}" data-mode="asset">자산 목록</button>
|
<button class="toggle-btn ${(state as any).currentViewMode === 'asset' ? 'active' : ''}" data-mode="asset">자산 목록</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,10 +5,43 @@ import { ASSET_SCHEMA } from '../../core/schema';
|
|||||||
import { createListView } from './ListFactory';
|
import { createListView } from './ListFactory';
|
||||||
|
|
||||||
export function renderPcList(container: HTMLElement) {
|
export function renderPcList(container: HTMLElement) {
|
||||||
container.innerHTML = `
|
createListView(container, {
|
||||||
<div style="display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: var(--text-muted);">
|
title: 'PC',
|
||||||
<div style="font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem;">PC 관리</div>
|
dataSource: () => sortAssets((state.masterData.pc || []).filter((a: any) => a.asset_type !== '서버PC')),
|
||||||
<p>해당 페이지는 다른 작업자에 의해 개발 중입니다.</p>
|
searchKeys: ['CURRENT_DEPT', 'CURRENT_USER', 'MODEL_NAME', 'MAC_ADDR', 'MANAGER_MAIN', 'ASSET_TYPE'],
|
||||||
</div>
|
filterOptions: {
|
||||||
`;
|
keywordLabel: `통합 검색 (${ASSET_SCHEMA.MODEL_NAME.ui}/${ASSET_SCHEMA.MANAGER_MAIN.ui}/${ASSET_SCHEMA.CURRENT_USER.ui})`,
|
||||||
|
showLoc: true,
|
||||||
|
showDept: true,
|
||||||
|
showType: true
|
||||||
|
},
|
||||||
|
onRowClick: (asset) => openHwModal(asset, 'view'),
|
||||||
|
columns: [
|
||||||
|
{ header: ASSET_SCHEMA.CURRENT_USER.ui, sortKey: ASSET_SCHEMA.CURRENT_USER.key, align: 'center', render: a => a[ASSET_SCHEMA.CURRENT_USER.key] || '-' },
|
||||||
|
{ header: ASSET_SCHEMA.ASSET_TYPE.ui, sortKey: ASSET_SCHEMA.ASSET_TYPE.key, align: 'center', width: '10%', render: a => a[ASSET_SCHEMA.ASSET_TYPE.key] || '-' },
|
||||||
|
{ header: ASSET_SCHEMA.CPU.ui, sortKey: ASSET_SCHEMA.CPU.key, align: 'center', render: a => a[ASSET_SCHEMA.CPU.key] || '' },
|
||||||
|
{ header: ASSET_SCHEMA.MAINBOARD.ui, sortKey: ASSET_SCHEMA.MAINBOARD.key, align: 'center', render: a => a[ASSET_SCHEMA.MAINBOARD.key] || '-' },
|
||||||
|
{ header: ASSET_SCHEMA.RAM.ui, sortKey: ASSET_SCHEMA.RAM.key, align: 'center', render: a => a[ASSET_SCHEMA.RAM.key] || '' },
|
||||||
|
{ header: ASSET_SCHEMA.GPU.ui, sortKey: ASSET_SCHEMA.GPU.key, align: 'center', render: a => a[ASSET_SCHEMA.GPU.key] || '-' },
|
||||||
|
{
|
||||||
|
header: 'SSD',
|
||||||
|
align: 'center',
|
||||||
|
width: '8%',
|
||||||
|
render: a => [a[ASSET_SCHEMA.SSD1.key], a[ASSET_SCHEMA.SSD2.key]].filter(Boolean).join(' / ') || '-'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: 'HDD',
|
||||||
|
align: 'center',
|
||||||
|
width: '12%',
|
||||||
|
render: a => [a[ASSET_SCHEMA.HDD1.key], a[ASSET_SCHEMA.HDD2.key], a[ASSET_SCHEMA.HDD3.key], a[ASSET_SCHEMA.HDD4.key]].filter(Boolean).join(' / ') || '-'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
header: ASSET_SCHEMA.MAC_ADDR.ui,
|
||||||
|
sortKey: ASSET_SCHEMA.MAC_ADDR.key,
|
||||||
|
align: 'center',
|
||||||
|
render: a => `<span style="font-family:monospace; font-size:11px;">${a[ASSET_SCHEMA.MAC_ADDR.key] || '-'}</span>`
|
||||||
|
},
|
||||||
|
{ header: ASSET_SCHEMA.MEMO.ui, sortKey: ASSET_SCHEMA.MEMO.key, className: 'col-memo', width: '30%', render: a => formatInline(a[ASSET_SCHEMA.MEMO.key] || '-') }
|
||||||
|
]
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user