표준 뷰가 요구 사항에 맞지 않을 때, 커스텀 뷰를 생성하는 것이 한 가지 방법입니다.
커스텀 뷰를 시작하려면 스케줄러에 새로운 탭을 추가해야 하며, 이 탭이 새로운 뷰를 나타냅니다. 일반적으로 다음과 같이 작성합니다:
<div class="dhx_cal_tab" data-tab="workweek"></div>
참고 사항:
뷰의 레이블을 설정하려면 다음을 사용합니다:
scheduler.locale.labels.{viewName}_tab = "someName"
뷰의 동작 방식을 정의하는 세 가지 필수 메서드가 있습니다. 이 메서드들은 뷰의 구간(예: Week 뷰의 경우 한 주, Month 뷰의 경우 한 달 등)과 사용자가 헤더의 'Next' 또는 'Prev' 버튼을 클릭할 때 활성 날짜를 결정합니다.
마지막으로, 헤더 날짜와 X축 스케일을 위한 템플릿을 설정해야 합니다:
예시:
scheduler.templates.workweek_date = scheduler.templates.week_date;
scheduler.templates.workweek_scale_date = scheduler.templates.week_scale_date;
'workweek'라는 커스텀 뷰를 만드는 방법을 살펴보겠습니다. 이 뷰는 Week 뷰와 유사하지만, 주중 근무일만 표시합니다.
단계는 다음과 같습니다:
<div id="scheduler_here" class="dhx_cal_container" ...>
<div class="dhx_cal_navline">
...
<div class="dhx_cal_tab" name="workweek_tab" style="right:280px;"></div>
</div>
</div>
scheduler.locale.labels.workweek_tab = "Work week"
scheduler.date.workweek_start = function(date) {
return scheduler.date.week_start(date);//
}
여기서는 Week 뷰와 동일하게 week_start() 메서드를 재사용합니다. 두 뷰 모두 시작 날짜가 동일하기 때문입니다.
scheduler.date.get_workweek_end=function(start_date){
return scheduler.date.add(start_date,5,"day");
}
add() 메서드는 지정한 시간 구간만큼 날짜를 더하거나 뺍니다. 자세한 내용은 여기에서 확인할 수 있습니다.
scheduler.date.add_workweek=function(date,inc){
return scheduler.date.add(date,inc*7,"day");
}
add() 메서드는 시간 구간을 더하거나 빼는 역할을 합니다. 자세한 내용은 여기에서 확인할 수 있습니다.
scheduler.templates.workweek_date = scheduler.templates.week_date;
이 템플릿은 Week 뷰와 동일하므로 기본 Week 뷰 템플릿을 재사용합니다 - week_date
scheduler.templates.workweek_scale_date = scheduler.templates.week_scale_date;
이 템플릿 역시 Week 뷰에서 가져와 일관성을 유지합니다 - week_scale_date
스케줄러에서 처음 표시되는 뷰는 init에 설명된 대로 초기화 시에 설정됩니다. 하지만 커스텀 뷰의 템플릿이 완전히 처리되기 전에 초기화가 이뤄질 수 있어, 이 경우 초기화가 실패할 수 있습니다.
이를 방지하려면 커스텀 뷰의 템플릿이 모두 준비된 후에 스케줄러를 초기화해야 하며, onTemplatesReady 이벤트 핸들러 안에서 커스텀 뷰를 생성하는 것이 좋습니다. 이 이벤트는 모든 템플릿이 완전히 처리된 후 발생합니다:
scheduler.attachEvent("onTemplatesReady",function(){
// 여기에 커스텀 뷰 생성 코드를 작성하세요
});
scheduler.init(container, date, "custom view name");
맨 위로