@rinminase/ng-charts
Version:
Reactive, responsive, beautiful charts for Angular based on ng2-charts
1 lines • 73.7 kB
Source Map (JSON)
{"version":3,"file":"rinminase-ng-charts.mjs","sources":["../../src/lib/default-colors.ts","../../src/lib/get-colors.ts","../../src/lib/theme.service.ts","../../src/lib/base-chart.directive.ts","../../src/lib/charts.module.ts","../../src/lib/monkey-patch-chart-js-legend.ts","../../src/lib/monkey-patch-chart-js-tooltip.ts","../../src/rinminase-ng-charts.ts"],"sourcesContent":["export const defaultColors: Array<number[]> = [\n [255, 99, 132],\n [54, 162, 235],\n [255, 206, 86],\n [231, 233, 237],\n [75, 192, 192],\n [151, 187, 205],\n [220, 220, 220],\n [247, 70, 74],\n [70, 191, 189],\n [253, 180, 92],\n [148, 159, 177],\n [77, 83, 96],\n];\n","import { DatasetColor } from \"./color\";\nimport { Colors } from \"./colors\";\nimport { defaultColors } from \"./default-colors\";\n\n/**\n * Generate colors by chart type\n */\nexport function getColors(\n chartType: string,\n index: number,\n count: number\n): DatasetColor {\n if (chartType === \"pie\" || chartType === \"doughnut\") {\n return formatPieColors(generateColors(count));\n }\n\n if (chartType === \"polarArea\") {\n return formatPolarAreaColors(generateColors(count));\n }\n\n if (chartType === \"line\" || chartType === \"radar\") {\n return formatLineColor(generateColor(index));\n }\n\n if (chartType === \"bar\" || chartType === \"horizontalBar\") {\n return formatBarColor(generateColor(index));\n }\n\n if (chartType === \"bubble\") {\n return formatPieColors(generateColors(count));\n }\n\n if (chartType === \"scatter\") {\n return formatPieColors(generateColors(count));\n }\n\n throw new Error(`getColors - Unsupported chart type ${chartType}`);\n}\n\nfunction rgba(colour: Array<number>, alpha: number): string {\n return \"rgba(\" + colour.concat(alpha).join(\",\") + \")\";\n}\n\nfunction getRandomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nfunction formatLineColor(colors: Array<number>): DatasetColor {\n return {\n backgroundColor: rgba(colors, 0.4),\n borderColor: rgba(colors, 1),\n pointBackgroundColor: rgba(colors, 1),\n pointBorderColor: \"#fff\",\n pointHoverBackgroundColor: \"#fff\",\n pointHoverBorderColor: rgba(colors, 0.8),\n };\n}\n\nfunction formatBarColor(colors: Array<number>): DatasetColor {\n return {\n backgroundColor: rgba(colors, 0.6),\n borderColor: rgba(colors, 1),\n hoverBackgroundColor: rgba(colors, 0.8),\n hoverBorderColor: rgba(colors, 1),\n };\n}\n\nfunction formatPieColors(colors: Array<number[]>): Colors {\n return {\n backgroundColor: colors.map((color: number[]) => rgba(color, 0.6)),\n borderColor: colors.map(() => \"#fff\"),\n pointBackgroundColor: colors.map((color: number[]) => rgba(color, 1)),\n pointBorderColor: colors.map(() => \"#fff\"),\n pointHoverBackgroundColor: colors.map((color: number[]) => rgba(color, 1)),\n pointHoverBorderColor: colors.map((color: number[]) => rgba(color, 1)),\n };\n}\n\nfunction formatPolarAreaColors(colors: Array<number[]>): DatasetColor {\n return {\n backgroundColor: colors.map((color: number[]) => rgba(color, 0.6)),\n borderColor: colors.map((color: number[]) => rgba(color, 1)),\n hoverBackgroundColor: colors.map((color: number[]) => rgba(color, 0.8)),\n hoverBorderColor: colors.map((color: number[]) => rgba(color, 1)),\n };\n}\n\nfunction getRandomColor(): number[] {\n return [getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255)];\n}\n\n/**\n * Generate colors for line|bar charts\n */\nfunction generateColor(index: number): number[] {\n return defaultColors[index] || getRandomColor();\n}\n\n/**\n * Generate colors for pie|doughnut charts\n */\nfunction generateColors(count: number): Array<number[]> {\n const colorsArr: Array<number[]> = new Array(count);\n for (let i = 0; i < count; i++) {\n colorsArr[i] = defaultColors[i] || getRandomColor();\n }\n return colorsArr;\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { ChartOptions } from \"chart.js\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ThemeService {\n private pColorschemesOptions: ChartOptions = {};\n public colorschemesOptions = new BehaviorSubject<ChartOptions>({});\n\n constructor() {}\n\n setColorschemesOptions(options: ChartOptions) {\n this.pColorschemesOptions = options;\n this.colorschemesOptions.next(options);\n }\n\n getColorschemesOptions() {\n return this.pColorschemesOptions;\n }\n}\n","import {\n Directive,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport * as chartJs from \"chart.js\";\nimport { getColors } from \"./get-colors\";\nimport { DatasetColor } from \"./color\";\nimport { ThemeService } from \"./theme.service\";\nimport { Subscription } from \"rxjs\";\nimport { cloneDeep } from \"lodash-es\";\n\nexport type SingleDataSet = number[] | chartJs.ChartPoint[];\nexport type MultiDataSet = (number[] | chartJs.ChartPoint[])[];\nexport type SingleOrMultiDataSet = SingleDataSet | MultiDataSet;\n\nexport type PluginServiceGlobalRegistrationAndOptions = chartJs.PluginServiceGlobalRegistration &\n chartJs.PluginServiceRegistrationOptions;\nexport type SingleLineLabel = string;\nexport type MultiLineLabel = string[];\n\nexport type ChartLabel = SingleLineLabel | MultiLineLabel;\nexport type ChartColor = DatasetColor[];\nexport type ChartType = chartJs.ChartType;\nexport type ChartDataset = chartJs.ChartDataSets;\nexport type ChartDatasets = chartJs.ChartDataSets[];\nexport type ChartOptions = chartJs.ChartOptions;\n\ninterface OldState {\n dataExists: boolean;\n dataLength: number;\n datasetsExists: boolean;\n datasetsLength: number;\n datasetsDataObjects: any[];\n datasetsDataLengths: number[];\n colorsExists: boolean;\n colors: DatasetColor[];\n labelsExist: boolean;\n labels: ChartLabel[];\n legendExists: boolean;\n legend: {\n position?: string;\n };\n}\n\nenum UpdateType {\n Default,\n Update,\n Refresh,\n}\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: \"canvas[baseChart]\",\n exportAs: \"base-chart\",\n})\nexport class BaseChartDirective\n implements OnDestroy, OnChanges, OnInit, OnDestroy, DoCheck {\n @Input() public data: SingleOrMultiDataSet;\n @Input() public datasets: ChartDatasets;\n @Input() public labels: ChartLabel[];\n @Input() public options: ChartOptions = {};\n @Input() public chartType: ChartType;\n @Input() public colors: DatasetColor[];\n @Input() public legend: boolean;\n @Input() public plugins: PluginServiceGlobalRegistrationAndOptions[];\n\n @Output() public chartClick: EventEmitter<{\n event?: MouseEvent;\n active?: {}[];\n }> = new EventEmitter();\n @Output() public chartHover: EventEmitter<{\n event: MouseEvent;\n active: {}[];\n }> = new EventEmitter();\n\n public ctx: string;\n public chart: Chart;\n\n private old: OldState = {\n dataExists: false,\n dataLength: 0,\n datasetsExists: false,\n datasetsLength: 0,\n datasetsDataObjects: [],\n datasetsDataLengths: [],\n colorsExists: false,\n colors: [],\n labelsExist: false,\n labels: [],\n legendExists: false,\n legend: {},\n };\n\n private subs: Subscription[] = [];\n\n /**\n * Register a plugin.\n */\n public static registerPlugin(\n plugin: PluginServiceGlobalRegistrationAndOptions\n ) {\n chartJs.Chart.plugins.register(plugin);\n }\n\n public static unregisterPlugin(\n plugin: PluginServiceGlobalRegistrationAndOptions\n ) {\n chartJs.Chart.plugins.unregister(plugin);\n }\n\n public constructor(\n private element: ElementRef,\n private themeService: ThemeService\n ) {}\n\n public ngOnInit() {\n this.ctx = this.element.nativeElement.getContext(\"2d\");\n this.refresh();\n this.subs.push(\n this.themeService.colorschemesOptions.subscribe(() => this.themeChanged())\n );\n }\n\n private themeChanged() {\n this.refresh();\n }\n\n ngDoCheck(): void {\n if (!this.chart) {\n return;\n }\n let updateRequired = UpdateType.Default;\n const wantUpdate = (x: UpdateType) => {\n updateRequired = x > updateRequired ? x : updateRequired;\n };\n\n if (!!this.data !== this.old.dataExists) {\n this.propagateDataToDatasets(this.data);\n\n this.old.dataExists = !!this.data;\n\n wantUpdate(UpdateType.Update);\n }\n\n if (this.data && this.data.length !== this.old.dataLength) {\n this.old.dataLength = (this.data && this.data.length) || 0;\n\n wantUpdate(UpdateType.Update);\n }\n\n if (!!this.datasets !== this.old.datasetsExists) {\n this.old.datasetsExists = !!this.datasets;\n\n wantUpdate(UpdateType.Update);\n }\n\n if (this.datasets && this.datasets.length !== this.old.datasetsLength) {\n this.old.datasetsLength = (this.datasets && this.datasets.length) || 0;\n\n wantUpdate(UpdateType.Update);\n }\n\n if (\n this.datasets &&\n this.datasets.filter((x, i) => x.data !== this.old.datasetsDataObjects[i])\n .length\n ) {\n this.old.datasetsDataObjects = this.datasets.map((x) => x.data);\n\n wantUpdate(UpdateType.Update);\n }\n\n if (\n this.datasets &&\n this.datasets.filter(\n (x, i) => x.data.length !== this.old.datasetsDataLengths[i]\n ).length\n ) {\n this.old.datasetsDataLengths = this.datasets.map((x) => x.data.length);\n\n wantUpdate(UpdateType.Update);\n }\n\n if (!!this.colors !== this.old.colorsExists) {\n this.old.colorsExists = !!this.colors;\n\n this.updateColors();\n\n wantUpdate(UpdateType.Update);\n }\n\n // This smells of inefficiency, might need to revisit this\n if (\n this.colors &&\n this.colors.filter((x, i) => !this.colorsEqual(x, this.old.colors[i]))\n .length\n ) {\n this.old.colors = this.colors.map((x) => this.copyColor(x));\n\n this.updateColors();\n\n wantUpdate(UpdateType.Update);\n }\n\n if (!!this.labels !== this.old.labelsExist) {\n this.old.labelsExist = !!this.labels;\n\n wantUpdate(UpdateType.Update);\n }\n\n if (\n this.labels &&\n this.labels.filter((x, i) => !this.labelsEqual(x, this.old.labels[i]))\n .length\n ) {\n this.old.labels = this.labels.map((x) => this.copyLabel(x));\n\n wantUpdate(UpdateType.Update);\n }\n\n if (!!this.options.legend !== this.old.legendExists) {\n this.old.legendExists = !!this.options.legend;\n\n wantUpdate(UpdateType.Refresh);\n }\n\n if (\n this.options.legend &&\n this.options.legend.position !== this.old.legend.position\n ) {\n this.old.legend.position = this.options.legend.position;\n\n wantUpdate(UpdateType.Refresh);\n }\n\n switch (updateRequired as UpdateType) {\n case UpdateType.Default:\n break;\n case UpdateType.Update:\n this.update();\n break;\n case UpdateType.Refresh:\n this.refresh();\n break;\n }\n }\n\n copyLabel(a: ChartLabel): ChartLabel {\n if (Array.isArray(a)) {\n return [...a];\n }\n return a;\n }\n\n labelsEqual(a: ChartLabel, b: ChartLabel) {\n return (\n true &&\n Array.isArray(a) === Array.isArray(b) &&\n (Array.isArray(a) || a === b) &&\n (!Array.isArray(a) || a.length === b.length) &&\n (!Array.isArray(a) || a.filter((x, i) => x !== b[i]).length === 0)\n );\n }\n\n copyColor(a: DatasetColor): DatasetColor {\n const rc: DatasetColor = {\n backgroundColor: a.backgroundColor,\n borderWidth: a.borderWidth,\n borderColor: a.borderColor,\n borderCapStyle: a.borderCapStyle,\n borderDash: a.borderDash,\n borderDashOffset: a.borderDashOffset,\n borderJoinStyle: a.borderJoinStyle,\n pointBorderColor: a.pointBorderColor,\n pointBackgroundColor: a.pointBackgroundColor,\n pointBorderWidth: a.pointBorderWidth,\n pointRadius: a.pointRadius,\n pointHoverRadius: a.pointHoverRadius,\n pointHitRadius: a.pointHitRadius,\n pointHoverBackgroundColor: a.pointHoverBackgroundColor,\n pointHoverBorderColor: a.pointHoverBorderColor,\n pointHoverBorderWidth: a.pointHoverBorderWidth,\n pointStyle: a.pointStyle,\n hoverBackgroundColor: a.hoverBackgroundColor,\n hoverBorderColor: a.hoverBorderColor,\n hoverBorderWidth: a.hoverBorderWidth,\n };\n\n return rc;\n }\n\n colorsEqual(a: DatasetColor, b: DatasetColor) {\n if (!a !== !b) {\n return false;\n }\n return (\n !a ||\n (true &&\n a.backgroundColor === b.backgroundColor &&\n a.borderWidth === b.borderWidth &&\n a.borderColor === b.borderColor &&\n a.borderCapStyle === b.borderCapStyle &&\n a.borderDash === b.borderDash &&\n a.borderDashOffset === b.borderDashOffset &&\n a.borderJoinStyle === b.borderJoinStyle &&\n a.pointBorderColor === b.pointBorderColor &&\n a.pointBackgroundColor === b.pointBackgroundColor &&\n a.pointBorderWidth === b.pointBorderWidth &&\n a.pointRadius === b.pointRadius &&\n a.pointHoverRadius === b.pointHoverRadius &&\n a.pointHitRadius === b.pointHitRadius &&\n a.pointHoverBackgroundColor === b.pointHoverBackgroundColor &&\n a.pointHoverBorderColor === b.pointHoverBorderColor &&\n a.pointHoverBorderWidth === b.pointHoverBorderWidth &&\n a.pointStyle === b.pointStyle &&\n a.hoverBackgroundColor === b.hoverBackgroundColor &&\n a.hoverBorderColor === b.hoverBorderColor &&\n a.hoverBorderWidth === b.hoverBorderWidth)\n );\n }\n\n updateColors() {\n this.datasets.forEach((elm, index) => {\n if (this.colors && this.colors[index]) {\n Object.assign(elm, this.colors[index]);\n } else {\n Object.assign(elm, getColors(this.chartType, index, elm.data.length), {\n ...elm,\n });\n }\n });\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n let updateRequired = UpdateType.Default;\n const wantUpdate = (x: UpdateType) => {\n updateRequired = x > updateRequired ? x : updateRequired;\n };\n\n // Check if the changes are in the data or datasets or labels or legend\n\n if (changes.hasOwnProperty(\"data\") && changes.data.currentValue) {\n this.propagateDataToDatasets(changes.data.currentValue);\n\n wantUpdate(UpdateType.Update);\n }\n\n if (changes.hasOwnProperty(\"datasets\") && changes.datasets.currentValue) {\n this.propagateDatasetsToData(changes.datasets.currentValue);\n\n wantUpdate(UpdateType.Update);\n }\n\n if (changes.hasOwnProperty(\"labels\")) {\n if (this.chart) {\n this.chart.data.labels = changes.labels.currentValue;\n }\n\n wantUpdate(UpdateType.Update);\n }\n\n if (changes.hasOwnProperty(\"legend\")) {\n if (this.chart) {\n this.chart.config.options.legend.display = changes.legend.currentValue;\n this.chart.generateLegend();\n }\n\n wantUpdate(UpdateType.Update);\n }\n\n if (changes.hasOwnProperty(\"options\")) {\n wantUpdate(UpdateType.Refresh);\n }\n\n switch (updateRequired as UpdateType) {\n case UpdateType.Update:\n this.update();\n break;\n case UpdateType.Refresh:\n case UpdateType.Default:\n this.refresh();\n break;\n }\n }\n\n public ngOnDestroy() {\n if (this.chart) {\n this.chart.destroy();\n this.chart = void 0;\n }\n this.subs.forEach((x) => x.unsubscribe());\n }\n\n public update(duration?: any) {\n if (this.chart) {\n return this.chart.update(duration);\n }\n return null;\n }\n\n public hideDataset(index: number, hidden: boolean) {\n this.chart.getDatasetMeta(index).hidden = hidden;\n this.chart.update();\n }\n\n public isDatasetHidden(index: number): boolean {\n return this.chart.getDatasetMeta(index).hidden;\n }\n\n public toBase64Image(): string {\n return this.chart.toBase64Image();\n }\n\n public getChartConfiguration(): chartJs.ChartConfiguration {\n const datasets = this.getDatasets();\n\n const options = Object.assign({}, this.options);\n if (this.legend === false) {\n options.legend = { display: false };\n }\n // hook for onHover and onClick events\n options.hover = options.hover || {};\n if (!options.hover.onHover) {\n options.hover.onHover = (event: MouseEvent, active: {}[]) => {\n if (active && !active.length) {\n return;\n }\n this.chartHover.emit({ event, active });\n };\n }\n\n if (!options.onClick) {\n options.onClick = (event?: MouseEvent, active?: {}[]) => {\n this.chartClick.emit({ event, active });\n };\n }\n\n const mergedOptions = this.smartMerge(\n options,\n this.themeService.getColorschemesOptions()\n );\n\n const chartConfig: chartJs.ChartConfiguration = {\n type: this.chartType,\n data: {\n labels: this.labels || [],\n datasets,\n },\n plugins: this.plugins,\n options: mergedOptions,\n };\n\n return chartConfig;\n }\n\n public getChartBuilder(ctx: string /*, data:any[], options:any*/): Chart {\n const chartConfig = this.getChartConfiguration();\n return new chartJs.Chart(ctx, chartConfig);\n }\n\n smartMerge(options: any, overrides: any, level: number = 0): any {\n if (level === 0) {\n options = cloneDeep(options);\n }\n const keysToUpdate = Object.keys(overrides);\n keysToUpdate.forEach((key) => {\n if (Array.isArray(overrides[key])) {\n const arrayElements = options[key];\n if (arrayElements) {\n arrayElements.forEach((r) => {\n this.smartMerge(r, overrides[key][0], level + 1);\n });\n }\n } else if (typeof overrides[key] === \"object\") {\n if (!(key in options)) {\n options[key] = {};\n }\n this.smartMerge(options[key], overrides[key], level + 1);\n } else {\n options[key] = overrides[key];\n }\n });\n if (level === 0) {\n return options;\n }\n }\n\n private isMultiLineLabel(label: ChartLabel): label is MultiLineLabel {\n return Array.isArray(label);\n }\n\n private joinLabel(label: ChartLabel): string {\n if (!label) {\n return null;\n }\n if (this.isMultiLineLabel(label)) {\n return label.join(\" \");\n } else {\n return label;\n }\n }\n\n private propagateDatasetsToData(datasets: chartJs.ChartDataSets[]) {\n this.data = this.datasets.map((r) => r.data) as MultiDataSet;\n if (this.chart) {\n this.chart.data.datasets = datasets;\n }\n this.updateColors();\n }\n\n private propagateDataToDatasets(newDataValues: SingleOrMultiDataSet): void {\n if (this.isMultiDataSet(newDataValues)) {\n if (this.datasets && newDataValues.length === this.datasets.length) {\n this.datasets.forEach((dataset, i: number) => {\n dataset.data = newDataValues[i];\n });\n } else {\n this.datasets = newDataValues.map((data: number[], index: number) => {\n return {\n data,\n label: this.joinLabel(this.labels[index]) || `Label ${index}`,\n };\n });\n if (this.chart) {\n this.chart.data.datasets = this.datasets;\n }\n }\n } else {\n if (!this.datasets) {\n this.datasets = [{ data: newDataValues }];\n if (this.chart) {\n this.chart.data.datasets = this.datasets;\n }\n } else {\n this.datasets[0].data = newDataValues;\n this.datasets.splice(1); // Remove all elements but the first\n }\n }\n this.updateColors();\n }\n\n private isMultiDataSet(data: SingleOrMultiDataSet): data is MultiDataSet {\n return Array.isArray(data[0]);\n }\n\n private getDatasets() {\n if (!this.datasets && !this.data) {\n throw new Error(\n `ng-charts configuration error, data or datasets field are required to render chart ${this.chartType}`\n );\n }\n\n // If `datasets` is defined, use it over the `data` property.\n if (this.datasets) {\n this.propagateDatasetsToData(this.datasets);\n return this.datasets;\n }\n\n if (this.data) {\n this.propagateDataToDatasets(this.data);\n return this.datasets;\n }\n\n return null;\n }\n\n private refresh() {\n // if (this.options && this.options.responsive) {\n // setTimeout(() => this.refresh(), 50);\n // }\n\n // todo: remove this line, it is producing flickering\n if (this.chart) {\n this.chart.destroy();\n this.chart = void 0;\n }\n if (this.ctx) {\n this.chart = this.getChartBuilder(this.ctx /*, data, this.options*/);\n }\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { BaseChartDirective } from \"./base-chart.directive\";\n\n@NgModule({\n declarations: [BaseChartDirective],\n imports: [],\n exports: [BaseChartDirective],\n})\nexport class ChartsModule {}\n","declare class Chart {\n static readonly Chart: typeof Chart;\n static readonly Tooltip: any;\n static readonly helpers: any;\n static readonly defaults: any;\n static readonly plugins: any;\n}\n\nexport function monkeyPatchChartJsLegend() {\n if (typeof Chart === \"undefined\") {\n console.log(\"Chart not defined\");\n return;\n }\n const plugins = Chart.plugins.getAll();\n const legend = plugins.filter((p) => p.id === \"legend\")[0];\n legend._element.prototype.fit = fit;\n legend._element.prototype.draw = draw;\n\n const helpers = Chart.helpers;\n const defaults = Chart.defaults;\n const valueOrDefault = helpers.valueOrDefault;\n\n function getBoxWidth(labelOpts, fontSize) {\n return labelOpts.usePointStyle && labelOpts.boxWidth > fontSize\n ? fontSize\n : labelOpts.boxWidth;\n }\n\n function fit() {\n let me = this;\n let opts = me.options;\n let labelOpts = opts.labels;\n let display = opts.display;\n\n let ctx = me.ctx;\n\n let labelFont = helpers.options._parseFont(labelOpts);\n let fontSize = labelFont.size;\n\n // Reset hit boxes\n let hitboxes = (me.legendHitBoxes = []);\n\n let minSize = me.minSize;\n let isHorizontal = me.isHorizontal();\n\n if (isHorizontal) {\n minSize.width = me.maxWidth; // fill all the width\n minSize.height = display ? 10 : 0;\n } else {\n minSize.width = display ? 10 : 0;\n minSize.height = me.maxHeight; // fill all the height\n }\n\n let getMaxLineWidth = function (textLines) {\n return textLines\n .map(function (textLine) {\n return ctx.measureText(textLine).width;\n })\n .reduce(function (acc, v) {\n return v > acc ? v : acc;\n }, 0);\n };\n\n // Increase sizes here\n if (display) {\n ctx.font = labelFont.string;\n\n if (isHorizontal) {\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n let lineWidths = (me.lineWidths = [0]);\n let lineHeights = (me.lineHeights = []);\n let currentLineHeight = 0;\n let lineIndex = 0;\n\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"top\";\n\n helpers.each(me.legendItems, function (legendItem, i) {\n let width, height;\n\n if (helpers.isArray(legendItem.text)) {\n width = getMaxLineWidth(legendItem.text);\n height = fontSize * legendItem.text.length + labelOpts.padding;\n } else {\n width = ctx.measureText(legendItem.text).width;\n height = fontSize + labelOpts.padding;\n }\n width += getBoxWidth(labelOpts, fontSize) + fontSize / 2;\n\n if (\n lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding >\n minSize.width\n ) {\n lineHeights.push(currentLineHeight);\n currentLineHeight = 0;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n lineIndex++;\n }\n\n legendItem.lineOrColumnIndex = lineIndex;\n\n if (height > currentLineHeight) {\n currentLineHeight = height;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: width,\n height: height,\n };\n\n lineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n });\n\n lineHeights.push(currentLineHeight);\n minSize.height += lineHeights.reduce(function (acc, v) {\n return acc + v;\n }, 0);\n } else {\n let vPadding = labelOpts.padding;\n let columnWidths = (me.columnWidths = []);\n let columnHeights = (me.columnHeights = []);\n let totalWidth = labelOpts.padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let columnIndex = 0;\n\n helpers.each(me.legendItems, function (legendItem, i) {\n let itemWidth;\n let height;\n\n if (helpers.isArray(legendItem.text)) {\n itemWidth = getMaxLineWidth(legendItem.text);\n height = fontSize * legendItem.text.length;\n } else {\n itemWidth = ctx.measureText(legendItem.text).width;\n height = fontSize;\n }\n itemWidth += getBoxWidth(labelOpts, fontSize) + fontSize / 2;\n\n // If too tall, go to new column\n if (currentColHeight + fontSize + 2 * vPadding > minSize.height) {\n totalWidth += currentColWidth + labelOpts.padding;\n columnWidths.push(currentColWidth); // previous column width\n columnHeights.push(currentColHeight);\n currentColWidth = 0;\n currentColHeight = 0;\n columnIndex++;\n }\n\n legendItem.lineOrColumnIndex = columnIndex;\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += height + vPadding;\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {\n left: 0,\n top: 0,\n width: itemWidth,\n height: height,\n };\n });\n\n totalWidth += currentColWidth;\n columnWidths.push(currentColWidth);\n columnHeights.push(currentColHeight);\n minSize.width += totalWidth;\n }\n }\n\n me.width = minSize.width;\n me.height = minSize.height;\n }\n\n function draw() {\n let me = this;\n let opts = me.options;\n let labelOpts = opts.labels;\n let globalDefaults = defaults.global;\n let defaultColor = globalDefaults.defaultColor;\n let lineDefault = globalDefaults.elements.line;\n let legendHeight = me.height;\n let columnHeights = me.columnHeights;\n let columnWidths = me.columnWidths;\n let legendWidth = me.width;\n let lineWidths = me.lineWidths;\n let lineHeights = me.lineHeights;\n\n if (opts.display) {\n let ctx = me.ctx;\n let fontColor = valueOrDefault(\n labelOpts.fontColor,\n globalDefaults.defaultFontColor\n );\n let labelFont = helpers.options._parseFont(labelOpts);\n let fontSize = labelFont.size;\n let cursor;\n\n // Canvas setup\n ctx.textAlign = \"left\";\n ctx.textBaseline = \"middle\";\n ctx.lineWidth = 0.5;\n ctx.strokeStyle = fontColor; // for strikethrough effect\n ctx.fillStyle = fontColor; // render in correct colour\n ctx.font = labelFont.string;\n\n let boxWidth = getBoxWidth(labelOpts, fontSize);\n let hitboxes = me.legendHitBoxes;\n\n // current position\n let drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n let lineWidth = valueOrDefault(\n legendItem.lineWidth,\n lineDefault.borderWidth\n );\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(\n legendItem.lineCap,\n lineDefault.borderCapStyle\n );\n ctx.lineDashOffset = valueOrDefault(\n legendItem.lineDashOffset,\n lineDefault.borderDashOffset\n );\n ctx.lineJoin = valueOrDefault(\n legendItem.lineJoin,\n lineDefault.borderJoinStyle\n );\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n if (ctx.setLineDash) {\n // IE 9 and 10 do not support line dash\n ctx.setLineDash(\n valueOrDefault(legendItem.lineDash, lineDefault.borderDash)\n );\n }\n\n if (opts.labels && opts.labels.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n let radius = (boxWidth * Math.SQRT2) / 2;\n let centerX = x + boxWidth / 2;\n let centerY = y + fontSize / 2;\n\n // Draw pointStyle as legend symbol\n helpers.canvas.drawPoint(\n ctx,\n legendItem.pointStyle,\n radius,\n centerX,\n centerY\n );\n } else {\n // Draw box as legend symbol\n if (lineWidth !== 0) {\n ctx.strokeRect(x, y, boxWidth, fontSize);\n }\n ctx.fillRect(x, y, boxWidth, fontSize);\n }\n\n ctx.restore();\n };\n\n let drawStrikeThrough = function (x, y, w) {\n ctx.beginPath();\n ctx.lineWidth = 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + w, y);\n ctx.stroke();\n };\n\n let drawCrossOver = function (x, y, w, h) {\n ctx.beginPath();\n ctx.lineWidth = 2;\n ctx.moveTo(x, y);\n ctx.lineTo(x + w, y + h);\n ctx.moveTo(x, y + h);\n ctx.lineTo(x + w, y);\n ctx.stroke();\n };\n\n let fillText = function (x, y, legendItem, textWidth) {\n let halfFontSize = fontSize / 2;\n let xLeft = boxWidth + halfFontSize + x;\n let yMiddle = y + halfFontSize;\n\n if (helpers.isArray(legendItem.text)) {\n helpers.each(legendItem.text, function (textLine, index) {\n let lineOffset = index * fontSize;\n ctx.fillText(textLine, xLeft, yMiddle + lineOffset);\n });\n } else {\n ctx.fillText(legendItem.text, xLeft, yMiddle);\n }\n\n if (legendItem.hidden) {\n if (helpers.isArray(legendItem.text)) {\n drawCrossOver(\n xLeft,\n yMiddle,\n textWidth,\n (legendItem.text.length - 1) * (fontSize - 1)\n );\n } else {\n drawStrikeThrough(xLeft, yMiddle, textWidth);\n }\n }\n };\n\n let alignmentOffset = function (dimension, blockSize) {\n switch (opts.align) {\n case \"start\":\n return labelOpts.padding;\n case \"end\":\n return dimension - blockSize;\n default:\n // center\n return (dimension - blockSize + labelOpts.padding) / 2;\n }\n };\n\n // Horizontal\n let isHorizontal = me.isHorizontal();\n if (isHorizontal) {\n cursor = {\n x: me.left + alignmentOffset(legendWidth, lineWidths[0]),\n y: me.top + labelOpts.padding,\n line: 0,\n };\n } else {\n cursor = {\n x: me.left + labelOpts.padding,\n y: me.top + alignmentOffset(legendHeight, columnHeights[0]),\n line: 0,\n };\n }\n\n helpers.each(me.legendItems, function (legendItem, i) {\n let textWidth, height, boxTopOffset;\n\n if (legendItem.lineOrColumnIndex > cursor.line) {\n if (isHorizontal) {\n cursor.y += lineHeights[cursor.line];\n cursor.line = legendItem.lineOrColumnIndex;\n cursor.x =\n me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\n } else {\n cursor.x += columnWidths[cursor.line] + labelOpts.padding;\n cursor.line = legendItem.lineOrColumnIndex;\n cursor.y =\n me.top +\n alignmentOffset(legendHeight, columnHeights[cursor.line]);\n }\n }\n\n if (helpers.isArray(legendItem.text)) {\n textWidth = legendItem.text\n .map(function (textLine) {\n return ctx.measureText(textLine).width;\n })\n .reduce(function (acc, v) {\n return v > acc ? v : acc;\n }, 0);\n boxTopOffset = (fontSize / 2) * (legendItem.text.length - 1);\n height = fontSize * legendItem.text.length;\n } else {\n textWidth = ctx.measureText(legendItem.text).width;\n boxTopOffset = 0;\n height = fontSize;\n }\n\n let width = boxWidth + fontSize / 2 + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n let topOffset = isHorizontal\n ? Math.trunc((lineHeights[cursor.line] - hitboxes[i].height) / 2)\n : 0;\n\n drawLegendBox(x, y + boxTopOffset + topOffset, legendItem);\n\n hitboxes[i].left = x;\n hitboxes[i].top = y;\n\n // Fill the actual label\n fillText(x, y + topOffset, legendItem, textWidth);\n\n if (isHorizontal) {\n cursor.x += width + labelOpts.padding;\n } else {\n cursor.y += height + labelOpts.padding;\n }\n });\n }\n }\n}\n","declare class Chart {\n static readonly Chart: typeof Chart;\n static readonly Tooltip: any;\n static readonly helpers: any;\n static readonly defaults: any;\n static readonly plugins: any;\n}\n\nexport function monkeyPatchChartJsTooltip() {\n if (typeof Chart === \"undefined\") {\n console.log(\"Chart not defined\");\n return;\n }\n Chart.Tooltip.prototype.drawBody = drawBody;\n const helpers = Chart.helpers;\n\n function getAlignedX(vm, align) {\n return align === \"center\"\n ? vm.x + vm.width / 2\n : align === \"right\"\n ? vm.x + vm.width - vm.xPadding\n : vm.x + vm.xPadding;\n }\n\n function drawBody(pt, vm, ctx) {\n let bodyFontSize = vm.bodyFontSize;\n let bodySpacing = vm.bodySpacing;\n let bodyAlign = vm._bodyAlign;\n let body = vm.body;\n let drawColorBoxes = vm.displayColors;\n let labelColors = vm.labelColors;\n let xLinePadding = 0;\n let colorX = drawColorBoxes ? getAlignedX(vm, \"left\") : 0;\n let textColor;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = \"top\";\n ctx.font = helpers.fontString(\n bodyFontSize,\n vm._bodyFontStyle,\n vm._bodyFontFamily\n );\n\n pt.x = getAlignedX(vm, bodyAlign);\n\n // Before Body\n let fillLineOfText = function (line) {\n ctx.fillText(line, pt.x + xLinePadding, pt.y);\n pt.y += bodyFontSize + bodySpacing;\n };\n\n // Before body lines\n ctx.fillStyle = vm.bodyFontColor;\n helpers.each(vm.beforeBody, fillLineOfText);\n\n xLinePadding =\n drawColorBoxes && bodyAlign !== \"right\"\n ? bodyAlign === \"center\"\n ? bodyFontSize / 2 + 1\n : bodyFontSize + 2\n : 0;\n\n // Draw body lines now\n helpers.each(body, function (bodyItem, i) {\n textColor = vm.labelTextColors[i];\n ctx.fillStyle = textColor;\n helpers.each(bodyItem.before, fillLineOfText);\n\n // Draw Legend-like boxes if needed\n if (drawColorBoxes) {\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n ctx.fillStyle = vm.legendColorBackground;\n ctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n // Border\n ctx.lineWidth = 1;\n ctx.strokeStyle = labelColors[i].borderColor;\n ctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize);\n\n // Inner square\n ctx.fillStyle = labelColors[i].backgroundColor;\n ctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n ctx.fillStyle = textColor;\n }\n\n helpers.each(bodyItem.lines, fillLineOfText);\n\n helpers.each(bodyItem.after, fillLineOfText);\n });\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n\n // After body lines\n helpers.each(vm.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ThemeService"],"mappings":"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"}