UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

62 lines (59 loc) 1.88 kB
import { DashboardVisualisationType } from '../../../_dashboards/dashboard-visualisation/types.js'; import { Chart } from '../Chart.js'; import DoughnutChartSchemas from './validate.js'; /* eslint-disable prefer-destructuring */ class DoughnutChart extends Chart { definition; measures; keys; init = () => { this.measures = this.definition.columns.measures; this.keys = this.definition.columns.keys || []; this.initUnit(this.measures); }; withDefinition = (definition) => { this.definition = DoughnutChartSchemas.DoughnutSchema.parse(definition); this.init(); return this; }; build = () => { this.createDatasets(this.measures, this.keys); this.augmentDataset(); this.setBespokeOptions(); return { type: DashboardVisualisationType.DONUT, options: { unit: this.unit, }, data: { labels: this.labels, datasets: this.datasets, config: this.config, }, }; }; augmentDataset = () => { const hexColours = this.chartColoursHelper.getHexPallette(); this.datasets = this.datasets.map(set => { return { ...set, backgroundColor: [...hexColours, ...hexColours], borderColor: '#FFFFFF', hoverOffset: 4, datalabels: { anchor: 'center', borderWidth: 0, }, }; }); }; setBespokeOptions = () => { const cutout = this.datasets.length === 1 ? '50%' : '20%'; this.config = { ...this.config, cutout, }; }; } export { DoughnutChart, DoughnutChart as default }; //# sourceMappingURL=DoughnutChart.js.map