Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0512f9c
Delete src/main/resources/templates/Calender_MG.html
callmeminji Dec 16, 2024
3534260
Delete src/main/resources/templates/calender.html
callmeminji Dec 16, 2024
97989e2
Delete src/main/resources/templates/Calender_T.html
callmeminji Dec 16, 2024
dedda74
Delete src/main/resources/templates/Calender_WG.html
callmeminji Dec 16, 2024
08d69dc
Add calendar.html
callmeminji Dec 16, 2024
9008d2a
Add calendar_WG.html
callmeminji Dec 16, 2024
d09db45
Delete src/main/resources/templates/calendar.css
callmeminji Dec 16, 2024
a23f5eb
Delete src/main/resources/templates/calendar.js
callmeminji Dec 16, 2024
decb6c1
Delete src/main/resources/templates/calendar_html.iml
callmeminji Dec 16, 2024
8086f4c
Delete src/main/resources/templates/index.html
callmeminji Dec 16, 2024
5b5609c
Add calendar ui
callmeminji Dec 16, 2024
f9805c0
Add calendar main ui
callmeminji Dec 16, 2024
2efcd53
Add calendar_MG ui
callmeminji Dec 16, 2024
41067f9
Delete src/main/resources/templates/calendar.css
callmeminji Dec 16, 2024
0161969
Delete src/main/resources/templates/calendar.html
callmeminji Dec 16, 2024
5341131
Delete src/main/resources/templates/calendar.js
callmeminji Dec 16, 2024
ac3103e
Delete src/main/resources/templates/calendar_DG.css
callmeminji Dec 16, 2024
c62a5e1
Delete src/main/resources/templates/calendar_DG.html
callmeminji Dec 16, 2024
2d817b5
Delete src/main/resources/templates/calendar_DG.iml
callmeminji Dec 16, 2024
7505ba6
Delete src/main/resources/templates/calendar_DG.js
callmeminji Dec 16, 2024
b146e07
Delete src/main/resources/templates/calendar_MG.css
callmeminji Dec 16, 2024
3c3a723
Delete src/main/resources/templates/calendar_MG.html
callmeminji Dec 16, 2024
86cebd7
Delete src/main/resources/templates/calendar_MG.iml
callmeminji Dec 16, 2024
8b3a469
Delete src/main/resources/templates/calendar_MG.js
callmeminji Dec 16, 2024
3b7535e
Add calendar_DG ui
callmeminji Dec 16, 2024
2ab1f0d
Add calendar
callmeminji Dec 16, 2024
1b8c16b
Add calendar_MG
callmeminji Dec 16, 2024
9a6f685
Delete src/main/resources/templates/calendar_DG.css
callmeminji Dec 16, 2024
9bdf403
Delete src/main/resources/templates/calendar_DG.html
callmeminji Dec 16, 2024
288645b
Delete src/main/resources/templates/calendar_DG.iml
callmeminji Dec 16, 2024
aec6726
Delete src/main/resources/templates/calendar_DG.js
callmeminji Dec 16, 2024
2b7e426
Delete src/main/resources/templates/calendar_WG.css
callmeminji Dec 16, 2024
d9f6dc9
Delete src/main/resources/templates/calendar_WG.html
callmeminji Dec 16, 2024
628c613
Delete src/main/resources/templates/calendar_WG.iml
callmeminji Dec 16, 2024
0373720
Delete src/main/resources/templates/calendar_html.iml
callmeminji Dec 16, 2024
e4f8fb7
Delete src/main/resources/templates/calendar_WG.js
callmeminji Dec 16, 2024
585967c
Add calendar_DG_final
callmeminji Dec 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 7 additions & 20 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/

### STS ###
### Eclipse ###
.apt_generated
.classpath
.factorypath
Expand All @@ -17,15 +15,6 @@ bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
Expand All @@ -35,8 +24,6 @@ out/

