라이트박스 조작
컨트롤 값 가져오기/설정하기
섹션의 컨트롤 값을 가져오거나 설정하려면 아래와 같이 [formSection] 객체를 사용합니다:
//값을 가져오기
const value = scheduler.formSection('description').getValue();
//값을 설정하기
scheduler.formSection('description').setValue('abc');
단일 클릭으로 라이트박스 열기
기존 라이트박스를 단일 클릭으로 열 수 있습니다. 이를 위해 [onClick] 이벤트와 [showLightbox] 메서드를 사용합니다:
scheduler.attachEvent("onClick", function (id, e){
scheduler.showLightbox(id);
return true;
});
관련 샘플 하나의 클릭으로 라이트박스 열기
사용자가 이벤트 박스를 왼쪽 마우스 버튼으로 클릭하면 라이트박스가 열립니다.
라이트박스가 열렸는지 확인하기
현재 라이트박스가 열려 있는지 닫혀 있는지 확인하려면 getState 메서드가 반환하는 상태 객체의 lightbox_id 속성을 사용합니다.
라이트박스가 열려 있다면 열려 있는 이벤트의 id를 반환하고, 그렇지 않으면 'null' 또는 'undefined'가 반환됩니다:
if (scheduler.getState().lightbox_id){
// 열린 라이트박스에 대한 코드
} else {
// 닫힌 라이트박스에 대한 코드
}
이벤트 객체의 속성을 라이트박스 섹션에 매핑하기
이벤트 객체의 속성을 라이트박스 섹션에 매핑하려면 다음을 수행합니다:
- 데이터 소스가 지원 형식으로 이벤트를 반환하는지 확인합니다.
{
"data":[
{
"id":"1",
"start_date":"2027-03-02 00:00:00",
"end_date":"2027-03-04 00:00:00",
"text":"Graduation ceremony",
"type":"1",
"location":"London"
},
...
]
}
참고로, 데이터 소스가 반환하는 모든 속성은 이벤트 객체에 추가되며 클라이언트 측 API에서 사용할 수 있습니다.
- 특정 속성에 라이트박스 컨트롤을 매핑하려면 섹션의 map_to 속성에 이벤트 속성의 이름을 지정합니다:
scheduler.config.lightbox.sections=[
{name:"description", height:70, map_to:"text", type:"textarea" , focus:true},
{name:"locationInput", height:35, map_to:"location", type:"textarea" },
{name:"typeSelect", map_to:"type", type:"select", options:scheduler.serverList("types")},
{name:"time", type:"time", map_to:"auto"}
];
다음 예외는 항상 고정 속성에 매핑되는 컨트롤로, [time] 및 [recurring] 컨트롤입니다(각각은 고정 속성에 매핑됩니다: event.start_date/event.end_date 및 event.rec_type/event.event_length/event.event_pid).
Time 컨트롤의 자동 종료 날짜
초기 이벤트 지속 시간을 설정하고 종료 날짜가 자동으로 바뀌도록 하려면 [event_duration]과 [auto_end_date] 속성을 사용합니다:
//auto_end_time 매개변수에 대한 이벤트 지속 시간을 분 단위로 지정
scheduler.config.event_duration = 60;
scheduler.config.auto_end_date = true;
이와 같은 구성으로 사용자가 라이트박스에서 시작 시간이나 날짜를 변경할 때마다 종료 시간과 날짜가 자동으로 변경되어 이벤트 지속 시간이 60분(옵션의 [event_duration])과 같아지게 됩니다.
라이트박스 컨트롤의 기본값 설정하기
라이트박스 섹션의 기본값을 설정하려면 섹션 객체의 default_value 속성을 사용합니다.
예를 들어, 이벤트의 위치를 표시하는 커스텀 섹션을 라이트박스에 추가하고 이를 'Location'이라고 부른 경우, 사용자가 새 이벤트를 만들 때 해당 필드는 비어 있습니다. 이러한 동작을 수정하고 Greenwich Observatory의 주소를 기본값으로 표시하려면 다음과 같이 라이트박스를 지정합니다:
scheduler.config.lightbox.sections = [
{ name:"description", height:50, map_to:"text", type:"textarea", focus:true },
{ name:"location", height:43, map_to:"event_location", type:"textarea",
default_value:"Blackheath Avenue London,Greenwich,Greater London SE10 8XJ,UK"},
{ name:"time", height:72, type:"time", map_to:"auto"}
];
참고로, default_value 속성은 라이트박스 섹션의 기본값을 설정하며 새 이벤트의 기본값이 아닙니다. 즉, 새 이벤트는 사용자가 라이트박스를 열고 이벤트를 저장한 후에만 지정된 값을 받습니다.
새 이벤트에 대해 직접 기본값을 설정하려면 onEventCreated 이벤트를 사용합니다:
scheduler.attachEvent("onEventCreated", function(id,e){
scheduler.getEvent(id).location = 'Blackheath Avenue London, Greenwich...';
scheduler.updateEvent(id); // 업데이트된 이벤트를 렌더링
return true;
});
날짜-시간 컨트롤의 순서 변경 및 시간 선택기 제거
'Time period' 섹션에서 날짜-시간 컨트롤의 순서를 변경하거나 일부를 제거할 수 있습니다. 이를 위해 time_format 속성을 사용합니다:
scheduler.config.lightbox.sections= [
{name:"description", height:130, map_to:"text", type:"textarea" , focus:true},
{name:"time", ..., time_format:["%H:%i","%m","%d","%Y"]}
];
참고: 데이터 표시 형식을 변경할 수 없으며, 배열 항목의 순서만 변경할 수 있습니다.
예를 들어 형식을 아래와 같이 바꿀 수 있습니다:
//기본값
time_format:["%H:%i", "%m", "%d", "%Y"]
//월을 먼저 표시
time_format:["%m","%d", "%Y", "%H:%i"]
// 연도 선택기를 제거
time_format:["%H:%i", "%m", "%d"]
// 잘못된 예
time_format:["%H:%i", "%M", "%d", "%Y"] //"%m"이 "%M"으로 변경됨