-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathtooltip.html
283 lines (283 loc) · 84.5 KB
/
tooltip.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Tooltip | Chart.js</title>
<meta name="generator" content="VuePress 1.9.9">
<link rel="icon" href="/docs/4.3.1/favicon.ico">
<meta name="description" content="Open source HTML5 Charts for your website">
<link rel="preload" href="/docs/4.3.1/assets/css/0.styles.92486ee7.css" as="style"><link rel="preload" href="/docs/4.3.1/assets/js/app.36b7f5fb.js" as="script"><link rel="preload" href="/docs/4.3.1/assets/js/2.23e11f66.js" as="script"><link rel="preload" href="/docs/4.3.1/assets/js/169.616b7bce.js" as="script"><link rel="prefetch" href="/docs/4.3.1/assets/js/10.655666db.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/100.448eab79.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/101.a2653970.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/102.4019b4c7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/103.713094d3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/104.5c110c59.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/105.4d2567a1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/106.33405c47.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/107.1be23982.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/108.0ad55b75.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/109.2ba8ae20.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/11.d3577b42.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/110.a5172cda.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/111.8d35cb63.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/112.b1697291.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/113.e235ebc5.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/114.ebb0df13.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/115.cd265a2d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/116.f9c8bdfc.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/117.ce9aa7ca.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/118.c27da478.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/119.31b9f722.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/12.fce4f7de.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/120.2e50fca1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/121.a562a45d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/122.9fa2b07a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/123.0bff0785.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/124.492fe569.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/125.e8ca9561.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/126.eba63c52.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/127.f5073f73.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/128.6ba2ccb3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/129.975a2bd7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/13.324e600a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/130.15a12b14.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/131.068c702d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/132.25a5d1a9.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/133.5267f896.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/134.eace3047.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/135.45213bfb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/136.ea6ecd55.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/137.dc05133e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/138.b73af2f7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/139.d6576dd0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/14.842bf185.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/140.4c69583e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/141.524a1885.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/142.b4665eeb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/143.8d963474.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/144.14cdae41.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/145.c58d716b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/146.2f5ba2a1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/147.7197a3cf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/148.b3ec2097.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/149.fe13cbbc.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/15.c7db610d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/150.174d50e8.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/151.b44db51d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/152.dd7b6ddd.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/153.bbc79728.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/154.c5293a2c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/155.a6cd569a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/156.6ba65ac0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/157.6929b4ca.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/158.07ee12ba.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/159.1c3ba9a4.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/16.91792ae9.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/160.f2b3debf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/161.e6ca7f1f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/162.c573c6d6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/163.51a98019.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/164.2802bb26.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/165.cb7922f6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/166.77d6da6d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/167.a5db94fa.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/168.02d2e0aa.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/17.8c985ccf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/170.4bdec0d1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/171.5b896528.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/172.bed29d8d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/173.e25ccfa2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/174.8f57f45e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/175.0f7de0cb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/176.7020ea92.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/177.ff2d5a5c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/178.f9b9635a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/179.b14035ef.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/18.ef95132a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/180.f5d07411.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/181.eeb8d787.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/182.8caf90b7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/183.a4cf711b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/184.4d0f26c5.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/185.819c52af.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/186.92a4b313.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/187.dda526f3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/188.c5d246b3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/189.75413c36.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/19.1997ca1f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/190.282d60b2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/191.4b4e28c3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/192.cecce208.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/193.a528da4d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/194.e05cae7c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/195.d3e4008c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/196.ba92cc7d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/197.1e3727f6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/198.ef69c895.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/199.7dfd996b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/20.e7a4fc8e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/200.3d1b0df8.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/201.37b61284.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/202.ce584c04.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/203.282c44fb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/204.b42856ef.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/205.44b7780f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/206.d6da8dfb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/207.465d8762.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/208.41c46b14.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/209.a480b139.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/21.93c70a84.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/210.b2b065e3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/211.7a4bb851.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/212.8dd1c42c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/213.d6e493a4.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/214.cb51c8ec.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/215.21350cb1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/216.ab649321.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/217.bf424edd.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/218.d1d0ff28.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/219.8d4f19ee.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/22.4883c42e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/220.30459347.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/221.d7e40502.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/222.be3d06d1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/223.a9ad108b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/224.5a995b95.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/225.544ce0bf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/226.68886e17.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/227.26ac88b9.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/228.4ff6cc0b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/229.2a4d6bda.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/23.fa2dca9d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/230.f105f9ce.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/231.806defa2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/232.51ac2fa0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/233.2cc4fee6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/234.34ec0664.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/235.ae69c57e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/236.34e3cac1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/237.e49a9cf2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/238.c497f057.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/239.6f210a73.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/24.bc8b98c8.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/240.b925ef50.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/241.b2cce203.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/242.58d7a567.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/243.d76971b2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/244.559d5df4.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/245.68f99908.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/246.bb90aa76.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/247.d62865e7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/248.640aff03.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/249.f4f32727.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/25.3ac2747d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/250.05d384d1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/251.ec1b47ad.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/252.d919cb2a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/253.2972b3ff.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/254.1583553a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/255.1503fb79.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/256.48d10845.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/257.1c700576.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/258.810bf075.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/259.4cf583b6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/26.1f9eac99.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/260.b61862b3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/261.f71fb34d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/262.196a3ca1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/263.b40da1ee.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/264.1e51f901.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/27.b2841a1e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/28.4a860a03.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/29.9e9e0e9a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/3.e6e3b6a5.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/30.f6e21673.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/31.d4da9473.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/32.45968969.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/33.3da5f044.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/34.c3a6ffc4.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/35.b887c794.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/36.2a758add.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/37.cda6c6e7.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/38.a4db3868.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/39.56a92181.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/4.31ca65b0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/40.6341fed5.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/41.5181b509.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/42.97b63002.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/43.48212fa3.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/44.5fefe788.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/45.ae037691.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/46.7d038812.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/47.f2d387e9.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/48.57f822cf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/49.c6c5204d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/5.c93d3c24.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/50.c5c81922.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/51.409b76fe.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/52.dfa324eb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/53.10604d1f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/54.fd7be66f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/55.3faa6aaf.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/56.703c7aab.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/57.288ef9e0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/58.13e91984.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/59.5d9db4bb.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/6.778381e2.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/60.ed0170da.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/61.de070d4f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/62.ba3c9b45.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/63.8a415b49.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/64.1ff4c030.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/65.0e8697f8.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/66.43a826c1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/67.2d7363ab.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/68.1792cf37.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/69.d0b1af10.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/7.72b4bab0.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/70.582f2e62.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/71.c3bcbb22.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/72.2229db4f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/73.9cef0148.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/74.dccddcf6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/75.fb07c000.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/76.fb9714c1.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/77.b9f4a39e.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/78.b2543d18.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/79.8cd2e968.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/8.349c6901.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/80.8dadc931.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/81.918c870f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/82.4c747c4b.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/83.5fb006b9.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/84.90eed23a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/85.434b7da6.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/86.c2a8119c.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/87.3efe3fbe.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/88.2cdc6098.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/89.7955a123.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/9.dcd244af.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/90.e1cef1fd.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/91.6ed8ab13.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/92.83da3878.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/93.aa7c6692.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/94.a46df471.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/95.8263be2f.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/96.8880ec15.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/97.1a058b3a.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/98.ac4a721d.js"><link rel="prefetch" href="/docs/4.3.1/assets/js/99.7626cec9.js">
<link rel="stylesheet" href="/docs/4.3.1/assets/css/0.styles.92486ee7.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/docs/4.3.1/" class="home-link router-link-active"><img src="/docs/4.3.1/favicon.ico" alt="Chart.js" class="logo"> <span class="site-name can-hide">Chart.js</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/docs/4.3.1/" class="nav-link">
Home
</a></div><div class="nav-item"><a href="/docs/4.3.1/api/" class="nav-link">
API
</a></div><div class="nav-item"><a href="/docs/4.3.1/samples/" class="nav-link">
Samples
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Community Menu" class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow down"></span></button> <button type="button" aria-label="Community Menu" class="mobile-dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/chartjs/awesome" target="_blank" rel="noopener noreferrer" class="nav-link external">
Awesome
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://discord.gg/HxEguTK6av" target="_blank" rel="noopener noreferrer" class="nav-link external">
Discord
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://stackoverflow.com/questions/tagged/chart.js" target="_blank" rel="noopener noreferrer" class="nav-link external">
Stack Overflow
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/docs/4.3.1/" class="nav-link">
Home
</a></div><div class="nav-item"><a href="/docs/4.3.1/api/" class="nav-link">
API
</a></div><div class="nav-item"><a href="/docs/4.3.1/samples/" class="nav-link">
Samples
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Community Menu" class="dropdown-title"><span class="title">Ecosystem</span> <span class="arrow down"></span></button> <button type="button" aria-label="Community Menu" class="mobile-dropdown-title"><span class="title">Ecosystem</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/chartjs/awesome" target="_blank" rel="noopener noreferrer" class="nav-link external">
Awesome
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://discord.gg/HxEguTK6av" target="_blank" rel="noopener noreferrer" class="nav-link external">
Discord
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://stackoverflow.com/questions/tagged/chart.js" target="_blank" rel="noopener noreferrer" class="nav-link external">
Stack Overflow
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <a href="https://github.com/chartjs/Chart.js" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><a href="/docs/4.3.1/" aria-current="page" class="sidebar-link">Chart.js</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Getting Started</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>General</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>Configuration</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/docs/4.3.1/configuration/" aria-current="page" class="sidebar-link">Configuration</a></li><li><a href="/docs/4.3.1/configuration/animations.html" class="sidebar-link">Animations</a></li><li><a href="/docs/4.3.1/configuration/canvas-background.html" class="sidebar-link">Canvas background</a></li><li><a href="/docs/4.3.1/configuration/decimation.html" class="sidebar-link">Data Decimation</a></li><li><a href="/docs/4.3.1/configuration/device-pixel-ratio.html" class="sidebar-link">Device Pixel Ratio</a></li><li><a href="/docs/4.3.1/configuration/elements.html" class="sidebar-link">Elements</a></li><li><a href="/docs/4.3.1/configuration/interactions.html" class="sidebar-link">Interactions</a></li><li><a href="/docs/4.3.1/configuration/layout.html" class="sidebar-link">Layout</a></li><li><a href="/docs/4.3.1/configuration/legend.html" class="sidebar-link">Legend</a></li><li><a href="/docs/4.3.1/configuration/locale.html" class="sidebar-link">Locale</a></li><li><a href="/docs/4.3.1/configuration/responsive.html" class="sidebar-link">Responsive Charts</a></li><li><a href="/docs/4.3.1/configuration/subtitle.html" class="sidebar-link">Subtitle</a></li><li><a href="/docs/4.3.1/configuration/title.html" class="sidebar-link">Title</a></li><li><a href="/docs/4.3.1/configuration/tooltip.html" aria-current="page" class="active sidebar-link">Tooltip</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Chart Types</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Axes</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Developers</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Migration</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="tooltip"><a href="#tooltip" class="header-anchor">#</a> Tooltip</h1> <h2 id="tooltip-configuration"><a href="#tooltip-configuration" class="header-anchor">#</a> Tooltip Configuration</h2> <p>Namespace: <code>options.plugins.tooltip</code>, the global options for the chart tooltips is defined in <code>Chart.defaults.plugins.tooltip</code>.</p> <table><thead><tr><th>Name</th> <th>Type</th> <th>Default</th> <th>Description</th></tr></thead> <tbody><tr><td><code>enabled</code></td> <td><code>boolean</code></td> <td><code>true</code></td> <td>Are on-canvas tooltips enabled?</td></tr> <tr><td><code>external</code></td> <td><code>function</code></td> <td><code>null</code></td> <td>See <a href="#external-custom-tooltips">external tooltip</a> section.</td></tr> <tr><td><code>mode</code></td> <td><code>string</code></td> <td><code>interaction.mode</code></td> <td>Sets which elements appear in the tooltip. <a href="/docs/4.3.1/configuration/interactions.html#modes">more...</a>.</td></tr> <tr><td><code>intersect</code></td> <td><code>boolean</code></td> <td><code>interaction.intersect</code></td> <td>If true, the tooltip mode applies only when the mouse position intersects with an element. If false, the mode will be applied at all times.</td></tr> <tr><td><code>position</code></td> <td><code>string</code></td> <td><code>'average'</code></td> <td>The mode for positioning the tooltip. <a href="#position-modes">more...</a></td></tr> <tr><td><code>callbacks</code></td> <td><code>object</code></td> <td></td> <td>See the <a href="#tooltip-callbacks">callbacks section</a>.</td></tr> <tr><td><code>itemSort</code></td> <td><code>function</code></td> <td></td> <td>Sort tooltip items. <a href="#sort-callback">more...</a></td></tr> <tr><td><code>filter</code></td> <td><code>function</code></td> <td></td> <td>Filter tooltip items. <a href="#filter-callback">more...</a></td></tr> <tr><td><code>backgroundColor</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'rgba(0, 0, 0, 0.8)'</code></td> <td>Background color of the tooltip.</td></tr> <tr><td><code>titleColor</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'#fff'</code></td> <td>Color of title text.</td></tr> <tr><td><code>titleFont</code></td> <td><code>Font</code></td> <td><code>{weight: 'bold'}</code></td> <td>See <a href="/docs/4.3.1/general/fonts.html">Fonts</a>.</td></tr> <tr><td><code>titleAlign</code></td> <td><code>string</code></td> <td><code>'left'</code></td> <td>Horizontal alignment of the title text lines. <a href="#text-alignment">more...</a></td></tr> <tr><td><code>titleSpacing</code></td> <td><code>number</code></td> <td><code>2</code></td> <td>Spacing to add to top and bottom of each title line.</td></tr> <tr><td><code>titleMarginBottom</code></td> <td><code>number</code></td> <td><code>6</code></td> <td>Margin to add on bottom of title section.</td></tr> <tr><td><code>bodyColor</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'#fff'</code></td> <td>Color of body text.</td></tr> <tr><td><code>bodyFont</code></td> <td><code>Font</code></td> <td><code>{}</code></td> <td>See <a href="/docs/4.3.1/general/fonts.html">Fonts</a>.</td></tr> <tr><td><code>bodyAlign</code></td> <td><code>string</code></td> <td><code>'left'</code></td> <td>Horizontal alignment of the body text lines. <a href="#text-alignment">more...</a></td></tr> <tr><td><code>bodySpacing</code></td> <td><code>number</code></td> <td><code>2</code></td> <td>Spacing to add to top and bottom of each tooltip item.</td></tr> <tr><td><code>footerColor</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'#fff'</code></td> <td>Color of footer text.</td></tr> <tr><td><code>footerFont</code></td> <td><code>Font</code></td> <td><code>{weight: 'bold'}</code></td> <td>See <a href="/docs/4.3.1/general/fonts.html">Fonts</a>.</td></tr> <tr><td><code>footerAlign</code></td> <td><code>string</code></td> <td><code>'left'</code></td> <td>Horizontal alignment of the footer text lines. <a href="#text-alignment">more...</a></td></tr> <tr><td><code>footerSpacing</code></td> <td><code>number</code></td> <td><code>2</code></td> <td>Spacing to add to top and bottom of each footer line.</td></tr> <tr><td><code>footerMarginTop</code></td> <td><code>number</code></td> <td><code>6</code></td> <td>Margin to add before drawing the footer.</td></tr> <tr><td><code>padding</code></td> <td><a href="/docs/4.3.1/general/padding.html"><code>Padding</code></a></td> <td><code>6</code></td> <td>Padding inside the tooltip.</td></tr> <tr><td><code>caretPadding</code></td> <td><code>number</code></td> <td><code>2</code></td> <td>Extra distance to move the end of the tooltip arrow away from the tooltip point.</td></tr> <tr><td><code>caretSize</code></td> <td><code>number</code></td> <td><code>5</code></td> <td>Size, in px, of the tooltip arrow.</td></tr> <tr><td><code>cornerRadius</code></td> <td><code>number</code>|<code>object</code></td> <td><code>6</code></td> <td>Radius of tooltip corner curves.</td></tr> <tr><td><code>multiKeyBackground</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'#fff'</code></td> <td>Color to draw behind the colored boxes when multiple items are in the tooltip.</td></tr> <tr><td><code>displayColors</code></td> <td><code>boolean</code></td> <td><code>true</code></td> <td>If true, color boxes are shown in the tooltip.</td></tr> <tr><td><code>boxWidth</code></td> <td><code>number</code></td> <td><code>bodyFont.size</code></td> <td>Width of the color box if displayColors is true.</td></tr> <tr><td><code>boxHeight</code></td> <td><code>number</code></td> <td><code>bodyFont.size</code></td> <td>Height of the color box if displayColors is true.</td></tr> <tr><td><code>boxPadding</code></td> <td><code>number</code></td> <td><code>1</code></td> <td>Padding between the color box and the text.</td></tr> <tr><td><code>usePointStyle</code></td> <td><code>boolean</code></td> <td><code>false</code></td> <td>Use the corresponding point style (from dataset options) instead of color boxes, ex: star, triangle etc. (size is based on the minimum value between boxWidth and boxHeight).</td></tr> <tr><td><code>borderColor</code></td> <td><a href="/docs/4.3.1/general/colors.html"><code>Color</code></a></td> <td><code>'rgba(0, 0, 0, 0)'</code></td> <td>Color of the border.</td></tr> <tr><td><code>borderWidth</code></td> <td><code>number</code></td> <td><code>0</code></td> <td>Size of the border.</td></tr> <tr><td><code>rtl</code></td> <td><code>boolean</code></td> <td></td> <td><code>true</code> for rendering the tooltip from right to left.</td></tr> <tr><td><code>textDirection</code></td> <td><code>string</code></td> <td>canvas' default</td> <td>This will force the text direction <code>'rtl'</code> or <code>'ltr'</code> on the canvas for rendering the tooltips, regardless of the css specified on the canvas</td></tr> <tr><td><code>xAlign</code></td> <td><code>string</code></td> <td><code>undefined</code></td> <td>Position of the tooltip caret in the X direction. <a href="#tooltip-alignment">more</a></td></tr> <tr><td><code>yAlign</code></td> <td><code>string</code></td> <td><code>undefined</code></td> <td>Position of the tooltip caret in the Y direction. <a href="#tooltip-alignment">more</a></td></tr></tbody></table> <div class="custom-block tip"><p class="custom-block-title">Note</p> <p>If you need more visual customizations, please use an <a href="/docs/4.3.1/samples/tooltip/html.html">HTML tooltip</a>.</p></div> <h3 id="position-modes"><a href="#position-modes" class="header-anchor">#</a> Position Modes</h3> <p>Possible modes are:</p> <ul><li><code>'average'</code></li> <li><code>'nearest'</code></li></ul> <p><code>'average'</code> mode will place the tooltip at the average position of the items displayed in the tooltip. <code>'nearest'</code> will place the tooltip at the position of the element closest to the event position.</p> <p>You can also define <a href="#custom-position-modes">custom position modes</a>.</p> <h3 id="tooltip-alignment"><a href="#tooltip-alignment" class="header-anchor">#</a> Tooltip Alignment</h3> <p>The <code>xAlign</code> and <code>yAlign</code> options define the position of the tooltip caret. If these parameters are unset, the optimal caret position is determined.</p> <p>The following values for the <code>xAlign</code> setting are supported.</p> <ul><li><code>'left'</code></li> <li><code>'center'</code></li> <li><code>'right'</code></li></ul> <p>The following values for the <code>yAlign</code> setting are supported.</p> <ul><li><code>'top'</code></li> <li><code>'center'</code></li> <li><code>'bottom'</code></li></ul> <h3 id="text-alignment"><a href="#text-alignment" class="header-anchor">#</a> Text Alignment</h3> <p>The <code>titleAlign</code>, <code>bodyAlign</code> and <code>footerAlign</code> options define the horizontal position of the text lines with respect to the tooltip box. The following values are supported.</p> <ul><li><code>'left'</code> (default)</li> <li><code>'right'</code></li> <li><code>'center'</code></li></ul> <p>These options are only applied to text lines. Color boxes are always aligned to the left edge.</p> <h3 id="sort-callback"><a href="#sort-callback" class="header-anchor">#</a> Sort Callback</h3> <p>Allows sorting of <a href="#tooltip-item-context">tooltip items</a>. Must implement at minimum a function that can be passed to <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort" target="_blank" rel="noopener noreferrer">Array.prototype.sort<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. This function can also accept a third parameter that is the data object passed to the chart.</p> <h3 id="filter-callback"><a href="#filter-callback" class="header-anchor">#</a> Filter Callback</h3> <p>Allows filtering of <a href="#tooltip-item-context">tooltip items</a>. Must implement at minimum a function that can be passed to <a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter" target="_blank" rel="noopener noreferrer">Array.prototype.filter<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. This function can also accept a fourth parameter that is the data object passed to the chart.</p> <h2 id="tooltip-callbacks"><a href="#tooltip-callbacks" class="header-anchor">#</a> Tooltip Callbacks</h2> <p>Namespace: <code>options.plugins.tooltip.callbacks</code>, the tooltip has the following callbacks for providing text. For all functions, <code>this</code> will be the tooltip object created from the <code>Tooltip</code> constructor. If the callback returns <code>undefined</code>, then the default callback will be used. To remove things from the tooltip callback should return an empty string.</p> <p>Namespace: <code>data.datasets[].tooltip.callbacks</code>, items marked with <code>Yes</code> in the column <code>Dataset override</code> can be overridden per dataset.</p> <p>A <a href="#tooltip-item-context">tooltip item context</a> is generated for each item that appears in the tooltip. This is the primary model that the callback methods interact with. For functions that return text, arrays of strings are treated as multiple lines of text.</p> <table><thead><tr><th>Name</th> <th>Arguments</th> <th>Return Type</th> <th>Dataset override</th> <th>Description</th></tr></thead> <tbody><tr><td><code>beforeTitle</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns the text to render before the title.</td></tr> <tr><td><code>title</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render as the title of the tooltip.</td></tr> <tr><td><code>afterTitle</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render after the title.</td></tr> <tr><td><code>beforeBody</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render before the body section.</td></tr> <tr><td><code>beforeLabel</code></td> <td><code>TooltipItem</code></td> <td><code>string | string[] | undefined</code></td> <td>Yes</td> <td>Returns text to render before an individual label. This will be called for each item in the tooltip.</td></tr> <tr><td><code>label</code></td> <td><code>TooltipItem</code></td> <td><code>string | string[] | undefined</code></td> <td>Yes</td> <td>Returns text to render for an individual item in the tooltip. <a href="#label-callback">more...</a></td></tr> <tr><td><code>labelColor</code></td> <td><code>TooltipItem</code></td> <td><code>object | undefined</code></td> <td>Yes</td> <td>Returns the colors to render for the tooltip item. <a href="#label-color-callback">more...</a></td></tr> <tr><td><code>labelTextColor</code></td> <td><code>TooltipItem</code></td> <td><code>Color | undefined</code></td> <td>Yes</td> <td>Returns the colors for the text of the label for the tooltip item.</td></tr> <tr><td><code>labelPointStyle</code></td> <td><code>TooltipItem</code></td> <td><code>object | undefined</code></td> <td>Yes</td> <td>Returns the point style to use instead of color boxes if usePointStyle is true (object with values <code>pointStyle</code> and <code>rotation</code>). Default implementation uses the point style from the dataset points. <a href="#label-point-style-callback">more...</a></td></tr> <tr><td><code>afterLabel</code></td> <td><code>TooltipItem</code></td> <td><code>string | string[] | undefined</code></td> <td>Yes</td> <td>Returns text to render after an individual label.</td></tr> <tr><td><code>afterBody</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render after the body section.</td></tr> <tr><td><code>beforeFooter</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render before the footer section.</td></tr> <tr><td><code>footer</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Returns text to render as the footer of the tooltip.</td></tr> <tr><td><code>afterFooter</code></td> <td><code>TooltipItem[]</code></td> <td><code>string | string[] | undefined</code></td> <td></td> <td>Text to render after the footer section.</td></tr></tbody></table> <h3 id="label-callback"><a href="#label-callback" class="header-anchor">#</a> Label Callback</h3> <p>The <code>label</code> callback can change the text that displays for a given data point. A common example to show a unit. The example below puts a <code>'$'</code> before every row.</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">const</span> chart <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Chart</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">callbacks</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token function-variable function">label</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">context</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">let</span> label <span class="token operator">=</span> context<span class="token punctuation">.</span>dataset<span class="token punctuation">.</span>label <span class="token operator">||</span> <span class="token string">''</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>label<span class="token punctuation">)</span> <span class="token punctuation">{</span>
label <span class="token operator">+=</span> <span class="token string">': '</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>context<span class="token punctuation">.</span>parsed<span class="token punctuation">.</span>y <span class="token operator">!==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
label <span class="token operator">+=</span> <span class="token keyword">new</span> <span class="token class-name">Intl<span class="token punctuation">.</span>NumberFormat</span><span class="token punctuation">(</span><span class="token string">'en-US'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token literal-property property">style</span><span class="token operator">:</span> <span class="token string">'currency'</span><span class="token punctuation">,</span> <span class="token literal-property property">currency</span><span class="token operator">:</span> <span class="token string">'USD'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>context<span class="token punctuation">.</span>parsed<span class="token punctuation">.</span>y<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> label<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="label-color-callback"><a href="#label-color-callback" class="header-anchor">#</a> Label Color Callback</h3> <p>For example, to return a red box with a blue dashed border that has a border radius for each item in the tooltip you could do:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">const</span> chart <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Chart</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">callbacks</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token function-variable function">labelColor</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">context</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>
<span class="token literal-property property">borderColor</span><span class="token operator">:</span> <span class="token string">'rgb(0, 0, 255)'</span><span class="token punctuation">,</span>
<span class="token literal-property property">backgroundColor</span><span class="token operator">:</span> <span class="token string">'rgb(255, 0, 0)'</span><span class="token punctuation">,</span>
<span class="token literal-property property">borderWidth</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
<span class="token literal-property property">borderDash</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">borderRadius</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token function-variable function">labelTextColor</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">context</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token string">'#543453'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="label-point-style-callback"><a href="#label-point-style-callback" class="header-anchor">#</a> Label Point Style Callback</h3> <p>For example, to draw triangles instead of the regular color box for each item in the tooltip, you could do:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">const</span> chart <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Chart</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'line'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">usePointStyle</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token literal-property property">callbacks</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token function-variable function">labelPointStyle</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">context</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>
<span class="token literal-property property">pointStyle</span><span class="token operator">:</span> <span class="token string">'triangle'</span><span class="token punctuation">,</span>
<span class="token literal-property property">rotation</span><span class="token operator">:</span> <span class="token number">0</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><h3 id="tooltip-item-context"><a href="#tooltip-item-context" class="header-anchor">#</a> Tooltip Item Context</h3> <p>The tooltip items passed to the tooltip callbacks implement the following interface.</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
<span class="token comment">// The chart the tooltip is being shown on</span>
<span class="token literal-property property">chart</span><span class="token operator">:</span> Chart
<span class="token comment">// Label for the tooltip</span>
<span class="token literal-property property">label</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
<span class="token comment">// Parsed data values for the given `dataIndex` and `datasetIndex`</span>
<span class="token literal-property property">parsed</span><span class="token operator">:</span> object<span class="token punctuation">,</span>
<span class="token comment">// Raw data values for the given `dataIndex` and `datasetIndex`</span>
<span class="token literal-property property">raw</span><span class="token operator">:</span> object<span class="token punctuation">,</span>
<span class="token comment">// Formatted value for the tooltip</span>
<span class="token literal-property property">formattedValue</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
<span class="token comment">// The dataset the item comes from</span>
<span class="token literal-property property">dataset</span><span class="token operator">:</span> object
<span class="token comment">// Index of the dataset the item comes from</span>
<span class="token literal-property property">datasetIndex</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token comment">// Index of this data item in the dataset</span>
<span class="token literal-property property">dataIndex</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token comment">// The chart element (point, arc, bar, etc.) for this tooltip item</span>
<span class="token literal-property property">element</span><span class="token operator">:</span> Element<span class="token punctuation">,</span>
<span class="token punctuation">}</span>
</code></pre></div><h2 id="external-custom-tooltips"><a href="#external-custom-tooltips" class="header-anchor">#</a> External (Custom) Tooltips</h2> <p>External tooltips allow you to hook into the tooltip rendering process so that you can render the tooltip in your own custom way. Generally this is used to create an HTML tooltip instead of an on-canvas tooltip. The <code>external</code> option takes a function which is passed a context parameter containing the <code>chart</code> and <code>tooltip</code>. You can enable external tooltips in the global or chart configuration like so:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">const</span> myPieChart <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Chart</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> <span class="token punctuation">{</span>
<span class="token literal-property property">type</span><span class="token operator">:</span> <span class="token string">'pie'</span><span class="token punctuation">,</span>
<span class="token literal-property property">data</span><span class="token operator">:</span> data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token comment">// Disable the on-canvas tooltip</span>
<span class="token literal-property property">enabled</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
<span class="token function-variable function">external</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">context</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// Tooltip Element</span>
<span class="token keyword">let</span> tooltipEl <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'chartjs-tooltip'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Create element on first render</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>tooltipEl<span class="token punctuation">)</span> <span class="token punctuation">{</span>
tooltipEl <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">'div'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>id <span class="token operator">=</span> <span class="token string">'chartjs-tooltip'</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> <span class="token string">'<table></table>'</span><span class="token punctuation">;</span>
document<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">appendChild</span><span class="token punctuation">(</span>tooltipEl<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">// Hide if no tooltip</span>
<span class="token keyword">const</span> tooltipModel <span class="token operator">=</span> context<span class="token punctuation">.</span>tooltip<span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>tooltipModel<span class="token punctuation">.</span>opacity <span class="token operator">===</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>opacity <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token keyword">return</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">// Set caret Position</span>
tooltipEl<span class="token punctuation">.</span>classList<span class="token punctuation">.</span><span class="token function">remove</span><span class="token punctuation">(</span><span class="token string">'above'</span><span class="token punctuation">,</span> <span class="token string">'below'</span><span class="token punctuation">,</span> <span class="token string">'no-transform'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>tooltipModel<span class="token punctuation">.</span>yAlign<span class="token punctuation">)</span> <span class="token punctuation">{</span>
tooltipEl<span class="token punctuation">.</span>classList<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>tooltipModel<span class="token punctuation">.</span>yAlign<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
tooltipEl<span class="token punctuation">.</span>classList<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span><span class="token string">'no-transform'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">getBody</span><span class="token punctuation">(</span><span class="token parameter">bodyItem</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> bodyItem<span class="token punctuation">.</span>lines<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token comment">// Set Text</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>tooltipModel<span class="token punctuation">.</span>body<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> titleLines <span class="token operator">=</span> tooltipModel<span class="token punctuation">.</span>title <span class="token operator">||</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> bodyLines <span class="token operator">=</span> tooltipModel<span class="token punctuation">.</span>body<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>getBody<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">let</span> innerHtml <span class="token operator">=</span> <span class="token string">'<thead>'</span><span class="token punctuation">;</span>
titleLines<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">title</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
innerHtml <span class="token operator">+=</span> <span class="token string">'<tr><th>'</span> <span class="token operator">+</span> title <span class="token operator">+</span> <span class="token string">'</th></tr>'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
innerHtml <span class="token operator">+=</span> <span class="token string">'</thead><tbody>'</span><span class="token punctuation">;</span>
bodyLines<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">body<span class="token punctuation">,</span> i</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> colors <span class="token operator">=</span> tooltipModel<span class="token punctuation">.</span>labelColors<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token keyword">let</span> style <span class="token operator">=</span> <span class="token string">'background:'</span> <span class="token operator">+</span> colors<span class="token punctuation">.</span>backgroundColor<span class="token punctuation">;</span>
style <span class="token operator">+=</span> <span class="token string">'; border-color:'</span> <span class="token operator">+</span> colors<span class="token punctuation">.</span>borderColor<span class="token punctuation">;</span>
style <span class="token operator">+=</span> <span class="token string">'; border-width: 2px'</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> span <span class="token operator">=</span> <span class="token string">'<span style="'</span> <span class="token operator">+</span> style <span class="token operator">+</span> <span class="token string">'">'</span> <span class="token operator">+</span> body <span class="token operator">+</span> <span class="token string">'</span>'</span><span class="token punctuation">;</span>
innerHtml <span class="token operator">+=</span> <span class="token string">'<tr><td>'</span> <span class="token operator">+</span> span <span class="token operator">+</span> <span class="token string">'</td></tr>'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
innerHtml <span class="token operator">+=</span> <span class="token string">'</tbody>'</span><span class="token punctuation">;</span>
<span class="token keyword">let</span> tableRoot <span class="token operator">=</span> tooltipEl<span class="token punctuation">.</span><span class="token function">querySelector</span><span class="token punctuation">(</span><span class="token string">'table'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
tableRoot<span class="token punctuation">.</span>innerHTML <span class="token operator">=</span> innerHtml<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">const</span> position <span class="token operator">=</span> context<span class="token punctuation">.</span>chart<span class="token punctuation">.</span>canvas<span class="token punctuation">.</span><span class="token function">getBoundingClientRect</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> bodyFont <span class="token operator">=</span> Chart<span class="token punctuation">.</span>helpers<span class="token punctuation">.</span><span class="token function">toFont</span><span class="token punctuation">(</span>tooltipModel<span class="token punctuation">.</span>options<span class="token punctuation">.</span>bodyFont<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Display, position, and set styles for font</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>opacity <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>position <span class="token operator">=</span> <span class="token string">'absolute'</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>left <span class="token operator">=</span> position<span class="token punctuation">.</span>left <span class="token operator">+</span> window<span class="token punctuation">.</span>pageXOffset <span class="token operator">+</span> tooltipModel<span class="token punctuation">.</span>caretX <span class="token operator">+</span> <span class="token string">'px'</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>top <span class="token operator">=</span> position<span class="token punctuation">.</span>top <span class="token operator">+</span> window<span class="token punctuation">.</span>pageYOffset <span class="token operator">+</span> tooltipModel<span class="token punctuation">.</span>caretY <span class="token operator">+</span> <span class="token string">'px'</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>font <span class="token operator">=</span> bodyFont<span class="token punctuation">.</span>string<span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>padding <span class="token operator">=</span> tooltipModel<span class="token punctuation">.</span>padding <span class="token operator">+</span> <span class="token string">'px '</span> <span class="token operator">+</span> tooltipModel<span class="token punctuation">.</span>padding <span class="token operator">+</span> <span class="token string">'px'</span><span class="token punctuation">;</span>
tooltipEl<span class="token punctuation">.</span>style<span class="token punctuation">.</span>pointerEvents <span class="token operator">=</span> <span class="token string">'none'</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre></div><p>See <a href="/docs/4.3.1/samples/tooltip/html.html">samples</a> for examples on how to get started with external tooltips.</p> <h2 id="tooltip-model"><a href="#tooltip-model" class="header-anchor">#</a> Tooltip Model</h2> <p>The tooltip model contains parameters that can be used to render the tooltip.</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token punctuation">{</span>
<span class="token literal-property property">chart</span><span class="token operator">:</span> Chart<span class="token punctuation">,</span>
<span class="token comment">// The items that we are rendering in the tooltip. See Tooltip Item Interface section</span>
<span class="token literal-property property">dataPoints</span><span class="token operator">:</span> TooltipItem<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// Positioning</span>
<span class="token literal-property property">xAlign</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
<span class="token literal-property property">yAlign</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
<span class="token comment">// X and Y properties are the top left of the tooltip</span>
<span class="token literal-property property">x</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token literal-property property">y</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token literal-property property">width</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token literal-property property">height</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token comment">// Where the tooltip points to</span>
<span class="token literal-property property">caretX</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token literal-property property">caretY</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token comment">// Body</span>
<span class="token comment">// The body lines that need to be rendered</span>
<span class="token comment">// Each object contains 3 parameters</span>
<span class="token comment">// before: string[] // lines of text before the line with the color square</span>
<span class="token comment">// lines: string[], // lines of text to render as the main item with color square</span>
<span class="token comment">// after: string[], // lines of text to render after the main lines</span>
<span class="token literal-property property">body</span><span class="token operator">:</span> object<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// lines of text that appear after the title but before the body</span>
<span class="token literal-property property">beforeBody</span><span class="token operator">:</span> string<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// line of text that appear after the body and before the footer</span>
<span class="token literal-property property">afterBody</span><span class="token operator">:</span> string<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// Title</span>
<span class="token comment">// lines of text that form the title</span>
<span class="token literal-property property">title</span><span class="token operator">:</span> string<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// Footer</span>
<span class="token comment">// lines of text that form the footer</span>
<span class="token literal-property property">footer</span><span class="token operator">:</span> string<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// style to render for each item in body[]. This is the style of the squares in the tooltip</span>
<span class="token literal-property property">labelColors</span><span class="token operator">:</span> TooltipLabelStyle<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">labelTextColors</span><span class="token operator">:</span> Color<span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token literal-property property">labelPointStyles</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token literal-property property">pointStyle</span><span class="token operator">:</span> PointStyle<span class="token punctuation">;</span> rotation<span class="token operator">:</span> number <span class="token punctuation">}</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// 0 opacity is a hidden tooltip</span>
<span class="token literal-property property">opacity</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
<span class="token comment">// tooltip options</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> Object
<span class="token punctuation">}</span>
</code></pre></div><h2 id="custom-position-modes"><a href="#custom-position-modes" class="header-anchor">#</a> Custom Position Modes</h2> <p>New modes can be defined by adding functions to the <code>Chart.Tooltip.positioners</code> map.</p> <p>Example:</p> <div class="language-javascript extra-class"><pre class="language-javascript"><code><span class="token keyword">import</span> <span class="token punctuation">{</span> Tooltip <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">'chart.js'</span><span class="token punctuation">;</span>
<span class="token comment">/**
* Custom positioner
* @function Tooltip.positioners.myCustomPositioner
* @param elements {Chart.Element[]} the tooltip elements
* @param eventPosition {Point} the position of the event in canvas coordinates
* @returns {TooltipPosition} the tooltip position
*/</span>
Tooltip<span class="token punctuation">.</span>positioners<span class="token punctuation">.</span><span class="token function-variable function">myCustomPositioner</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">elements<span class="token punctuation">,</span> eventPosition</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// A reference to the tooltip model</span>
<span class="token keyword">const</span> tooltip <span class="token operator">=</span> <span class="token keyword">this</span><span class="token punctuation">;</span>
<span class="token comment">/* ... */</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>
<span class="token literal-property property">x</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
<span class="token literal-property property">y</span><span class="token operator">:</span> <span class="token number">0</span>
<span class="token comment">// You may also include xAlign and yAlign to override those tooltip options.</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
<span class="token comment">// Then, to use it...</span>
<span class="token keyword">new</span> <span class="token class-name">Chart<span class="token punctuation">.</span>js</span><span class="token punctuation">(</span>ctx<span class="token punctuation">,</span> <span class="token punctuation">{</span>
data<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">tooltip</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">position</span><span class="token operator">:</span> <span class="token string">'myCustomPositioner'</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</code></pre></div><p>See <a href="/docs/4.3.1/samples/tooltip/position.html">samples</a> for a more detailed example.</p> <p>If you're using TypeScript, you'll also need to register the new mode:</p> <div class="language-typescript extra-class"><pre class="language-typescript"><code><span class="token keyword">declare</span> <span class="token keyword">module</span> <span class="token string">'chart.js'</span> <span class="token punctuation">{</span>
<span class="token keyword">interface</span> <span class="token class-name">TooltipPositionerMap</span> <span class="token punctuation">{</span>
myCustomPositioner<span class="token operator">:</span> TooltipPositionerFunction<span class="token operator"><</span>ChartType<span class="token operator">></span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre></div></div> <footer class="page-edit"><!----> <div class="last-updated"><span class="prefix">Last Updated:</span> <span class="time">7/24/2023, 7:40:34 PM</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
←
<a href="/docs/4.3.1/configuration/title.html" class="prev">
Title
</a></span> <span class="next"><a href="/docs/4.3.1/charts/area.html">
Area Chart
</a>
→
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/docs/4.3.1/assets/js/app.36b7f5fb.js" defer></script><script src="/docs/4.3.1/assets/js/2.23e11f66.js" defer></script><script src="/docs/4.3.1/assets/js/169.616b7bce.js" defer></script>
</body>
</html>