maneric-charts
Version:
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.
1 lines • 20.1 kB
Source Map (JSON)
{"version":3,"file":"maneric-charts.mjs","sources":["../../../projects/maneric-charts/src/lib/plugin/center-text-plugin.ts","../../../projects/maneric-charts/src/lib/services/chart-color/chart-color.service.ts","../../../projects/maneric-charts/src/lib/base-chart/base-chart.component.ts","../../../projects/maneric-charts/src/lib/charts/bar-chart/bar-chart.component.ts","../../../projects/maneric-charts/src/lib/charts/bar-chart/bar-chart.component.html","../../../projects/maneric-charts/src/lib/charts/donut-chart/donut-chart.component.ts","../../../projects/maneric-charts/src/lib/charts/donut-chart/donut-chart.component.html","../../../projects/maneric-charts/src/public-api.ts","../../../projects/maneric-charts/src/maneric-charts.ts"],"sourcesContent":["import { Plugin } from 'chart.js';\nexport interface CenterTextPluginOptions {\n fontSize?: number;\n fontColor?: string;\n subTitle?: string;\n text?: string;\n prefix?: string;\n}\n\nconst defaultCenterTextPluginOptions: CenterTextPluginOptions = {\n fontSize: 20,\n fontColor: '#333',\n};\n\nexport const centerTextPlugin: Plugin<any> = {\n id: 'centerText',\n afterDraw(chart, args, options: CenterTextPluginOptions) {\n const {\n ctx,\n chartArea: { left, right, top, bottom },\n } = chart;\n const opt = { ...defaultCenterTextPluginOptions, ...options };\n const { fontSize, fontColor, subTitle, text, prefix } = opt;\n const xCenter = (left + right) / 2;\n const yCenter = (top + bottom) / 2;\n const tFontSize = fontSize ?? 24;\n\n ctx.save();\n const dataset = chart.data.datasets[0].data as number[];\n const total = text ?? `${dataset.reduce((a, b) => a + b, 0)}`;\n const totalWithPrefix = prefix ? `${prefix}${total}` : total;\n ctx.font = `bold ${tFontSize}px Arial`;\n ctx.fillStyle = fontColor!;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(totalWithPrefix, xCenter, yCenter);\n\n if (subTitle) {\n ctx.font = '12px Arial';\n ctx.fillStyle = fontColor!;\n ctx.fillText(subTitle, xCenter, (top + bottom) / 2 + tFontSize / 2);\n }\n ctx.restore();\n },\n};\n","import { Injectable } from '@angular/core';\n\nexport type ColorScheme = 'material' | 'category10' | 'pastel' | 'custom';\n\n@Injectable({ providedIn: 'root' })\nexport class ChartColorService {\n // Fallback palettes\n private category10 = [\n '#1f77b4',\n '#ff7f0e',\n '#2ca02c',\n '#d62728',\n '#9467bd',\n '#8c564b',\n '#e377c2',\n '#7f7f7f',\n '#bcbd22',\n '#17becf',\n ];\n\n private pastel = [\n '#aec7e8',\n '#ffbb78',\n '#98df8a',\n '#ff9896',\n '#c5b0d5',\n '#c49c94',\n '#f7b6d2',\n '#c7c7c7',\n '#dbdb8d',\n '#9edae5',\n ];\n\n getForegroundColor() {\n const container = document.querySelector('.app-container') as HTMLElement;\n const styles = getComputedStyle(container);\n\n return styles.getPropertyValue('--chart-foreground').trim() || '#fff';\n }\n\n /**\n * Returns an array of colors for charts based on scheme and theme\n */\n getColors(scheme: ColorScheme, count: number, customColors?: string[]): string[] {\n switch (scheme) {\n case 'material':\n return this.expandMaterialColors(count);\n case 'category10':\n return this.repeatPalette(this.category10, count);\n case 'pastel':\n return this.repeatPalette(this.pastel, count);\n case 'custom':\n return this.repeatPalette(customColors ?? [], count);\n default:\n return this.repeatPalette(this.category10, count);\n }\n }\n\n /**\n * Expand Angular Material theme colors into multiple shades\n */\n private expandMaterialColors(count: number): string[] {\n const container = document.querySelector('.app-container') as HTMLElement;\n const styles = getComputedStyle(container);\n const baseColors = [\n styles.getPropertyValue('--chart-primary').trim() || '#1976d2',\n styles.getPropertyValue('--chart-accent').trim() || '#9c27b0',\n styles.getPropertyValue('--chart-warn').trim() || '#009688',\n ];\n // Generate shades for each base color\n const expanded = baseColors.flatMap((color) => this.generateShades(color, 3));\n return this.repeatPalette(expanded, count);\n }\n\n /**\n * Generate lighter/darker shades of a base color\n */\n private generateShades(hex: string, levels: number): string[] {\n const shades: string[] = [];\n for (let i = -levels; i <= levels; i++) {\n shades.push(this.adjustLightness(hex, i * 15));\n }\n return shades;\n }\n\n /**\n * Adjust lightness of hex color\n */\n private adjustLightness(hex: string, percent: number): string {\n const num = parseInt(hex.replace('#', ''), 16);\n let r = (num >> 16) + percent;\n let g = ((num >> 8) & 0x00ff) + percent;\n let b = (num & 0x0000ff) + percent;\n\n r = Math.min(255, Math.max(0, r));\n g = Math.min(255, Math.max(0, g));\n b = Math.min(255, Math.max(0, b));\n\n return `#${(b | (g << 8) | (r << 16)).toString(16).padStart(6, '0')}`;\n }\n\n /**\n * Repeat palette until count is satisfied\n */\n private repeatPalette(palette: string[], count: number): string[] {\n const result: string[] = [];\n for (let i = 0; i < count; i++) {\n result.push(palette[i % palette.length]);\n }\n return result;\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Chart, ChartDataset, ChartOptions, ChartType, registerables } from 'chart.js';\nimport { ChartColorService, ColorScheme } from '../services/chart-color/chart-color.service';\n\nimport ChartDataLabels from 'chartjs-plugin-datalabels';\nimport { merge } from 'lodash';\nimport { centerTextPlugin } from '../plugin';\nChart.register(...registerables, ChartDataLabels, centerTextPlugin);\n\n@Component({\n template: '', // Extended by child components\n})\nexport abstract class BaseChartComponent<TType extends ChartType>\n implements AfterViewInit, OnChanges, OnDestroy\n{\n @ViewChild('canvas', { static: true }) canvas!: ElementRef<HTMLCanvasElement>;\n\n @Input() labels: string[] = [];\n @Input() datasets: ChartDataset<TType>[] = [];\n @Input() title?: string;\n @Input() options?: ChartOptions<TType>;\n @Input() colorScheme: ColorScheme = 'material';\n @Input() colors?: string[];\n\n @Output() pointClick = new EventEmitter<{ label: string; value: number }>();\n @Output() chartInit = new EventEmitter<Chart>();\n\n chart?: Chart;\n protected readonly target = document.body.getElementsByTagName('div')[0];\n constructor(private colorService: ChartColorService) {\n // Watch for theme changes (when Angular Material theme switches dynamically)\n const observer = new MutationObserver(() => {\n console.log('trigger update chart');\n this.updateChart();\n });\n observer.observe(this.target, { attributes: true, attributeFilter: ['class'] });\n }\n\n ngAfterViewInit(): void {\n this.renderChart();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.chart && (changes['datasets'] || changes['labels'] || changes['colors'])) {\n this.updateChart();\n }\n }\n\n private renderChart(): void {\n const ctx = this.canvas.nativeElement.getContext('2d');\n if (!ctx) return;\n\n const datasetColors = this.colorService.getColors(\n this.colorScheme,\n this.datasets.length,\n this.colors\n );\n\n const styledDatasets = this.datasets.map((d, i) => {\n const backgroundColor = this.colorService.getColors(\n this.colorScheme,\n d.data.length,\n this.colors\n );\n return {\n ...d,\n backgroundColor,\n borderColor: d.borderColor,\n };\n });\n\n const config = this.buildConfig(styledDatasets);\n if (!this.chart) {\n this.chart = new Chart(ctx, config);\n } else {\n this.chart = merge(this.chart, {\n data: merge(this.chart.data, {\n datasets: styledDatasets,\n }),\n options: config.options,\n });\n\n this.chart?.update();\n }\n\n this.chartInit.emit(this.chart);\n }\n\n private buildConfig(styledDatasets: any): any {\n const foregroundColor = this.colorService.getForegroundColor();\n console.log('foregroundColor', foregroundColor);\n const options = merge(\n {\n responsive: true,\n plugins: {\n legend: {\n labels: {\n color: foregroundColor,\n },\n },\n centerText: {\n fontColor: foregroundColor,\n },\n },\n onClick: (_e: any, elements: any) => {\n if (elements.length > 0) {\n const first = elements[0];\n const datasetIndex = first.datasetIndex;\n const index = first.index;\n const label = this.labels[index];\n const value = this.datasets[datasetIndex].data[index] as number;\n this.pointClick.emit({ label, value });\n }\n },\n },\n this.options\n );\n return {\n type: this.getChartType(),\n data: {\n labels: this.labels,\n datasets: styledDatasets as any,\n },\n options,\n };\n }\n private updateChart(): void {\n this.renderChart();\n }\n\n ngOnDestroy(): void {\n this.chart?.destroy();\n }\n\n /** Must be implemented by each chart type */\n protected abstract getChartType(): TType;\n}\n","import { Component } from '@angular/core';\nimport { BaseChartComponent } from '../../base-chart/base-chart.component';\n\n@Component({\n selector: 'bar-chart',\n templateUrl: './bar-chart.component.html',\n styleUrls: ['./bar-chart.component.scss'],\n})\nexport class BarChartComponent extends BaseChartComponent<'bar'> {\n protected override getChartType(): 'bar' {\n return 'bar';\n }\n}\n","<canvas #canvas></canvas>","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { BaseChartComponent } from '../../base-chart';\n\n@Component({\n selector: 'donut-chart',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './donut-chart.component.html',\n styleUrls: ['./donut-chart.component.scss'],\n})\nexport class DonutChartComponent extends BaseChartComponent<'doughnut'> {\n protected override getChartType(): 'doughnut' {\n return 'doughnut';\n }\n}\n","<canvas #canvas></canvas>","/*\n * Public API Surface of maneric-charts\n */\n\n// export * from './lib/maneric-charts';\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChartColorService"],"mappings":"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"}