@@ -141,7 +141,7 @@ class DomainAssetModal extends BaseModal {
}
});
- createIcons({ icons: { History, Plus, Save, CalendarClock, Database } });
+ createIcons({ icons: { History, Plus, Save, X } });
}
protected fillFormData(asset: any): void {
@@ -163,7 +163,7 @@ class DomainAssetModal extends BaseModal {
protected onAfterOpen(asset: any, mode: string): void {
const titleEl = document.getElementById('domain-modal-title');
if (titleEl) titleEl.textContent = (mode === 'add') ? '신규 도메인 등록' : '도메인 정보 상세';
-
+
const deleteBtn = document.getElementById('btn-delete-domain-asset');
if (deleteBtn) deleteBtn.style.display = (mode === 'add') ? 'none' : 'block';
}
@@ -173,16 +173,10 @@ class DomainAssetModal extends BaseModal {
if (!container) return;
const logs = (state.masterData.logs || []).filter(l => l.assetId === assetId);
if (logs.length === 0) { container.innerHTML = '
이력이 없습니다.
'; return; }
- container.innerHTML = logs.map(l => `
${l.date}
${l.user}
${l.details}
`).join('');
+ container.innerHTML = logs.map(l => `
${l.date}
${l.user}
${l.details}
`).join('');
}
}
export const domainModal = new DomainAssetModal();
-
-export function initDomainModal(onSave: () => void, closeModals: () => void) {
- domainModal.init(onSave, closeModals);
-}
-
-export function openDomainModal(asset: any, mode: 'view' | 'edit' | 'add' = 'view') {
- domainModal.open(asset, mode);
-}
+export function initDomainModal(onSave: () => void, closeModals: () => void) { domainModal.init(onSave, closeModals); }
+export function openDomainModal(asset: any, mode: 'view' | 'edit' | 'add' = 'view') { domainModal.open(asset, mode); }
diff --git a/src/components/Modal/Forms/CommonHwFields.ts b/src/components/Modal/Forms/CommonHwFields.ts
deleted file mode 100644
index 4d2d9e4..0000000
--- a/src/components/Modal/Forms/CommonHwFields.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import { ASSET_SCHEMA } from '../../../core/schema';
-import { generateOptionsHTML } from '../ModalUtils';
-import { CORP_LIST, ORG_LIST } from '../SharedData';
-
-export function renderCommonHwFields(): string {
- return `
-
구매 및 증빙 정보
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `;
-}
diff --git a/src/components/Modal/Forms/PcForm.ts b/src/components/Modal/Forms/PcForm.ts
deleted file mode 100644
index 547b02e..0000000
--- a/src/components/Modal/Forms/PcForm.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { ASSET_SCHEMA } from '../../../core/schema';
-import { generateOptionsHTML } from '../ModalUtils';
-import { CORP_LIST, ORG_LIST, HW_STATUS_LIST } from '../SharedData';
-
-export function renderPcForm(): string {
- return `
-
기본 정보 (PC/노트북)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
사용자 및 조직
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
시스템 사양
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `;
-}
diff --git a/src/components/Modal/Forms/ServerForm.ts b/src/components/Modal/Forms/ServerForm.ts
deleted file mode 100644
index e482636..0000000
--- a/src/components/Modal/Forms/ServerForm.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { ASSET_SCHEMA } from '../../../core/schema';
-import { generateOptionsHTML } from '../ModalUtils';
-import { CORP_LIST, LOCATION_DATA, HW_STATUS_LIST } from '../SharedData';
-
-export function renderServerForm(): string {
- return `
-
기본 정보 (서버)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
시스템 사양
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
네트워크 및 접속 정보
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
설치 위치
-
-
-
-
-
- `;
-}
diff --git a/src/components/Modal/HWModal.ts b/src/components/Modal/HWModal.ts
index c0b2a25..8292059 100644
--- a/src/components/Modal/HWModal.ts
+++ b/src/components/Modal/HWModal.ts
@@ -1,24 +1,25 @@
import { state, saveAsset, deleteAsset } from '../../core/state';
import { ASSET_SCHEMA, UI_TEXT } from '../../core/schema';
-import {
- generateOptionsHTML,
- setFieldValue,
- getFieldValue,
- parseAndSetLocation,
- bindLocationEvents,
+import { calculatePcScoreDeductive, getPcGrade } from '../../core/utils';
+import {
+ generateOptionsHTML,
+ setFieldValue,
+ getFieldValue,
+ parseAndSetLocation,
+ bindLocationEvents,
applyDateMask
} from './ModalUtils';
import { CORP_LIST, LOCATION_DATA, CATEGORY_TYPE_MAP, HW_STATUS_LIST, ORG_LIST, IMAGE_LOCATIONS, TYPE_PREFIX_MAP } from './SharedData';
import { BaseModal } from './BaseModal';
-import { renderPcForm } from './Forms/PcForm';
-import { renderServerForm } from './Forms/ServerForm';
-import { renderCommonHwFields } from './Forms/CommonHwFields';
/**
- * 하드웨어 자산 상세 모달 (Modular Edition)
+ * 하드웨어 자산 상세 모달 (Styled Main Edition)
+ * - 내용/순서는 main 버전 준수
+ * - 스타일은 ux_setting의 Vercel 디자인 준수
*/
class HwAssetModal extends BaseModal {
private dynamicMapConfig: Record
= {};
+ private masterComponents: any[] = [];
constructor() {
super('hw', '자산 상세 정보');
@@ -29,7 +30,7 @@ class HwAssetModal extends BaseModal {
`;
let selectedX = ''; let selectedY = '';
const container = overlay.querySelector('#picker-container') as HTMLElement;
@@ -415,7 +752,7 @@ class HwAssetModal extends BaseModal {
overlay.querySelector('.btn-close-picker')?.addEventListener('click', () => overlay.remove());
overlay.querySelector('#btn-picker-cancel')?.addEventListener('click', () => overlay.remove());
overlay.querySelector('#btn-picker-save')?.addEventListener('click', () => {
- if (!selectedX || !selectedY) { alert('위치를 선택해주세요.'); return; }
+ if (!selectedX || !selectedY) { alert('위치를 선택해주세요.'); return; }
setFieldValue('hw-loc_x', selectedX); setFieldValue('hw-loc_y', selectedY);
setFieldValue('hw-location_photo', imagePaths[currentIdx]);
this.updateMapButtonVisibility(); overlay.remove();
@@ -444,7 +781,6 @@ class HwAssetModal extends BaseModal {