Available only in PRO Edition
이 기능은 Scheduler PRO 버전(2021년 10월 6일부터 상용, Enterprise, Ultimate 라이선스)에서만 사용할 수 있습니다.
처음 라이브러리를 사용할 때, dhtmlxScheduler는 정적 객체로 한 페이지에 오직 한 개의 인스턴스만 존재할 수 있다는 점을 알 수 있습니다.
하지만 PRO 버전에서는 상황이 달라집니다. 이제 여러 개의 dhtmlxScheduler 인스턴스를 동일한 페이지에서 동시에 사용할 수 있습니다. 전역 scheduler 객체를 통해 접근 가능한 기본 scheduler 인스턴스 외에도, 추가적인 scheduler 객체를 생성할 수 있습니다.
새로운 dhtmlxScheduler 인스턴스를 생성하려면 Scheduler.getSchedulerInstance() 메서드를 사용하세요:
// 'Scheduler'의 첫 글자가 대문자임에 주의하세요
const scheduler = Scheduler.getSchedulerInstance();
이 메서드는 설정 객체를 인자로 받을 수 있습니다:
const scheduler = Scheduler.getSchedulerInstance({
plugins: {
recurring: true,
},
container: "scheduler_here",
config: {
hour_date: "%h:%i",
details_on_create: true
},
data: {
events: [
{ id:1, start_date: "2022-04-18 09:00", end_date: "2022-04-18 12:00",
text:"English lesson", subject: 'english' },
{ id:2, start_date: "2022-04-20 10:00", end_date: "2022-04-21 16:00",
text:"Math exam", subject: 'math' },
{ id:3, start_date: "2022-04-21 10:00", end_date: "2022-04-21 14:00",
text:"Science lesson", subject: 'science' },
{ id:4, start_date: "2022-04-23 16:00", end_date: "2022-04-23 17:00",
text:"English lesson", subject: 'english' },
{ id:5, start_date: "2022-04-22 09:00", end_date: "2022-04-22 17:00",
text:"Usual event" }
]
}
});
설정 객체에는 다음과 같은 속성을 포함할 수 있습니다:
const scheduler = Scheduler.getSchedulerInstance({
events: {
onEventCreated: function(id, e){
var task = scheduler.getEvent(id);
task.owner = null;
return true;
},
onClick: function(id, e){
alert(scheduler.getEvent(id).text);
return true;
}
}
});
참고: Scheduler.getSchedulerInstance()를 파라미터 없이 호출하면 기본 설정의 scheduler 객체가 반환됩니다. 새 인스턴스에 대해 별도로 설정, 초기화 및 데이터 로딩이 필요합니다.
아래는 두 개의 scheduler가 위아래로 배치된 간단한 예시입니다:
window.addEventListener("DOMContentLoaded", function(){
var scheduler1 = Scheduler.getSchedulerInstance();
scheduler1.init('scheduler_here',new Date(2019,5,30),"week");
scheduler1.load("/data/events");
var scheduler2 = Scheduler.getSchedulerInstance();
scheduler2.init('scheduler_here_2',new Date(2019,5,30),"month");
scheduler2.load("/data/events");
});
<body>
<div id="scheduler_here" style="width:100%; height: 50%;"></div>
<div id="scheduler_here_2" style="width:100%; height: 50%;"></div>
</body>
버전 6.0부터 dhtmlxScheduler는 불필요한 Scheduler 인스턴스를 정리할 수 있도록 destructor를 제공합니다.
Scheduler 인스턴스 소멸자는 다음과 같이 사용할 수 있습니다:
var myScheduler = Scheduler.getSchedulerInstance();
// scheduler 인스턴스 소멸
myScheduler.destructor();
소멸자는 다음 작업을 수행합니다:
Angular에서 scheduler 인스턴스를 정리할 때 소멸자를 사용하는 방법은 다음과 같습니다:
@Component({selector: 'app-scheduler', template: `...`})
class MySchedulerComponent implements OnDestroy {
ngOnInit() {
this.$gantt = Scheduler.getSchedulerInstance();
// 설정 및 초기화
}
ngOnDestroy() {
this.$scheduler.destructor();
this.$scheduler = null;
}
}
dataProcessor의 소멸자를 호출하면 인스턴스가 정리되고 scheduler와의 연결이 해제됩니다. 예시:
var scheduler = Scheduler.getSchedulerInstance();
var dp = new scheduler.DataProcessor("url");
dp.init(scheduler);
// dataProcessor를 소멸하고 scheduler에서 분리
dp.destructor();
여러 scheduler 인스턴스를 지원하지 않는 패키지(GPL 또는 Commercial 에디션 등)를 사용하는 경우, scheduler 소멸자를 호출하면 페이지를 새로고침하기 전까지 scheduler를 사용할 수 없습니다.