ํ์บ๋ฆฐ๋(FullCalendar) ์์ฑ - 2
FullCalendar JS๋ฅผ ํ์ฉํ๋ค ๋ณด๋ฉด ๊ต์ฅํ ๋ค์ํ ์์ฑ๊ณผ ์ด๋ฒคํธ๋ฅผ ๋ณผ ์ ์๋ค. ์ฌ๋ฌ ์์ฑ๋ค์ด ์ด๋ค ํน์ง๋ค์ ๊ฐ์ง๊ณ ์๋์ง, ํ์บ๋ฆฐ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์ด๋ฒคํธ์๋ ์ด๋ค ๊ฒ๋ค์ด ์์ผ๋ฉฐ ํด๋น ์ด๋ฒคํธ๋ ์ด๋ค ๋์๋ค์ ํฌํจํ๊ณ ์๋์ง ๋ฑ๋ฑ์ ๋ํด์ ์ ๋ชจ๋ฅผ ๋๊ฐ ๋ง๋ค. FullCalendar JS ๊ณต์ ํํ์ด์ง์์ ์ ๊ณตํ๋ Documents ํ์ผ์ ๋ณด๊ธด ํ์ง๋ง Docs ๋ฌธ์๋ค์ ํ์ธํ๋ ๊ฒ ์์ง ์ต์์ง ์์ ์ฌ๋์ ๋ฌธ์ ๋ณด๋ ๋ฐฉ๋ฒ์กฐ์ฐจ ์ด๋ ค์ธ ์ ์๋ค. ๊ทธ๋์ FullCalendar JS์์ ์ฌ์ฉํ ์ ์๋ ์์ฑ๋ค์ ํ๋์ ์ดํด๋ณด๊ณ ์ ํ๋ค. ๋ฌผ๋ก 100% ๋ชจ๋ ์์ฑ๋ค์ ์ ๋ถ ๋ณด๋ฉด ์ข๊ฒ ์ง๋ง, ๊ฐ์ฅ ์ค์ํ ์์ฑ๋ค ์์ฃผ๋ก ํ์ธํด ๋ณด๊ณ ๊ทธ ์ธ์ ์์ฑ๋ค์ ์ง์ Documents๋ฅผ ํ์ธํด ๋ณด๊ธธ ๋ฐ๋๋ค.
๐ 2. ๋ ์ง ๋ฐ ์๊ฐ ์ค์ (Date & Time)
slotMinTime
' ๊ฐ ์์ผ์ ํ์๋ ์ฒซ๋ฒ์งธ ์๊ฐ๋๋ฅผ ๊ฒฐ์ '
slotMinTime ์์ฑ์ ์ผ์ ์๊ฐ ๋ทฐ์์ ํ๋ฃจ์ ์์ ์๊ฐ์ ์ ์ํ๋ ์์ฑ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ '00:00:00'์ผ๋ก ํ๋ฃจ์ ์์(์์ )์ ์๋ฏธํฉ๋๋ค. ํ์์ 'HH:mm:ss' ๋๋ 'HH:mm'๋ก ์ค์ ํ ์ ์์ต๋๋ค.
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek', // ์๊ฐ ๊ทธ๋ฆฌ๋ ๋ทฐ
slotMinTime: '09:00:00', // ์ค์ 9์๋ถํฐ ํ์
events: [
{ title: '์ผ์ 1', start: '2025-02-12T10:00:00' },
{ title: '์ผ์ 2', start: '2025-02-12T12:30:00' }
]
});
calendar.render();
์ฃผ์ ์ค์ ๊ฐ
'00:00:00' (๊ธฐ๋ณธ๊ฐ) | ์์ (0์)๋ถํฐ ์์ | 0์๋ถํฐ ๋ชจ๋ ์๊ฐ ํ์ |
'06:00:00' | ์ค์ 6์๋ถํฐ ํ์ | ์ด๋ฅธ ์์นจ ์ค์ผ์ค ๊ด๋ฆฌ์ ์ ํฉ |
'09:00:00' | ์ค์ 9์๋ถํฐ ํ์ (์ผ๋ฐ์ ๊ทผ๋ฌด์๊ฐ) | ์ ๋ฌด ์๊ฐ๋์ ์ต์ ํ |
'12:00:00' | ์ ์ค(12์)๋ถํฐ ํ์ | ์คํ ์ผ์ ๋ง ํ์ํ ๋ ํ์ฉ |
'-02:00:00' | ์ ๋ ์ 22์๋ถํฐ ํ์ | ์ผ๊ฐ ๊ทผ๋ฌด ์๊ฐ ๊ด๋ฆฌ์ ์ ํฉ |
๐ฉ Tip: '-02:00:00'์ฒ๋ผ ์์ ๊ฐ์ ์ฃผ๋ฉด ์ ๋ ์๊ฐ๋ถํฐ ํ์ํ ์ ์์ต๋๋ค!
slotMaxTime
' ๊ฐ ์์ผ์ ํ์๋ ๋ง์ง๋ง ์๊ฐ๋๋ฅผ ๊ฒฐ์ '
slotMaxTime ์์ฑ์ ์๊ฐ ๊ธฐ๋ฐ ๋ทฐ(timeGridWeek, timeGridDay)์์ ํ๋ฃจ์ ๋๋๋ ์๊ฐ์ ์ ์ํ๋ ์์ฑ์ ๋๋ค. ์ด๊ฒ์ ๋ฒ ํ์ ์ข ๋ฃ ์๊ฐ์ผ๋ก ์ง์ ๋์ด์ผ ํ๋ค๋ ์ ์ ๊ฐ์กฐํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ '24:00:00'์ผ๋ก ํ๋ฃจ์ ๋ง์ง๋ง(์์ )์ด ๋จ์ ์๋ฏธํฉ๋๋ค. ํ์์ 'HH:mm:ss' ๋๋ 'HH:mm'๋ก ์ค์ ํ ์ ์์ต๋๋ค. ํด๋น ์์ฑ์ ํ์ฉํ๋ฉด ์บ๋ฐ๋๊ฐ ์์ ๊น์ง๊ฐ ์๋ ์ํ๋ ์๊ฐ๊น์ง๋ง ํ์๋๋๋ก ์ ํํ ์ ์์ต๋๋ค.
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek', // ์ฃผ๊ฐ ์๊ฐ ๊ทธ๋ฆฌ๋ ๋ทฐ
slotMinTime: '09:00:00', // ์ค์ 9์๋ถํฐ ์์
slotMaxTime: '16:00:00', // ์คํ 4์๊น์ง ํ์
events: [
{ title: '์ผ์ 1', start: '2025-02-12T10:00:00' },
{ title: '์ผ์ 2', start: '2025-02-12T13:00:00' }
]
});
calendar.render();
์ฃผ์ ์ค์ ๊ฐ
์ค์ ๊ฐ | ์ค๋ช | ๊ฒฐ๊ณผ ์์ |
'24:00:00' (๊ธฐ๋ณธ๊ฐ) | ์์ ๊น์ง ํ์ | ํ๋ฃจ ์ ์ฒด ์๊ฐ ํ์ ๊ฐ๋ฅ |
'18:00:00' | ์คํ 6์๊น์ง๋ง ํ์ | ์ผ๋ฐ์ ์ธ ์ ๋ฌด ์๊ฐ ๊ด๋ฆฌ์ ์ ํฉ |
'12:00:00' | ์ ์ค๊น์ง๋ง ํ์ | ์ค์ ์ผ์ ๋ง ํ์ํ ๋ ํ์ฉ |
'02:00:00' | ์๋ฒฝ 2์๊น์ง๋ง ํ์ | ์ฌ์ผ ์ผ์ ๊ด๋ฆฌ์ ์ ํฉ |
'30:00:00' | ๋ค์ ๋ ์ค์ 6์๊น์ง ํ์ | ์ผ๊ฐ ๊ทผ๋ฌด ๋ฐ 24์๊ฐ ์บ๋ฆฐ๋์ ์ ํฉ |
๐ฉ Tip: 24:00:00๋ณด๋ค ํฐ ๊ฐ(30:00:00)์ ์ฌ์ฉํ๋ฉด ๋ค์ ๋ ๊น์ง ํ์ํ ์ ์์ต๋๋ค!
slotDuration
' ์๊ฐ ์ฌ๋ก์ ํ์ํ๋ ๋น๋ '
slotDuration ์์ฑ์ ์๊ฐ ๊ธฐ๋ฐ ๋ทฐ(timeGridWeek, timeGridDay)์์ ์๊ฐ ์ฌ๋กฏ(ํ)์ ๊ฐ๊ฒฉ์ ์ค์ ํ๋ ์์ฑ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ '00:30:00'์ผ๋ก 30๋ถ ๊ฐ๊ฒฉ์ ๋๋ค. ํ์์ 'HH:mm:ss' ๋๋ 'HH:mm'๋ก ์ค์ ํ ์ ์์ต๋๋ค. ํด๋น ์์ฑ์ ํ์ฉํ๋ฉด ์บ๋ฆฐ๋์ ์๊ฐ ๊ฐ๊ฒฉ์ ๋ ์ด์ดํ๊ฑฐ๋ ๋๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek', // ์ฃผ๊ฐ ์๊ฐ ๊ทธ๋ฆฌ๋ ๋ทฐ
slotDuration: '00:15:00', // 15๋ถ ๋จ์๋ก ์๊ฐ ์ฌ๋กฏ ํ์
events: [
{ title: '์ผ์ 1', start: '2025-02-12T09:15:00' },
{ title: '์ผ์ 2', start: '2025-02-12T10:45:00' }
]
});
calendar.render();
์ฃผ์ ์ค์ ๊ฐ
์ค์ ๊ฐ | ์ค๋ช | ๊ฒฐ๊ณผ ์์ |
'00:15:00' | 15๋ถ ๋จ์๋ก ์ฌ๋กฏ ํ์ | ์ด์ดํ ์ผ์ ๊ด๋ฆฌ์ ์ต์ ํ |
'00:30:00' (๊ธฐ๋ณธ๊ฐ) | 30๋ถ ๋จ์๋ก ์ฌ๋กฏ ํ์ | ์ผ๋ฐ์ ์ธ ์๊ฐ ๊ฐ๊ฒฉ |
'01:00:00' | 1์๊ฐ ๋จ์๋ก ์ฌ๋กฏ ํ์ | ๊ฐ๋จํ ์ผ์ ๊ด๋ฆฌ์ ์ ํฉ |
'02:00:00' | 2์๊ฐ ๋จ์๋ก ์ฌ๋กฏ ํ์ | ๋๊ท๋ชจ ์ผ์ ๋๋ ์ด๋ฒคํธ ๊ด๋ฆฌ์ฉ |
'24:00:00' | ํ๋ฃจ๋ฅผ ํ ์ฌ๋กฏ์ผ๋ก ํ์ | ํ๋ฃจ ๋จ์ ์ผ์ ๊ด๋ฆฌ์ ํ์ฉ ๊ฐ๋ฅ |
๐ฉ Tip: slotDuration์ ์ธ๋ถ ์ผ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ค์ํ ์ค์ ์ ๋๋ค!
now
' ๋ฌ๋ ฅ์ ํ์ ๋ ํ์ฌ ๋ ์ง '
Calendar๊ฐ load ๋๋ฉด์, ํ์ฌ ๋ ์ง๋ฅผ ํ์ํ๋๋ฐ ์ด๋, default ๋ ์ง๋ฅผ ์ด๋ค ๋ ์ง๋ก ํ์ํ ๊ฑด์ง๋ฅผ ์ค์ ํ ์ ์๋ค. ๊ธฐ๋ณธ default๋ ํ์ฌ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ๋๋ค.
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
now: '2025-02-07'
});
calendar.render();
});
ํ์๊ฐ ์์ฑํ ํด๋น ๋ ์ง๋ 2025๋ 02์ 03์ผ์ด๋ค. ํ์ง๋ง, now ์์ฑ์ ์ด์ฉํ์ฌ '2025-02-07'๋ก ์ค์ ๋์ด ์บ๋ฆฐ๋ ๋ฌ๋ ฅ ๋ด, ํ์ฌ ๋ ์ง ํ์๊ฐ 02์ 07์ผ์๋ก ์ค์ ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
businessHours
' ํน์ ์๊ฐ๋๋ฅผ ๊ฐ์กฐ '
๊ธฐ๋ณธ์ ์ผ๋ก ์-๊ธ, ์ค์ 9์-์คํ5์
businessHours ์์ฑ์ ์บ๋ฆฐ๋์์ ์ ๋ฌด ์๊ฐ์ ์๊ฐ์ ์ผ๋ก ํ์ํ๊ณ ์ผ์ ์์ฑ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ ํํ๋ ๊ธฐ๋ฅ์ํฉ๋๋ค. ํด๋น ์์ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ผ-๊ธ์์ผ, ์ค์ 9์-์คํ5์์ด๊ณ , ๊ธฐ๋ณธ false๊ฐ์ ๊ฐ์ต๋๋ค. businessHours ์์ฑ์ ๊ฐ์ true๋ก ์ค์ ํ๋ฉด ๊ธฐ๋ณธ ์๊ฐ์ ๋ง์ถฐ ์ ๋ฌด ์๊ฐ์ด ํ์๋๋๋ฐ ํ์ ์์์ผ๋ก ํ์ ๋๊ธฐ๋๋ฌธ์ ๊ตฌ๋ถํ๊ธฐ ์ฝ๋ค.
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek',
businessHours: true, // ๊ธฐ๋ณธ ์
๋ฌด ์๊ฐ (์~๊ธ, 09:00~17:00)
events: [
{ title: 'ํ ํ์', start: '2025-02-12T10:00:00' },
{ title: '์
๋ฌด ๋ฆฌ๋ทฐ', start: '2025-02-13T15:00:00' }
]
});
calendar.render();
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek',
businessHours: [ // specify an array instead
{
daysOfWeek: [ 1, 2, 3 ], // Monday, Tuesday, Wednesday
startTime: '08:00', // 8am
endTime: '18:00' // 6pm
},
{
daysOfWeek: [ 4, 5 ], // Thursday, Friday
startTime: '10:00', // 10am
endTime: '16:00' // 4pm
}
],
events: [
{ title: 'ํ ํ์', start: '2025-02-12T10:00:00' },
{ title: '์
๋ฌด ๋ฆฌ๋ทฐ', start: '2025-02-13T15:00:00' }
]
});
calendar.render();
์ฃผ์ ์์ฑ ์ค๋ช
์์ฑ | ์ค๋ช | ์์ ๊ฐ |
daysOfWeek | ์ ๋ฌด ์์ผ ์ค์ (0=์ผ, 1=์, ..., 6=ํ ) | [1, 2, 3, 4, 5] |
startTime | ์ ๋ฌด ์์ ์๊ฐ ์ค์ (24์๊ฐ ํ์) | '08:30', '09:00' |
endTime | ์ ๋ฌด ์ข ๋ฃ ์๊ฐ ์ค์ | '17:00', '15:00' |
rendering | ์ ๋ฌด ์๊ฐ์ ๋ ๋๋ง ๋ฐฉ์ ์ค์ (background ์ฌ์ฉ) | 'background' |
overlap | ์ผ์ ๊ฐ ์ค์ฒฉ ํ์ฉ ์ฌ๋ถ | true / false |
firstDay
' ๊ฐ ์ฃผ๊ฐ ์์๋๋ ์์ผ '
firstDay ์์ฑ์ ์บ๋ฆฐ๋์ ํ ์ฃผ๊ฐ ์์๋๋ ์์ผ์ ์ค์ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ํด๋น ์์ฑ์ ํ์ฉํ๋ฉด ์์์ผ๋ถํฐ ์ฃผ๊ฐ ์์๋๊ฒ ํ๊ฑฐ๋, ์ผ์์ผ ๋๋ ๋ค๋ฅธ ์์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ํ์ฌ Locale์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ ๊ฐ์ '0-6'๊น์ง๋ก ์์ผ์ ๋ํ๋ด๋ ์ซ์์ฌ์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ '0(์ผ์์ผ)' ์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ: 0 (์ผ์์ผ๋ถํฐ ์์)
- ๊ฐ์ ๋ฒ์: 0 ~ 6
- 0 = ์ผ์์ผ (Sunday)
- 1 = ์์์ผ (Monday)
- 2 = ํ์์ผ (Tuesday)
- 3 = ์์์ผ (Wednesday)
- 4 = ๋ชฉ์์ผ (Thursday)
- 5 = ๊ธ์์ผ (Friday)
- 6 = ํ ์์ผ (Saturday)
๐ฉ Tip: ๋ง์ ์ ๋ฝ ๊ตญ๊ฐ์์๋ firstDay: 1๋ก ์ค์ ํ์ฌ ์์์ผ์ ์ฃผ์ ์์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth', // ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ
firstDay: 0, // ์ผ์์ผ๋ถํฐ ์์ (๊ธฐ๋ณธ๊ฐ)
events: [
{ title: '์ผ์ 1 start: '2025-02-09' },
{ title: '์ผ์ 2 start: '2025-02-14' }
]
});
calendar.render();
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth', // ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ
firstDay: 2, // ํ์์ผ๋ถํฐ ์์
events: [
{ title: '์ผ์ 1 start: '2025-02-09' },
{ title: '์ผ์ 2 start: '2025-02-14' }
]
});
calendar.render();
firstDay ์์ฑ์ ํตํด ์๋์ ์ผ๋ก ์ํ๋ ์ฃผ์ ์์์ ์ค์ ํ ์ ์์ง๋ง, Locale์ ๋ฐ๋ผ์ ์๋ ์ค์ ๋๊ธฐ๋ ํ๋ค. locale์ ์ค์ ํ๋ฉด ํด๋น ๊ตญ๊ฐ์ ๊ธฐ๋ณธ ์์ผ์ด ์๋ ์ ์ฉ๋ฉ๋๋ค. ํ์ง๋ง locale์ ์ค์ ํด์ ์๋์ค์ ๋์ง๋ง firstDay ์์ฑ์ผ๋ก ์ฌ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
firstDay์ ๊ด๋ จ๋ ์์ฑ
์์ฑ | ์ค๋ช | ์์ ๊ฐ |
firstDay | ํ ์ฃผ์ ์์ ์์ผ ์ค์ | 0 (์ผ์์ผ), 1 (์์์ผ) |
locale | ์ธ์ด ๋ฐ ์ง์ญ ์ค์ | 'ko', 'en', 'fr' |
weekends | ์ฃผ๋ง ํ์ ์ฌ๋ถ ์ค์ | true / false |
hiddenDays | ํน์ ์์ผ ์จ๊ธฐ๊ธฐ | [0, 6] (์ผ, ํ ์จ๊น) |
validRange
' ์ฌ์ฉ์๊ฐ ํ์ํ ์ ์๋ ๋ ์ง์ ์ด๋ฒคํธ๊ฐ ์ด๋ํ ์ ์๋ ์์น๋ฅผ ์ ํ '
validRange ์์ฑ์ ์บ๋ฆฐ๋์์ ์ ํํ ์ ์๋ ๋ ์ง์ ๋ฒ์๋ฅผ ์ ํํ๋ ์์ฑ์ ๋๋ค. ์ผ์ ์์ฑ ๋ฐ ํธ์ง์ ๋ํ ๊ธฐ๋ฅ์ ํน์ ๊ธฐ๊ฐ์ผ๋ก ์ ํ ํ ์ ์๊ณ , ๋ฒ์ ์ธ ๋ ์ง๋ฅผ ์ ํ ๋ถ๊ฐ๋ก ๋ง๋ค๊ฑฐ๋ ๋ทฐ์ฒ๋ผ ์ฝ๊ธฐ ์ ์ฉ๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์์ต๋๋ค. ์ ํจ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ ์ง ์ฆ ๊ฐ์ฉ ๋ฒ์ ์ธ์๋ ํ์์ผ๋ก ํ์๋ฉ๋๋ค. ์ฌ์ฉ์๋ ์ด๋ฒคํธ๋ฅผ ์ด ์์ญ์ผ๋ก ๋์ด์ค๊ฑฐ๋ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. ํค๋ ๋๊ตฌ ๋ชจ์์ ์ด์ /๋ค์ ๋ฒํผ์ ํ์์ผ๋ก ํ์๋์ด ์ฌ์ฉ์๊ฐ ์๋ชป๋ ๋ฒ์๋ก ์ด๋ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. (์ด์ /๋ค์ ์๋จ)
// ์์๊ณผ ๋์ ๋ฒ์๋ฅผ ์ค์ ํ๊ณ ๊ทธ ์ธ์ ๋ฒ์๋ ์ค์ ๋ถ๊ฐ๋ฅ
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth', // ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ
validRange: {
start: '2025-02-07', // ์์ ๋ ์ง
end: '2025-02-10' // ์ข
๋ฃ ๋ ์ง (์ด๋ ์ ํฌํจ๋์ง ์์)
},
events: [
{ title: '์ผ์ 1 start: '2025-02-09' },
{ title: '์ผ์ 2 start: '2025-02-14' }
]
});
calendar.render();
// ์์ ๋ฒ์๋ฅผ ์ค์ ํ๊ณ ๊ทธ ์ธ์ ๋ฒ์๋ ์ค์ ๋ถ๊ฐ๋ฅ
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth', // ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ
validRange: {
start: '2025-02-07' // ์์ ๋ ์ง
},
events: [
{ title: '์ผ์ 1 start: '2025-02-09' },
{ title: '์ผ์ 2 start: '2025-02-14' }
]
});
calendar.render();
// ์ค๋ ๋ ์ง๋ถํฐ 30์ผ ํ ๋ฒ์๋ฅผ ์ค์ ํ๊ณ ๊ทธ ์ธ์ ๋ฒ์๋ ์ค์ ๋ถ๊ฐ๋ฅ
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth', // ์๊ฐ ๋ฌ๋ ฅ ๋ทฐ
validRange: function(now) {
return {
start: now, // ์ค๋ ๋ ์ง
end: now.add(30, 'days') // ์ค๋๋ถํฐ 30์ผ ํ๊น์ง
};
},
events: [
{ title: '์ผ์ 1 start: '2025-02-09' },
{ title: '์ผ์ 2 start: '2025-02-14' }
]
});
calendar.render();
์ฃผ์ ์์ฑ ์ค๋ช
์์ฑ | ์ค๋ช | ์์ ๊ฐ |
start | ์ ํจํ ๋ฒ์์ ์์ ๋ ์ง (ํฌํจ๋จ) | '2025-02-01' |
end | ์ ํจํ ๋ฒ์์ ์ข ๋ฃ ๋ ์ง (ํฌํจ๋์ง ์์) | '2025-02-28' |
function | ๋์ ์ผ๋ก ๋ฒ์ ์ค์ ํ๋ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ | function(now) { ... } |
FullCalendar JS๋ฅผ ์๊ฐํ๋ ๋ด์ฉ์, FullCalendar ๊ณต์ ํํ์ด์ง์ ๋ด์ฉ์ ์ ๊ทน ์ฐธ๊ณ ํ์ฌ ์์ฑ๋ ๊ธ์์ ๋ช ์ํฉ๋๋ค. ๋ชจ๋ ๋ด์ฉ์ ๊ณต์ ํํ์ด์ง ๋ฉ์ธ ๋ด์ฉ ๋ฐ Documents๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์์ต๋๋ค.
@Junesker
๋๊ธ