UNPKG

ng-chartjs

Version:
1 lines 40.5 kB
{"version":3,"file":"ng-chartjs.mjs","sources":["../../../projects/ng-chartjs/src/lib/store.service.ts","../../../projects/ng-chartjs/src/lib/plugins-config.ts","../../../projects/ng-chartjs/src/lib/ng-chartjs.service.ts","../../../projects/ng-chartjs/src/lib/colors.ts","../../../projects/ng-chartjs/src/lib/ng-chartjs.directive.ts","../../../projects/ng-chartjs/src/lib/ng-chartjs.module.ts","../../../projects/ng-chartjs/src/public-api.ts","../../../projects/ng-chartjs/src/ng-chartjs.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StoreService {\n private _chartInstances: any[] = [];\n private _chartId: string[] = [];\n\n addChart(id: string, chart: any): void {\n for (let i = 0; i < this._chartId.length; i++) {\n if (id === this._chartId[i]) {\n return;\n }\n }\n this._chartId.push(id);\n this._chartInstances.push(chart);\n }\n\n removeChart(id: string): void {\n for (let i = 0; i < this._chartId.length; i++) {\n if (id === this._chartId[i]) {\n this._chartId.splice(i, 1);\n this._chartInstances.splice(i, 1); // delete chart instance.\n }\n }\n }\n\n getChart(id: string): any {\n for (let i = 0; i < this._chartId.length; i++) {\n if (id === this._chartId[i]) {\n return this._chartInstances[i];\n }\n }\n return null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ChartComponentLike } from 'chart.js/auto';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgChartjsCustomPluginConfig {\n plugins: ChartComponentLike[] = [];\n}\n\n","import { Injectable } from '@angular/core';\nimport { Chart } from 'chart.js';\nimport { NgChartjsCustomPluginConfig } from './plugins-config';\nimport { StoreService } from './store.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgChartjsService {\n constructor(\n private storeService: StoreService,\n private pluginConfig: NgChartjsCustomPluginConfig) {\n if (pluginConfig.plugins.length !== 0) {\n Chart.register(...pluginConfig.plugins);\n }\n }\n // get chart instance by id\n getChart(id: string): any {\n return this.storeService.getChart(id);\n }\n}\n\n/**\n * 深复制一个json对象\n * @source 需要深复制的对象\n */\nexport function deepCopyJson(source: any): any {\n if (!source || typeof source !== 'object') {\n return source;\n }\n const newObj = source.constructor === Array ? [] : {};\n for (const key in source) {\n if (typeof source[key] === 'object') {\n // @ts-ignore\n newObj[key] = deepCopyJson(source[key]);\n } else {\n // @ts-ignore\n newObj[key] = source[key];\n }\n }\n return newObj;\n}\n\n/**\n* 合并json对象,遇到相同元素级属性,以source为准\n* @source 被合并的json对象\n* @dest json对象,将此json的属性递归赋值给source\n*/\nexport function mergeJson(source: any, dest: any): Object {\n if (!dest) {\n return source;\n }\n source = source || {};\n for (const key of Object.keys(dest)) {\n if (source[key] === undefined) {\n source[key] = deepCopyJson(dest[key]);\n continue;\n }\n // 冲突了,如果是Object,看看有么有不冲突的属性\n // 不是Object 则以main为主,忽略即可。故不需要else\n if (isJson(dest[key])) {\n // arguments.callee 递归调用,并且与函数名解耦\n mergeJson(source[key], dest[key]);\n }\n }\n return source;\n}\n\n/**\n* 是否是json对象\n* @target 需要被判断的类型\n*/\nexport function isJson(target: any): boolean {\n if (target === null || target === undefined) { return false; }\n return typeof target === 'object' && target.constructor === Object;\n}","export interface Color {\n backgroundColor?: string | string[];\n borderWidth?: number | number[];\n borderColor?: string | string[];\n borderCapStyle?: string;\n borderDash?: number[];\n borderDashOffset?: number;\n borderJoinStyle?: string;\n\n pointBorderColor?: string | string[];\n pointBackgroundColor?: string | string[];\n pointBorderWidth?: number | number[];\n\n pointRadius?: number | number[];\n pointHoverRadius?: number | number[];\n pointHitRadius?: number | number[];\n\n pointHoverBackgroundColor?: string | string[];\n pointHoverBorderColor?: string | string[];\n pointHoverBorderWidth?: number | number[];\n pointStyle?: string | string[];\n\n hoverBackgroundColor?: string | string[];\n hoverBorderColor?: string | string[];\n hoverBorderWidth?: number;\n}\n\n// Default colors\nexport const DefaultColors: number[][] = [\n [63, 81, 181], // Indogo\n [0, 150, 136], // Teal\n [255, 152, 0], // Orange\n [233, 30, 99], // Pink\n [156, 39, 176], // Purple\n [0, 188, 212], // Cyan\n [3, 169, 244], // Light Blue\n [96, 125, 139], // Blue Grey\n [255, 193, 7], // Amber\n [37, 155, 36], // Green\n [205, 220, 57], // Lime\n [86, 119, 252] // Blue\n];\n\n// pie | doughnut\nexport interface Colors extends Color {\n data?: number[];\n label?: string;\n}\n\nexport function rgba(colour: number[], alpha: number): string {\n return 'rgba(' + colour.concat(alpha).join(',') + ')';\n}\n\nexport function getRandomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport function formatLineColor(colors: number[]): Color {\n return {\n backgroundColor: rgba(colors, 0.35),\n borderColor: rgba(colors, 1),\n pointBackgroundColor: rgba(colors, 1),\n pointBorderColor: '#fff',\n pointHoverBackgroundColor: '#fff',\n pointHoverBorderColor: rgba(colors, 0.95)\n };\n}\n\nexport function formatBarColor(colors: number[]): Color {\n return {\n backgroundColor: rgba(colors, 0.75),\n borderColor: rgba(colors, 1),\n hoverBackgroundColor: rgba(colors, 1),\n hoverBorderColor: rgba(colors, 1)\n };\n}\n\nexport function formatPieColors(colors: number[][]): Colors {\n return {\n backgroundColor: colors.map((color: number[]) => rgba(color, 0.76)),\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\nexport function formatPolarAreaColors(colors: number[][]): Color {\n return {\n backgroundColor: colors.map((color: number[]) => rgba(color, 0.75)),\n borderColor: colors.map((color: number[]) => rgba(color, 1)),\n hoverBackgroundColor: colors.map((color: number[]) => rgba(color, 1)),\n hoverBorderColor: colors.map((color: number[]) => rgba(color, 1))\n };\n}\n\nexport function getRandomColor(): number[] {\n return [getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255)];\n}\n\n\n/**\n* @method Generate colors for line|bar charts\n* @param index he index of the default color array. eg. 0, 1\n* @return number[]\n* @author vincent 2019-01-22\n* @version 0.0.0\n* @example\n* @log 1. vincent,2019-01-22,done\n*/\nexport function generateColor(index: number): number[] {\n return DefaultColors[index] || getRandomColor();\n}\n\n\n/**\n* @method Generate colors for pie|doughnut charts\n* @param count Length of data. eg. datasets.data.length\n* @return number[][]\n* @author vincent 2019-01-22\n* @version 0.0.0\n* @example\n* @log 1. vincent,2019-01-22,done\n*/\nexport function generateColors(count: number): number[][] {\n const colorsArr: number[][] = new Array(count);\n for (let i = 0; i < count; i++) {\n colorsArr[i] = DefaultColors[i] || getRandomColor();\n }\n return colorsArr;\n}\n\n\n/**\n* @method Generate colors by chart type\n* @param chartType The type of chart you are using. eg. line,bar\n* @param index The index of the default color array. eg. DefaultColors[index]\n* @param count Length of data. eg. datasets.data.length\n* @return Color or number[]\n* @author vincent 2019-01-22\n* @version 0.0.0\n* @example\n* @log 1. vincent,2019-01-22,done\n*/\nexport function getColors(chartType: string, index: number, count: number): Color | number[] {\n if (chartType === 'pie' ||\n chartType === 'doughnut' ||\n chartType === 'bubble' ||\n chartType === 'scatter') {\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 return generateColor(index);\n}\n","import {\n OnDestroy,\n OnInit,\n OnChanges,\n EventEmitter,\n ElementRef,\n Input,\n Output,\n SimpleChanges,\n Directive,\n NgZone\n} from '@angular/core';\n// import { Chart, ChartConfiguration, ChartEvent, DefaultDataPoint, registerables } from 'chart.js';\nimport Chart, \n{ \n ChartEvent, \n ChartConfiguration, \n ChartOptions, \n ChartDataset, \n ChartData \n} from 'chart.js/auto';\nimport { StoreService } from './store.service';\nimport { deepCopyJson, mergeJson, NgChartjsService } from './ng-chartjs.service';\nimport { getColors, Colors } from './colors';\n\nexport type Labels = Array<string | string[] | number | number[] | Date | Date[] | any | any[]>;\nexport type Orientation = 'oldest' | 'latest';\nexport interface NgChartjsEvent { event: ChartEvent; active: Array<{}>; }\n\n/* tslint:disable-next-line */\n@Directive({ selector: 'canvas[ngChartjs]', exportAs: 'ngChartjs' })\nexport class NgChartjsDirective implements OnDestroy, OnChanges, OnInit {\n\n // 图表的点集,它应该是数组<number []>仅用于线,条和雷达,否则数字[];\n // @ts-ignore\n @Input() data: number[] | any[];\n // 相当于chart.js内 data: {datasets: [{...}]}\n // @ts-ignore\n @Input() datasets: ChartData['datasets'];\n // x轴标签。这对图表来说是必要的:线,条和雷达。并且只是图表的标签(悬停):polarArea,pie和doughnut\n @Input() labels: Labels = [];\n // 相当于chart.js的option\n @Input() options?: ChartConfiguration['options'];\n // 内联插件属性\n @Input() inlinePlugins?: any[];\n // chartType line, bar, radar, pie, polarArea, doughnut\n // @ts-ignore\n @Input() chartType: ChartConfiguration['type'];\n // 数据颜色,如果没有指定,将使用默认和|或随机颜色\n // @ts-ignore\n @Input() colors: Colors[];\n // 是否显示图例\n // @ts-ignore\n @Input() legend: boolean;\n\n // @ts-ignore\n @Input() adding: { labels: Labels[], data: any[][] };\n // @ts-ignore\n @Input() removing: { orientation: Orientation }; // orientation is 'oldest' or 'latest\n // @ts-ignore\n @Input() resetOption?: ChartConfiguration['options'];\n\n @Input() noZone = true; // disable angular NgZone\n // @ts-ignore\n @Input() id: string = null; // chart instance id\n\n // 鼠标点击图表所有的区域\n @Output() chartClick: EventEmitter<NgChartjsEvent> = new EventEmitter();\n // 鼠标悬浮在标签或者活跃的点上面时\n @Output() chartHover: EventEmitter<NgChartjsEvent> = new EventEmitter();\n\n // get Chartjs object\n chart!: Chart;\n // @ts-ignore\n private ctx: CanvasRenderingContext2D;\n private initFlag = false;\n private hasChanges = false;\n\n private element: ElementRef;\n\n public constructor(\n element: ElementRef,\n private ngChartjsService: NgChartjsService,\n private storeService: StoreService,\n private zone: NgZone) {\n this.element = element; // 获取指令所在canvas元素\n }\n\n ngOnInit(): void {\n this.ctx = this.element.nativeElement.getContext('2d'); // 获取元素的ctx\n this.initFlag = true; // 是否初始化了的标志\n\n if (this.data || this.datasets) { // 判断data和datasets有一个有数据就刷新\n if (this.noZone) {\n this.zone.runOutsideAngular(() => {\n this.refresh();\n });\n } else {\n this.refresh();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // TODO: 插件变化刷新,开放刷新按钮\n if (this.initFlag) {\n // Check if the changes are in the data or datasets\n if (changes.hasOwnProperty('data') || changes.hasOwnProperty('datasets')) {\n if (changes.data) {\n this.updateChartData(changes.data.currentValue);\n } else {\n this.updateChartData(changes.datasets.currentValue);\n }\n this.hasChanges = true;\n }\n\n if (changes.hasOwnProperty('labels')) {\n this.chart.data.labels = changes.labels.currentValue;\n this.hasChanges = true;\n }\n\n if (changes.hasOwnProperty('legend')) {\n if (changes.legend.currentValue !== changes.legend.previousValue) {\n // @ts-ignore\n this.chart.options.plugins.legend.display = changes.legend.currentValue;\n this.hasChanges = true;\n }\n }\n\n if (changes.hasOwnProperty('adding')) {\n this.addData_(changes.adding.currentValue.labels, changes.adding.currentValue.data);\n this.hasChanges = true;\n }\n\n if (changes.hasOwnProperty('removing')) {\n if (changes.removing.currentValue.orientation === 'oldest' || changes.removing.currentValue.orientation === 'latest') {\n this.removeData_(changes.removing.currentValue.orientation);\n this.hasChanges = true;\n }\n }\n\n if (changes.hasOwnProperty('chartType')) {\n this.refresh();\n }\n\n if (changes.hasOwnProperty('resetOption')) {\n const resetOption = deepCopyJson(changes.resetOption.currentValue);\n this.chart.options = mergeJson(resetOption, this.chart.options);\n this.hasChanges = true;\n }\n\n if (this.hasChanges) {\n this.chart.update();\n this.hasChanges = false;\n }\n\n // change chart id\n if (changes.hasOwnProperty('id')) {\n this.removeChart(changes.id.previousValue);\n this.addChart(changes.id.currentValue);\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.chart) {\n this.chart.destroy();\n // @ts-ignore\n this.chart = void 0;\n\n this.removeChart(this.id);\n }\n }\n\n // update chartjs\n update(): void {\n this.chart.update();\n }\n\n // Dynamic add data\n addData(labels: Labels[], data: any[][]): void {\n this.addData_(labels, data);\n this.update();\n }\n // Dynamic remove data, orientation is 'ildest' or 'latest'\n removeData(orientation: Orientation): void {\n this.removeData_(orientation);\n this.update();\n }\n\n private refresh(): void {\n this.ngOnDestroy();\n this.chart = this.getChartBuilder(this.ctx/*, data, this.options*/);\n this.addChart(this.id);\n }\n\n private removeChart(id: string): void {\n if (this.element.nativeElement.hasAttribute('id')) {\n this.storeService.removeChart(this.element.nativeElement.id);\n return;\n }\n if (id !== null && id !== undefined) {\n this.storeService.removeChart(id); // delete chart instance.\n }\n }\n\n private addChart(id: string): void {\n if (this.element.nativeElement.hasAttribute('id')) {\n this.storeService.addChart(this.element.nativeElement.id, this.chart);\n return;\n }\n if (id !== null && id !== undefined) {\n this.storeService.addChart(id, this.chart);\n }\n }\n\n private updateChartData(newDataValues: number[] | any[]): void {\n if (Array.isArray(newDataValues[0].data)) {\n // @ts-ignore\n // this.chart.data.datasets.forEach((dataset: ChartDataset, i: number) => {\n // dataset.data = newDataValues[i].data;\n\n // if (newDataValues[i].label) {\n // dataset.label = newDataValues[i].label;\n // }\n // });\n\n // @ts-ignore\n this.chart.data.datasets = newDataValues;\n } else {\n // @ts-ignore\n this.chart.data.datasets[0].data = newDataValues;\n }\n // update colors\n // @ts-ignore\n this.chart.data.datasets = this.updateColors(this.chart.data.datasets);\n }\n\n private getChartBuilder(ctx: CanvasRenderingContext2D/*, data:Array<any>, options:any*/): Chart {\n const datasets = this.getDatasets();\n let options: ChartOptions = this.options || {};\n options = Object.assign({}, this.options); // 深复制options\n mergeJson(options, {\n plugins: {\n legend: {\n display: this.legend\n }\n }\n })\n\n // hock for onHover and onClick events\n options.hover = options.hover || {};\n if (!options.onHover) {\n options.onHover = (event: ChartEvent, active: Array<{}>) => {\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: ChartEvent, active: Array<{}>) => {\n this.chartClick.emit({ event, active });\n };\n }\n\n const inlinePlugins = this.inlinePlugins || [];\n\n const opts: ChartConfiguration = {\n type: this.chartType,\n data: {\n labels: this.labels,\n datasets: datasets // TODO: 后续更改这个属性名字,否则警告\n },\n options: options, // TODO: 后续更改这个属性名字,否则警告\n plugins: inlinePlugins\n };\n\n return new Chart(ctx, opts);\n }\n\n // 获取 chart.js的datasets数据\n private getDatasets(): ChartData['datasets'] {\n // @ts-ignore\n let datasets: ChartData['datasets'] = void 0;\n // in case if datasets is not provided, but data is present\n if (!this.datasets || !this.datasets.length && (this.data && this.data.length)) {\n if (Array.isArray(this.data[0])) {\n datasets = (this.data as number[][]).map((data: number[], index: number) => {\n return { data, label: this.labels[index] || `Label ${index}` };\n });\n } else {\n datasets = [{ data: this.data, label: `Label 0` }];\n }\n }\n\n datasets = this.updateColors(datasets); // update colors\n\n if (!datasets) {\n throw new Error(`ng-chartjs configuration error,\n data or datasets field are required to render char ${this.chartType}`);\n }\n\n return datasets;\n }\n\n // update dataset colors\n private updateColors(datasets: ChartData['datasets']): ChartData['datasets'] {\n if (this.datasets && this.datasets.length || (datasets && datasets.length)) {\n // fix elm type, pre type is number\n datasets = (this.datasets || datasets).map((elm: any, index: number) => {\n const newElm = Object.assign({}, elm);\n if (this.colors && this.colors.length) {\n Object.assign(newElm, this.colors[index]);\n } else {\n // @ts-ignore\n Object.assign(newElm, getColors(this.chartType, index, newElm.data.length));\n }\n return newElm;\n });\n }\n return datasets;\n }\n\n private addData_(labels: Labels[], data: any[][]): void {\n if (labels.length === 0 || data.length === 0) {\n return;\n }\n // update labels\n // @ts-ignore\n labels.forEach((label) => { this.chart.data.labels.push(label); });\n // @ts-ignore\n this.chart.data.datasets.forEach((dataset, index) => {\n if (data[index]) {\n for (let i = 0; i < data[index].length; i++) {\n // @ts-ignore\n dataset.data.push(data[index][i]);\n }\n } else {\n console.log('The added data does not match the original data');\n return;\n }\n });\n }\n\n private removeData_(orientation: Orientation): void {\n // fix: support to oldest feature\n if (orientation === 'latest') {\n // @ts-ignore\n this.chart.data.labels.pop();\n // @ts-ignore\n this.chart.data.datasets.forEach((dataset: ChartData['datasets']) => {\n // @ts-ignore\n dataset.data.pop();\n });\n } else if (orientation === 'oldest') {\n // @ts-ignore\n this.chart.data.labels.shift();\n // @ts-ignore\n this.chart.data.datasets.forEach((dataset: ChartData['datasets']) => {\n // @ts-ignore\n dataset.data.shift();\n });\n }\n }\n}\n","import { NgModule, ModuleWithProviders, Optional, SkipSelf, Injectable } from '@angular/core';\nimport { ChartComponentLike } from 'chart.js';\nimport { NgChartjsDirective } from './ng-chartjs.directive';\nimport { NgChartjsService } from './ng-chartjs.service';\nimport { NgChartjsCustomPluginConfig } from './plugins-config';\n\n@NgModule({\n imports: [],\n declarations: [NgChartjsDirective],\n exports: [NgChartjsDirective],\n providers: [NgChartjsService]\n})\nexport class NgChartjsModule {\n /**\n * Register a plugin.\n * @param plugins\n */\n public static registerPlugin(plugins: ChartComponentLike[] = []): ModuleWithProviders<NgChartjsModule> {\n const config = new NgChartjsCustomPluginConfig();\n config.plugins = plugins;\n\n return {\n ngModule: NgChartjsModule,\n providers: [\n {\n provide: NgChartjsCustomPluginConfig,\n useValue: config\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of ng-chartjs\n */\nexport * from './lib/ng-chartjs.directive';\nexport * from './lib/ng-chartjs.module';\nexport * from './lib/ng-chartjs.service';\nexport * from './lib/colors';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.StoreService","i2.NgChartjsCustomPluginConfig","Chart","i1.NgChartjsService","i2.StoreService"],"mappings":"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"}