@visactor/vchart 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.js +109 -77
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/gauge/gauge.js +5 -2
- package/cjs/chart/gauge/gauge.js.map +1 -1
- package/cjs/chart/polar/progress-like.d.ts +1 -1
- package/cjs/chart/polar/progress-like.js +11 -17
- package/cjs/chart/polar/progress-like.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +4 -0
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +2 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +1 -0
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +1 -0
- package/cjs/core/vchart.js +6 -0
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/aggregation.js.map +1 -1
- package/cjs/layout/base-layout.js +1 -1
- package/cjs/layout/index.js +1 -1
- package/cjs/layout/interface.js +1 -1
- package/cjs/layout/util.js +1 -1
- package/cjs/mark/arc-3d.js +1 -1
- package/cjs/mark/arc.js +1 -1
- package/cjs/mark/area.js +1 -1
- package/cjs/mark/box-plot.js +1 -1
- package/cjs/series/geo/geo.d.ts +1 -1
- package/cjs/series/geo/geo.js +2 -2
- package/cjs/series/geo/geo.js.map +1 -1
- package/cjs/series/map/map.d.ts +1 -1
- package/cjs/series/map/map.js +2 -2
- package/cjs/series/map/map.js.map +1 -1
- package/cjs/series/map/tooltip-helper.js +2 -2
- package/cjs/series/map/tooltip-helper.js.map +1 -1
- package/cjs/series/pie/interface.d.ts +2 -0
- package/cjs/series/pie/interface.js.map +1 -1
- package/cjs/theme/builtin/common/component/axis/polar-axis.js +1 -1
- package/cjs/theme/builtin/common/component/axis/polar-axis.js.map +1 -1
- package/cjs/util/math.js +13 -29
- package/cjs/util/math.js.map +1 -1
- package/esm/chart/gauge/gauge.js +5 -1
- package/esm/chart/gauge/gauge.js.map +1 -1
- package/esm/chart/polar/progress-like.d.ts +1 -1
- package/esm/chart/polar/progress-like.js +12 -14
- package/esm/chart/polar/progress-like.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +4 -0
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +2 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +1 -0
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +1 -0
- package/esm/core/vchart.js +6 -0
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/aggregation.js +1 -1
- package/esm/data/transforms/aggregation.js.map +1 -1
- package/esm/layout/base-layout.js +1 -1
- package/esm/layout/index.js +1 -1
- package/esm/layout/interface.js +1 -1
- package/esm/layout/util.js +1 -1
- package/esm/mark/arc-3d.js +1 -1
- package/esm/mark/arc.js +1 -1
- package/esm/mark/area.js +1 -1
- package/esm/mark/box-plot.js +1 -1
- package/esm/series/geo/geo.d.ts +1 -1
- package/esm/series/geo/geo.js +2 -2
- package/esm/series/geo/geo.js.map +1 -1
- package/esm/series/map/map.d.ts +1 -1
- package/esm/series/map/map.js +2 -2
- package/esm/series/map/map.js.map +1 -1
- package/esm/series/map/tooltip-helper.js +2 -2
- package/esm/series/map/tooltip-helper.js.map +1 -1
- package/esm/series/pie/interface.d.ts +2 -0
- package/esm/series/pie/interface.js.map +1 -1
- package/esm/theme/builtin/common/component/axis/polar-axis.js +1 -1
- package/esm/theme/builtin/common/component/axis/polar-axis.js.map +1 -1
- package/esm/util/math.js +3 -15
- package/esm/util/math.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/geo/geo.ts"],"names":[],"mappings":"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","file":"geo.js","sourcesContent":["import type { IGeoCoordinateHelper } from '../../component/geo/interface';\nimport type { IPoint } from '../../typings';\nimport type { IGeoSeries } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\nimport { BaseSeries } from '../base/base-series';\nimport { isNil } from '../../util';\nimport type { SeriesData } from '../base/series-data';\nimport type { DataView } from '@visactor/vdataset';\nimport { PREFIX } from '../../constant';\nimport type { IGeoSeriesSpec } from './interface';\nimport type { IMark } from '../../mark/interface';\n\nexport abstract class GeoSeries<T extends IGeoSeriesSpec = IGeoSeriesSpec> extends BaseSeries<T> implements IGeoSeries {\n type = SeriesTypeEnum.geo;\n readonly coordinate = 'geo';\n\n protected _mapViewData: SeriesData;\n getMapViewData() {\n return this._mapViewData?.getDataView();\n }\n\n protected _mapViewDataStatistics!: DataView;\n\n _nameField!: string;\n get nameField() {\n return this._nameField;\n }\n set nameField(f: string) {\n this._nameField = f;\n }\n\n _valueField!: string;\n get valueField() {\n return this._valueField;\n }\n set valueField(f: string) {\n this._valueField = f;\n }\n\n protected _nameProperty: string = 'name';\n getNameProperty() {\n return this._nameProperty;\n }\n\n protected _centroidProperty?: string;\n getCentroidProperty() {\n return this._centroidProperty;\n }\n\n _coordinateHelper!: IGeoCoordinateHelper;\n getCoordinateHelper() {\n return this._coordinateHelper;\n }\n setCoordinateHelper(h: IGeoCoordinateHelper) {\n this._coordinateHelper = h;\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getGroupFields(): string[] {\n return null;\n }\n\n // position\n dataToPosition(datum: any): IPoint | null {\n let result: IPoint | null = null;\n\n if (!datum) {\n return result;\n }\n const { dataToPosition, latitudeField, longitudeField } = this._coordinateHelper;\n\n // 从地理数据映射中获取\n result = this.nameToPosition(datum);\n\n // 从用户传入的经纬度获取\n if (result === null) {\n const lonValue = longitudeField ? datum?.[longitudeField] : Number.NaN;\n const latValue = latitudeField ? datum?.[latitudeField] : Number.NaN;\n result = dataToPosition?.([lonValue, latValue]) ?? null;\n }\n\n return result;\n }\n\n protected nameToPosition(datum: any): IPoint | null {\n const name = this._getDatumName(datum);\n if (isNil(name)) {\n return null;\n }\n\n const mapData = this.getMapViewData()?.latestData?.filter((data: any) => this._getDatumName(data) === name)[0];\n if (isNil(mapData)) {\n return null;\n }\n\n const { dataToPosition } = this._coordinateHelper;\n const center = this.getDatumCenter(mapData);\n\n const pos = dataToPosition?.(center);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return null;\n }\n return pos;\n }\n\n abstract getDatumCenter(datum: any): [number, number];\n protected abstract _getDatumName(datum: any): string;\n\n dataToLatitude(latValue: number) {\n if (!this._coordinateHelper) {\n return Number.NaN;\n }\n const { dataToLatitude } = this._coordinateHelper;\n return dataToLatitude(latValue);\n }\n\n dataToLongitude(lonValue: number) {\n if (!this._coordinateHelper) {\n return Number.NaN;\n }\n const { dataToLatitude } = this._coordinateHelper;\n return dataToLatitude(lonValue);\n }\n\n valueToPosition(lonValue: number, latValue: number): IPoint {\n return {\n x: this.dataToLongitude(lonValue),\n y: this.dataToLatitude(latValue)\n };\n }\n\n positionToData(p: IPoint) {\n // TODO\n }\n latitudeToData(lat: number) {\n // TODO\n }\n longitudeToData(lon: number) {\n // TODO\n }\n\n dataToPositionX(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionY(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionZ(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n\n release() {\n super.release();\n this._mapViewData.release();\n this._mapViewData = this._mapViewDataStatistics = null;\n }\n\n // TODO: geo 不支持 stack,这些方法没有意义\n getStackGroupFields() {\n return [this._nameField];\n }\n\n getStackValueField() {\n // TODO: hack\n return this._spec.valueField;\n }\n\n setValueFieldToStack(): void {\n // do nothing\n }\n\n setValueFieldToPercent(): void {\n //do nothing\n }\n\n setValueFieldToStackOffsetSilhouette(): void {\n // do nothing\n }\n\n compileData() {\n this._mapViewData?.compile();\n }\n\n protected initStatisticalData(): void {\n super.initStatisticalData();\n if (this._mapViewData) {\n const viewDataName = `${PREFIX}_series_${this.id}_mapViewDataStatic`;\n this._mapViewDataStatistics = this.createStatisticalData(viewDataName, this._mapViewData.getDataView());\n this._mapViewData.getDataView().target.removeListener('change', this._mapViewDataStatistics.reRunAllTransform);\n }\n }\n\n /** seriesField */\n getSeriesKeys(): string[] {\n if (this._seriesField) {\n return (\n this._rawDataStatistics?.latestData?.[this._seriesField]?.values ??\n this._mapViewDataStatistics?.latestData[this._seriesField]?.values ??\n []\n );\n }\n if (this.name) {\n return [this.name];\n }\n if (this.userId) {\n return [`${this.userId}`];\n }\n return [`${this.type}_${this.id}`];\n }\n\n fillData() {\n super.fillData();\n this._mapViewData.getDataView()?.reRunAllTransform();\n this._mapViewDataStatistics?.reRunAllTransform();\n }\n\n getActiveMarks(): IMark[] {\n return [];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/geo/geo.ts"],"names":[],"mappings":"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","file":"geo.js","sourcesContent":["import type { IGeoCoordinateHelper } from '../../component/geo/interface';\nimport type { IPoint } from '../../typings';\nimport type { IGeoSeries } from '../interface';\nimport { SeriesTypeEnum } from '../interface/type';\nimport { BaseSeries } from '../base/base-series';\nimport { isNil } from '../../util';\nimport type { SeriesData } from '../base/series-data';\nimport type { DataView } from '@visactor/vdataset';\nimport { PREFIX } from '../../constant';\nimport type { IGeoSeriesSpec } from './interface';\nimport type { IMark } from '../../mark/interface';\n\nexport abstract class GeoSeries<T extends IGeoSeriesSpec = IGeoSeriesSpec> extends BaseSeries<T> implements IGeoSeries {\n type = SeriesTypeEnum.geo;\n readonly coordinate = 'geo';\n\n protected _mapViewData: SeriesData;\n getMapViewData() {\n return this._mapViewData?.getDataView();\n }\n\n protected _mapViewDataStatistics!: DataView;\n\n _nameField!: string;\n get nameField() {\n return this._nameField;\n }\n set nameField(f: string) {\n this._nameField = f;\n }\n\n _valueField!: string;\n get valueField() {\n return this._valueField;\n }\n set valueField(f: string) {\n this._valueField = f;\n }\n\n protected _nameProperty: string = 'name';\n getNameProperty() {\n return this._nameProperty;\n }\n\n protected _centroidProperty?: string;\n getCentroidProperty() {\n return this._centroidProperty;\n }\n\n _coordinateHelper!: IGeoCoordinateHelper;\n getCoordinateHelper() {\n return this._coordinateHelper;\n }\n setCoordinateHelper(h: IGeoCoordinateHelper) {\n this._coordinateHelper = h;\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n fields.push({ key: this._nameField, operations: ['values'] });\n fields.push({ key: this._valueField, operations: ['max', 'min'] });\n return fields;\n }\n\n getGroupFields(): string[] {\n return null;\n }\n\n // position\n dataToPosition(datum: any): IPoint | null {\n let result: IPoint | null = null;\n\n if (!datum) {\n return result;\n }\n const { dataToPosition, latitudeField, longitudeField } = this._coordinateHelper;\n\n // 从地理数据映射中获取\n result = this.nameToPosition(datum);\n\n // 从用户传入的经纬度获取\n if (result === null) {\n const lonValue = longitudeField ? datum?.[longitudeField] : Number.NaN;\n const latValue = latitudeField ? datum?.[latitudeField] : Number.NaN;\n result = dataToPosition?.([lonValue, latValue]) ?? null;\n }\n\n return result;\n }\n\n protected nameToPosition(datum: any): IPoint | null {\n const name = this.getDatumName(datum);\n if (isNil(name)) {\n return null;\n }\n\n const mapData = this.getMapViewData()?.latestData?.filter((data: any) => this.getDatumName(data) === name)[0];\n if (isNil(mapData)) {\n return null;\n }\n\n const { dataToPosition } = this._coordinateHelper;\n const center = this.getDatumCenter(mapData);\n\n const pos = dataToPosition?.(center);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return null;\n }\n return pos;\n }\n\n abstract getDatumCenter(datum: any): [number, number];\n abstract getDatumName(datum: any): string;\n\n dataToLatitude(latValue: number) {\n if (!this._coordinateHelper) {\n return Number.NaN;\n }\n const { dataToLatitude } = this._coordinateHelper;\n return dataToLatitude(latValue);\n }\n\n dataToLongitude(lonValue: number) {\n if (!this._coordinateHelper) {\n return Number.NaN;\n }\n const { dataToLatitude } = this._coordinateHelper;\n return dataToLatitude(lonValue);\n }\n\n valueToPosition(lonValue: number, latValue: number): IPoint {\n return {\n x: this.dataToLongitude(lonValue),\n y: this.dataToLatitude(latValue)\n };\n }\n\n positionToData(p: IPoint) {\n // TODO\n }\n latitudeToData(lat: number) {\n // TODO\n }\n longitudeToData(lon: number) {\n // TODO\n }\n\n dataToPositionX(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionY(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionZ(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n\n release() {\n super.release();\n this._mapViewData.release();\n this._mapViewData = this._mapViewDataStatistics = null;\n }\n\n // TODO: geo 不支持 stack,这些方法没有意义\n getStackGroupFields() {\n return [this._nameField];\n }\n\n getStackValueField() {\n // TODO: hack\n return this._spec.valueField;\n }\n\n setValueFieldToStack(): void {\n // do nothing\n }\n\n setValueFieldToPercent(): void {\n //do nothing\n }\n\n setValueFieldToStackOffsetSilhouette(): void {\n // do nothing\n }\n\n compileData() {\n this._mapViewData?.compile();\n }\n\n protected initStatisticalData(): void {\n super.initStatisticalData();\n if (this._mapViewData) {\n const viewDataName = `${PREFIX}_series_${this.id}_mapViewDataStatic`;\n this._mapViewDataStatistics = this.createStatisticalData(viewDataName, this._mapViewData.getDataView());\n this._mapViewData.getDataView().target.removeListener('change', this._mapViewDataStatistics.reRunAllTransform);\n }\n }\n\n /** seriesField */\n getSeriesKeys(): string[] {\n if (this._seriesField) {\n return (\n this._rawDataStatistics?.latestData?.[this._seriesField]?.values ??\n this._mapViewDataStatistics?.latestData[this._seriesField]?.values ??\n []\n );\n }\n if (this.name) {\n return [this.name];\n }\n if (this.userId) {\n return [`${this.userId}`];\n }\n return [`${this.type}_${this.id}`];\n }\n\n fillData() {\n super.fillData();\n this._mapViewData.getDataView()?.reRunAllTransform();\n this._mapViewDataStatistics?.reRunAllTransform();\n }\n\n getActiveMarks(): IMark[] {\n return [];\n }\n}\n"]}
|
package/esm/series/map/map.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare class MapSeries<T extends IMapSeriesSpec = IMapSeriesSpec> extend
|
|
|
38
38
|
handleZoom(e: ZoomEventParam): void;
|
|
39
39
|
handlePan(e: PanEventParam): void;
|
|
40
40
|
getDatumCenter(datum: any): [number, number];
|
|
41
|
-
|
|
41
|
+
getDatumName(datum: any): string;
|
|
42
42
|
dataToPositionX(data: any): number;
|
|
43
43
|
dataToPositionY(data: any): number;
|
|
44
44
|
viewDataUpdate(d: DataView): void;
|
package/esm/series/map/map.js
CHANGED
|
@@ -120,7 +120,7 @@ export class MapSeries extends GeoSeries {
|
|
|
120
120
|
}
|
|
121
121
|
initLabelMarkStyle(labelMark) {
|
|
122
122
|
labelMark && (this._labelMark = labelMark, this.setMarkStyle(labelMark, {
|
|
123
|
-
text: datum => this.
|
|
123
|
+
text: datum => this.getDatumName(datum),
|
|
124
124
|
x: datum => {
|
|
125
125
|
var _a;
|
|
126
126
|
return null === (_a = this.dataToPosition(datum)) || void 0 === _a ? void 0 : _a.x;
|
|
@@ -185,7 +185,7 @@ export class MapSeries extends GeoSeries {
|
|
|
185
185
|
var _a, _b, _c, _d;
|
|
186
186
|
return this._centroidProperty && (null === (_a = datum.properties) || void 0 === _a ? void 0 : _a[this._centroidProperty]) ? null === (_b = datum.properties) || void 0 === _b ? void 0 : _b[this._centroidProperty] : isValidNumber(datum.centroidX * datum.centroidY) ? [ datum.centroidX, datum.centroidY ] : (null === (_c = datum.properties) || void 0 === _c ? void 0 : _c.center) ? datum.properties.center : (null === (_d = datum.properties) || void 0 === _d ? void 0 : _d.centroid) ? datum.properties.centroid : [ Number.NaN, Number.NaN ];
|
|
187
187
|
}
|
|
188
|
-
|
|
188
|
+
getDatumName(datum) {
|
|
189
189
|
var _a, _b, _c, _d;
|
|
190
190
|
return datum[this.nameField] ? datum[this.nameField] : (null === (_a = datum.properties) || void 0 === _a ? void 0 : _a[this._nameProperty]) ? (null === (_b = this._spec) || void 0 === _b ? void 0 : _b.nameMap) ? null !== (_c = this._spec.nameMap[datum.properties[this._nameProperty]]) && void 0 !== _c ? _c : "" : null !== (_d = datum.properties[this._nameProperty]) && void 0 !== _d ? _d : "" : "";
|
|
191
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/map/map.ts"],"names":[],"mappings":"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","file":"map.js","sourcesContent":["import { Matrix } from '@visactor/vutils';\n/* eslint-disable no-duplicate-imports */\nimport type { FeatureData } from '@visactor/vgrammar-core';\nimport { registerProjection } from '@visactor/vgrammar-projection';\nimport { DataView } from '@visactor/vdataset';\nimport type { IPathMark } from '../../mark/path';\nimport { geoSourceMap, registerMapSource, unregisterMapSource } from './geo-source';\nimport { lookup } from '../../data/transforms/lookup';\nimport type { Maybe, Datum, StringOrNumber } from '../../typings';\nimport { isValid, isValidNumber, mergeSpec } from '../../util';\nimport { GeoSeries } from '../geo/geo';\nimport { DEFAULT_MAP_LOOK_UP_KEY, map } from '../../data/transforms/map';\nimport { copyDataView } from '../../data/transforms/copy-data-view';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { MapSeriesTooltipHelper } from './tooltip-helper';\nimport { AttributeLevel, DEFAULT_DATA_SERIES_FIELD, DEFAULT_DATA_INDEX } from '../../constant/index';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IMapSeriesSpec, IMapSeriesTheme } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport { animationConfig, shouldDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { PathMark } from '../../mark/path';\nimport { mapSeriesMark } from './constant';\nimport type { ILabelMark } from '../../mark/label';\nimport { Factory } from '../../core/factory';\nimport { registerGeoCoordinate } from '../../component/geo';\nimport type { IMark } from '../../mark/interface';\n\nexport class MapSeries<T extends IMapSeriesSpec = IMapSeriesSpec> extends GeoSeries<T> {\n static readonly type: string = SeriesTypeEnum.map;\n type = SeriesTypeEnum.map;\n\n static readonly mark: SeriesMarkMap = mapSeriesMark;\n\n map!: string;\n\n protected _nameMap!: { [key: StringOrNumber]: StringOrNumber };\n getNameMap() {\n return this._nameMap;\n }\n\n protected declare _theme: Maybe<IMapSeriesTheme>;\n\n private _areaCache: Map<string, { shape: string }> = new Map();\n\n private _pathMark: IPathMark;\n private _labelMark: ILabelMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.map = this._spec.map;\n this._nameMap = this._spec.nameMap;\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._spec.nameProperty && (this._nameProperty = this._spec.nameProperty);\n this._spec.centroidProperty && (this._centroidProperty = this._spec.centroidProperty);\n\n if (!this.map) {\n this._option?.onError(`map type '${this.map}' is not specified !`);\n }\n\n if (!geoSourceMap.get(this.map)) {\n this._option?.onError(`'${this.map}' data is not registered !`);\n }\n }\n\n // data\n initData(): void {\n super.initData();\n\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n registerDataSetInstanceTransform(this._dataSet, 'map', map);\n registerDataSetInstanceTransform(this._dataSet, 'lookup', lookup);\n\n // 初始化地图数据\n const features = geoSourceMap.get(this.map);\n if (!features) {\n this._option?.onError('no valid map data found!');\n }\n const mapData = new DataView(this._dataSet);\n\n mapData\n .parse([features], {\n type: 'dataview'\n })\n .transform({ type: 'copyDataView', options: { deep: true } })\n .transform({\n type: 'map',\n options: {\n nameMap: this._nameMap,\n nameProperty: this._nameProperty\n }\n })\n .transform({\n type: 'lookup',\n options: {\n from: () => this._data?.getLatestData(),\n key: DEFAULT_MAP_LOOK_UP_KEY,\n fields: this._nameField,\n set: (feature: FeatureData, datum: Datum) => {\n if (datum) {\n Object.keys(datum).forEach(key => {\n if (!(key in feature)) {\n feature[key] = datum[key];\n }\n });\n }\n }\n }\n });\n this._data?.getDataView().target.addListener('change', mapData.reRunAllTransform);\n this._mapViewData = new SeriesData(this._option, mapData);\n }\n\n // mark\n initMark() {\n this._pathMark = this._createMark(MapSeries.mark.area, {\n morph: shouldDoMorph(this._spec.animation, this._spec.morph, userAnimationConfig('area', this._spec)),\n defaultMorphElementKey: this.getDimensionField()[0],\n groupKey: this.getDimensionField()[0],\n isSeriesMark: true,\n skipBeforeLayouted: true,\n dataView: this._mapViewData.getDataView(),\n dataProductId: this._mapViewData.getProductId(),\n label: mergeSpec({ animation: false }, this._spec.label) // 地图交互通过 vrender api,自身不支持动画,所以 label 也不支持动画\n }) as IPathMark;\n }\n\n initMarkStyle() {\n const pathMark = this._pathMark;\n if (pathMark) {\n this.setMarkStyle(\n pathMark,\n {\n fill: (datum: any) => {\n if (isValid(datum[this._seriesField ?? DEFAULT_DATA_SERIES_FIELD])) {\n return (this._option.globalScale.getScale('color') ?? this.getDefaultColorScale()).scale(\n datum[this._seriesField ?? DEFAULT_DATA_SERIES_FIELD]\n );\n }\n return this._spec?.defaultFillColor;\n },\n path: this.getPath.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n\n pathMark.setPostProcess('fill', result => {\n if (!isValid(result)) {\n return this._spec.defaultFillColor;\n }\n return result;\n });\n\n this.setMarkStyle(\n pathMark,\n {\n smoothScale: true\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._trigger.registerMark(pathMark);\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark) {\n if (!labelMark) {\n return;\n }\n this._labelMark = labelMark;\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n const text = this._getDatumName(datum);\n return text;\n },\n x: (datum: Datum) => this.dataToPosition(datum)?.x,\n y: (datum: Datum) => this.dataToPosition(datum)?.y\n });\n }\n\n initAnimation() {\n this._pathMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.area, this._spec)\n )\n );\n }\n\n protected initTooltip() {\n this._tooltipHelper = new MapSeriesTooltipHelper(this);\n this._pathMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pathMark);\n }\n\n protected getPath(datum: any) {\n const area = this._areaCache.get(datum[DEFAULT_DATA_INDEX]);\n if (area) {\n return area.shape;\n }\n const shape = this._coordinateHelper?.shape(datum);\n this._areaCache.set(datum[DEFAULT_DATA_INDEX], {\n shape\n });\n return shape;\n }\n\n // life cycle\n onEvaluateEnd() {\n this._mapViewData.updateData();\n }\n\n getDimensionField(): string[] {\n return [this.nameField];\n }\n\n getMeasureField(): string[] {\n return [this.valueField];\n }\n\n release() {\n super.release();\n this._areaCache.clear();\n this._nameMap = {};\n this._trigger = this._mapViewData = null as any;\n }\n\n handleZoom(e: ZoomEventParam) {\n const { scale, scaleCenter } = e;\n if (scale === 1) {\n return;\n }\n\n const pathGroup = this.getRootMark().getProduct()?.getGroupGraphicItem();\n if (pathGroup) {\n if (!pathGroup.attribute.postMatrix) {\n pathGroup.setAttributes({\n postMatrix: new Matrix()\n });\n }\n pathGroup.scale(scale, scale, scaleCenter);\n }\n const vgrammarLabel = this._labelMark?.getComponent()?.getProduct();\n\n if (vgrammarLabel) {\n vgrammarLabel.evaluateSync(null, null);\n }\n }\n\n handlePan(e: PanEventParam) {\n const { delta } = e;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n const pathGroup = this.getRootMark().getProduct()?.getGroupGraphicItem();\n if (pathGroup) {\n if (!pathGroup.attribute.postMatrix) {\n pathGroup.setAttributes({\n postMatrix: new Matrix()\n });\n }\n pathGroup.translate(delta[0], delta[1]);\n }\n const vgrammarLabel = this._labelMark?.getComponent()?.getProduct();\n\n if (vgrammarLabel) {\n vgrammarLabel.evaluateSync(null, null);\n }\n }\n\n getDatumCenter(datum: any): [number, number] {\n if (this._centroidProperty && datum.properties?.[this._centroidProperty]) {\n return datum.properties?.[this._centroidProperty];\n }\n\n if (isValidNumber(datum.centroidX * datum.centroidY)) {\n return [datum.centroidX, datum.centroidY];\n }\n\n if (datum.properties?.center) {\n return datum.properties.center;\n }\n\n if (datum.properties?.centroid) {\n return datum.properties.centroid;\n }\n\n return [Number.NaN, Number.NaN];\n }\n\n protected _getDatumName(datum: any): string {\n if (datum[this.nameField]) {\n return datum[this.nameField];\n }\n if (datum.properties?.[this._nameProperty]) {\n if (this._spec?.nameMap) {\n return this._spec.nameMap[datum.properties[this._nameProperty]] ?? '';\n }\n return datum.properties[this._nameProperty] ?? '';\n }\n return '';\n }\n\n dataToPositionX(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionY(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._mapViewData?.getDataView()?.reRunAllTransform();\n this._mapViewData?.updateData();\n }\n\n protected _getDataIdKey() {\n return DEFAULT_DATA_INDEX;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pathMark];\n }\n}\n\nexport const registerMapSeries = () => {\n // 注册语法元素\n registerProjection();\n registerGeoCoordinate();\n Factory.registerMark(PathMark.type, PathMark);\n Factory.registerSeries(MapSeries.type, MapSeries);\n Factory.registerImplement('registerMap', registerMapSource);\n Factory.registerImplement('unregisterMap', unregisterMapSource);\n registerFadeInOutAnimation();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/map/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErG,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,OAAO,SAAqD,SAAQ,SAAY;IAAtF;;QAEE,SAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QAalB,eAAU,GAAmC,IAAI,GAAG,EAAE,CAAC;IA2RjE,CAAC;IAjSC,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IASD,eAAe;;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/B,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,4BAA4B,CAAC,CAAC;SACjE;IACH,CAAC;IAGD,QAAQ;;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,gCAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QAC9E,gCAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5D,gCAAgC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAGlE,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;YACb,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC;SACnD;QACD,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO;aACJ,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU;SACjB,CAAC;aACD,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;aAC5D,SAAS,CAAC;YACT,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC;SACF,CAAC;aACD,SAAS,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,EAAE,CAAA,EAAA;gBACvC,GAAG,EAAE,uBAAuB;gBAC5B,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,GAAG,EAAE,CAAC,OAAoB,EAAE,KAAY,EAAE,EAAE;oBAC1C,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4BAC/B,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE;gCACrB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;6BAC3B;wBACH,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC;aACF;SACF,CAAC,CAAC;QACL,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;YACrD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrG,sBAAsB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACnD,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACrC,YAAY,EAAE,IAAI;YAClB,kBAAkB,EAAE,IAAI;YACxB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;YACzC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;YAC/C,KAAK,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SACzD,CAAc,CAAC;IAClB,CAAC;IAED,aAAa;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,CACf,QAAQ,EACR;gBACE,IAAI,EAAE,CAAC,KAAU,EAAE,EAAE;;oBACnB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAyB,CAAC,CAAC,EAAE;wBAClE,OAAO,CAAC,MAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,CACtF,KAAK,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,yBAAyB,CAAC,CACtD,CAAC;qBACH;oBACD,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,gBAAgB,CAAC;gBACtC,CAAC;gBACD,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;aAC9B,EACD,QAAQ,EACR,cAAc,CAAC,MAAM,CACtB,CAAC;YAEF,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;gBACvC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACpB,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;iBACpC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CACf,QAAQ,EACR;gBACE,WAAW,EAAE,IAAI;aAClB,EACD,QAAQ,EACR,cAAc,CAAC,QAAQ,CACxB,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SACtC;IACH,CAAC;IAED,kBAAkB,CAAC,SAAqB;QACtC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC3B,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAE,CAAC,CAAA,EAAA;YAClD,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAE,CAAC,CAAA,EAAA;SACnD,CAAC,CAAC;IACL,CAAC;IAED,aAAa;;QACX,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,eAAe,CACb,MAAA,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,2CAAI,EAC1C,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CACzD,CACF,CAAC;IACJ,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;IAES,OAAO,CAAC,KAAU;;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5D,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QACD,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,iBAAiB,0CAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;YAC7C,KAAK;SACN,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,aAAa;QACX,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAC;QAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAW,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,CAAiB;;QAC1B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO;SACR;QAED,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,0CAAE,mBAAmB,EAAE,CAAC;QACzE,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE;gBACnC,SAAS,CAAC,aAAa,CAAC;oBACtB,UAAU,EAAE,IAAI,MAAM,EAAE;iBACzB,CAAC,CAAC;aACJ;YACD,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;SAC5C;QACD,MAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,EAAE,0CAAE,UAAU,EAAE,CAAC;QAEpE,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAED,SAAS,CAAC,CAAgB;;QACxB,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;YACpC,OAAO;SACR;QACD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,0CAAE,mBAAmB,EAAE,CAAC;QACzE,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE;gBACnC,SAAS,CAAC,aAAa,CAAC;oBACtB,UAAU,EAAE,IAAI,MAAM,EAAE;iBACzB,CAAC,CAAC;aACJ;YACD,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,MAAM,aAAa,GAAG,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,EAAE,0CAAE,UAAU,EAAE,CAAC;QAEpE,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAED,cAAc,CAAC,KAAU;;QACvB,IAAI,IAAI,CAAC,iBAAiB,KAAI,MAAA,KAAK,CAAC,UAAU,0CAAG,IAAI,CAAC,iBAAiB,CAAC,CAAA,EAAE;YACxE,OAAO,MAAA,KAAK,CAAC,UAAU,0CAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACnD;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;YACpD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAE,MAAM,EAAE;YAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;SAChC;QAED,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAE,QAAQ,EAAE;YAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;SAClC;QAED,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,YAAY,CAAC,KAAU;;QACrB,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9B;QACD,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAG,IAAI,CAAC,aAAa,CAAC,EAAE;YAC1C,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,EAAE;gBACvB,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,mCAAI,EAAE,CAAC;aACvE;YACD,OAAO,MAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAI,EAAE,CAAC;SACnD;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe,CAAC,IAAS;;QACvB,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,eAAe,CAAC,IAAS;;QACvB,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,cAAc,CAAC,CAAW;;QACxB,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxB,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,EAAE,0CAAE,iBAAiB,EAAE,CAAC;QACtD,MAAA,IAAI,CAAC,YAAY,0CAAE,UAAU,EAAE,CAAC;IAClC,CAAC;IAES,aAAa;QACrB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;;AAxSe,cAAI,GAAW,cAAc,CAAC,GAAG,CAAC;AAGlC,cAAI,GAAkB,aAAa,CAAC;AAwStD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAEpC,kBAAkB,EAAE,CAAC;IACrB,qBAAqB,EAAE,CAAC;IACxB,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC5D,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAChE,0BAA0B,EAAE,CAAC;AAC/B,CAAC,CAAC","file":"map.js","sourcesContent":["import { Matrix } from '@visactor/vutils';\n/* eslint-disable no-duplicate-imports */\nimport type { FeatureData } from '@visactor/vgrammar-core';\nimport { registerProjection } from '@visactor/vgrammar-projection';\nimport { DataView } from '@visactor/vdataset';\nimport type { IPathMark } from '../../mark/path';\nimport { geoSourceMap, registerMapSource, unregisterMapSource } from './geo-source';\nimport { lookup } from '../../data/transforms/lookup';\nimport type { Maybe, Datum, StringOrNumber } from '../../typings';\nimport { isValid, isValidNumber, mergeSpec } from '../../util';\nimport { GeoSeries } from '../geo/geo';\nimport { DEFAULT_MAP_LOOK_UP_KEY, map } from '../../data/transforms/map';\nimport { copyDataView } from '../../data/transforms/copy-data-view';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { MapSeriesTooltipHelper } from './tooltip-helper';\nimport { AttributeLevel, DEFAULT_DATA_SERIES_FIELD, DEFAULT_DATA_INDEX } from '../../constant/index';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IMapSeriesSpec, IMapSeriesTheme } from './interface';\nimport { SeriesData } from '../base/series-data';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport { animationConfig, shouldDoMorph, userAnimationConfig } from '../../animation/utils';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport { PathMark } from '../../mark/path';\nimport { mapSeriesMark } from './constant';\nimport type { ILabelMark } from '../../mark/label';\nimport { Factory } from '../../core/factory';\nimport { registerGeoCoordinate } from '../../component/geo';\nimport type { IMark } from '../../mark/interface';\n\nexport class MapSeries<T extends IMapSeriesSpec = IMapSeriesSpec> extends GeoSeries<T> {\n static readonly type: string = SeriesTypeEnum.map;\n type = SeriesTypeEnum.map;\n\n static readonly mark: SeriesMarkMap = mapSeriesMark;\n\n map!: string;\n\n protected _nameMap!: { [key: StringOrNumber]: StringOrNumber };\n getNameMap() {\n return this._nameMap;\n }\n\n protected declare _theme: Maybe<IMapSeriesTheme>;\n\n private _areaCache: Map<string, { shape: string }> = new Map();\n\n private _pathMark: IPathMark;\n private _labelMark: ILabelMark;\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n this.map = this._spec.map;\n this._nameMap = this._spec.nameMap;\n this._nameField = this._spec.nameField;\n this._valueField = this._spec.valueField;\n this._spec.nameProperty && (this._nameProperty = this._spec.nameProperty);\n this._spec.centroidProperty && (this._centroidProperty = this._spec.centroidProperty);\n\n if (!this.map) {\n this._option?.onError(`map type '${this.map}' is not specified !`);\n }\n\n if (!geoSourceMap.get(this.map)) {\n this._option?.onError(`'${this.map}' data is not registered !`);\n }\n }\n\n // data\n initData(): void {\n super.initData();\n\n registerDataSetInstanceTransform(this._dataSet, 'copyDataView', copyDataView);\n registerDataSetInstanceTransform(this._dataSet, 'map', map);\n registerDataSetInstanceTransform(this._dataSet, 'lookup', lookup);\n\n // 初始化地图数据\n const features = geoSourceMap.get(this.map);\n if (!features) {\n this._option?.onError('no valid map data found!');\n }\n const mapData = new DataView(this._dataSet);\n\n mapData\n .parse([features], {\n type: 'dataview'\n })\n .transform({ type: 'copyDataView', options: { deep: true } })\n .transform({\n type: 'map',\n options: {\n nameMap: this._nameMap,\n nameProperty: this._nameProperty\n }\n })\n .transform({\n type: 'lookup',\n options: {\n from: () => this._data?.getLatestData(),\n key: DEFAULT_MAP_LOOK_UP_KEY,\n fields: this._nameField,\n set: (feature: FeatureData, datum: Datum) => {\n if (datum) {\n Object.keys(datum).forEach(key => {\n if (!(key in feature)) {\n feature[key] = datum[key];\n }\n });\n }\n }\n }\n });\n this._data?.getDataView().target.addListener('change', mapData.reRunAllTransform);\n this._mapViewData = new SeriesData(this._option, mapData);\n }\n\n // mark\n initMark() {\n this._pathMark = this._createMark(MapSeries.mark.area, {\n morph: shouldDoMorph(this._spec.animation, this._spec.morph, userAnimationConfig('area', this._spec)),\n defaultMorphElementKey: this.getDimensionField()[0],\n groupKey: this.getDimensionField()[0],\n isSeriesMark: true,\n skipBeforeLayouted: true,\n dataView: this._mapViewData.getDataView(),\n dataProductId: this._mapViewData.getProductId(),\n label: mergeSpec({ animation: false }, this._spec.label) // 地图交互通过 vrender api,自身不支持动画,所以 label 也不支持动画\n }) as IPathMark;\n }\n\n initMarkStyle() {\n const pathMark = this._pathMark;\n if (pathMark) {\n this.setMarkStyle(\n pathMark,\n {\n fill: (datum: any) => {\n if (isValid(datum[this._seriesField ?? DEFAULT_DATA_SERIES_FIELD])) {\n return (this._option.globalScale.getScale('color') ?? this.getDefaultColorScale()).scale(\n datum[this._seriesField ?? DEFAULT_DATA_SERIES_FIELD]\n );\n }\n return this._spec?.defaultFillColor;\n },\n path: this.getPath.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n\n pathMark.setPostProcess('fill', result => {\n if (!isValid(result)) {\n return this._spec.defaultFillColor;\n }\n return result;\n });\n\n this.setMarkStyle(\n pathMark,\n {\n smoothScale: true\n },\n 'normal',\n AttributeLevel.Built_In\n );\n this._trigger.registerMark(pathMark);\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark) {\n if (!labelMark) {\n return;\n }\n this._labelMark = labelMark;\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n const text = this.getDatumName(datum);\n return text;\n },\n x: (datum: Datum) => this.dataToPosition(datum)?.x,\n y: (datum: Datum) => this.dataToPosition(datum)?.y\n });\n }\n\n initAnimation() {\n this._pathMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.area, this._spec)\n )\n );\n }\n\n protected initTooltip() {\n this._tooltipHelper = new MapSeriesTooltipHelper(this);\n this._pathMark && this._tooltipHelper.activeTriggerSet.mark.add(this._pathMark);\n }\n\n protected getPath(datum: any) {\n const area = this._areaCache.get(datum[DEFAULT_DATA_INDEX]);\n if (area) {\n return area.shape;\n }\n const shape = this._coordinateHelper?.shape(datum);\n this._areaCache.set(datum[DEFAULT_DATA_INDEX], {\n shape\n });\n return shape;\n }\n\n // life cycle\n onEvaluateEnd() {\n this._mapViewData.updateData();\n }\n\n getDimensionField(): string[] {\n return [this.nameField];\n }\n\n getMeasureField(): string[] {\n return [this.valueField];\n }\n\n release() {\n super.release();\n this._areaCache.clear();\n this._nameMap = {};\n this._trigger = this._mapViewData = null as any;\n }\n\n handleZoom(e: ZoomEventParam) {\n const { scale, scaleCenter } = e;\n if (scale === 1) {\n return;\n }\n\n const pathGroup = this.getRootMark().getProduct()?.getGroupGraphicItem();\n if (pathGroup) {\n if (!pathGroup.attribute.postMatrix) {\n pathGroup.setAttributes({\n postMatrix: new Matrix()\n });\n }\n pathGroup.scale(scale, scale, scaleCenter);\n }\n const vgrammarLabel = this._labelMark?.getComponent()?.getProduct();\n\n if (vgrammarLabel) {\n vgrammarLabel.evaluateSync(null, null);\n }\n }\n\n handlePan(e: PanEventParam) {\n const { delta } = e;\n if (delta[0] === 0 && delta[1] === 0) {\n return;\n }\n const pathGroup = this.getRootMark().getProduct()?.getGroupGraphicItem();\n if (pathGroup) {\n if (!pathGroup.attribute.postMatrix) {\n pathGroup.setAttributes({\n postMatrix: new Matrix()\n });\n }\n pathGroup.translate(delta[0], delta[1]);\n }\n const vgrammarLabel = this._labelMark?.getComponent()?.getProduct();\n\n if (vgrammarLabel) {\n vgrammarLabel.evaluateSync(null, null);\n }\n }\n\n getDatumCenter(datum: any): [number, number] {\n if (this._centroidProperty && datum.properties?.[this._centroidProperty]) {\n return datum.properties?.[this._centroidProperty];\n }\n\n if (isValidNumber(datum.centroidX * datum.centroidY)) {\n return [datum.centroidX, datum.centroidY];\n }\n\n if (datum.properties?.center) {\n return datum.properties.center;\n }\n\n if (datum.properties?.centroid) {\n return datum.properties.centroid;\n }\n\n return [Number.NaN, Number.NaN];\n }\n\n getDatumName(datum: any): string {\n if (datum[this.nameField]) {\n return datum[this.nameField];\n }\n if (datum.properties?.[this._nameProperty]) {\n if (this._spec?.nameMap) {\n return this._spec.nameMap[datum.properties[this._nameProperty]] ?? '';\n }\n return datum.properties[this._nameProperty] ?? '';\n }\n return '';\n }\n\n dataToPositionX(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n dataToPositionY(data: any): number {\n this._option?.onError('Method not implemented.');\n return 0;\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._mapViewData?.getDataView()?.reRunAllTransform();\n this._mapViewData?.updateData();\n }\n\n protected _getDataIdKey() {\n return DEFAULT_DATA_INDEX;\n }\n\n getActiveMarks(): IMark[] {\n return [this._pathMark];\n }\n}\n\nexport const registerMapSeries = () => {\n // 注册语法元素\n registerProjection();\n registerGeoCoordinate();\n Factory.registerMark(PathMark.type, PathMark);\n Factory.registerSeries(MapSeries.type, MapSeries);\n Factory.registerImplement('registerMap', registerMapSource);\n Factory.registerImplement('unregisterMap', unregisterMapSource);\n registerFadeInOutAnimation();\n};\n"]}
|
|
@@ -3,9 +3,9 @@ import { BaseSeriesTooltipHelper } from "../base/tooltip-helper";
|
|
|
3
3
|
export class MapSeriesTooltipHelper extends BaseSeriesTooltipHelper {
|
|
4
4
|
constructor() {
|
|
5
5
|
super(...arguments), this.titleValueCallback = datum => {
|
|
6
|
-
var _a
|
|
6
|
+
var _a;
|
|
7
7
|
const series = this.series;
|
|
8
|
-
return null !== (_a = this._getDimensionData(datum)) && void 0 !== _a ? _a :
|
|
8
|
+
return null !== (_a = this._getDimensionData(datum)) && void 0 !== _a ? _a : series.getDatumName(datum);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/map/tooltip-helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAAnE;;QACE,uBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE;;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAmB,CAAC;YACxC,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mCAAI,
|
|
1
|
+
{"version":3,"sources":["../src/series/map/tooltip-helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAAnE;;QACE,uBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE;;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAmB,CAAC;YACxC,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mCAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC;IACJ,CAAC;CAAA","file":"tooltip-helper.js","sourcesContent":["import type { ISeriesTooltipHelper } from '../interface';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport type { MapSeries } from './map';\n\nexport class MapSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n titleValueCallback = (datum: any) => {\n const series = this.series as MapSeries;\n return this._getDimensionData(datum) ?? series.getDatumName(datum);\n };\n}\n"]}
|
|
@@ -37,6 +37,8 @@ export type IPie3dSeriesSpec = {
|
|
|
37
37
|
export interface IPie3dSeriesTheme extends IPolarSeriesTheme {
|
|
38
38
|
[SeriesMarkNameEnum.pie3d]?: Partial<IMarkTheme<IArc3dMarkSpec>>;
|
|
39
39
|
[SeriesMarkNameEnum.label]?: IArcLabelSpec;
|
|
40
|
+
innerLabel?: IArcLabelSpec;
|
|
41
|
+
outerLabel?: IArcLabelSpec;
|
|
40
42
|
}
|
|
41
43
|
export interface IArcLabelLineSpec extends IMarkSpec<ILineMarkSpec> {
|
|
42
44
|
visible?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/pie/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IAnimationSpec } from '../../animation/spec';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { IArcMarkSpec, ITextMarkSpec, IArc3dMarkSpec, ILineMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { IPolarSeriesSpec, IPolarSeriesTheme } from '../polar/interface';\nimport type { PieAppearPreset } from './animation/animation';\nimport type { ILabelSpec } from '../../component/label';\n\nexport type PieMarks = 'pie' | 'label' | 'labelLine';\n\nexport interface IPieSeriesSpec extends IPolarSeriesSpec, IAnimationSpec<PieMarks, PieAppearPreset> {\n type: 'pie';\n /**\n * 分类字段\n * @description 饼图每个扇区为独立的系列\n */\n categoryField: string;\n /** 数值字段 */\n valueField: string;\n /** 饼图中心点 x 坐标 */\n centerX?: number;\n /** 饼图中心点 y 坐标 */\n centerY?: number;\n /** 饼图扇区中心偏移 */\n centerOffset?: number;\n\n /**\n * 饼图扇区半径\n * @default 0.6\n * @deprecated use outerRadius instead\n */\n radius?: number;\n\n /**\n * 饼图扇区外半径\n * @default 0.6\n */\n outerRadius?: number;\n\n /**\n * 饼图扇区内半径\n * @default 0\n */\n innerRadius?: number;\n\n /**\n * 饼图扇区圆角半径\n * @default 0\n */\n cornerRadius?: number;\n /**\n * 饼图的起始角度(0 ~ 360)\n * @default -90\n */\n startAngle?: number;\n /**\n * 饼图的结束角度(0 ~ 360)\n * @default 270\n */\n endAngle?: number;\n /**\n * 扇区之间的间隔角度\n */\n padAngle?: number;\n\n /**\n * 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互。\n * @default 0\n * @since 1.4.0\n */\n minAngle?: number;\n\n /** 扇区样式 */\n [SeriesMarkNameEnum.pie]?: IMarkSpec<IArcMarkSpec>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n}\n\nexport interface IPieSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie]?: Partial<IMarkTheme<IArcMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n}\n\nexport type IPie3dSeriesSpec = {\n type: 'pie3d';\n // 饼图整体绕x轴的旋转角度\n angle3d?: number;\n} & Omit<IPieSeriesSpec, 'type'>;\n\nexport interface IPie3dSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie3d]?: Partial<IMarkTheme<IArc3dMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n}\n\nexport interface IArcLabelLineSpec extends IMarkSpec<ILineMarkSpec> {\n /**\n * 是否显示引导线\n * @default true\n */\n visible?: boolean;\n /**\n * 引导线 line1 部分最小长度\n * @default 20\n */\n line1MinLength?: number;\n /**\n * 引导线 line2 部分最小长度\n * @default 10\n */\n line2MinLength?: number;\n /**\n * 引导线是否光滑\n * @default false\n * @SInCE 1.4.0\n */\n smooth?: boolean;\n}\n\nexport type ArcLabelAlignType = 'arc' | 'labelLine' | 'edge';\n\nexport type ArcLabelStrategyType = 'priority' | 'vertical' | 'none';\n\nexport interface IArcLabelLayoutSpec {\n /**\n * 标签对齐方式\n * @default 'arc'\n */\n textAlign?: ArcLabelAlignType;\n /** @deprecate 建议统一使用textAlign,后续将废除 */\n align?: ArcLabelAlignType;\n /**\n * 标签布局策略\n * @default 'priority'\n */\n strategy?: ArcLabelStrategyType;\n /**\n * 是否启用切线约束\n * @default true\n */\n tangentConstraint?: boolean;\n}\n\n// export interface ILabelTextMarkSpec extends Omit<ITextMarkSpec, 'align' | 'textAlign'> {\n// /** text 配置 align 为 auto 时将根据布局逻辑自动处理 align */\n// textAlign?: TextAlign | 'auto';\n// /** @deprecate 建议统一使用textAlign,后续将废除 */\n// align?: TextAlign | 'auto';\n// }\n\nexport interface IArcLabelSpec extends ILabelSpec {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside';\n /**\n * 标签内容显示规则\n * @default 'all'\n */\n showRule?: 'all' | 'max' | 'min' | 'minAndMax' | 'headAndTail';\n /**\n * 是否允许标签重叠\n * @default false\n */\n coverEnable?: boolean;\n /**\n * 是否允许标签旋转\n * @default true\n */\n rotate?: boolean;\n\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 扇区间标签的间隔\n * @default 6\n */\n layoutArcGap?: number;\n\n /** 标签文字样式 */\n style?: ITextMarkSpec;\n /** 标签引导线样式 */\n line?: IArcLabelLineSpec;\n /** 标签布局配置 */\n layout?: IArcLabelLayoutSpec;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/pie/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IAnimationSpec } from '../../animation/spec';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { IArcMarkSpec, ITextMarkSpec, IArc3dMarkSpec, ILineMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { IPolarSeriesSpec, IPolarSeriesTheme } from '../polar/interface';\nimport type { PieAppearPreset } from './animation/animation';\nimport type { ILabelSpec } from '../../component/label';\n\nexport type PieMarks = 'pie' | 'label' | 'labelLine';\n\nexport interface IPieSeriesSpec extends IPolarSeriesSpec, IAnimationSpec<PieMarks, PieAppearPreset> {\n type: 'pie';\n /**\n * 分类字段\n * @description 饼图每个扇区为独立的系列\n */\n categoryField: string;\n /** 数值字段 */\n valueField: string;\n /** 饼图中心点 x 坐标 */\n centerX?: number;\n /** 饼图中心点 y 坐标 */\n centerY?: number;\n /** 饼图扇区中心偏移 */\n centerOffset?: number;\n\n /**\n * 饼图扇区半径\n * @default 0.6\n * @deprecated use outerRadius instead\n */\n radius?: number;\n\n /**\n * 饼图扇区外半径\n * @default 0.6\n */\n outerRadius?: number;\n\n /**\n * 饼图扇区内半径\n * @default 0\n */\n innerRadius?: number;\n\n /**\n * 饼图扇区圆角半径\n * @default 0\n */\n cornerRadius?: number;\n /**\n * 饼图的起始角度(0 ~ 360)\n * @default -90\n */\n startAngle?: number;\n /**\n * 饼图的结束角度(0 ~ 360)\n * @default 270\n */\n endAngle?: number;\n /**\n * 扇区之间的间隔角度\n */\n padAngle?: number;\n\n /**\n * 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互。\n * @default 0\n * @since 1.4.0\n */\n minAngle?: number;\n\n /** 扇区样式 */\n [SeriesMarkNameEnum.pie]?: IMarkSpec<IArcMarkSpec>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n}\n\nexport interface IPieSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie]?: Partial<IMarkTheme<IArcMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n}\n\nexport type IPie3dSeriesSpec = {\n type: 'pie3d';\n // 饼图整体绕x轴的旋转角度\n angle3d?: number;\n} & Omit<IPieSeriesSpec, 'type'>;\n\nexport interface IPie3dSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie3d]?: Partial<IMarkTheme<IArc3dMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n}\n\nexport interface IArcLabelLineSpec extends IMarkSpec<ILineMarkSpec> {\n /**\n * 是否显示引导线\n * @default true\n */\n visible?: boolean;\n /**\n * 引导线 line1 部分最小长度\n * @default 20\n */\n line1MinLength?: number;\n /**\n * 引导线 line2 部分最小长度\n * @default 10\n */\n line2MinLength?: number;\n /**\n * 引导线是否光滑\n * @default false\n * @SInCE 1.4.0\n */\n smooth?: boolean;\n}\n\nexport type ArcLabelAlignType = 'arc' | 'labelLine' | 'edge';\n\nexport type ArcLabelStrategyType = 'priority' | 'vertical' | 'none';\n\nexport interface IArcLabelLayoutSpec {\n /**\n * 标签对齐方式\n * @default 'arc'\n */\n textAlign?: ArcLabelAlignType;\n /** @deprecate 建议统一使用textAlign,后续将废除 */\n align?: ArcLabelAlignType;\n /**\n * 标签布局策略\n * @default 'priority'\n */\n strategy?: ArcLabelStrategyType;\n /**\n * 是否启用切线约束\n * @default true\n */\n tangentConstraint?: boolean;\n}\n\n// export interface ILabelTextMarkSpec extends Omit<ITextMarkSpec, 'align' | 'textAlign'> {\n// /** text 配置 align 为 auto 时将根据布局逻辑自动处理 align */\n// textAlign?: TextAlign | 'auto';\n// /** @deprecate 建议统一使用textAlign,后续将废除 */\n// align?: TextAlign | 'auto';\n// }\n\nexport interface IArcLabelSpec extends ILabelSpec {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside';\n /**\n * 标签内容显示规则\n * @default 'all'\n */\n showRule?: 'all' | 'max' | 'min' | 'minAndMax' | 'headAndTail';\n /**\n * 是否允许标签重叠\n * @default false\n */\n coverEnable?: boolean;\n /**\n * 是否允许标签旋转\n * @default true\n */\n rotate?: boolean;\n\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 扇区间标签的间隔\n * @default 6\n */\n layoutArcGap?: number;\n\n /** 标签文字样式 */\n style?: ITextMarkSpec;\n /** 标签引导线样式 */\n line?: IArcLabelLineSpec;\n /** 标签布局配置 */\n layout?: IArcLabelLayoutSpec;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/builtin/common/component/axis/polar-axis.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAA0B;IAC/C,IAAI,EAAE;QACJ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC;KACT;CACF,CAAC","file":"polar-axis.js","sourcesContent":["import type { IPolarAxisCommonTheme } from '../../../../../component/axis/polar/interface/theme';\n\nexport const axisRadius: IPolarAxisCommonTheme = {\n grid: {\n smooth: true,\n visible: true\n },\n subGrid: {\n smooth: true,\n visible: false\n }\n};\n\nexport const axisAngle: IPolarAxisCommonTheme = {\n grid: {\n visible: true,\n style: {\n lineDash: [6, 6]\n }\n },\n label: {\n space:
|
|
1
|
+
{"version":3,"sources":["../src/theme/builtin/common/component/axis/polar-axis.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAA0B;IAC/C,IAAI,EAAE;QACJ,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,KAAK;KACf;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAA0B;IAC9C,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACjB;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC;KACT;CACF,CAAC","file":"polar-axis.js","sourcesContent":["import type { IPolarAxisCommonTheme } from '../../../../../component/axis/polar/interface/theme';\n\nexport const axisRadius: IPolarAxisCommonTheme = {\n grid: {\n smooth: true,\n visible: true\n },\n subGrid: {\n smooth: true,\n visible: false\n }\n};\n\nexport const axisAngle: IPolarAxisCommonTheme = {\n grid: {\n visible: true,\n style: {\n lineDash: [6, 6]\n }\n },\n label: {\n space: 5\n }\n};\n"]}
|
package/esm/util/math.js
CHANGED
|
@@ -2,12 +2,10 @@ import { isValidNumber } from "./type";
|
|
|
2
2
|
|
|
3
3
|
import { regressionLinear } from "@visactor/vgrammar-util";
|
|
4
4
|
|
|
5
|
-
import { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian } from "@visactor/vutils";
|
|
5
|
+
import { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian, maxInArray, minInArray } from "@visactor/vutils";
|
|
6
6
|
|
|
7
7
|
import { normalizeAngle, angleLabelOrientAttribute } from "@visactor/vutils-extension";
|
|
8
8
|
|
|
9
|
-
import { warn } from "./debug";
|
|
10
|
-
|
|
11
9
|
export const isClose = isNumberClose;
|
|
12
10
|
|
|
13
11
|
export { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };
|
|
@@ -45,21 +43,11 @@ export function outOfBounds(bounds, x, y) {
|
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
export function min(data, field) {
|
|
48
|
-
|
|
49
|
-
if (!isValidNumber(initialData)) return warn("invalid data"), 0;
|
|
50
|
-
return data.reduce(((pre, _cur) => {
|
|
51
|
-
const cur = field ? +_cur[field] : +_cur;
|
|
52
|
-
return isValidNumber(cur) && cur < pre && (pre = cur), pre;
|
|
53
|
-
}), initialData);
|
|
46
|
+
return minInArray(data.map((d => +d[field])).filter((d => isValidNumber(d))));
|
|
54
47
|
}
|
|
55
48
|
|
|
56
49
|
export function max(data, field) {
|
|
57
|
-
|
|
58
|
-
if (!isValidNumber(initialData)) return warn("invalid data"), 0;
|
|
59
|
-
return data.reduce(((pre, _cur) => {
|
|
60
|
-
const cur = field ? +_cur[field] : +_cur;
|
|
61
|
-
return isValidNumber(cur) && cur > pre && (pre = cur), pre;
|
|
62
|
-
}), initialData);
|
|
50
|
+
return maxInArray(data.map((d => +d[field])).filter((d => isValidNumber(d))));
|
|
63
51
|
}
|
|
64
52
|
|
|
65
53
|
export function sum(data, field) {
|
package/esm/util/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/util/math.ts"],"names":[],"mappings":"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","file":"math.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { IPoint, IPolarPoint, Quadrant, TextAlign, TextBaseLine } from '../typings';\nimport type { Datum } from '@visactor/vgrammar-core';\nimport { isValidNumber } from './type';\nimport { regressionLinear } from '@visactor/vgrammar-util';\nimport { isNumberClose, isGreater, isLess, isValid, PointService, median as visMedian } from '@visactor/vutils';\nimport { normalizeAngle, angleLabelOrientAttribute } from '@visactor/vutils-extension';\n\nimport { warn } from './debug';\n\nexport const isClose = isNumberClose;\nexport { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };\n\n/**\n * 极坐标系 -> 直角坐标系\n * @param point\n * @returns\n */\nexport function polarToCartesian(point: IPolarPoint): IPoint {\n if (!point.radius) {\n return { x: 0, y: 0 };\n }\n return {\n x: Math.cos(point.angle) * point.radius,\n y: Math.sin(point.angle) * point.radius\n };\n}\n\n/**\n * 根据角度计算象限\n * 计算角度所在象限\n * @param angle\n * @returns\n */\nexport function computeQuadrant(angle: number): Quadrant {\n angle = normalizeAngle(angle);\n if (angle > 0 && angle <= Math.PI / 2) {\n return 2;\n } else if (angle > Math.PI / 2 && angle <= Math.PI) {\n return 3;\n } else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {\n return 4;\n }\n return 1;\n}\n\n/**\n * 将角度轴起始角度 & 终结角度标准化\n * @param start\n * @param end\n * @returns\n */\nexport function normalizeStartEndAngle(\n start: number | null,\n end: number | null\n): { startAngle: number; endAngle: number } {\n let startAngle: number = 0;\n let endAngle: number = Math.PI * 2;\n const isStartValid = isValid(start);\n const isEndValid = isValid(end);\n if (!isStartValid && !isEndValid) {\n startAngle = 0;\n endAngle = Math.PI * 2;\n } else if (!isEndValid) {\n startAngle = start as number;\n endAngle = (start as number) + Math.PI * 2;\n } else if (!isStartValid) {\n startAngle = (end as number) - Math.PI * 2;\n endAngle = end as number;\n } else {\n startAngle = start as number;\n endAngle = end as number;\n }\n\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2;\n }\n while (startAngle > Math.PI * 2) {\n startAngle -= Math.PI * 2;\n endAngle -= Math.PI * 2;\n }\n while (endAngle < 0) {\n startAngle += Math.PI * 2;\n endAngle += Math.PI * 2;\n }\n return { startAngle, endAngle };\n}\n\nexport function outOfBounds(bounds: IBoundsLike, x: number, y: number) {\n return bounds.x1 > x || bounds.x2 < x || bounds.y1 > y || bounds.y2 < y;\n}\n\nexport function min(data: any[], field?: string): number {\n const initialData = field ? +data[0][field] : +data[0];\n\n if (!isValidNumber(initialData)) {\n warn('invalid data');\n return 0;\n }\n const min = data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur) && cur < pre) {\n pre = cur;\n }\n return pre;\n }, initialData);\n return min;\n}\n\nexport function max(data: any[], field?: string): number {\n const initialData = field ? +data[0][field] : +data[0];\n if (!isValidNumber(initialData)) {\n warn('invalid data');\n return 0;\n }\n const max = data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur) && cur > pre) {\n pre = cur;\n }\n return pre;\n }, initialData);\n return max;\n}\n\nexport function sum(data: any[], field?: string): number {\n return data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur)) {\n pre += cur;\n }\n return pre;\n }, 0);\n}\n\nexport function average(data: any[], field?: string): number {\n let sum = 0;\n let count = 0;\n data.forEach((x: any) => {\n const v = field ? +x[field] : +x;\n if (isValidNumber(v)) {\n sum += v;\n count++;\n }\n });\n\n const average = sum / count;\n return average;\n}\n\nexport function variance(data: any[], field?: string): number {\n const averageNumber = average(data, field);\n\n if (data.length <= 1) {\n return 0;\n }\n\n const total = data.reduce((sum, cur) => sum + (field ? +cur[field] : +cur - averageNumber) ** 2, 0);\n const value = total / (data.length - 1);\n return value;\n}\n\nexport function standardDeviation(data: any[], field?: string): number {\n const value = Math.sqrt(variance(data, field));\n return value;\n}\n\nexport function median(data: any[], field?: string): number {\n const value = visMedian(data.map((datum: Datum) => datum[field]));\n return value;\n}\n\nexport function regression(data: any[], fieldX?: string, fieldY?: string): any[] {\n const { predict } = regressionLinear(\n data,\n datum => datum[fieldX],\n datum => datum[fieldY]\n );\n // 计算回归线起点和终点\n const x1 = min(data, fieldX);\n const x2 = max(data, fieldX);\n\n const predict1 = predict(x1);\n const predict2 = predict(x2);\n return [\n {\n [fieldX]: x1,\n [fieldY]: predict1\n },\n {\n [fieldX]: x2,\n [fieldY]: predict2\n }\n ];\n}\n\n/**\n * 计算对应角度下的半径轴标签定位属性\n * @param angle 弧度角,需要注意是逆时针计算的\n * @returns\n */\nexport function radiusLabelOrientAttribute(angle: number) {\n let align: TextAlign = 'center';\n let baseline: TextBaseLine = 'middle';\n\n angle = normalizeAngle(angle);\n\n // right: 7/6 - 11/6; left: 1/6 - 5/6; center: 11/6 - 1/6 & 5/6 - 7/6\n if (angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6)) {\n align = 'right';\n } else if (angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6)) {\n align = 'left';\n } else {\n align = 'center';\n }\n\n // bottom: 5/3 - 1/3; top: 2/3 - 4/3; middle: 5/3 - 1/3 & 2/3 - 4/3\n if (angle >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3)) {\n baseline = 'bottom';\n } else if (angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3)) {\n baseline = 'top';\n } else {\n baseline = 'middle';\n }\n\n return { align, baseline };\n}\n\n/** 求一个向量顺时针旋转到另一个向量的角度,带正负号 */\nexport function vectorAngle(v1: IPoint, v2: IPoint) {\n const v1Length = distance(v1);\n const v2Length = distance(v2);\n // 叉乘\n const rho = Math.asin((v1.x * v2.y - v2.x * v1.y) / v1Length / v2Length);\n // 点乘\n const theta = Math.acos((v1.x * v2.x + v1.y * v2.y) / v1Length / v2Length);\n if (rho < 0) {\n return -theta;\n }\n return theta;\n}\n\n/** 求两个点的距离 */\nexport function distance(p1: IPoint, p2: IPoint = { x: 0, y: 0 }) {\n return PointService.distancePP(p1, p2);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/util/math.ts"],"names":[],"mappings":"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","file":"math.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { IPoint, IPolarPoint, Quadrant, TextAlign, TextBaseLine } from '../typings';\nimport type { Datum } from '@visactor/vgrammar-core';\nimport { isValidNumber } from './type';\nimport { regressionLinear } from '@visactor/vgrammar-util';\nimport {\n isNumberClose,\n isGreater,\n isLess,\n isValid,\n PointService,\n median as visMedian,\n maxInArray,\n minInArray\n} from '@visactor/vutils';\nimport { normalizeAngle, angleLabelOrientAttribute } from '@visactor/vutils-extension';\nexport const isClose = isNumberClose;\nexport { isGreater, isLess, normalizeAngle, angleLabelOrientAttribute };\n\n/**\n * 极坐标系 -> 直角坐标系\n * @param point\n * @returns\n */\nexport function polarToCartesian(point: IPolarPoint): IPoint {\n if (!point.radius) {\n return { x: 0, y: 0 };\n }\n return {\n x: Math.cos(point.angle) * point.radius,\n y: Math.sin(point.angle) * point.radius\n };\n}\n\n/**\n * 根据角度计算象限\n * 计算角度所在象限\n * @param angle\n * @returns\n */\nexport function computeQuadrant(angle: number): Quadrant {\n angle = normalizeAngle(angle);\n if (angle > 0 && angle <= Math.PI / 2) {\n return 2;\n } else if (angle > Math.PI / 2 && angle <= Math.PI) {\n return 3;\n } else if (angle > Math.PI && angle <= (3 * Math.PI) / 2) {\n return 4;\n }\n return 1;\n}\n\n/**\n * 将角度轴起始角度 & 终结角度标准化\n * @param start\n * @param end\n * @returns\n */\nexport function normalizeStartEndAngle(\n start: number | null,\n end: number | null\n): { startAngle: number; endAngle: number } {\n let startAngle: number = 0;\n let endAngle: number = Math.PI * 2;\n const isStartValid = isValid(start);\n const isEndValid = isValid(end);\n if (!isStartValid && !isEndValid) {\n startAngle = 0;\n endAngle = Math.PI * 2;\n } else if (!isEndValid) {\n startAngle = start as number;\n endAngle = (start as number) + Math.PI * 2;\n } else if (!isStartValid) {\n startAngle = (end as number) - Math.PI * 2;\n endAngle = end as number;\n } else {\n startAngle = start as number;\n endAngle = end as number;\n }\n\n while (endAngle <= startAngle) {\n endAngle += Math.PI * 2;\n }\n while (startAngle > Math.PI * 2) {\n startAngle -= Math.PI * 2;\n endAngle -= Math.PI * 2;\n }\n while (endAngle < 0) {\n startAngle += Math.PI * 2;\n endAngle += Math.PI * 2;\n }\n return { startAngle, endAngle };\n}\n\nexport function outOfBounds(bounds: IBoundsLike, x: number, y: number) {\n return bounds.x1 > x || bounds.x2 < x || bounds.y1 > y || bounds.y2 < y;\n}\nexport function min(data: any[], field?: string): number {\n return minInArray(data.map(d => +d[field]).filter(d => isValidNumber(d)));\n}\n\nexport function max(data: any[], field?: string): number {\n return maxInArray(data.map(d => +d[field]).filter(d => isValidNumber(d)));\n}\n\nexport function sum(data: any[], field?: string): number {\n return data.reduce((pre, _cur) => {\n const cur = field ? +_cur[field] : +_cur;\n if (isValidNumber(cur)) {\n pre += cur;\n }\n return pre;\n }, 0);\n}\n\nexport function average(data: any[], field?: string): number {\n let sum = 0;\n let count = 0;\n data.forEach((x: any) => {\n const v = field ? +x[field] : +x;\n if (isValidNumber(v)) {\n sum += v;\n count++;\n }\n });\n\n const average = sum / count;\n return average;\n}\n\nexport function variance(data: any[], field?: string): number {\n const averageNumber = average(data, field);\n\n if (data.length <= 1) {\n return 0;\n }\n\n const total = data.reduce((sum, cur) => sum + (field ? +cur[field] : +cur - averageNumber) ** 2, 0);\n const value = total / (data.length - 1);\n return value;\n}\n\nexport function standardDeviation(data: any[], field?: string): number {\n const value = Math.sqrt(variance(data, field));\n return value;\n}\n\nexport function median(data: any[], field?: string): number {\n const value = visMedian(data.map((datum: Datum) => datum[field]));\n return value;\n}\n\nexport function regression(data: any[], fieldX?: string, fieldY?: string): any[] {\n const { predict } = regressionLinear(\n data,\n datum => datum[fieldX],\n datum => datum[fieldY]\n );\n // 计算回归线起点和终点\n const x1 = min(data, fieldX);\n const x2 = max(data, fieldX);\n\n const predict1 = predict(x1);\n const predict2 = predict(x2);\n return [\n {\n [fieldX]: x1,\n [fieldY]: predict1\n },\n {\n [fieldX]: x2,\n [fieldY]: predict2\n }\n ];\n}\n\n/**\n * 计算对应角度下的半径轴标签定位属性\n * @param angle 弧度角,需要注意是逆时针计算的\n * @returns\n */\nexport function radiusLabelOrientAttribute(angle: number) {\n let align: TextAlign = 'center';\n let baseline: TextBaseLine = 'middle';\n\n angle = normalizeAngle(angle);\n\n // right: 7/6 - 11/6; left: 1/6 - 5/6; center: 11/6 - 1/6 & 5/6 - 7/6\n if (angle >= Math.PI * (7 / 6) && angle <= Math.PI * (11 / 6)) {\n align = 'right';\n } else if (angle >= Math.PI * (1 / 6) && angle <= Math.PI * (5 / 6)) {\n align = 'left';\n } else {\n align = 'center';\n }\n\n // bottom: 5/3 - 1/3; top: 2/3 - 4/3; middle: 5/3 - 1/3 & 2/3 - 4/3\n if (angle >= Math.PI * (5 / 3) || angle <= Math.PI * (1 / 3)) {\n baseline = 'bottom';\n } else if (angle >= Math.PI * (2 / 3) && angle <= Math.PI * (4 / 3)) {\n baseline = 'top';\n } else {\n baseline = 'middle';\n }\n\n return { align, baseline };\n}\n\n/** 求一个向量顺时针旋转到另一个向量的角度,带正负号 */\nexport function vectorAngle(v1: IPoint, v2: IPoint) {\n const v1Length = distance(v1);\n const v2Length = distance(v2);\n // 叉乘\n const rho = Math.asin((v1.x * v2.y - v2.x * v1.y) / v1Length / v2Length);\n // 点乘\n const theta = Math.acos((v1.x * v2.x + v1.y * v2.y) / v1Length / v2Length);\n if (rho < 0) {\n return -theta;\n }\n return theta;\n}\n\n/** 求两个点的距离 */\nexport function distance(p1: IPoint, p2: IPoint = { x: 0, y: 0 }) {\n return PointService.distancePP(p1, p2);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visactor/vchart",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
4
4
|
"description": "charts lib based @visactor/VGrammar",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -77,16 +77,16 @@
|
|
|
77
77
|
"@size-limit/file": "9.0.0",
|
|
78
78
|
"@internal/typescript-json-schema": "0.0.1",
|
|
79
79
|
"@internal/bundler": "0.0.1",
|
|
80
|
-
"@internal/
|
|
81
|
-
"@internal/
|
|
80
|
+
"@internal/eslint-config": "0.0.1",
|
|
81
|
+
"@internal/ts-config": "0.0.1"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
84
|
"@visactor/vutils": "~0.16.4",
|
|
85
85
|
"@visactor/vdataset": "~0.16.4",
|
|
86
86
|
"@visactor/vscale": "~0.16.4",
|
|
87
|
-
"@visactor/vrender-core": "~0.16.
|
|
88
|
-
"@visactor/vrender-kits": "~0.16.
|
|
89
|
-
"@visactor/vrender-components": "~0.16.
|
|
87
|
+
"@visactor/vrender-core": "~0.16.8",
|
|
88
|
+
"@visactor/vrender-kits": "~0.16.8",
|
|
89
|
+
"@visactor/vrender-components": "~0.16.8",
|
|
90
90
|
"@visactor/vgrammar-core": "~0.8.0",
|
|
91
91
|
"@visactor/vgrammar-projection": "~0.8.0",
|
|
92
92
|
"@visactor/vgrammar-wordcloud": "~0.8.0",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"@visactor/vgrammar-hierarchy": "~0.8.0",
|
|
95
95
|
"@visactor/vgrammar-sankey": "~0.8.0",
|
|
96
96
|
"@visactor/vgrammar-util": "~0.8.0",
|
|
97
|
-
"@visactor/vutils-extension": "1.5.
|
|
97
|
+
"@visactor/vutils-extension": "1.5.2"
|
|
98
98
|
},
|
|
99
99
|
"publishConfig": {
|
|
100
100
|
"access": "public",
|