Вы можете агрегировать все низкие значения в одном уникальном слайсе пончика, например, для значений <50. </p>
Затем, когда пользователь нажимает на этот агрегированный слайс, другой пончик может отображаться со всеми значениями <50. </p>
Для этого используйте событие (chartClick)
в элементе baseChart
.
<div class="chart-wrapper">
<canvas baseChart height="300" [options]="mainOptions"
[data]="mainData" [chartType]="'doughnut'"
(chartClick)="chartClicked($event)">
</canvas>
</div>
<div class="chart-wrapper" *ngIf="zoomEnabled">
<canvas baseChart height="300" [options]="zoomOptions"
[data]="zoomData" [chartType]="'doughnut'"
(chartClick)="chartClicked($event)">
</canvas>
<button *ngIf="zoomEnabled" (click)="disableZoom()">Hide</button>
</div>
Установите флаг zoomEnabled
в значение true, когда пользователь нажал на Others
slice:
chartClicked({ event, active }: { event: MouseEvent; active: {}[] }): void {
const chart = (active[0] as any)._chart;
const activePoints = chart.getElementAtEvent(event);
const clickedElementIndex = activePoints[0]._index;
if (clickedElementIndex === 0) {
this.enableZoom();
}
}
PS: здесь мы считаем, что срез с index: 0
является агрегированным срезом с более низкими значениями. Но вы можете представить более сложный сценарий с метками ...
См. это упрощенное демо Stackblitz .