UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

54 lines (46 loc) 3.52 kB
import { head } from "lodash"; import { DHIS2Chart } from "./index"; export class DHIS2PieChart extends DHIS2Chart { getHighchartsType() { return "pie"; } getPlotOptions() { return { pie: { allowPointSelect: true, cursor: "pointer", dataLabels: { enabled: true, format: "<b>{point.name}</b>: {point.percentage:.1f} %" } } }; } getSeries() { var _analytics$headers$fi, _analytics$headers, _analytics$headers$fi2, _analytics$headers2, _analytics$metaData, _analytics$metaData$d, _analytics$metaData$i, _analytics$metaData2, _analytics$metaData2$, _analytics$metaData2$2; const analytics = this.analytics; const config = this.config; const seriesDimension = head(config.layout.series); const seriesIndex = (_analytics$headers$fi = analytics === null || analytics === void 0 ? void 0 : (_analytics$headers = analytics.headers) === null || _analytics$headers === void 0 ? void 0 : _analytics$headers.findIndex(h => h.name === seriesDimension)) !== null && _analytics$headers$fi !== void 0 ? _analytics$headers$fi : -1; const valueIndex = (_analytics$headers$fi2 = analytics === null || analytics === void 0 ? void 0 : (_analytics$headers2 = analytics.headers) === null || _analytics$headers2 === void 0 ? void 0 : _analytics$headers2.findIndex(h => h.name === "value")) !== null && _analytics$headers$fi2 !== void 0 ? _analytics$headers$fi2 : -1; if (!seriesDimension) { throw new Error("Pie chart must have a series dimension"); } const seriesValues = (_analytics$metaData = analytics.metaData) === null || _analytics$metaData === void 0 ? void 0 : (_analytics$metaData$d = _analytics$metaData.dimensions) === null || _analytics$metaData$d === void 0 ? void 0 : _analytics$metaData$d[seriesDimension]; return [{ id: seriesDimension !== null && seriesDimension !== void 0 ? seriesDimension : "", name: (_analytics$metaData$i = (_analytics$metaData2 = analytics.metaData) === null || _analytics$metaData2 === void 0 ? void 0 : (_analytics$metaData2$ = _analytics$metaData2.items) === null || _analytics$metaData2$ === void 0 ? void 0 : (_analytics$metaData2$2 = _analytics$metaData2$[seriesDimension]) === null || _analytics$metaData2$2 === void 0 ? void 0 : _analytics$metaData2$2.name) !== null && _analytics$metaData$i !== void 0 ? _analytics$metaData$i : "", data: seriesValues === null || seriesValues === void 0 ? void 0 : seriesValues.map(value => { var _analytics$rows, _analytics$metaData3, _analytics$metaData3$, _analytics$metaData3$2, _row$valueIndex; const row = analytics === null || analytics === void 0 ? void 0 : (_analytics$rows = analytics.rows) === null || _analytics$rows === void 0 ? void 0 : _analytics$rows.find(row => row[seriesIndex] === value); return { name: (_analytics$metaData3 = analytics.metaData) === null || _analytics$metaData3 === void 0 ? void 0 : (_analytics$metaData3$ = _analytics$metaData3.items) === null || _analytics$metaData3$ === void 0 ? void 0 : (_analytics$metaData3$2 = _analytics$metaData3$[value]) === null || _analytics$metaData3$2 === void 0 ? void 0 : _analytics$metaData3$2.name, y: row !== null && row !== void 0 && row[valueIndex] ? parseFloat((_row$valueIndex = row === null || row === void 0 ? void 0 : row[valueIndex]) !== null && _row$valueIndex !== void 0 ? _row$valueIndex : "") : 0 }; }) }]; } getXAxis() { return undefined; } }