{"version":3,"file":"timeline.mjs","sources":["../../../../packages/chart/timeline/timeline.component.ts","../../../../packages/chart/timeline/timeline.module.ts","../../../../packages/chart/timeline/timeline.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewEncapsulation,\n  booleanAttribute,\n  numberAttribute\n} from '@angular/core';\n\nimport type { Chart, Event, Types } from '@antv/g2';\nimport { format } from 'date-fns';\n\nimport { G2BaseComponent, G2Time } from '@delon/chart/core';\nimport { toDate } from '@delon/util/date-time';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzSkeletonComponent } from 'ng-zorro-antd/skeleton';\n\n/**\n * 数据\n *\n * 注：根据 `maxAxis` 值传递指标数据\n */\nexport interface G2TimelineData {\n  /**\n   * 时间值\n   */\n  time?: G2Time;\n  /** 指标1数据 */\n  y1: number;\n  /** 指标2数据 */\n  y2?: number;\n  /** 指标3数据 */\n  y3?: number;\n  /** 指标4数据 */\n  y4?: number;\n  /** 指标5数据 */\n  y5?: number;\n  [key: string]: NzSafeAny;\n}\n\nexport interface G2TimelineMap {\n  /** 指标1 */\n  y1: string;\n  /** 指标 */\n  y2?: string;\n  /** 指标3 */\n  y3?: string;\n  /** 指标4 */\n  y4?: string;\n  /** 指标5 */\n  y5?: string;\n\n  [key: string]: string | undefined;\n}\n\nexport interface G2TimelineClickItem {\n  item: G2TimelineData;\n  ev: Event;\n}\n\n@Component({\n  selector: 'g2-timeline',\n  exportAs: 'g2Timeline',\n  template: `\n    <ng-container *nzStringTemplateOutlet=\"title\">\n      <h4>{{ title }}</h4>\n    </ng-container>\n    @if (!loaded) {\n      <nz-skeleton />\n    }\n    <div #container></div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [NzStringTemplateOutletDirective, NzSkeletonComponent]\n})\nexport class G2TimelineComponent extends G2BaseComponent {\n  // #region fields\n\n  @Input() title?: string | TemplateRef<void> | null;\n  @Input({ transform: numberAttribute }) maxAxis = 2;\n  @Input() data: G2TimelineData[] = [];\n  @Input() titleMap?: G2TimelineMap | null;\n  @Input() colorMap: G2TimelineMap = { y1: '#5B8FF9', y2: '#5AD8A6', y3: '#5D7092', y4: '#F6BD16', y5: '#E86452' };\n  @Input() mask: string = 'HH:mm';\n  @Input() maskSlider: string = 'HH:mm';\n  @Input() position: 'top' | 'right' | 'bottom' | 'left' = 'top';\n  @Input({ transform: numberAttribute }) height = 450;\n  @Input() padding: number[] = [40, 8, 64, 40];\n  @Input({ transform: numberAttribute }) borderWidth = 2;\n  @Input({ transform: booleanAttribute }) slider = true;\n  @Output() readonly clickItem = new EventEmitter<G2TimelineClickItem>();\n\n  // #endregion\n\n  onlyChangeData = (changes: SimpleChanges): boolean => {\n    const tm = changes.titleMap;\n    return !(tm && !tm.firstChange && tm.currentValue !== tm.previousValue);\n  };\n\n  install(): void {\n    const { node, height, padding, slider, maxAxis, theme, maskSlider } = this;\n    const chart: Chart = (this._chart = new this.winG2.Chart({\n      container: node.nativeElement,\n      autoFit: true,\n      height,\n      padding,\n      theme\n    }));\n    chart.axis('time', { title: null });\n    chart.axis('y1', { title: null });\n    for (let i = 2; i <= maxAxis; i++) {\n      chart.axis(`y${i}`, false);\n    }\n\n    chart.line().position('time*y1');\n    for (let i = 2; i <= maxAxis; i++) {\n      chart.line().position(`time*y${i}`);\n    }\n\n    chart.tooltip({\n      showCrosshairs: true,\n      shared: true\n    });\n\n    const sliderPadding = { ...[], ...padding };\n    sliderPadding[0] = 0;\n    if (slider) {\n      chart.option('slider', {\n        height: 26,\n        start: 0,\n        end: 1,\n        trendCfg: {\n          isArea: false\n        },\n        minLimit: 2,\n        formatter: (val: Date) => format(val, maskSlider)\n      });\n    }\n\n    chart.on(`plot:click`, (ev: Event) => {\n      const records = this._chart.getSnapRecords({ x: ev.x, y: ev.y });\n      this.ngZone.run(() => this.clickItem.emit({ item: records[0]._origin, ev }));\n    });\n\n    chart.on(`legend-item:click`, (ev: Event) => {\n      const item = ev?.target?.get('delegateObject').item;\n      const id = item?.id;\n      const line = chart.geometries.find(w => w.getAttribute('position').getFields()[1] === id);\n      if (line) {\n        line.changeVisible(!item.unchecked);\n      }\n    });\n\n    this.ready.next(chart);\n\n    this.changeData();\n\n    chart.render();\n  }\n\n  changeData(): void {\n    const { _chart, height, padding, mask, titleMap, position, colorMap, borderWidth, maxAxis } = this;\n    let data = [...this.data];\n    if (!_chart || data.length <= 0) return;\n\n    const arrAxis = [...Array(maxAxis)].map((_, index) => index + 1);\n\n    _chart.legend({\n      position,\n      custom: true,\n      items: arrAxis.map(id => {\n        const key = `y${id}`;\n        return {\n          id: key,\n          name: titleMap![key],\n          value: key,\n          marker: { style: { fill: colorMap[key] } }\n        } as Types.LegendItem;\n      })\n    });\n\n    // border\n    _chart.geometries.forEach((v, idx: number) => {\n      v.color((colorMap as NzSafeAny)[`y${idx + 1}`]).size(borderWidth);\n    });\n    _chart.height = height;\n    _chart.padding = padding;\n\n    // 转换成日期类型\n    data = data\n      .map(item => {\n        item.time = toDate(item.time!);\n        item._time = +item.time;\n        return item;\n      })\n      .sort((a, b) => a._time - b._time);\n\n    const max = Math.max(...arrAxis.map(id => [...data].sort((a, b) => b[`y${id}`] - a[`y${id}`])[0][`y${id}`]));\n    const scaleOptions: Record<string, Types.ScaleOption> = {};\n    arrAxis.forEach(id => {\n      const key = `y${id}`;\n      scaleOptions[key] = {\n        alias: titleMap![key],\n        max,\n        min: 0\n      };\n    });\n    _chart.scale({\n      time: {\n        type: 'time',\n        mask,\n        range: [0, 1]\n      },\n      ...scaleOptions\n    });\n\n    const initialRange = {\n      start: data[0]._time,\n      end: data[data.length - 1]._time\n    };\n    const filterData = data.filter(val => val._time >= initialRange.start && val._time <= initialRange.end);\n    _chart.changeData(filterData);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\n\nimport { G2TimelineComponent } from './timeline.component';\n\nconst COMPONENTS = [G2TimelineComponent];\n\n@NgModule({\n  imports: [CommonModule, NzOutletModule, NzSkeletonModule, ...COMPONENTS],\n  exports: COMPONENTS\n})\nexport class G2TimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}