### VS Code ###
.vscode/
.DS_Store
*/.DS_Store

application.yml
application-dev.yml
### Mac OS ###
.DS_Store
145 changes: 145 additions & 0 deletions calendar.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f8f9fc;
}

.calendar-container {
max-width: 1000px;
margin: 40px auto;
padding: 10px;
background-color: white;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
border-radius: 10px;
}

.calendar-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}

.month-navigation {
display: flex;
align-items: center;
gap: 10px;
}

button {
cursor: pointer;
padding: 5px 10px;
background-color: #4a90e2;
color: white;
border: none;
border-radius: 5px;
transition: background-color 0.3s ease;
}

button:hover {
background-color: #357ABD;
}

.week-buttons {
display: flex;
justify-content: space-around;
margin-bottom: 10px;
}

.week-btn {
background-color: #dfe6e9;
padding: 5px 15px;
border-radius: 5px;
cursor: pointer;
text-align: center;
transition: background-color 0.3s ease;
}

.week-btn:hover {
background-color: #b2bec3;
}

table {
width: 100%;
border-collapse: collapse;
}

th, td {
width: 14%;
height: 100px;
border: 1px solid #ccc;
text-align: center;
vertical-align: top;
}

td {
position: relative;
background-color: #f9f9f9;
transition: background-color 0.3s ease;
}

td:hover {
background-color: #eef;
cursor: pointer;
}

.green-tag, .red-tag {
font-size: 12px;
margin-top: 5px;
}

.green-tag {
color: green;
}

.red-tag {
color: red;
}

.title-button {
background-color: transparent;
border: 2px solid #4a90e2;
color: #4a90e2;
font-size: 1.5rem;
font-weight: bold;
padding: 5px 15px;
cursor: pointer;
border-radius: 5px;
transition: all 0.3s ease;
}

.title-button:hover {
background-color: #4a90e2;
color: white;
}

.home-btn {
background-color: #4a90e2;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
cursor: pointer;
font-size: 1rem;
transition: background-color 0.3s ease;
}

.home-btn:hover {
background-color: #357ABD;
}

.arrow-btn {
background-color: #4a90e2;
color: white;
border: none;
border-radius: 5px;
padding: 5px 10px;
font-size: 1rem;
cursor: pointer;
transition: background-color 0.3s ease;
}

.arrow-btn:hover {
background-color: #357ABD;
}
57 changes: 57 additions & 0 deletions calendar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Calendar</title>
<link rel="stylesheet" href="calendar.css">
</head>
<body>
<div class="calendar-container">
<div class="calendar-header">
<!-- ํ™ˆ ๋ฒ„ํŠผ -->
<button id="homeButton" class="home-btn">Home</button>
<!-- ์›”๊ณผ ๋…„๋„ ํ‘œ์‹œ -->
<div class="month-navigation">
<button id="calendarTitle" class="title-button"
th:text="${month} + ', ' + ${year}">Dec, 2024</button>
<button id="prevMonth" class="arrow-btn">&lt;</button>
<button id="nextMonth" class="arrow-btn">&gt;</button>
</div>
</div>
<!-- ์ฃผ๊ฐ„ ๋ฒ„ํŠผ -->
<div class="week-buttons">
<div class="week-btn" th:each="week : ${weeks}"
th:text="'Week ' + ${week}">Week 1</div>
</div>
<!-- ๋‹ฌ๋ ฅ ํ…Œ์ด๋ธ” -->
<table>
<thead>
<tr>
<th>Sun</th>
<th>Mon</th>
<th>Tue</th>
<th>Wed</th>
<th>Thu</th>
<th>Fri</th>
<th>Sat</th>
</tr>
</thead>
<tbody id="calendarBody">
<!-- ํƒ€์ž„๋ฆฌํ”„ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋‹ฌ๋ ฅ ๋‚ด์šฉ ์ถ”๊ฐ€ -->
<tr th:each="weekRow : ${calendarRows}">
<td th:each="day : ${weekRow}">
<div th:text="${day.date}">1</div>
<!-- ํƒœ๊ทธ ํ‘œ์‹œ -->
<div class="green-tag" th:if="${day.greenTag > 0}"
th:text="'Green: ' + ${day.greenTag}">Green: 0</div>
<div class="red-tag" th:if="${day.redTag > 0}"
th:text="'Red: ' + ${day.redTag}">Red: 0</div>
</td>
</tr>
</tbody>
</table>
</div>
<script src="calendar.js"></script>
</body>
</html>
87 changes: 87 additions & 0 deletions calendar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
const titleElement = document.getElementById('calendarTitle');
const calendarBody = document.getElementById('calendarBody');
const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
let currentMonth = 11; // December (index: 11)
let currentYear = 2024;
let dailyProgressData = [];

