@coreui/angular-chartjs 5.6.15 → 5.6.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -198,7 +198,9 @@ class ChartjsComponent {
|
|
|
198
198
|
setTimeout(() => {
|
|
199
199
|
this.ngZone.runOutsideAngular(() => {
|
|
200
200
|
try {
|
|
201
|
-
this.chart?.
|
|
201
|
+
if (this.chart?.canvas) {
|
|
202
|
+
this.chart?.update();
|
|
203
|
+
}
|
|
202
204
|
}
|
|
203
205
|
catch (error) {
|
|
204
206
|
console.warn('Error on chart.update():', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n NgZone,\n numberAttribute,\n OnDestroy,\n output,\n Renderer2,\n untracked,\n viewChild\n} from '@angular/core';\n\nimport { merge } from 'lodash-es';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\nimport { BooleanInput } from './chartjs.interface';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.chart-wrapper]': 'wrapper()',\n '[style.height.px]': 'height()',\n '[style.width.px]': 'width()'\n }\n})\nexport class ChartjsComponent implements OnDestroy {\n //\n static ngAcceptInputType_redraw: BooleanInput;\n\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Enables custom html based tooltips instead of standard tooltips.\n * @return boolean\n * @default true\n */\n readonly customTooltips = input(true, { transform: booleanAttribute });\n\n /**\n * The data object that is passed into the Chart.js chart (more info).\n * @returns ChartData\n * @default { labels: [], datasets: [] }\n */\n readonly data = input<ChartData>();\n\n /**\n * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n */\n // @Input() fallbackContent?: TemplateRef<any>;\n\n /**\n * Height attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly height = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * ID attribute applied to the rendered canvas.\n * @returns string\n * @default 'c-chartjs-' + nextId\n */\n readonly idInput = input<string>(`c-chartjs-${nextId++}`, { alias: 'id' });\n\n get id() {\n return this.idInput();\n }\n\n /**\n * The options object that is passed into the Chart.js chart.\n * @returns ChartOptions | undefined\n * @default {}\n */\n readonly optionsInput = input<ChartOptions | undefined>({}, { alias: 'options' });\n\n readonly options = linkedSignal(this.optionsInput);\n\n /**\n * The plugins array that is passed into the Chart.js chart\n * @returns Plugin[]\n * @default []\n */\n readonly plugins = input<Plugin[]>([]);\n\n /**\n * If true, will tear down and redraw chart on all updates.\n * @returns boolean\n * @default false\n */\n readonly redraw = input(false, { transform: booleanAttribute });\n\n /**\n * Chart.js chart type.\n * @returns {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n * @default 'bar'\n */\n readonly type = input<ChartType>('bar');\n\n /**\n * Width attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly width = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * Put the chart into the wrapper div element.\n * @return boolean\n * @default true\n */\n readonly wrapper = input(true, { transform: booleanAttribute });\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getDatasetAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked element.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementsAtEvent = output<InteractionItem[]>();\n\n /** Emits the Chart.js chart instance after it is created. Can be used to access Chart.js directly on the chart instance.\n * @returns ChartJS | undefined\n * @see https://www.chartjs.org/docs/latest/developers/api.html#chart-instance-methods\n */\n readonly chartRef = output<ChartJS | undefined>();\n\n readonly canvasElement = viewChild.required<ElementRef<HTMLCanvasElement>>('canvasElement');\n\n chart: ChartJS | undefined;\n readonly ctx = computed(() => this.canvasElement()?.nativeElement.getContext('2d'));\n\n constructor() {\n effect(() => {\n const ctx = this.ctx();\n if (ctx && !this.chart) {\n this.chartRender();\n }\n });\n\n effect(() => {\n const data = this.data();\n untracked(() => {\n if (this.chart && data) {\n this.chartUpdate();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent): void {\n if (!this.chart) {\n return;\n }\n\n this.emitDatasetAtEvent($event);\n this.emitElementAtEvent($event);\n this.emitElementsAtEvent($event);\n }\n\n private emitDatasetAtEvent($event: MouseEvent): void {\n const datasetAtEvent = this.chart?.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n if (datasetAtEvent) {\n this.getDatasetAtEvent.emit(datasetAtEvent);\n }\n }\n\n private emitElementAtEvent($event: MouseEvent): void {\n const elementAtEvent = this.chart?.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n if (elementAtEvent) {\n this.getElementAtEvent.emit(elementAtEvent);\n }\n }\n\n private emitElementsAtEvent($event: MouseEvent): void {\n const elementsAtEvent = this.chart?.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n if (elementsAtEvent) {\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n const canvasElement = this.canvasElement();\n if (!canvasElement?.nativeElement || !this.ctx() || this.chart) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n const ctx = this.ctx();\n if (config && ctx) {\n this.chart = new ChartJS(ctx, config);\n this.ngZone.run(() => {\n this.renderer.setStyle(canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n public chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw()) {\n this.chartDestroy();\n this.chartRender();\n return;\n }\n\n const config: ChartConfiguration = this.chartConfig();\n\n if (this.options()) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n try {\n this.chart?.update();\n } catch (error) {\n console.warn('Error on chart.update():', error);\n }\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n readonly chartDataConfig = computed<ChartData>(() => {\n const { labels, datasets } = { ...this.data() };\n return {\n labels: labels ?? [],\n datasets: datasets ?? []\n };\n });\n\n readonly chartOptions = computed<ChartOptions>(() => this.options() ?? {});\n\n readonly chartConfig = computed<ChartConfiguration>(() => {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins(),\n type: this.type()\n };\n });\n\n private chartCustomTooltips() {\n if (!this.customTooltips()) {\n return;\n }\n const options = this.options();\n const plugins = options?.plugins;\n const tooltip = options?.plugins?.tooltip;\n untracked(() => {\n this.options.set(\n merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n })\n );\n });\n }\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coreui-angular-chartjs.mjs","sources":["../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.ts","../../../projects/coreui-angular-chartjs/src/lib/chartjs.component.html","../../../projects/coreui-angular-chartjs/src/lib/chartjs.module.ts","../../../projects/coreui-angular-chartjs/src/public-api.ts","../../../projects/coreui-angular-chartjs/src/coreui-angular-chartjs.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n linkedSignal,\n NgZone,\n numberAttribute,\n OnDestroy,\n output,\n Renderer2,\n untracked,\n viewChild\n} from '@angular/core';\n\nimport { merge } from 'lodash-es';\n\nimport type { ChartConfiguration, ChartData, ChartOptions, ChartType, InteractionItem, Plugin } from 'chart.js';\nimport { Chart as ChartJS, registerables } from 'chart.js';\nimport { customTooltips as cuiCustomTooltips } from '@coreui/chartjs';\nimport { BooleanInput } from './chartjs.interface';\n\nChartJS.register(...registerables);\n\nlet nextId = 0;\n\n@Component({\n selector: 'c-chart',\n templateUrl: './chartjs.component.html',\n styleUrls: ['./chartjs.component.scss'],\n exportAs: 'cChart',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.chart-wrapper]': 'wrapper()',\n '[style.height.px]': 'height()',\n '[style.width.px]': 'width()'\n }\n})\nexport class ChartjsComponent implements OnDestroy {\n //\n static ngAcceptInputType_redraw: BooleanInput;\n\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Enables custom html based tooltips instead of standard tooltips.\n * @return boolean\n * @default true\n */\n readonly customTooltips = input(true, { transform: booleanAttribute });\n\n /**\n * The data object that is passed into the Chart.js chart (more info).\n * @returns ChartData\n * @default { labels: [], datasets: [] }\n */\n readonly data = input<ChartData>();\n\n /**\n * A fallback when the canvas cannot be rendered. Can be used for accessible chart descriptions.\n */\n // @Input() fallbackContent?: TemplateRef<any>;\n\n /**\n * Height attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly height = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * ID attribute applied to the rendered canvas.\n * @returns string\n * @default 'c-chartjs-' + nextId\n */\n readonly idInput = input<string>(`c-chartjs-${nextId++}`, { alias: 'id' });\n\n get id() {\n return this.idInput();\n }\n\n /**\n * The options object that is passed into the Chart.js chart.\n * @returns ChartOptions | undefined\n * @default {}\n */\n readonly optionsInput = input<ChartOptions | undefined>({}, { alias: 'options' });\n\n readonly options = linkedSignal(this.optionsInput);\n\n /**\n * The plugins array that is passed into the Chart.js chart\n * @returns Plugin[]\n * @default []\n */\n readonly plugins = input<Plugin[]>([]);\n\n /**\n * If true, will tear down and redraw chart on all updates.\n * @returns boolean\n * @default false\n */\n readonly redraw = input(false, { transform: booleanAttribute });\n\n /**\n * Chart.js chart type.\n * @returns {'line' | 'bar' | 'radar' | 'doughnut' | 'polarArea' | 'bubble' | 'pie' | 'scatter'}\n * @default 'bar'\n */\n readonly type = input<ChartType>('bar');\n\n /**\n * Width attribute applied to the rendered canvas.\n * @return number | undefined\n * @default null\n */\n readonly width = input(null, { transform: (value) => numberAttribute(value, undefined) });\n\n /**\n * Put the chart into the wrapper div element.\n * @return boolean\n * @default true\n */\n readonly wrapper = input(true, { transform: booleanAttribute });\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getDatasetAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked element.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementAtEvent = output<InteractionItem[]>();\n\n /** Event emitted on click of a chart element. Contains an array of the clicked elements.\n * @returns InteractionItem[]\n * @see https://www.chartjs.org/docs/latest/developers/api.html#getelementsateventformode\n */\n readonly getElementsAtEvent = output<InteractionItem[]>();\n\n /** Emits the Chart.js chart instance after it is created. Can be used to access Chart.js directly on the chart instance.\n * @returns ChartJS | undefined\n * @see https://www.chartjs.org/docs/latest/developers/api.html#chart-instance-methods\n */\n readonly chartRef = output<ChartJS | undefined>();\n\n readonly canvasElement = viewChild.required<ElementRef<HTMLCanvasElement>>('canvasElement');\n\n chart: ChartJS | undefined;\n readonly ctx = computed(() => this.canvasElement()?.nativeElement.getContext('2d'));\n\n constructor() {\n effect(() => {\n const ctx = this.ctx();\n if (ctx && !this.chart) {\n this.chartRender();\n }\n });\n\n effect(() => {\n const data = this.data();\n untracked(() => {\n if (this.chart && data) {\n this.chartUpdate();\n }\n });\n });\n }\n\n ngOnDestroy(): void {\n this.chartDestroy();\n }\n\n public handleClick($event: MouseEvent): void {\n if (!this.chart) {\n return;\n }\n\n this.emitDatasetAtEvent($event);\n this.emitElementAtEvent($event);\n this.emitElementsAtEvent($event);\n }\n\n private emitDatasetAtEvent($event: MouseEvent): void {\n const datasetAtEvent = this.chart?.getElementsAtEventForMode($event, 'dataset', { intersect: true }, false);\n if (datasetAtEvent) {\n this.getDatasetAtEvent.emit(datasetAtEvent);\n }\n }\n\n private emitElementAtEvent($event: MouseEvent): void {\n const elementAtEvent = this.chart?.getElementsAtEventForMode($event, 'nearest', { intersect: true }, false);\n if (elementAtEvent) {\n this.getElementAtEvent.emit(elementAtEvent);\n }\n }\n\n private emitElementsAtEvent($event: MouseEvent): void {\n const elementsAtEvent = this.chart?.getElementsAtEventForMode($event, 'index', { intersect: true }, false);\n if (elementsAtEvent) {\n this.getElementsAtEvent.emit(elementsAtEvent);\n }\n }\n\n public chartDestroy() {\n this.chart?.destroy();\n this.chartRef.emit(undefined);\n }\n\n public chartRender() {\n const canvasElement = this.canvasElement();\n if (!canvasElement?.nativeElement || !this.ctx() || this.chart) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n const config = this.chartConfig();\n const ctx = this.ctx();\n if (config && ctx) {\n this.chart = new ChartJS(ctx, config);\n this.ngZone.run(() => {\n this.renderer.setStyle(canvasElement.nativeElement, 'display', 'block');\n this.changeDetectorRef.markForCheck();\n this.chartRef.emit(this.chart);\n });\n }\n });\n }\n\n public chartUpdate() {\n if (!this.chart) {\n return;\n }\n\n if (this.redraw()) {\n this.chartDestroy();\n this.chartRender();\n return;\n }\n\n const config: ChartConfiguration = this.chartConfig();\n\n if (this.options()) {\n Object.assign(this.chart.options ?? {}, config.options ?? {});\n }\n\n if (!this.chart.config.data) {\n this.chart.config.data = { ...config.data };\n this.chartUpdateOutsideAngular();\n }\n\n if (this.chart) {\n Object.assign(this.chart.config.options ?? {}, config.options ?? {});\n Object.assign(this.chart.config.plugins ?? [], config.plugins ?? []);\n Object.assign(this.chart.config.data, config.data);\n }\n\n this.chartUpdateOutsideAngular();\n }\n\n private chartUpdateOutsideAngular() {\n setTimeout(() => {\n this.ngZone.runOutsideAngular(() => {\n try {\n if (this.chart?.canvas) {\n this.chart?.update();\n }\n } catch (error) {\n console.warn('Error on chart.update():', error);\n }\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n });\n });\n });\n }\n\n public chartToBase64Image(): string | undefined {\n return this.chart?.toBase64Image();\n }\n\n readonly chartDataConfig = computed<ChartData>(() => {\n const { labels, datasets } = { ...this.data() };\n return {\n labels: labels ?? [],\n datasets: datasets ?? []\n };\n });\n\n readonly chartOptions = computed<ChartOptions>(() => this.options() ?? {});\n\n readonly chartConfig = computed<ChartConfiguration>(() => {\n this.chartCustomTooltips();\n return {\n data: this.chartDataConfig(),\n options: this.chartOptions(),\n plugins: this.plugins(),\n type: this.type()\n };\n });\n\n private chartCustomTooltips() {\n if (!this.customTooltips()) {\n return;\n }\n const options = this.options();\n const plugins = options?.plugins;\n const tooltip = options?.plugins?.tooltip;\n untracked(() => {\n this.options.set(\n merge({\n ...options,\n plugins: {\n ...plugins,\n tooltip: {\n ...tooltip,\n enabled: false,\n mode: 'index',\n position: 'nearest',\n external: cuiCustomTooltips\n }\n }\n })\n );\n });\n }\n}\n","<canvas\n #canvasElement\n (click)=\"handleClick($event)\"\n [height]=\"height() || null\"\n [id]=\"id\"\n [width]=\"width() || null\"\n role=\"img\"\n style=\"display: none;\"\n>\n <ng-content />\n <!-- <ng-container *ngTemplateOutlet=\"fallbackContent\"/>-->\n</canvas>\n","import { NgModule } from '@angular/core';\nimport { ChartjsComponent } from './chartjs.component';\n\n@NgModule({\n imports: [\n ChartjsComponent\n ],\n exports: [\n ChartjsComponent\n ]\n})\nexport class ChartjsModule {}\n","/*\n * Public API Surface of coreui-angular-chartjs\n */\n\nexport * from './lib/chartjs.component';\nexport * from './lib/chartjs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ChartJS","cuiCustomTooltips"],"mappings":"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"}
|