{"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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"}