DHTMLX Event Calendar과의 통합
이 가이드는 DHTMLX Booking 위젯을 DHTMLX Event Calendar와 통합하는 방법을 설명합니다. 통합 과정에서 Event Calendar 이벤트를 서버 측에서 Booking 슬롯으로 변환합니다.
주요 개념 이해
통합의 핵심은 Event Calendar 이벤트를 Booking 슬롯으로 변환하는 것입니다. 시작하기 전에 다음 사항을 숙지하십시오.
Event Calendar 이벤트 vs. Booking 슬롯. Event Calendar는 단일 이벤트와 반복 이벤트를 모두 처리합니다. Booking은 해당 이벤트를 기반으로 예약 가능한 시간 슬롯을 생성합니다. 아래 스니펫은 서버 측에서 JSON 데이터를 변환하여 의사 일정에서 예약 슬롯을 생성합니다.
반복 이벤트 제한. Booking은 Event Calendar에서 FREQ=WEEKLY;INTERVAL=1로 정의된 주간 반복 이벤트만 지원합니다. Event Calendar는 모든 반복 패턴을 처리할 수 있으므로, Event Calendar 폼에서 다른 반복 옵션은 숨기십시오.
타임존 처리. Booking은 타임스탬프를 로컬 타임존 기준으로 해석합니다. 글로벌 타임스탬프를 사용하는 경우, Booking에 전송하기 전에 로컬 타임존으로 변환하고, 저장하기 전에 다시 UTC로 변환하십시오. 변환 방법은 UTC 데이터를 로컬 타임존으로 변환을 참조하십시오.
Booking 슬롯 전략. 일정을 구성할 때 다음 두 가지 방법 중 하나를 선택하십시오.
slots와usedSlots— 일정을 구성하고 예약된 슬롯을 제외합니다 (이 가이드에서 다루는 전략)availableSlots— 반복 이벤트가 없는 경우에 적합하며, 예약 가능한 슬롯을 명시적으로 나열합니다
예제
아래 스니펫은 의사 일정을 예약 슬롯으로 변환하여 Booking과 Event Calendar를 통합합니다. 통합에는 네 개의 데이터 엔드포인트가 사용됩니다.
/events— 반복 및 단일 이벤트를 포함한 Event Calendar 데이터(의사 일정); Booking 시간 슬롯의 소스/units— 서버 측에서/events데이터를 기반으로 생성된 최종 Booking 슬롯; 백엔드 예제 참조/calendars— 의사의 캘린더; Event Calendar와 Booking 위젯 모두에 의사 정보를 제공/reservations— 타임라인 뷰에서usedSlots를 시각화하는 보조 컬렉션; Booking 폼에서 이미 예약된 슬롯을 저장
이벤트-슬롯 변환이 통합의 핵심입니다. 다음 섹션에서 변환 규칙을 설명합니다.
이벤트를 Booking 슬롯으로 변환
아래 규칙은 서버 측에서 변환된 JSON 데이터를 사용하여 의사 일정에서 예약 슬롯을 생성합니다. 모든 예제는 2025-03-13부터 2027-03-13까지의 일정을 기준으로 합니다.
규칙 1. 단일 이벤트에서 슬롯 생성
각 단일 이벤트에 대해 시작 시간과 종료 시간을 Booking 슬롯으로 변환합니다. slots 배열에 항목을 추가하고 dates 배열에 이벤트 날짜를 포함합니다.
다음 코드 스니펫은 단일 Event Calendar 이벤트를 보여줍니다.
{
"type": 1, // type은 캘린더 id입니다
"start_date": "2025-03-18T02:00:00Z", // 날짜는 UTC 기준으로 가정합니다
"end_date": "2025-03-18T06:00:00Z"
}
다음 코드 스니펫은 변환된 Booking 슬롯을 보여줍니다.
{
"id": 1,
"slotSize": 20,
"slotGap": 5,
"slots": [
{
"from": "02:00",
"to": "06:00",
"dates": [
1742256000000 // 2025-03-18 00:00:00 (타임스탬프)
]
}
]
}
규칙 2. 반복 이벤트 변환
반복 이벤트를 주간 패턴으로 매핑합니다. Event Calendar에서 반복 이벤트의 시작 날짜와 종료 날짜는 Booking의 start와 end 날짜와 일치해야 합니다. 일치하지 않는 경우, 반복 이벤트 이전과 이후 날짜에 대한 플레이스홀더를 생성하십시오(규칙 7 참조).
다음 코드 스니펫은 평일(월요일~금요일)에 매주 반복되는 Event Calendar 이벤트를 보여줍니다.
{
"type": 1,
"start_date": "2025-03-13T09:00:00Z",
"end_date": "2025-03-13T17:00:00Z",
"recurring": true,
"RRULE": "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;UNTIL=2027-03-13T23:59:59",
"STDATE": "2025-03-13T09:00:00Z",
"DTEND": "2027-03-13T00:00:00Z"
}
Booking은 주간 일정을 단일 규칙으로 표현하며, 모든 평일에 동일한 시작 및 종료 시간을 적용합니다.
다음 코드 스니펫은 변환된 Booking 슬롯을 보여줍니다.
{
"id": 1,
"slotSize": 20,
"slotGap": 5,
"slots": [
{
"from": "09:00",
"to": "17:00",
"days": [1, 2, 3, 4, 5] // 월요일~금요일
}
]
}