diff --git a/src/main/front/src/components/AgentConfigView.vue b/src/main/front/src/components/AgentConfigView.vue
index 3d61814..82792bc 100644
--- a/src/main/front/src/components/AgentConfigView.vue
+++ b/src/main/front/src/components/AgentConfigView.vue
@@ -47,6 +47,14 @@ const agentConfig = reactive({
postmanList: [],
},
})
+let originalDtoString = ''
+const agentConfigDeleted = {
+ knownAgentList: [],
+ dataSourceConfig: [],
+ logging: {
+ packages: [],
+ },
+}
onMounted(() => {
if (modalEl.value) {
@@ -59,35 +67,135 @@ onMounted(() => {
})
onBeforeUnmount(() => {
- if (bsModal) {
- bsModal.hide()
- // Bootstrap v5에서는 dispose 지원
- if (typeof bsModal.dispose === 'function') {
- bsModal.dispose()
- }
- bsModal = null
+ if (!bsModal) return
+ const instance = bsModal
+ const el = instance._element || modalEl.value
+ if (el) {
+ el.addEventListener(
+ 'hidden.bs.modal',
+ () => {
+ if (typeof instance.dispose === 'function') {
+ instance.dispose()
+ }
+ },
+ { once: true },
+ )
+ instance.hide()
}
+ bsModal = null
})
+// 부모 컴포넌트에서 AgentConfigView 팝업 호출(defineExpose에 추가됨)
function open() {
if (bsModal) {
if (props.dto) {
+ originalDtoString = JSON.stringify(props.dto)
Object.assign(agentConfig, props.dto)
}
bsModal.show()
}
}
+// 부모 컴포넌트에서 AgentConfigView 팝업 닫기(defineExpose에 추가됨)
function close() {
if (bsModal) {
bsModal.hide()
}
}
+// props.dto 기준으로 agentConfig reload
+function configReload() {
+ Object.assign(agentConfig, JSON.parse(originalDtoString))
+}
+
+// agentConfig의 내용을 json 파일로 다운로드
function configExport() {}
+// agentConfig의 내용을 서버에 전송하여 저장
function configSave() {}
+// knownAgent 한 줄 추가
+function addKnownAgent() {
+ const knownAgent = {
+ hostId: '',
+ hostName: '',
+ listenPort: '',
+ dropBoxIdList: [],
+ routingHostIdList: [],
+ added: true,
+ }
+ agentConfig.knownAgentList.push(knownAgent)
+}
+
+// 선택된 knownAgent 삭제
+function deleteKnownAgent() {
+ for (let i = agentConfig.knownAgentList.length - 1; i >= 0; i--) {
+ if (agentConfig.knownAgentList[i].selected) {
+ let splicedList = agentConfig.knownAgentList.splice(i, 1)
+ if (Object.keys(splicedList[0]).indexOf('added') == -1) {
+ agentConfigDeleted.knownAgentList.push(splicedList)
+ }
+ }
+ }
+}
+
+// dataSource 한 줄 추가
+function addDataSource() {
+ const dataSource = {
+ dataSourceId: '',
+ driverClassName: '',
+ url: '',
+ username: '',
+ password: '',
+ initialSize: 10,
+ minIdle: 10,
+ maxIdle: 30,
+ maxTotal: 300,
+ maximumRowForTransaction: 1000,
+ added: true,
+ }
+ agentConfig.dataSourceConfig.push(dataSource)
+}
+
+// 선택된 dataSource 삭제
+function deleteDataSource() {
+ for (let i = agentConfig.dataSourceConfig.length - 1; i >= 0; i--) {
+ if (agentConfig.dataSourceConfig[i].selected) {
+ let splicedList = agentConfig.dataSourceConfig.splice(i, 1)
+ if (Object.keys(splicedList[0]).indexOf('added') == -1) {
+ agentConfigDeleted.dataSourceConfig.push(splicedList)
+ }
+ }
+ }
+}
+
+function addLoggingPackage() {
+ agentConfig.logging.packages.push({ '': 'INFO' })
+}
+
+function deleteLoggingPackage() {
+ for (let i = agentConfig.dataSourceConfig.length - 1; i >= 0; i--) {
+ if (agentConfig.dataSourceConfig[i].selected) {
+ let splicedList = agentConfig.dataSourceConfig.splice(i, 1)
+ if (Object.keys(splicedList[0]).indexOf('added') == -1) {
+ agentConfigDeleted.dataSourceConfig.push(splicedList)
+ }
+ }
+ }
+}
+
+function changeLoggingPackageName(loggingPackageObject, loggingPackageName, newLoggingPackageName) {
+ newLoggingPackageName = newLoggingPackageName.trim()
+ if (!newLoggingPackageName || loggingPackageName === newLoggingPackageName) {
+ return
+ }
+ if (Object.prototype.hasOwnProperty.call(loggingPackageObject, newLoggingPackageName)) {
+ return
+ }
+ loggingPackageObject[newLoggingPackageName] = loggingPackageObject[loggingPackageName]
+ delete loggingPackageObject[loggingPackageName]
+}
+
defineExpose({
open,
close,
@@ -102,6 +210,7 @@ defineExpose({