@yelon/chart
Version:
Cache the dictionary, city data etc.
1 lines • 14.5 kB
Source Map (JSON)
{"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 '@yelon/chart/core';\nimport { toDate } from '@yelon/util/date-time';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\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]: any;\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\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 any)[`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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"}