UNPKG

@yelon/chart

Version:

Cache the dictionary, city data etc.

1 lines 10.9 kB
{"version":3,"file":"tag-cloud.mjs","sources":["../../../../packages/chart/tag-cloud/tag-cloud.component.ts","../../../../packages/chart/tag-cloud/tag-cloud.module.ts","../../../../packages/chart/tag-cloud/tag-cloud.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n numberAttribute\n} from '@angular/core';\nimport { fromEvent, debounceTime, filter } from 'rxjs';\n\nimport type { Chart, Event } from '@antv/g2';\n\nimport { G2BaseComponent } from '@yelon/chart/core';\nimport { NzSkeletonComponent } from 'ng-zorro-antd/skeleton';\n\nexport interface G2TagCloudData {\n value?: number;\n name?: string;\n [key: string]: any;\n}\n\nexport interface G2TagCloudClickItem {\n item: G2TagCloudData;\n ev: Event;\n}\n\n@Component({\n selector: 'g2-tag-cloud',\n exportAs: 'g2TagCloud',\n template: `@if (!loaded) {\n <nz-skeleton />\n }`,\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NzSkeletonComponent]\n})\nexport class G2TagCloudComponent extends G2BaseComponent {\n // #region fields\n\n @Input({ transform: numberAttribute }) width = 0;\n @Input({ transform: numberAttribute }) height = 200;\n @Input() padding: number | number[] | 'auto' = 0;\n @Input() data: G2TagCloudData[] = [];\n @Output() readonly clickItem = new EventEmitter<G2TagCloudClickItem>();\n\n // #endregion\n\n private initTagCloud(): void {\n const winG2 = this.winG2;\n winG2.registerShape('point', 'cloud', {\n draw(cfg: any, container: any) {\n const data = cfg.data as any;\n const textShape = container.addShape({\n type: 'text',\n name: 'tag-cloud-text',\n attrs: {\n ...cfg.style,\n fontSize: data.size,\n text: data.text,\n textAlign: 'center',\n fontFamily: data.font,\n fill: cfg.color,\n textBaseline: 'Alphabetic',\n x: cfg.x,\n y: cfg.y\n } as any\n });\n if (data.rotate) {\n winG2.Util.rotate(textShape, (data.rotate * Math.PI) / 180);\n }\n return textShape;\n }\n });\n }\n\n install(): void {\n this.initTagCloud();\n\n const { el, padding, theme } = this;\n if (this.height === 0) {\n this.height = this.el.nativeElement.clientHeight;\n }\n if (this.width === 0) {\n this.width = this.el.nativeElement.clientWidth;\n }\n\n const chart: Chart = (this._chart = new this.winG2.Chart({\n container: el.nativeElement,\n autoFit: false,\n padding,\n height: this.height,\n width: this.width,\n theme\n }));\n chart.scale({\n x: { nice: false },\n y: { nice: false }\n });\n chart.legend(false);\n chart.axis(false);\n chart.tooltip({\n showTitle: false,\n showMarkers: false\n });\n (chart.coordinate() as any).reflect();\n chart\n .point()\n .position('x*y')\n .color('text')\n .shape('cloud')\n .state({\n active: {\n style: {\n fillOpacity: 0.4\n }\n }\n });\n chart.interaction('element-active');\n\n chart.on('tag-cloud-text:click', (ev: Event) => {\n this.ngZone.run(() => this.clickItem.emit({ item: ev.data?.data, ev }));\n });\n\n this.ready.next(chart);\n\n this.changeData();\n chart.render();\n }\n\n changeData(): void {\n const { _chart, data } = this;\n if (!_chart || !Array.isArray(data) || data.length <= 0) return;\n\n const dv = new (window as any).DataSet.View().source(data);\n const range = dv.range('value');\n const min = range[0];\n const max = range[1];\n\n dv.transform({\n type: 'tag-cloud',\n fields: ['name', 'value'],\n // imageMask,\n font: 'Verdana',\n size: [this.width, this.height], // 宽高设置最好根据 imageMask 做调整\n padding: 0,\n timeInterval: 5000, // max execute time\n rotate() {\n let random = ~~(Math.random() * 4) % 4;\n if (random === 2) {\n random = 0;\n }\n return random * 90; // 0, 90, 270\n },\n fontSize(d: any) {\n return ((d.value - min) / (max - min)) * (32 - 8) + 8;\n }\n } as any);\n\n _chart.changeData(dv.rows);\n }\n\n private installResizeEvent(): void {\n this.resize$ = fromEvent(window, 'resize')\n .pipe(\n filter(() => !!this._chart),\n debounceTime(200)\n )\n .subscribe(() => this.changeData());\n }\n\n onInit(): void {\n this.installResizeEvent();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzSkeletonModule } from 'ng-zorro-antd/skeleton';\n\nimport { G2TagCloudComponent } from './tag-cloud.component';\n\nconst COMPONENTS = [G2TagCloudComponent];\n\n@NgModule({\n imports: [CommonModule, NzSkeletonModule, ...COMPONENTS],\n exports: COMPONENTS\n})\nexport class G2TagCloudModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}