플러그인
플러그인은 차트의 기본 동작을 변경하거나 사용자지정하는 가장 효과적인 방법입니다. version 2.1.0 (전역 플러그인만)에서 이미 소개되었고 version 2.5.0 (차트마다 플러그인과 옵션)에서 확장되었습니다.
플러그인 사용하기
플러그인은 차트 인스턴스 사이에서 공유될 수 있습니다:
var plugin = { /* 플러그인 구현 */ };
// chart1 and chart2 use "plugin"
var chart1 = new Chart(ctx, {
plugins: [plugin]
});
var chart2 = new Chart(ctx, {
plugins: [plugin]
});
// chart3 doesn't use "plugin"
var chart3 = new Chart(ctx, {});
플러그인은 차트 내에 plugins
설정 (a.k.a.
inline plugins)으로 직접 정의될 수 있습니다:
var chart = new Chart(ctx, {
plugins: [{
beforeInit: function(chart, options) {
//..
}
}]
});
그러나 많은 차트들에 사용자 지정을 적용할 때는 이상적인 방법은 아닙니다.
전역 플러그인
플러그인은 모든 차트 (a.k.a. global plugins)에 적용하기 위해 전역으로 등록될 수 있습니다:
Chart.plugins.register({
// 플러그인 구현
});
주의: inline 플러그인은 전역으로 등록될 수 없습니다.
설정
플러그인 ID
플러그인은 설정 가능하기 위해 반드시 유일한 id가 정의되어야 합니다.
이 id는 반드시 npm package name convention을 따라야 합니다:
- 점 또는 언더바로 시작할 수 없습니다
- 어떤 non-URL-safe 문자도 포함될 수 없습니다
- 대문자는 포함될 수 없습니다
- 짧지만 합리적으로 설명해야 합니다
플러그인이 공개적으로 출시될 예정인 경우
registry를 확인하여 해당 이름이 이미 있는지 확인할 수 있습니다.
이 경우에 주의할 점은 패키지 이름은 반드시 접두사
chartjs-plugin-
을 두어 Chart.js 플러그인
레지스트리입을 표현해야 합니다.
플러그인 옵션
플러그인 옵션은
options.plugins
설정 아래에 위치하고 플러그인
ID: options.plugins.{plugin-id}
로 범위가
지정됩니다.
var chart = new Chart(ctx, {
options: {
foo: { ... }, // 차트 'foo' 옵션
plugins: {
p1: {
foo: { ... }, // p1 플러그인 'foo' 옵션
bar: { ... }
},
p2: {
foo: { ... }, // p2 플러그인 'foo' 옵션
bla: { ... }
}
}
}
});
플러그인 비활성화
특정 차트 인스턴스에서 전역 플러그인을 비활성화 하려면
플러그인 옵션이 반드시 false
로 설정되어야만
합니다:
Chart.plugins.register({
id: 'p1',
// ...
});
var chart = new Chart(ctx, {
options: {
plugins: {
p1: false // 이 인스턴스에서 'p1' 플러그인을 비활성화합니다
}
}
});
플러그인 코어 API
이용가능한 hooks (버전 2.7 기준):
beforeInit
afterInit
-
beforeUpdate
(취소 할 수 있음) afterUpdate
-
beforeLayout
(취소 할 수 있음) afterLayout
-
beforeDatasetsUpdate
(취소 할 수 있음) afterDatasetsUpdate
-
beforeDatasetUpdate
(취소 할 수 있음) afterDatasetUpdate
-
beforeRender
(취소 할 수 있음) afterRender
-
beforeDraw
(취소 할 수 있음) afterDraw
-
beforeDatasetsDraw
(취소 할 수 있음) afterDatasetsDraw
-
beforeDatasetDraw
(취소 할 수 있음) afterDatasetDraw
-
beforeEvent
(취소 할 수 있음) afterEvent
resize
destroy