Refactor: SW 상세 모달 동적 필드 전환 및 클라우드 통합, 자산 유형 명칭 일원화

This commit is contained in:
2026-04-23 17:22:38 +09:00
parent fdc29b23c1
commit 55e9cd4cd9
11 changed files with 167 additions and 450 deletions

View File

@@ -20,10 +20,14 @@ async function apiBatchSave(url: string, data: any[], label: string) {
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
if (!response.ok) throw new Error(`${label} DB 저장 실패`);
if (!response.ok) {
const errorData = await response.json().catch(() => ({}));
throw new Error(`${label} DB 저장 실패: ${errorData.error || response.statusText}`);
}
console.log(`${label} DB 저장 완료`);
} catch (err) {
console.error(`${label} DB 저장 오류:`, err);
alert(`${label} 저장 중 오류가 발생했습니다: ${err.message}`);
}
}
@@ -37,15 +41,16 @@ const savePermSwToDB = () => apiBatchSave('http://localhost:3000/api/sw/perm/bat
const saveCloudToDB = () => apiBatchSave('http://localhost:3000/api/cloud/batch', state.masterData.cloud, '클라우드');
const saveSwUsersToDB = () => apiBatchSave('http://localhost:3000/api/sw-users/batch', state.masterData.swUsers, 'SW사용자');
// 모든 하드웨어 DB 동기화
async function saveAllHardwareToDB() {
await Promise.all([
savePcToDB(),
saveServerToDB(),
saveStorageToDB(),
saveEquipToDB(),
saveMobileToDB()
]);
// 화면 갱신 통합 핸들러 (대시보드 vs 리스트)
function refreshView() {
const mainContent = document.getElementById('main-content')!;
if (!mainContent) return;
if (state.activeSubTab === '대시보드') {
renderDashboard(mainContent);
} else {
renderSWTable(mainContent);
}
}
// 모든 소프트웨어 DB 동기화
@@ -56,6 +61,22 @@ async function saveAllSoftwareToDB() {
saveCloudToDB(),
saveSwUsersToDB()
]);
// 저장 후 최신 데이터 다시 로드 (정합성)
await loadMasterDataFromDB();
refreshView();
}
// 모든 하드웨어 DB 동기화
async function saveAllHardwareToDB() {
await Promise.all([
savePcToDB(),
saveServerToDB(),
saveStorageToDB(),
saveEquipToDB(),
saveMobileToDB()
]);
await loadMasterDataFromDB();
refreshView();
}
// --- App Initialization ---
@@ -76,17 +97,15 @@ function initApp() {
});
// 모달 초기화
initPcModal(() => { saveAllHardwareToDB(); renderSWTable(mainContent); }, closeAllModals);
initHwModal(() => { saveAllHardwareToDB(); renderSWTable(mainContent); }, closeAllModals);
initPcModal(() => saveAllHardwareToDB(), closeAllModals);
initHwModal(() => saveAllHardwareToDB(), closeAllModals);
initSwModal(() => {
saveAllSoftwareToDB();
renderSWTable(mainContent);
}, closeAllModals);
initSwModal(() => saveAllSoftwareToDB(), closeAllModals);
initSwUserModal(() => {
saveSwUsersToDB();
renderSWTable(mainContent);
saveSwUsersToDB().then(() => {
loadMasterDataFromDB().then(() => refreshView());
});
}, closeAllModals);
initDashboardDetailModal();