diff --git a/src/app/charts/donut-chart/donut-chart.component.ts b/src/app/charts/donut-chart/donut-chart.component.ts
index e75adf556..296075141 100644
--- a/src/app/charts/donut-chart/donut-chart.component.ts
+++ b/src/app/charts/donut-chart/donut-chart.component.ts
@@ -1,6 +1,6 @@
import { Component, Input } from '@angular/core';
import { Chart } from 'chart.js'
-import { LabelOptions } from '@angular/material/core';
+import { tooltip } from '../tooltip'
@Component({
selector: 'app-donut-chart',
@@ -71,6 +71,11 @@ export class DonutChartComponent {
responsive: false,
legend: {
display: false
+ },
+ tooltips: {
+ // Disable the on-canvas tooltip
+ enabled: false,
+ custom: tooltip(),
}
}
});
diff --git a/src/app/charts/tooltip.ts b/src/app/charts/tooltip.ts
new file mode 100644
index 000000000..d46e33848
--- /dev/null
+++ b/src/app/charts/tooltip.ts
@@ -0,0 +1,62 @@
+// Adapted from https://www.chartjs.org/samples/latest/tooltips/custom-pie.html
+export let tooltip: () => (tooltip: any) => void =
+ function (): (tooltip: any) => void {
+ return function (tooltip: any): void {
+ // Tooltip Element
+ const tooltipEl = document.getElementById('chartjs-tooltip');
+
+ // Hide if no tooltip
+ if (tooltip.opacity === 0) {
+ tooltipEl.style.opacity = '0';
+ return;
+ }
+
+ // Set caret Position
+ tooltipEl.classList.remove('above', 'below', 'no-transform');
+ if (tooltip.yAlign) {
+ tooltipEl.classList.add(tooltip.yAlign);
+ } else {
+ tooltipEl.classList.add('no-transform');
+ }
+
+ function getBody(bodyItem) {
+ return bodyItem.lines;
+ }
+
+ // Set Text
+ if (tooltip.body) {
+ let titleLines = tooltip.title || [];
+ const bodyLines = tooltip.body.map(getBody);
+
+ let innerHtml = '';
+
+ titleLines.forEach(function (title) {
+ innerHtml += ' ';
+ });
+ innerHtml += '' + title + '