이전 버전에서의 마이그레이션
8.0 -> 9.0
v9.0 업데이트에서는 여러 가지 호환성 깨짐(breaking changes)이 도입되었습니다.
스킨이 CSS 변수로 전환됨
CSS 스킨(테마)이 완전히 재작업되어 이제 CSS 변수를 사용합니다. 컴포넌트의 HTML 구조와 CSS 클래스 이름은 대부분 변경되지 않았으나, 이전 버전의 Gantt용으로 작성된 CSS 스타일은 v9.0에서 의도한 대로 동작하지 않을 수 있습니다.
예를 들어, 다음과 같은 스타일은 작업의 우선순위에 따라 색상을 지정하는 데 사용되었습니다:
<style>
/* 테두리/진행률 색상 오버라이드를 위한 공통 스타일 */
.gantt_task_line{
border-color: rgba(0, 0, 0, 0.25);
}
.gantt_task_line .gantt_task_progress {
background-color: rgba(0, 0, 0, 0.25);
}
/* high */
.gantt_task_line.high {
background-color: #03A9F4;
}
.gantt_task_line.high .gantt_task_content {
color: #fff;
}
/* medium */
.gantt_task_line.medium {
background-color: #f57730;
}
.gantt_task_line.medium .gantt_task_content {
color: #fff;
}
/* low */
.gantt_task_line.low {
background-color: #e157de;
}
.gantt_task_line.low .gantt_task_content {
color: #fff;
}
</style>
v9.0부터는 아래와 같은 스타일로 동일한 효과를 얻을 수 있습니다:
<style>
/* high */
.gantt_task_line.high {
--dhx-gantt-task-background: #d96c49;
--dhx-gantt-task-color: #fff;
}
/* medium */
.gantt_task_line.medium {
--dhx-gantt-task-background: #f57730;
--dhx-gantt-task-color: #fff;
}
/* low */
.gantt_task_line.low {
--dhx-gantt-task-background: #fff;
--dhx-gantt-task-color: #fff;
}
</style>
사용 가능한 변수는 스킨 커스터마이제이션 페이지에서 확인할 수 있습니다.
마이그레이션 시 원하는 디자인을 얻기 위해 기존 CSS를 업데이트해야 할 수 있습니다.
단일 CSS 파일
모든 테마가 이제 하나의 dhtmlxgantt.css 파일에 포함되어 있습니다.
특정 스킨을 활성화하려면 gantt.skin 속성을 사용하세요:
gantt.skin = "material";
또는 setSkin 메서드를 사용할 수 있습니다:
gantt.setSkin("material");
gantt.setSkin()을 사용하면 Gantt가 다시 그려집니다.
terrace 외의 스킨을 사용할 경우 다음과 같은 마이그레이션 절차가 필요합니다:
- 스킨의 CSS 파일을
dhtmlxgantt.css파일로 교체하세요:
<!-- OLD -->
<link rel="stylesheet" href="./codebase/dhtmlxgantt_material.css" type="text/css">
<!-- NEW -->
<link rel="stylesheet" href="./codebase/dhtmlxgantt.css" type="text/css">
- 자바스크립트에서 필요한 스킨을 활성화하세요:
gantt.setSkin("material");
gantt.init("gantt_here");
내장 베이스라인, 데드라인 및 제약조건 지원
이전에는 베이스라인을 추가하려면 gantt.addTaskLayer API를 사용하여 직접 코딩해야 했습니다. Gantt 9.0에서는 베이스라인 엔티티와 함께 데드라인 및 작업 제약조건에 대한 내장 지원이 추가되었습니다.
기본 설정을 끄고 베이스라인이나 데드라인을 수동으로 렌더링하려면, 해당 설정 옵션(baselines 및 deadlines)을 사용할 수 있습니다:
// 내장 베이스라인 기능 비활성화
gantt.config.baselines = false;
// 내장 데드라인 기능 비활성화
gantt.config.deadlines = false;
작업 제약조건의 내장 표시 역시 확장된 auto_scheduling 설정을 통해 비활성화할 수 있습니다:
gantt.config.auto_scheduling = {
enabled: true,
show_constraints: false /*!*/
};
이렇게 하면 자동 스케줄링 기능은 유지하면서 기본 작업 제약조건 표시만 비활성화됩니다.
타임라인에서 스티키 라벨
v9.0부터 타임스케일 라벨이 기본적으로 스크롤 시 화면에 고정되어 표시됩니다. 즉, 라벨이 뷰포트를 따라 움직이며 자연스럽게 사라질 때까지 계속 보입니다. 이전 버전에서는 라벨이 셀 중앙에 고정되어 스크롤 시 보이지 않았습니다.
이전 동작으로 되돌리고 싶다면 scale 객체의 sticky 속성을 false로 설정하세요:
gantt.config.scales = [
{unit: "year", step: 1, format: "%Y", sticky: false},
{unit: "month", step: 1, format: "%F", sticky: false},
{unit: "day", step:1, format: "%j", sticky: false}
];
Promise 구현
Bluebird 라이브러리가 Gantt 번들에서 제외되었습니다. Promise는 이제 네이티브 Promise 구현을 사용합니다.
Lightbox 크기 조정
v9.0부터 resizeLightbox 메서드는 더 이상 필요하지 않으므로 Gantt 코드에서 삭제되었습니다. Lightbox 크기 조정이 자동으로 동작하므로, 설정에 resizeLightbox() 메서드가 있다면 오류를 방지하기 위해 제거해야 합니다.