UNPKG

@yelon/chart

Version:

Cache the dictionary, city data etc.

1 lines 16.8 kB
{"version":3,"file":"water-wave.mjs","sources":["../../../../packages/chart/water-wave/water-wave.component.ts","../../../../packages/chart/water-wave/water-wave.component.html","../../../../packages/chart/water-wave/water-wave.module.ts","../../../../packages/chart/water-wave/water-wave.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { fromEvent, Subscription, debounceTime } from 'rxjs';\n\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\n\n@Component({\n selector: 'g2-water-wave',\n exportAs: 'g2WaterWave',\n templateUrl: './water-wave.component.html',\n host: { '[class.g2-water-wave]': 'true' },\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NzStringTemplateOutletDirective]\n})\nexport class G2WaterWaveComponent implements OnDestroy, OnChanges, OnInit {\n private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly platform = inject(Platform);\n\n private resize$: Subscription | null = null;\n @ViewChild('container', { static: true }) private node!: ElementRef;\n private timer!: number;\n\n // #region fields\n\n @Input({ transform: booleanAttribute }) animate = true;\n @Input({ transform: numberAttribute }) delay = 0;\n @Input() title?: string | TemplateRef<void> | null;\n @Input() color = '#1890FF';\n @Input({ transform: numberAttribute }) height = 160;\n @Input({ transform: numberAttribute }) percent?: number;\n\n // #endregion\n\n private renderChart(isUpdate: boolean): void {\n if (!this.resize$) return;\n\n this.updateRadio();\n\n const { percent, color, node, animate } = this;\n\n const data = Math.min(Math.max(percent! / 100, 0), 100);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n cancelAnimationFrame(this.timer);\n\n const canvas = node.nativeElement as HTMLCanvasElement;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n const radius = canvasWidth / 2;\n const lineWidth = 2;\n const cR = radius - lineWidth;\n\n ctx.beginPath();\n ctx.lineWidth = lineWidth * 2;\n\n const axisLength = canvasWidth - lineWidth;\n const unit = axisLength / 8;\n const xOffset = lineWidth;\n let sp = 0; // 周期偏移量\n const range = 0.2; // 振幅\n let currRange = range;\n let currData = 0;\n const waveupsp = animate ? 0.005 : 0.015; // 水波上涨速度\n\n let arcStack: [[number, number]?] | null = [];\n const bR = radius - lineWidth;\n const circleOffset = -(Math.PI / 2);\n let circleLock = true;\n\n for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) {\n arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]);\n }\n\n const cStartPoint = arcStack.shift() as [number, number];\n ctx.strokeStyle = color;\n ctx.moveTo(cStartPoint[0], cStartPoint[1]);\n\n function drawSin(): void {\n ctx.beginPath();\n ctx.save();\n\n const sinStack: [[number, number]?] = [];\n for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) {\n const x = sp + (xOffset + i) / unit;\n const y = Math.sin(x) * currRange;\n const dx = i;\n const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y;\n\n ctx.lineTo(dx, dy);\n sinStack.push([dx, dy]);\n }\n\n const startPoint = sinStack.shift() as [number, number];\n\n ctx.lineTo(xOffset + axisLength, canvasHeight);\n ctx.lineTo(xOffset, canvasHeight);\n ctx.lineTo(startPoint[0], startPoint[1]);\n\n const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight);\n gradient.addColorStop(0, '#ffffff');\n gradient.addColorStop(1, color);\n ctx.fillStyle = gradient;\n ctx.fill();\n ctx.restore();\n }\n\n function render(): void {\n ctx.clearRect(0, 0, canvasWidth, canvasHeight);\n if (circleLock && !isUpdate) {\n if (arcStack!.length) {\n if (animate) {\n const temp = arcStack!.shift() as [number, number];\n ctx.lineTo(temp[0], temp[1]);\n ctx.stroke();\n } else {\n for (const temp of arcStack!) {\n ctx.lineTo(temp![0], temp![1]);\n ctx.stroke();\n }\n arcStack = [];\n }\n } else {\n circleLock = false;\n ctx.lineTo(cStartPoint[0], cStartPoint[1]);\n ctx.stroke();\n arcStack = null;\n\n ctx.globalCompositeOperation = 'destination-over';\n ctx.beginPath();\n ctx.lineWidth = lineWidth;\n ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true);\n\n ctx.beginPath();\n ctx.save();\n ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true);\n\n ctx.restore();\n ctx.clip();\n ctx.fillStyle = color;\n }\n } else {\n if (data >= 0.85) {\n if (currRange > range / 4) {\n const t = range * 0.01;\n currRange -= t;\n }\n } else if (data <= 0.1) {\n if (currRange < range * 1.5) {\n const t = range * 0.01;\n currRange += t;\n }\n } else {\n if (currRange <= range) {\n const t = range * 0.01;\n currRange += t;\n }\n if (currRange >= range) {\n const t = range * 0.01;\n currRange -= t;\n }\n }\n if (data - currData > 0) {\n currData += waveupsp;\n }\n if (data - currData < 0) {\n currData -= waveupsp;\n }\n\n sp += 0.07;\n drawSin();\n }\n self.timer = requestAnimationFrame(render);\n }\n\n render();\n // drawSin();\n }\n\n private updateRadio(): void {\n const { offsetWidth } = this.el.parentNode! as HTMLElement;\n const radio = offsetWidth < this.height ? offsetWidth / this.height : 1;\n this.renderer.setStyle(this.el, 'transform', `scale(${radio})`);\n }\n\n render(): void {\n this.renderChart(false);\n }\n\n private installResizeEvent(): void {\n this.resize$ = fromEvent(window, 'resize')\n .pipe(debounceTime(200))\n .subscribe(() => this.updateRadio());\n }\n\n ngOnInit(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n this.installResizeEvent();\n this.ngZone.runOutsideAngular(() => setTimeout(() => this.render(), this.delay));\n }\n\n ngOnChanges(): void {\n this.ngZone.runOutsideAngular(() => this.renderChart(true));\n this.cdr.detectChanges();\n }\n\n ngOnDestroy(): void {\n if (this.timer) {\n cancelAnimationFrame(this.timer);\n }\n if (this.resize$) {\n this.resize$.unsubscribe();\n }\n }\n}\n","<div [style]=\"{ height: height + 'px', width: height + 'px', overflow: 'hidden' }\">\n <canvas #container class=\"g2-water-wave__canvas\" [attr.width]=\"height * 2\" [attr.height]=\"height * 2\"></canvas>\n</div>\n<div class=\"g2-water-wave__desc\" [style]=\"{ width: height + 'px' }\">\n @if (title) {\n <span class=\"g2-water-wave__desc-title\">\n <ng-container *nzStringTemplateOutlet=\"title\">{{ title }}</ng-container>\n </span>\n }\n <h4 class=\"g2-water-wave__desc-percent\">{{ percent }}%</h4>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\n\nimport { G2WaterWaveComponent } from './water-wave.component';\n\nconst COMPONENTS = [G2WaterWaveComponent];\n\n@NgModule({\n imports: [CommonModule, NzOutletModule, ...COMPONENTS],\n exports: COMPONENTS\n})\nexport class G2WaterWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}