@yelon/chart
Version: 
Cache the dictionary, city data etc.
1 lines • 10.9 kB
Source Map (JSON)
{"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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"}