diff --git a/batch-quartz/bin/src/main/resources/templates/pages/sign/sign-in.html b/batch-quartz/bin/src/main/resources/templates/pages/sign/sign-in.html
index 1ad5ac4..8d1a989 100644
--- a/batch-quartz/bin/src/main/resources/templates/pages/sign/sign-in.html
+++ b/batch-quartz/bin/src/main/resources/templates/pages/sign/sign-in.html
@@ -3,7 +3,7 @@
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layouts/signin-layout}" lang="ko" xml:lang="ko">
- 로그인 페이지
+ Sign In
diff --git a/batch-quartz/src/main/java/com/spring/infra/quartz/QuartzConfig.java b/batch-quartz/src/main/java/com/spring/infra/quartz/QuartzConfig.java
index fd7549c..74a7fef 100644
--- a/batch-quartz/src/main/java/com/spring/infra/quartz/QuartzConfig.java
+++ b/batch-quartz/src/main/java/com/spring/infra/quartz/QuartzConfig.java
@@ -77,7 +77,7 @@ public class QuartzConfig {
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager);
factory.setJobFactory(jobFactory);
- factory.setAutoStartup(false);
+ factory.setAutoStartup(true);
factory.setWaitForJobsToCompleteOnShutdown(true);
return factory;
}
diff --git a/batch-quartz/src/main/resources/static/favicon.ico b/batch-quartz/src/main/resources/static/favicon.ico
index 039dc7a..aef809c 100644
Binary files a/batch-quartz/src/main/resources/static/favicon.ico and b/batch-quartz/src/main/resources/static/favicon.ico differ
diff --git a/batch-quartz/src/main/resources/static/js/apis/schedule-api.js b/batch-quartz/src/main/resources/static/js/apis/schedule-api.js
index 586e6cf..fed5341 100644
--- a/batch-quartz/src/main/resources/static/js/apis/schedule-api.js
+++ b/batch-quartz/src/main/resources/static/js/apis/schedule-api.js
@@ -13,18 +13,18 @@ const scheduleService = {
},
pauseJob: async (groupName, jobName) => {
- const response = await apiClient.get(`/api/schedule/pause/${groupName}/${jobName}`);
- return response.data.data;
+ await apiClient.get(`/api/schedule/pause/${groupName}/${jobName}`);
+ return true;
},
resumeJob: async (groupName, jobName) => {
- const response = await apiClient.get(`/api/schedule/resume/${groupName}/${jobName}`);
- return response.data.data;
+ await apiClient.get(`/api/schedule/resume/${groupName}/${jobName}`);
+ return true;
},
triggerJob: async (groupName, jobName) => {
- const response = await apiClient.get(`/api/schedule/trigger/${groupName}/${jobName}`);
- return response.data.data;
+ await apiClient.get(`/api/schedule/trigger/${groupName}/${jobName}`);
+ return true;
},
rescheduleJob: async (jobGroup, jobName, cronExpression) => {
diff --git a/batch-quartz/src/main/resources/static/js/pages/dashboard/dashboard.js b/batch-quartz/src/main/resources/static/js/pages/dashboard/dashboard.js
index adb846a..9cd4ed6 100644
--- a/batch-quartz/src/main/resources/static/js/pages/dashboard/dashboard.js
+++ b/batch-quartz/src/main/resources/static/js/pages/dashboard/dashboard.js
@@ -6,6 +6,7 @@ let selectedMonth;
document.addEventListener('DOMContentLoaded', () => {
initMonthPicker();
fetchDataAndRender();
+ setupEventListeners();
});
const initMonthPicker = () => {
@@ -38,6 +39,12 @@ const fetchDataAndRender = async () => {
renderRecentJobsTable(recentJobs);
};
+const setupEventListeners = () => {
+ document.getElementById('refreshBtn').addEventListener('click', async (e) => {
+ fetchDataAndRender();
+ });
+};
+
const chartOptions = {
responsive: true,
maintainAspectRatio: false,
diff --git a/batch-quartz/src/main/resources/static/js/pages/fragments/header.js b/batch-quartz/src/main/resources/static/js/pages/fragments/header.js
index c775569..bef24a4 100644
--- a/batch-quartz/src/main/resources/static/js/pages/fragments/header.js
+++ b/batch-quartz/src/main/resources/static/js/pages/fragments/header.js
@@ -1,16 +1,17 @@
import signService from '../../apis/sign-api.js';
document.addEventListener('DOMContentLoaded', () => {
- const signOutButton = document.getElementById('signOut');
- const toggleSidebar = document.getElementById('toggleSidebar');
+ setupEventListeners();
+});
- signOutButton.addEventListener('click', (e) => {
+const setupEventListeners = () => {
+ document.getElementById('signOut').addEventListener('click', (e) => {
e.preventDefault();
signService.signOut();
});
- toggleSidebar.addEventListener('click', (e) => {
+ document.getElementById('toggleSidebar').addEventListener('click', () => {
const body = document.body;
body.classList.toggle("toggle-sidebar");
});
-});
+};
\ No newline at end of file
diff --git a/batch-quartz/src/main/resources/static/js/pages/schedule/schedule.js b/batch-quartz/src/main/resources/static/js/pages/schedule/schedule.js
index 8a3da92..4414a5a 100644
--- a/batch-quartz/src/main/resources/static/js/pages/schedule/schedule.js
+++ b/batch-quartz/src/main/resources/static/js/pages/schedule/schedule.js
@@ -12,7 +12,12 @@ const setupEventListeners = () => {
e.preventDefault();
fetchDataAndRender();
});
- document.getElementById('refreshJobBtn').addEventListener('click', refreshJobs);
+ document.getElementById('refreshJobBtn').addEventListener('click', () => {
+ const confirmUpdate = confirm('스케줄 재적용 하시겠습니까?');
+ if (confirmUpdate) {
+ refreshJobs();
+ }
+ });
};
const fetchDataAndRender = async () => {
@@ -99,16 +104,21 @@ const getStatusBadgeClass = (status) => {
const setupDetailModalEventListeners = (group, name) => {
document.getElementById('pauseJobBtn').onclick = () => updateJobStatus(group, name, 'PAUSED', scheduleService.pauseJob);
document.getElementById('resumeJobBtn').onclick = () => updateJobStatus(group, name, 'NORMAL', scheduleService.resumeJob);
- document.getElementById('updateCronBtn').onclick = () => updateCronExpression(group, name);
+ document.getElementById('updateCronBtn').onclick = () => {
+ const confirmUpdate = confirm('스케줄을 수정하시겠습니까?');
+ if (confirmUpdate) {
+ updateCronExpression(group, name);
+ }
+ }
};
const updateCronExpression = async (group, name) => {
const newCronExpression = document.getElementById('cronExpression').value;
if (await scheduleService.rescheduleJob(group, name, newCronExpression)) {
- alert('스케쥴이 수정 되었습니다.');
+ alert('스케줄이 수정 되었습니다.');
fetchDataAndRender();
} else {
- alert('스케쥴 수정이 실패했습니다.');
+ alert('스케줄 수정이 실패했습니다.');
}
};
@@ -128,7 +138,8 @@ const updateJobControlButtons = (status) => {
};
const updateJobStatus = async (group, name, newStatus, action) => {
- if (await action(group, name)) {
+ const result = await action(group, name);
+ if (result) {
const statusElement = document.querySelector('#scheduleDetailContent .badge');
statusElement.className = `badge ${getStatusBadgeClass(newStatus)}`;
statusElement.textContent = newStatus;
diff --git a/batch-quartz/src/main/resources/static/js/pages/user/user-management.js b/batch-quartz/src/main/resources/static/js/pages/user/user-management.js
index 30cc616..60dd6de 100644
--- a/batch-quartz/src/main/resources/static/js/pages/user/user-management.js
+++ b/batch-quartz/src/main/resources/static/js/pages/user/user-management.js
@@ -6,6 +6,7 @@ let users = [];
document.addEventListener('DOMContentLoaded', () => {
fetchDataAndRender();
setupEventListeners();
+ manageTooltips.init();
});
const setupEventListeners = () => {
@@ -77,6 +78,7 @@ const updateUser = async () => {
await userService.changeRoleApprove(getModifiedRows(users, updatedUsers, "id"));
alert('회원정보가 수정 되었습니다.');
+ manageTooltips.hideAll();
fetchDataAndRender();
};
@@ -84,4 +86,15 @@ const deleteUser = async (id) => {
await userService.deleteUser(id);
alert('사용자가 삭제되었습니다.');
fetchDataAndRender();
+};
+
+const manageTooltips = {
+ init: () => {
+ document.querySelectorAll('[data-bs-toggle="tooltip"]')
+ .forEach(el => new bootstrap.Tooltip(el));
+ },
+ hideAll: () => {
+ const tooltip = bootstrap.Tooltip.getInstance('#updateUserBtn');
+ setTimeout(() => tooltip.hide(), 100);
+ }
};
\ No newline at end of file
diff --git a/batch-quartz/src/main/resources/templates/pages/dashboard/dashboard.html b/batch-quartz/src/main/resources/templates/pages/dashboard/dashboard.html
index 71de3ec..ba184d4 100644
--- a/batch-quartz/src/main/resources/templates/pages/dashboard/dashboard.html
+++ b/batch-quartz/src/main/resources/templates/pages/dashboard/dashboard.html
@@ -25,11 +25,14 @@
-
-
@@ -86,10 +89,10 @@
- | 그룹명 |
- 잡 이름 |
- 실행 시간 |
- 상태 |
+ 그룹명 |
+ 잡 이름 |
+ 실행 시간 |
+ 상태 |
diff --git a/batch-quartz/src/main/resources/templates/pages/schedule/schedule.html b/batch-quartz/src/main/resources/templates/pages/schedule/schedule.html
index ec1a4c4..fc1bbf2 100644
--- a/batch-quartz/src/main/resources/templates/pages/schedule/schedule.html
+++ b/batch-quartz/src/main/resources/templates/pages/schedule/schedule.html
@@ -64,11 +64,11 @@
- | 그룹 |
- 잡 이름 |
- 스케줄 |
- 상태 |
- 액션 |
+ 그룹 |
+ 잡 이름 |
+ 스케줄 |
+ 상태 |
+ 액션 |
@@ -81,7 +81,7 @@
-