// API ํ˜ธ์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
async function fetchCalendarData(year, month) {
try {
const response = await fetch(`/api/v1/calendar?year=${year}&month=${month + 1}`);
const result = await response.json();
if (result.code === "SUCCESS") {
dailyProgressData = result.data.daily_progress;
} else {
console.error("Failed to fetch calendar data");
}
} catch (error) {
console.error("Error fetching calendar data: ", error);
}
}

// ๋‹ฌ๋ ฅ ๋ Œ๋”๋ง
async function renderCalendar() {
await fetchCalendarData(currentYear, currentMonth);

titleElement.textContent = `${months[currentMonth]}, ${currentYear}`;
calendarBody.innerHTML = "";

const firstDay = new Date(currentYear, currentMonth, 1).getDay(); // ์‹œ์ž‘ ์š”์ผ
const daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate(); // ํ•ด๋‹น ์›”์˜ ์ด ์ผ ์ˆ˜

let row = "<tr>";
for (let i = 0; i < firstDay; i++) {
row += "<td></td>"; // ์ฒซ ์ฃผ ์‹œ์ž‘ ์š”์ผ ์•ž์˜ ๋นˆ ์นธ
}

for (let day = 1; day <= daysInMonth; day++) {
if ((firstDay + day - 1) % 7 === 0 && day !== 1) {
row += "</tr><tr>"; // ์ฃผ ๋‹จ์œ„๋กœ ํ–‰ ๋ณ€๊ฒฝ
}

const date = `${currentYear}-${String(currentMonth + 1).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
const progress = dailyProgressData.find(p => p.date === date);

const greenTag = progress?.tasks?.reduce((sum, t) => sum + t.green_tag, 0) || 0;
const redTag = progress?.tasks?.reduce((sum, t) => sum + t.red_tag, 0) || 0;

row += `
<td>
<div>${day}</div>
${greenTag > 0 ? `<div class="green-tag">Green: ${greenTag}</div>` : ""}
${redTag > 0 ? `<div class="red-tag">Red: ${redTag}</div>` : ""}
</td>`;
}

row += "</tr>";
calendarBody.innerHTML = row;
}

// ์ด์ „ ๋‹ฌ ๋ฒ„ํŠผ
document.getElementById('prevMonth').addEventListener('click', () => {
currentMonth--;
if (currentMonth < 0) {
currentMonth = 11;
currentYear--;
}
renderCalendar();
});

// ๋‹ค์Œ ๋‹ฌ ๋ฒ„ํŠผ
document.getElementById('nextMonth').addEventListener('click', () => {
currentMonth++;
if (currentMonth > 11) {
currentMonth = 0;
currentYear++;
}
renderCalendar();
});

// ํ™ˆ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ ์ถ”๊ฐ€
document.getElementById('homeButton').addEventListener('click', () => {
window.location.href = '/'; // ํ™ˆ ํŽ˜์ด์ง€ URL๋กœ ์ด๋™
});

// ์ดˆ๊ธฐ ๋ Œ๋”๋ง
renderCalendar();
Loading