@visactor/vchart 1.12.13 → 1.12.14-alpha.0
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 +74 -60
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/compile/compilable-base.js +1 -2
- package/cjs/compile/compiler.js +2 -0
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compiler.d.ts +1 -0
- package/cjs/compile/interface/compiler.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -0
- package/cjs/component/data-zoom/data-filter-base-component.js +2 -1
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/index.js +2 -1
- package/cjs/component/marker/base-marker.d.ts +4 -1
- package/cjs/component/marker/base-marker.js +12 -1
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +9 -2
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/base-mark-area.js +5 -5
- package/cjs/component/marker/mark-area/base-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/base-mark-line.js +9 -9
- package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/base-mark-point.js +16 -15
- package/cjs/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/cjs/component/marker/utils.d.ts +4 -4
- package/cjs/component/marker/utils.js +7 -7
- package/cjs/component/marker/utils.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/series/bar/bar.d.ts +2 -2
- package/cjs/series/bar/bar.js +15 -14
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/progress/linear/linear.js +4 -4
- package/cjs/series/progress/linear/linear.js.map +1 -1
- package/cjs/util/scale.d.ts +1 -1
- package/cjs/util/scale.js +2 -2
- package/cjs/util/scale.js.map +1 -1
- package/esm/compile/compilable-base.js +1 -2
- package/esm/compile/compiler.js +1 -0
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compiler.d.ts +1 -0
- package/esm/compile/interface/compiler.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -0
- package/esm/component/data-zoom/data-filter-base-component.js +2 -1
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/index.js +2 -1
- package/esm/component/marker/base-marker.d.ts +4 -1
- package/esm/component/marker/base-marker.js +12 -1
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/interface.d.ts +9 -2
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/mark-area/base-mark-area.js +5 -5
- package/esm/component/marker/mark-area/base-mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/base-mark-line.js +9 -9
- package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/base-mark-point.js +15 -15
- package/esm/component/marker/mark-point/base-mark-point.js.map +1 -1
- package/esm/component/marker/utils.d.ts +4 -4
- package/esm/component/marker/utils.js +8 -7
- package/esm/component/marker/utils.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/series/bar/bar.d.ts +2 -2
- package/esm/series/bar/bar.js +15 -14
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/progress/linear/linear.js +4 -4
- package/esm/series/progress/linear/linear.js.map +1 -1
- package/esm/util/scale.d.ts +1 -1
- package/esm/util/scale.js +2 -2
- package/esm/util/scale.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":"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","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport { ComponentTypeEnum, type IComponent, type IComponentOption } from '../interface';\nimport type { IGroupMark } from '../../mark/group';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n mixin,\n clamp,\n isNil,\n merge,\n isEqual,\n isValid,\n array,\n minInArray,\n maxInArray,\n abs,\n last\n} from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IFilterMode } from './interface';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant/attribute';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n protected _dataUpdating: boolean = false;\n\n // 数据\n protected _stateScale: IBaseScale;\n\n protected _relatedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n // 窗口范围缓存\n protected _spanCache!: number;\n protected _shouldChange: boolean = true;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n get relatedAxisComponent() {\n return this._relatedAxisComponent;\n }\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this.dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this.dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (\n zoomLock ||\n // 拖拽两端的handler, 而非拖拽中间handler\n (end - start !== this._spanCache &&\n // 拖拽后超出限制范围\n (end - start < this._minSpan || end - start > this._maxSpan))\n ) {\n this._shouldChange = false;\n } else {\n this._shouldChange = true;\n this._spanCache = end - start;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: 'startHandler' | 'endHandler') {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n default:\n axisScale.rangeFactorStart(newRangeFactor[0], true);\n axisScale.rangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n default:\n axisScale.rangeFactorEnd(newRangeFactor[1], true);\n axisScale.rangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: 'startHandler' | 'endHandler') => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === 'axis') {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag);\n if (this._auto) {\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n }\n\n // 强制更新视图, 不管/component/axis/base-axis.ts computeData中的tickData判断\n axis.effect.scaleUpdate({\n value: 'force'\n });\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === 'axis') {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, false);\n this._handleChange(this._start, this._end, true);\n // auto 模式下需要重新布局\n if (this._spec.auto) {\n this._dataUpdating = true;\n this.getChart()?.setLayoutTag(true, null, false);\n }\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n if ((this._spec as IDataZoomSpec).customDomain) {\n return (this._spec as IDataZoomSpec).customDomain;\n }\n\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n const isValidateValueAxis = isContinuous(valueAxisHelper.getScale(0).type);\n const isValidateStateAxis = isContinuous(stateAxisHelper.getScale(0).type);\n\n dataCollection.push(s.getRawData());\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.xField)\n : array(seriesSpec.angleField ?? seriesSpec.categoryField);\n const yField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.yField)\n : array(seriesSpec.radiusField ?? seriesSpec.valueField);\n\n originalStateFields[s.id] =\n s.type === 'link' ? ['from_xField'] : stateAxisHelper === xAxisHelper ? xField : yField;\n\n if (isValidateStateAxis) {\n stateFields.push(originalStateFields[s.id]);\n } else {\n stateFields.push(originalStateFields[s.id][0]);\n }\n\n if (this._valueField) {\n const valueField = s.type === 'link' ? ['from_yField'] : valueAxisHelper === xAxisHelper ? xField : yField;\n if (isValidateValueAxis) {\n valueFields.push(...valueField);\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n this._data = new CompilableData(this._option, data);\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n protected _statePointToData(state: number) {\n const scale = this._stateScale;\n const domain = scale.domain();\n\n // continuous scale: 本来可以用scale invert,但scale invert在大数据场景下性能不太好,所以这里自行计算\n if (isContinuous(scale.type)) {\n if (this._isReverse()) {\n return domain[0] + (last(domain) - domain[0]) * (1 - state);\n }\n return domain[0] + (last(domain) - domain[0]) * state;\n }\n\n // discete scale: 根据bandSize计算不准确, bandSize不是最新的, 导致index计算错误, 所以仍然使用invert\n let range = scale.range();\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (last(range) - range[0]) * state;\n // const bandSize = (scale as BandScale).bandwidth();\n // const domainIndex = Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1);\n // return domain[domainIndex];\n return scale.invert(posInRange);\n }\n\n dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (last(range) - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && isValid(this._spec.start)) || (mode === 'value' && isValid(this._spec.startValue));\n }\n return (mode === 'percent' && isValid(this._spec.end)) || (mode === 'value' && isValid(this._spec.endValue));\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this.dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this.dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this.dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain()[0] !== last(this._stateScale.domain())) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if ((!this._relatedAxisComponent || this._filterMode !== 'axis') && (this._start !== 0 || this._end !== 1)) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange);\n }\n } else {\n this._stateScale = new BandScale();\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== 'axis') {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n\n eachSeries(\n this._regions,\n s => {\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /** LifeCycle API**/\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, this._spec[m.name]);\n });\n });\n }\n\n changeRegions() {\n // do nothing\n }\n protected update(ctx: IComponentOption) {\n // do nothing\n }\n protected resize(ctx: IComponentOption) {\n // do nothing\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (params: { zoomDelta: number; zoomX?: number; zoomY?: number }) => {\n if (!this._activeRoam) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n\n // 判断是否滚动到最顶部或最底部\n // 如果滚动到最顶部或最底部,则不应该stopBubble\n const hasChange = this._start !== 0 && this._end !== 1;\n\n return active && hasChange;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n return false;\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? this._spec?.delayTime ?? 30 : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n const isShown = this._autoUpdate(layoutRect);\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n this._dataUpdating = false;\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n !this._dataUpdating &&\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n if (this.type === ComponentTypeEnum.scrollBar) {\n this._start = 0;\n this._end = 1;\n }\n this._updateRangeFactor();\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":"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","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport { ComponentTypeEnum, type IComponent, type IComponentOption } from '../interface';\nimport type { IGroupMark } from '../../mark/group';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport {\n mixin,\n clamp,\n isNil,\n merge,\n isEqual,\n isValid,\n array,\n minInArray,\n maxInArray,\n abs,\n last\n} from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IFilterMode } from './interface';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant/attribute';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n protected _dataUpdating: boolean = false;\n\n // 数据\n protected _stateScale: IBaseScale;\n\n protected _relatedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n // 窗口范围缓存\n protected _spanCache!: number;\n protected _shouldChange: boolean = true;\n\n protected _domainCache!: any;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n get relatedAxisComponent() {\n return this._relatedAxisComponent;\n }\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this.dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this.dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (\n zoomLock ||\n // 拖拽两端的handler, 而非拖拽中间handler\n (end - start !== this._spanCache &&\n // 拖拽后超出限制范围\n (end - start < this._minSpan || end - start > this._maxSpan))\n ) {\n this._shouldChange = false;\n } else {\n this._shouldChange = true;\n this._spanCache = end - start;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: 'startHandler' | 'endHandler') {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n default:\n axisScale.rangeFactorStart(newRangeFactor[0], true);\n axisScale.rangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n default:\n axisScale.rangeFactorEnd(newRangeFactor[1], true);\n axisScale.rangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: 'startHandler' | 'endHandler') => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === 'axis') {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag);\n if (this._auto) {\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n }\n\n // 强制更新视图, 不管/component/axis/base-axis.ts computeData中的tickData判断\n axis.effect.scaleUpdate({\n value: 'force'\n });\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === 'axis') {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, false);\n this._handleChange(this._start, this._end, true);\n // auto 模式下需要重新布局\n if (this._spec.auto && !isEqual(this._domainCache, domain)) {\n this._domainCache = domain;\n this._dataUpdating = true;\n this.getChart()?.setLayoutTag(true, null, false);\n }\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n if ((this._spec as IDataZoomSpec).customDomain) {\n return (this._spec as IDataZoomSpec).customDomain;\n }\n\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n const isValidateValueAxis = isContinuous(valueAxisHelper.getScale(0).type);\n const isValidateStateAxis = isContinuous(stateAxisHelper.getScale(0).type);\n\n dataCollection.push(s.getRawData());\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.xField)\n : array(seriesSpec.angleField ?? seriesSpec.categoryField);\n const yField =\n s.coordinate === 'cartesian'\n ? array(seriesSpec.yField)\n : array(seriesSpec.radiusField ?? seriesSpec.valueField);\n\n originalStateFields[s.id] =\n s.type === 'link' ? ['from_xField'] : stateAxisHelper === xAxisHelper ? xField : yField;\n\n if (isValidateStateAxis) {\n stateFields.push(originalStateFields[s.id]);\n } else {\n stateFields.push(originalStateFields[s.id][0]);\n }\n\n if (this._valueField) {\n const valueField = s.type === 'link' ? ['from_yField'] : valueAxisHelper === xAxisHelper ? xField : yField;\n if (isValidateValueAxis) {\n valueFields.push(...valueField);\n }\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n this._data = new CompilableData(this._option, data);\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n protected _statePointToData(state: number) {\n const scale = this._stateScale;\n const domain = scale.domain();\n\n // continuous scale: 本来可以用scale invert,但scale invert在大数据场景下性能不太好,所以这里自行计算\n if (isContinuous(scale.type)) {\n if (this._isReverse()) {\n return domain[0] + (last(domain) - domain[0]) * (1 - state);\n }\n return domain[0] + (last(domain) - domain[0]) * state;\n }\n\n // discete scale: 根据bandSize计算不准确, bandSize不是最新的, 导致index计算错误, 所以仍然使用invert\n let range = scale.range();\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (last(range) - range[0]) * state;\n // const bandSize = (scale as BandScale).bandwidth();\n // const domainIndex = Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1);\n // return domain[domainIndex];\n return scale.invert(posInRange);\n }\n\n dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (last(range) - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && isValid(this._spec.start)) || (mode === 'value' && isValid(this._spec.startValue));\n }\n return (mode === 'percent' && isValid(this._spec.end)) || (mode === 'value' && isValid(this._spec.endValue));\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this.dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this.dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this.dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain()[0] !== last(this._stateScale.domain())) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (last(this._stateScale.domain()) - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if ((!this._relatedAxisComponent || this._filterMode !== 'axis') && (this._start !== 0 || this._end !== 1)) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange);\n }\n } else {\n this._stateScale = new BandScale();\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== 'axis') {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n\n eachSeries(\n this._regions,\n s => {\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /** LifeCycle API**/\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, this._spec[m.name]);\n });\n });\n }\n\n changeRegions() {\n // do nothing\n }\n protected update(ctx: IComponentOption) {\n // do nothing\n }\n protected resize(ctx: IComponentOption) {\n // do nothing\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (params: { zoomDelta: number; zoomX?: number; zoomY?: number }) => {\n if (!this._activeRoam) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n\n // 判断是否滚动到最顶部或最底部\n // 如果滚动到最顶部或最底部,则不应该stopBubble\n const hasChange = this._start !== 0 && this._end !== 1;\n\n return active && hasChange;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n return false;\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? this._spec?.delayTime ?? 30 : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n const isShown = this._autoUpdate(layoutRect);\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n this._dataUpdating = false;\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n !this._dataUpdating &&\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n if (this.type === ComponentTypeEnum.scrollBar) {\n this._start = 0;\n this._end = 1;\n }\n this._updateRangeFactor();\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
|
package/esm/component/index.js
CHANGED
|
@@ -44,4 +44,5 @@ export { ScrollBar, DataZoom, CustomMark, Brush, MapLabelComponent, CartesianAxi
|
|
|
44
44
|
|
|
45
45
|
export { registerBrush, registerScrollBar, registerTitle, registerTooltip, registerCartesianBandAxis, registerCartesianCrossHair, registerCartesianLinearAxis, registerCartesianLogAxis, registerCartesianSymlogAxis, registerCartesianTimeAxis, registerContinuousLegend, registerCustomMark, registerDataZoom, registerDiscreteLegend, registerGeoCoordinate, registerIndicator, registerLabel, registerTotalLabel, registerMapLabel, registerMarkLine, registerMarkArea, registerMarkPoint, registerPolarMarkLine, registerPolarMarkArea, registerPolarMarkPoint, registerGeoMarkPoint, registerPlayer, registerPolarBandAxis, registerPolarCrossHair, registerPolarLinearAxis, registerPoptip };
|
|
46
46
|
|
|
47
|
-
export * from "./tooltip/interface";
|
|
47
|
+
export * from "./tooltip/interface";
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -4,7 +4,7 @@ import type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';
|
|
|
4
4
|
import type { IRegion } from '../../region/interface';
|
|
5
5
|
import type { CoordinateType, ILayoutRect, ILayoutType, IRect } from '../../typings';
|
|
6
6
|
import { BaseComponent } from '../base/base-component';
|
|
7
|
-
import type { IDataPos, IDataPosCallback, IMarkerSpec, IMarkerSupportSeries } from './interface';
|
|
7
|
+
import type { IDataPos, IDataPosCallback, IMarkerAttributeContext, IMarkerSpec, IMarkerSupportSeries } from './interface';
|
|
8
8
|
import type { IGraphic, IGroup } from '@visactor/vrender-core';
|
|
9
9
|
import type { IOptionWithCoordinates } from '../../data/transforms/aggregation';
|
|
10
10
|
export declare abstract class BaseMarker<T extends IMarkerSpec> extends BaseComponent<T> {
|
|
@@ -29,6 +29,9 @@ export declare abstract class BaseMarker<T extends IMarkerSpec> extends BaseComp
|
|
|
29
29
|
protected abstract _markerLayout(): void;
|
|
30
30
|
static _getMarkerCoordinateType(markerSpec: any): string;
|
|
31
31
|
static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
|
|
32
|
+
protected _markAttributeContext: IMarkerAttributeContext;
|
|
33
|
+
getMarkAttributeContext(): IMarkerAttributeContext;
|
|
34
|
+
protected _buildMarkerAttributeContext(): void;
|
|
32
35
|
created(): void;
|
|
33
36
|
protected _getAllRelativeSeries(): {
|
|
34
37
|
getRelativeSeries: () => IMarkerSupportSeries;
|
|
@@ -30,8 +30,19 @@ export class BaseMarker extends BaseComponent {
|
|
|
30
30
|
static getSpecInfo(chartSpec) {
|
|
31
31
|
return getSpecInfo(chartSpec, this.specKey, this.type, (s => !1 !== s.visible && this._getMarkerCoordinateType(s) === this.coordinateType));
|
|
32
32
|
}
|
|
33
|
+
getMarkAttributeContext() {
|
|
34
|
+
return this._markAttributeContext;
|
|
35
|
+
}
|
|
36
|
+
_buildMarkerAttributeContext() {
|
|
37
|
+
this._markAttributeContext = {
|
|
38
|
+
relativeSeries: this._relativeSeries,
|
|
39
|
+
startRelativeSeries: this._startRelativeSeries,
|
|
40
|
+
endRelativeSeries: this._endRelativeSeries,
|
|
41
|
+
vchart: this._option.globalInstance
|
|
42
|
+
};
|
|
43
|
+
}
|
|
33
44
|
created() {
|
|
34
|
-
super.created(), this._bindSeries(), this._initDataView(), this.initEvent();
|
|
45
|
+
super.created(), this._bindSeries(), this._initDataView(), this.initEvent(), this._buildMarkerAttributeContext();
|
|
35
46
|
}
|
|
36
47
|
_getAllRelativeSeries() {
|
|
37
48
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/marker/base-marker.ts"],"names":[],"mappings":"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","file":"base-marker.js","sourcesContent":["import { DataSet, DataView } from '@visactor/vdataset';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isValid, isNil, isString, isEqual } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { CoordinateType, ILayoutRect, ILayoutType, IRect, StringOrNumber } from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type { IAggrType, IDataPos, IDataPosCallback, IMarkerSpec, IMarkerSupportSeries } from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { calcLayoutNumber } from '../../util/space';\nimport { isAggrSpec } from './utils';\nimport { getFirstSeries } from '../../util';\nimport { arrayParser } from '../../data/parser/array';\nimport type { IOptionWithCoordinates } from '../../data/transforms/aggregation';\nimport { getSpecInfo } from '../util';\n\nexport abstract class BaseMarker<T extends IMarkerSpec> extends BaseComponent<T> {\n layoutType: ILayoutType | 'none' = 'none';\n\n // 下面三个属性需要子组件复写\n static specKey: string;\n static type: string;\n static coordinateType: string;\n coordinateType: CoordinateType;\n\n protected _startRelativeSeries!: IMarkerSupportSeries;\n protected _endRelativeSeries!: IMarkerSupportSeries;\n protected _relativeSeries!: IMarkerSupportSeries;\n protected _specifiedDataSeries!: IMarkerSupportSeries | IMarkerSupportSeries[];\n getRelativeSeries() {\n return this._relativeSeries;\n }\n\n // marker 组件数据\n protected _markerData!: DataView;\n getMarkerData() {\n return this._markerData;\n }\n // marker 组件\n protected _markerComponent!: any;\n\n protected _layoutOffsetX: number = 0;\n protected _layoutOffsetY: number = 0;\n\n private _firstSeries: ICartesianSeries;\n\n protected abstract _initDataView(): void;\n protected abstract _createMarkerComponent(): IGroup;\n protected abstract _markerLayout(): void;\n // 该方法需要子组件复写\n static _getMarkerCoordinateType(markerSpec: any): string {\n return 'cartesian';\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IMarkerSpec>(chartSpec, this.specKey, this.type, (s: IMarkerSpec) => {\n return s.visible !== false && this._getMarkerCoordinateType(s) === this.coordinateType;\n });\n }\n\n created() {\n super.created();\n this._bindSeries();\n this._initDataView();\n this.initEvent();\n }\n\n protected _getAllRelativeSeries() {\n return {\n getRelativeSeries: () => this._relativeSeries,\n getStartRelativeSeries: () => this._startRelativeSeries,\n getEndRelativeSeries: () => this._endRelativeSeries\n };\n }\n\n private _getFieldInfoFromSpec(\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName',\n spec: IDataPos | IDataPosCallback,\n relativeSeries: IMarkerSupportSeries\n ) {\n const specKeyByDim = {\n x: 'xField',\n y: 'yField',\n radius: 'valueField',\n angle: 'categoryField',\n areaName: 'nameField'\n };\n\n if (isString(spec) && isAggrSpec(spec)) {\n return {\n field: relativeSeries.getSpec()[specKeyByDim[dim]],\n aggrType: spec as unknown as IAggrType\n };\n }\n return spec;\n }\n\n protected _processSpecByDims(\n dimSpec: {\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName';\n specValue: IDataPos | IDataPosCallback;\n }[]\n ) {\n const relativeSeries = this._relativeSeries;\n const dimMap = {};\n dimSpec.forEach(d => (dimMap[d.dim] = this._getFieldInfoFromSpec(d.dim, d.specValue, relativeSeries)));\n return {\n ...dimMap,\n ...this._getAllRelativeSeries()\n };\n }\n\n protected _processSpecCoo(spec: any): IOptionWithCoordinates {\n return {\n coordinates: spec.coordinates || spec.coordinate,\n ...this._getAllRelativeSeries(),\n getSeriesByIdOrIndex: (seriesUserId: StringOrNumber, seriesIndex: number) =>\n this._getSeriesByIdOrIndex(seriesUserId, seriesIndex),\n coordinateType: this.coordinateType\n };\n }\n\n protected _getRelativeDataView() {\n if (this._specifiedDataSeries) {\n let resultData: any[] = [];\n array(this._specifiedDataSeries).forEach(series => {\n resultData = resultData.concat(series.getViewData().latestData);\n });\n const dataSet = new DataSet();\n dataSet.registerParser('array', arrayParser);\n return new DataView(dataSet).parse(resultData, { type: 'array' });\n }\n return this._relativeSeries.getViewData();\n }\n\n updateLayoutAttribute(): void {\n const markerVisible = this._spec.visible ?? true;\n if (markerVisible) {\n // 创建marker组件\n if (!this._markerComponent) {\n const markerComponent = this._createMarkerComponent();\n markerComponent.name = this._spec.name ?? this.type;\n markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this._markerComponent = markerComponent;\n\n this.getContainer().add(this._markerComponent);\n // 代理 marker 组件上的事件\n this._markerComponent.on('*', (event: any, type: string) => {\n this._delegateEvent(\n this._markerComponent as unknown as IGraphic,\n event,\n type,\n null,\n this.getMarkerData.bind(this)\n );\n });\n }\n this._markerLayout();\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getSeriesByIdOrIndex(seriesUserId: StringOrNumber, seriesIndex: number) {\n let series: IMarkerSupportSeries;\n series = this._option.getSeriesInUserIdOrIndex(isValid(seriesUserId) ? [seriesUserId] : [], [\n seriesIndex\n ])?.[0] as IMarkerSupportSeries;\n if (!series) {\n series = this._relativeSeries ?? this._getFirstSeries();\n }\n return series;\n }\n\n protected _bindSeries() {\n const spec: any = this._spec;\n this._relativeSeries = this._getSeriesByIdOrIndex(spec.relativeSeriesId, spec.relativeSeriesIndex);\n this._startRelativeSeries = this._getSeriesByIdOrIndex(spec.startRelativeSeriesId, spec.startRelativeSeriesIndex);\n this._endRelativeSeries = this._getSeriesByIdOrIndex(spec.endRelativeSeriesId, spec.endRelativeSeriesIndex);\n if (\n (spec.specifiedDataSeriesIndex && spec.specifiedDataSeriesIndex === 'all') ||\n (spec.specifiedDataSeriesId && spec.specifiedDataSeriesId === 'all')\n ) {\n this._specifiedDataSeries = this._option.getAllSeries() as IMarkerSupportSeries[];\n } else if (spec.specifiedDataSeriesIndex || spec.specifiedDataSeriesId) {\n this._specifiedDataSeries = this._getSeriesByIdOrIndex(spec.specifiedDataSeriesId, spec.specifiedDataSeriesIndex);\n }\n }\n\n protected initEvent() {\n // 在极坐标系/地理坐标系中, 滚动或缩放画布不会update layout, 所以需要通过事件监听来更新标注的位置\n // 在直角坐标系中, update layout中已经更新标注位置, 在这里不需要重复监听\n if (this._relativeSeries.coordinate !== 'cartesian') {\n this._relativeSeries.event.on('zoom', this._markerLayout.bind(this));\n this._relativeSeries.event.on('panmove', this._markerLayout.bind(this));\n this._relativeSeries.event.on('scroll', this._markerLayout.bind(this));\n }\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n clear(): void {\n super.clear();\n this._firstSeries = null;\n }\n\n private _getFirstSeries(): ICartesianSeries {\n if (this._firstSeries) {\n return this._firstSeries;\n }\n const firstSeries = getFirstSeries(this._regions) as ICartesianSeries;\n if (firstSeries) {\n this._firstSeries = firstSeries;\n return firstSeries;\n }\n this._option?.onError('need at least one series');\n return null;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._markerComponent] as unknown as IGroup[];\n }\n\n onLayoutStart(layoutRect: IRect, chartViewRect: ILayoutRect, ctx: any): void {\n // offset\n if (!isNil(this._spec.offsetX)) {\n this._layoutOffsetX = calcLayoutNumber(this._spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(this._spec.offsetY)) {\n this._layoutOffsetY = calcLayoutNumber(this._spec.offsetY, chartViewRect.height, chartViewRect);\n }\n super.onLayoutStart(layoutRect, chartViewRect, ctx);\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n result.change = true;\n }\n return result;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/marker/base-marker.ts"],"names":[],"mappings":"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","file":"base-marker.js","sourcesContent":["import { DataSet, DataView } from '@visactor/vdataset';\nimport type { Maybe } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isValid, isNil, isString, isEqual } from '@visactor/vutils';\nimport type { IModelRenderOption, IModelSpecInfo } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport type { ICartesianSeries } from '../../series/interface';\nimport type { CoordinateType, ILayoutRect, ILayoutType, IRect, StringOrNumber } from '../../typings';\nimport { BaseComponent } from '../base/base-component';\nimport type {\n IAggrType,\n IDataPos,\n IDataPosCallback,\n IMarkerAttributeContext,\n IMarkerSpec,\n IMarkerSupportSeries\n} from './interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { calcLayoutNumber } from '../../util/space';\nimport { isAggrSpec } from './utils';\nimport { getFirstSeries } from '../../util';\nimport { arrayParser } from '../../data/parser/array';\nimport type { IOptionWithCoordinates } from '../../data/transforms/aggregation';\nimport { getSpecInfo } from '../util';\n\nexport abstract class BaseMarker<T extends IMarkerSpec> extends BaseComponent<T> {\n layoutType: ILayoutType | 'none' = 'none';\n\n // 下面三个属性需要子组件复写\n static specKey: string;\n static type: string;\n static coordinateType: string;\n coordinateType: CoordinateType;\n\n protected _startRelativeSeries!: IMarkerSupportSeries;\n protected _endRelativeSeries!: IMarkerSupportSeries;\n protected _relativeSeries!: IMarkerSupportSeries;\n protected _specifiedDataSeries!: IMarkerSupportSeries | IMarkerSupportSeries[];\n getRelativeSeries() {\n return this._relativeSeries;\n }\n\n // marker 组件数据\n protected _markerData!: DataView;\n getMarkerData() {\n return this._markerData;\n }\n // marker 组件\n protected _markerComponent!: any;\n\n protected _layoutOffsetX: number = 0;\n protected _layoutOffsetY: number = 0;\n\n private _firstSeries: ICartesianSeries;\n\n protected abstract _initDataView(): void;\n protected abstract _createMarkerComponent(): IGroup;\n protected abstract _markerLayout(): void;\n // 该方法需要子组件复写\n static _getMarkerCoordinateType(markerSpec: any): string {\n return 'cartesian';\n }\n\n static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]> {\n return getSpecInfo<IMarkerSpec>(chartSpec, this.specKey, this.type, (s: IMarkerSpec) => {\n return s.visible !== false && this._getMarkerCoordinateType(s) === this.coordinateType;\n });\n }\n\n protected _markAttributeContext: IMarkerAttributeContext;\n getMarkAttributeContext() {\n return this._markAttributeContext;\n }\n\n protected _buildMarkerAttributeContext() {\n this._markAttributeContext = {\n relativeSeries: this._relativeSeries,\n startRelativeSeries: this._startRelativeSeries,\n endRelativeSeries: this._endRelativeSeries,\n vchart: this._option.globalInstance\n };\n }\n\n created() {\n super.created();\n this._bindSeries();\n this._initDataView();\n this.initEvent();\n this._buildMarkerAttributeContext();\n }\n\n protected _getAllRelativeSeries() {\n return {\n getRelativeSeries: () => this._relativeSeries,\n getStartRelativeSeries: () => this._startRelativeSeries,\n getEndRelativeSeries: () => this._endRelativeSeries\n };\n }\n\n private _getFieldInfoFromSpec(\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName',\n spec: IDataPos | IDataPosCallback,\n relativeSeries: IMarkerSupportSeries\n ) {\n const specKeyByDim = {\n x: 'xField',\n y: 'yField',\n radius: 'valueField',\n angle: 'categoryField',\n areaName: 'nameField'\n };\n\n if (isString(spec) && isAggrSpec(spec)) {\n return {\n field: relativeSeries.getSpec()[specKeyByDim[dim]],\n aggrType: spec as unknown as IAggrType\n };\n }\n return spec;\n }\n\n protected _processSpecByDims(\n dimSpec: {\n dim: 'x' | 'y' | 'angle' | 'radius' | 'areaName';\n specValue: IDataPos | IDataPosCallback;\n }[]\n ) {\n const relativeSeries = this._relativeSeries;\n const dimMap = {};\n dimSpec.forEach(d => (dimMap[d.dim] = this._getFieldInfoFromSpec(d.dim, d.specValue, relativeSeries)));\n return {\n ...dimMap,\n ...this._getAllRelativeSeries()\n };\n }\n\n protected _processSpecCoo(spec: any): IOptionWithCoordinates {\n return {\n coordinates: spec.coordinates || spec.coordinate,\n ...this._getAllRelativeSeries(),\n getSeriesByIdOrIndex: (seriesUserId: StringOrNumber, seriesIndex: number) =>\n this._getSeriesByIdOrIndex(seriesUserId, seriesIndex),\n coordinateType: this.coordinateType\n };\n }\n\n protected _getRelativeDataView() {\n if (this._specifiedDataSeries) {\n let resultData: any[] = [];\n array(this._specifiedDataSeries).forEach(series => {\n resultData = resultData.concat(series.getViewData().latestData);\n });\n const dataSet = new DataSet();\n dataSet.registerParser('array', arrayParser);\n return new DataView(dataSet).parse(resultData, { type: 'array' });\n }\n return this._relativeSeries.getViewData();\n }\n\n updateLayoutAttribute(): void {\n const markerVisible = this._spec.visible ?? true;\n if (markerVisible) {\n // 创建marker组件\n if (!this._markerComponent) {\n const markerComponent = this._createMarkerComponent();\n markerComponent.name = this._spec.name ?? this.type;\n markerComponent.id = this._spec.id ?? `${this.type}-${this.id}`;\n this._markerComponent = markerComponent;\n\n this.getContainer().add(this._markerComponent);\n // 代理 marker 组件上的事件\n this._markerComponent.on('*', (event: any, type: string) => {\n this._delegateEvent(\n this._markerComponent as unknown as IGraphic,\n event,\n type,\n null,\n this.getMarkerData.bind(this)\n );\n });\n }\n this._markerLayout();\n }\n\n super.updateLayoutAttribute();\n }\n\n private _getSeriesByIdOrIndex(seriesUserId: StringOrNumber, seriesIndex: number) {\n let series: IMarkerSupportSeries;\n series = this._option.getSeriesInUserIdOrIndex(isValid(seriesUserId) ? [seriesUserId] : [], [\n seriesIndex\n ])?.[0] as IMarkerSupportSeries;\n if (!series) {\n series = this._relativeSeries ?? this._getFirstSeries();\n }\n return series;\n }\n\n protected _bindSeries() {\n const spec: any = this._spec;\n this._relativeSeries = this._getSeriesByIdOrIndex(spec.relativeSeriesId, spec.relativeSeriesIndex);\n this._startRelativeSeries = this._getSeriesByIdOrIndex(spec.startRelativeSeriesId, spec.startRelativeSeriesIndex);\n this._endRelativeSeries = this._getSeriesByIdOrIndex(spec.endRelativeSeriesId, spec.endRelativeSeriesIndex);\n if (\n (spec.specifiedDataSeriesIndex && spec.specifiedDataSeriesIndex === 'all') ||\n (spec.specifiedDataSeriesId && spec.specifiedDataSeriesId === 'all')\n ) {\n this._specifiedDataSeries = this._option.getAllSeries() as IMarkerSupportSeries[];\n } else if (spec.specifiedDataSeriesIndex || spec.specifiedDataSeriesId) {\n this._specifiedDataSeries = this._getSeriesByIdOrIndex(spec.specifiedDataSeriesId, spec.specifiedDataSeriesIndex);\n }\n }\n\n protected initEvent() {\n // 在极坐标系/地理坐标系中, 滚动或缩放画布不会update layout, 所以需要通过事件监听来更新标注的位置\n // 在直角坐标系中, update layout中已经更新标注位置, 在这里不需要重复监听\n if (this._relativeSeries.coordinate !== 'cartesian') {\n this._relativeSeries.event.on('zoom', this._markerLayout.bind(this));\n this._relativeSeries.event.on('panmove', this._markerLayout.bind(this));\n this._relativeSeries.event.on('scroll', this._markerLayout.bind(this));\n }\n }\n onRender(ctx: IModelRenderOption): void {\n // do nothing\n }\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n clear(): void {\n super.clear();\n this._firstSeries = null;\n }\n\n private _getFirstSeries(): ICartesianSeries {\n if (this._firstSeries) {\n return this._firstSeries;\n }\n const firstSeries = getFirstSeries(this._regions) as ICartesianSeries;\n if (firstSeries) {\n this._firstSeries = firstSeries;\n return firstSeries;\n }\n this._option?.onError('need at least one series');\n return null;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._markerComponent] as unknown as IGroup[];\n }\n\n onLayoutStart(layoutRect: IRect, chartViewRect: ILayoutRect, ctx: any): void {\n // offset\n if (!isNil(this._spec.offsetX)) {\n this._layoutOffsetX = calcLayoutNumber(this._spec.offsetX, chartViewRect.width, chartViewRect);\n }\n if (!isNil(this._spec.offsetY)) {\n this._layoutOffsetY = calcLayoutNumber(this._spec.offsetY, chartViewRect.height, chartViewRect);\n }\n super.onLayoutStart(layoutRect, chartViewRect, ctx);\n }\n\n _compareSpec(spec: T, prevSpec: T) {\n const result = super._compareSpec(spec, prevSpec);\n if (!isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n result.change = true;\n }\n return result;\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ import type { Datum } from '@visactor/vrender-components';
|
|
|
7
7
|
import type { ICartesianSeries, IGeoSeries, IPolarSeries } from '../../series/interface';
|
|
8
8
|
import type { IOptionAggr, IOptionAggrField, IOptionSeries, IOptionWithCoordinates } from '../../data/transforms/aggregation';
|
|
9
9
|
import type { IOptionRegr } from '../../data/transforms/regression';
|
|
10
|
+
import type { VChart } from '../../vchart-all';
|
|
10
11
|
export type IMarkerSupportSeries = ICartesianSeries | IPolarSeries | IGeoSeries;
|
|
11
12
|
export type IPolarPoint = {
|
|
12
13
|
angle: number;
|
|
@@ -98,8 +99,8 @@ export type IMarkerSymbol = IMarkerRef & {
|
|
|
98
99
|
symbolType?: SymbolType;
|
|
99
100
|
size?: number;
|
|
100
101
|
} & Partial<IMarkerState<Omit<ISymbolMarkSpec, 'visible'>>>;
|
|
101
|
-
export type MarkerStyleCallback<T> = (markerData: DataView) => T;
|
|
102
|
-
export type MarkerStateCallback<T> = (markerData: DataView) => T;
|
|
102
|
+
export type MarkerStyleCallback<T> = (markerData: DataView, context: IMarkerAttributeContext) => T;
|
|
103
|
+
export type MarkerStateCallback<T> = (markerData: DataView, context: IMarkerAttributeContext) => T;
|
|
103
104
|
export type MarkerStateValue = 'hover' | 'hover_reverse' | 'selected' | 'selected_reverse';
|
|
104
105
|
export type IMarkerState<T> = {
|
|
105
106
|
style?: T | MarkerStyleCallback<T>;
|
|
@@ -112,3 +113,9 @@ export type IMarkProcessOptions = {
|
|
|
112
113
|
needRegr?: boolean;
|
|
113
114
|
processData?: DataView;
|
|
114
115
|
};
|
|
116
|
+
export type IMarkerAttributeContext = {
|
|
117
|
+
vchart: VChart;
|
|
118
|
+
relativeSeries: IMarkerSupportSeries;
|
|
119
|
+
startRelativeSeries: IMarkerSupportSeries;
|
|
120
|
+
endRelativeSeries: IMarkerSupportSeries;
|
|
121
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { IPadding } from '@visactor/vutils';\nimport type {\n SymbolType,\n IGraphicAttribute,\n ICustomPath2D,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type {\n IComposedTextMarkSpec,\n IFormatMethod,\n IRectMarkSpec,\n IRichTextFormatMethod,\n ISymbolMarkSpec,\n StringOrNumber\n} from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\nimport type { ICartesianSeries, IGeoSeries, IPolarSeries } from '../../series/interface';\nimport type {\n IOptionAggr,\n IOptionAggrField,\n IOptionSeries,\n IOptionWithCoordinates\n} from '../../data/transforms/aggregation';\nimport type { IOptionRegr } from '../../data/transforms/regression';\n\nexport type IMarkerSupportSeries = ICartesianSeries | IPolarSeries | IGeoSeries;\n\nexport type IPolarPoint = {\n angle: number;\n radius: number;\n};\nexport type OffsetPoint = {\n /**\n * x 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 宽度的占比\n */\n x?: number | string;\n /**\n * y 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 高度的占比\n */\n y?: number | string;\n};\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = StringOrNumber | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: Datum[],\n startRelativeSeriesData: Datum[],\n endRelativeSeriesData: Datum[],\n relativeSeries: IMarkerSupportSeries,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries\n) => StringOrNumber;\n\nexport type IDataPointSpec = {\n /**\n * 数据字段配置\n */\n [key: string]: IDataPos | IDataPosCallback;\n /**\n * 具体某个数据元素关联的series(仅在标注目标:数据元素下有效)\n */\n refRelativeSeriesIndex?: number;\n refRelativeSeriesId?: StringOrNumber;\n /**\n * 指定使用 xField 上的那个维度索引,因为 xField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.7.0\n */\n xFieldIndex?: number;\n /**\n * 指定使用 xField 上的维度名称,因为 xField 字段有可能会包含多个维度,比如分组场景。\n * `xFieldIndex` 和 `xFieldDim` 声明一个即可,同时声明则 `xFieldDim` 优先级更高。\n * @since 1.7.0\n */\n xFieldDim?: string;\n /**\n * 指定使用 yField 上的那个维度索引,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * @default 0\n * @since 1.7.0\n */\n yFieldIndex?: number;\n /**\n * 指定使用 yField 上的维度名称,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * `yFieldIndex` 和 `yFieldDim` 声明一个即可,同时声明则 `yFieldDim` 优先级更高。\n * @since 1.7.0\n */\n yFieldDim?: string;\n /**\n * 指定使用 angleField 上的那个维度索引,因为 angleField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.11.0\n */\n angleFieldIndex?: number;\n /**\n * 指定使用 angleField 上的维度名称,因为 angleField 字段有可能会包含多个维度,比如分组场景。\n * `angleFieldIndex` 和 `angleFieldDim` 声明一个即可,同时声明则 `angleFieldDim` 优先级更高。\n * @since 1.11.0\n */\n angleFieldDim?: string;\n /**\n * 指定使用 radiusField 上的那个维度索引,因为 radiusField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.11.0\n */\n radiusFieldIndex?: number;\n /**\n * 指定使用 radiusField 上的维度名称,因为 radiusField 字段有可能会包含多个维度,比如分组场景。\n * `radiusFieldIndex` 和 `radiusFieldDim` 声明一个即可,同时声明则 `radiusFieldDim` 优先级更高。\n * @since 1.11.0\n */\n radiusFieldDim?: string;\n};\n\nexport type MarkerPositionPoint = {\n /**\n * x 坐标位置,number 类型表示像素值,string 类型表示相对画布宽度或者 region 宽度的占比(从左往右)\n */\n x: StringOrNumber;\n /**\n * y 坐标位置,number 类型表示像素值,string 类型表示相对画布高度或者 region 高度的占比(从上至下)\n */\n y: StringOrNumber;\n};\n\nexport type ICoordinateOption = {\n x?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n y?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n angle?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n radius?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n} & IOptionSeries;\n\nexport type IMarkerPositionsSpec = {\n /**\n * 画布坐标\n * `positions` 自 1.12.0 版本开始支持回调函数\n */\n positions:\n | MarkerPositionPoint[]\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => MarkerPositionPoint[]);\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n};\n\nexport type IMarkerLabelWithoutRefSpec = {\n visible?: boolean;\n /**\n * label整体 - 是否自动旋转\n */\n autoRotate?: boolean;\n /**\n * label整体 - 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * label整体 - 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * label整体 - 背景面板配置\n */\n labelBackground?: {\n visible?: boolean;\n /**\n * 标签背景支持自定义path\n * @since 1.11.10\n */\n customShape?: (\n text: ITextGraphicAttribute | IRichTextGraphicAttribute,\n attrs: Partial<IGraphicAttribute>,\n path: ICustomPath2D\n ) => ICustomPath2D;\n /**\n * 内部边距\n */\n padding?: IPadding | number[] | number;\n } & Partial<IMarkerState<Omit<IRectMarkSpec, 'visible'>>>;\n\n /** @deprecated */\n type?: 'rich' | 'text';\n /**\n * 文本内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n * 支持富文本内容 textConfig,设置富文本时要配置 textType 类型为 'rich'\n */\n text?: string | string[] | number | number[] | ReturnType<IRichTextFormatMethod<[]>>;\n /**\n * label文本 - 文本格式化\n * @param markData 组成标注的数据\n * @param seriesData 标注关联的数据\n * @returns 格式化后的文本\n */\n formatMethod?: IFormatMethod<[markData: Datum[], seriesData: Datum[]]>;\n\n /**\n * label文本 - 文本前 mark 图元\n */\n shape?: {\n visible?: boolean;\n style: Omit<ISymbolMarkSpec, 'visible'>;\n };\n /**\n * label文本 - shape 同文本之间的间距\n */\n space?: number;\n\n /**\n * 是否自动调整 label 使其展示在 marker 可见区域内。\n * @default false\n * @since 1.4.0\n */\n confine?: boolean;\n /**\n * 水平方向的偏移\n */\n dx?: number;\n /**\n * 垂直方向的偏移\n */\n dy?: number;\n} & Partial<IMarkerState<Omit<IComposedTextMarkSpec, 'visible'>>>; // label文本 - 文本样式\n\nexport type IMarkerLabelSpec = IMarkerLabelWithoutRefSpec & IMarkerRef;\n\nexport interface IMarkerRef {\n /**\n * label or symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label or symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label or symbol 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n}\n\n// 跨越系列的配置\nexport interface IMarkerCrossSeriesSpec {\n /**\n * 起点和终点关联的series(仅在标注目标:坐标空间下有效)\n */\n startRelativeSeriesIndex?: number;\n endRelativeSeriesIndex?: number;\n startRelativeSeriesId?: string;\n endRelativeSeriesId?: string;\n /**\n * 数据处理需要单独关联系列, 当配置为'all'时代表关联当前region下所有系列\n * @since 1.11.0\n */\n specifiedDataSeriesIndex?: 'all' | number | number[];\n specifiedDataSeriesId?: 'all' | string | string[];\n}\n\nexport type IMarkerSpec = IComponentSpec & {\n /**\n * 标注数据关联的series\n */\n relativeSeriesIndex?: number;\n relativeSeriesId?: number | string;\n /**\n * marker组件是否可见\n * @default true\n */\n visible?: boolean;\n /**\n * marker组件是否可交互\n * @default true\n */\n interactive?: boolean;\n /**\n * marker组件是否自动拓展轴范围\n * @default false\n * @since 1.1.0\n */\n autoRange?: boolean;\n /**\n * marker组件超出图表区域是否被裁剪\n * @default false\n * @since 1.3.0\n */\n clip?: boolean;\n\n /**\n * 标注组件的名称标识\n * @since 1.7.0\n */\n name?: string;\n /**\n * 标注所在的坐标系类型\n * @description 一般情况下内部逻辑会根据配置自动推导类型,但如果是coordinates的配置方式,则无法推导,需要用户自行配置\n * @since 1.11.0\n */\n coordinateType?: string;\n};\n\nexport type IMarkerSymbol = IMarkerRef & {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n} & Partial<IMarkerState<Omit<ISymbolMarkSpec, 'visible'>>>;\n\nexport type MarkerStyleCallback<T> = (markerData: DataView) => T;\nexport type MarkerStateCallback<T> = (markerData: DataView) => T;\nexport type MarkerStateValue = 'hover' | 'hover_reverse' | 'selected' | 'selected_reverse';\nexport type IMarkerState<T> = {\n /** 默认样式设置 */\n style?: T | MarkerStyleCallback<T>;\n /** 不同状态下的样式配置 */\n state?: Record<MarkerStateValue, T | MarkerStateCallback<T>>;\n};\n\nexport type MarkCoordinateType = 'cartesian' | 'polar' | 'geo';\n\nexport type IMarkProcessOptions = {\n options: IOptionAggr[] | IOptionRegr | IOptionWithCoordinates;\n needAggr?: boolean;\n needRegr?: boolean;\n processData?: DataView;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/marker/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { IPadding } from '@visactor/vutils';\nimport type {\n SymbolType,\n IGraphicAttribute,\n ICustomPath2D,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute\n} from '@visactor/vrender-core';\nimport type {\n IComposedTextMarkSpec,\n IFormatMethod,\n IRectMarkSpec,\n IRichTextFormatMethod,\n ISymbolMarkSpec,\n StringOrNumber\n} from '../../typings';\nimport type { IComponentSpec } from '../base/interface';\nimport type { Datum } from '@visactor/vrender-components';\nimport type { ICartesianSeries, IGeoSeries, IPolarSeries } from '../../series/interface';\nimport type {\n IOptionAggr,\n IOptionAggrField,\n IOptionSeries,\n IOptionWithCoordinates\n} from '../../data/transforms/aggregation';\nimport type { IOptionRegr } from '../../data/transforms/regression';\nimport type { VChart } from '../../vchart-all';\n\nexport type IMarkerSupportSeries = ICartesianSeries | IPolarSeries | IGeoSeries;\n\nexport type IPolarPoint = {\n angle: number;\n radius: number;\n};\nexport type OffsetPoint = {\n /**\n * x 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 宽度的占比\n */\n x?: number | string;\n /**\n * y 方向的偏移\n * 1. number 类型表示像素值,如 12\n * 2. string 类型表示百分比,如 '10%' 表示相对于所在 region 高度的占比\n */\n y?: number | string;\n};\n\nexport type IAggrType = 'sum' | 'average' | 'min' | 'max' | 'variance' | 'standardDeviation' | 'median';\nexport type IDataPos = StringOrNumber | IAggrType;\nexport type IDataPosCallback = (\n relativeSeriesData: Datum[],\n startRelativeSeriesData: Datum[],\n endRelativeSeriesData: Datum[],\n relativeSeries: IMarkerSupportSeries,\n startRelativeSeries: IMarkerSupportSeries,\n endRelativeSeries: IMarkerSupportSeries\n) => StringOrNumber;\n\nexport type IDataPointSpec = {\n /**\n * 数据字段配置\n */\n [key: string]: IDataPos | IDataPosCallback;\n /**\n * 具体某个数据元素关联的series(仅在标注目标:数据元素下有效)\n */\n refRelativeSeriesIndex?: number;\n refRelativeSeriesId?: StringOrNumber;\n /**\n * 指定使用 xField 上的那个维度索引,因为 xField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.7.0\n */\n xFieldIndex?: number;\n /**\n * 指定使用 xField 上的维度名称,因为 xField 字段有可能会包含多个维度,比如分组场景。\n * `xFieldIndex` 和 `xFieldDim` 声明一个即可,同时声明则 `xFieldDim` 优先级更高。\n * @since 1.7.0\n */\n xFieldDim?: string;\n /**\n * 指定使用 yField 上的那个维度索引,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * @default 0\n * @since 1.7.0\n */\n yFieldIndex?: number;\n /**\n * 指定使用 yField 上的维度名称,因为 yField 字段有可能会包含多个维度,比如分组场景。\n * `yFieldIndex` 和 `yFieldDim` 声明一个即可,同时声明则 `yFieldDim` 优先级更高。\n * @since 1.7.0\n */\n yFieldDim?: string;\n /**\n * 指定使用 angleField 上的那个维度索引,因为 angleField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.11.0\n */\n angleFieldIndex?: number;\n /**\n * 指定使用 angleField 上的维度名称,因为 angleField 字段有可能会包含多个维度,比如分组场景。\n * `angleFieldIndex` 和 `angleFieldDim` 声明一个即可,同时声明则 `angleFieldDim` 优先级更高。\n * @since 1.11.0\n */\n angleFieldDim?: string;\n /**\n * 指定使用 radiusField 上的那个维度索引,因为 radiusField 字段有可能会包含多个维度,比如分组场景\n * @default 0\n * @since 1.11.0\n */\n radiusFieldIndex?: number;\n /**\n * 指定使用 radiusField 上的维度名称,因为 radiusField 字段有可能会包含多个维度,比如分组场景。\n * `radiusFieldIndex` 和 `radiusFieldDim` 声明一个即可,同时声明则 `radiusFieldDim` 优先级更高。\n * @since 1.11.0\n */\n radiusFieldDim?: string;\n};\n\nexport type MarkerPositionPoint = {\n /**\n * x 坐标位置,number 类型表示像素值,string 类型表示相对画布宽度或者 region 宽度的占比(从左往右)\n */\n x: StringOrNumber;\n /**\n * y 坐标位置,number 类型表示像素值,string 类型表示相对画布高度或者 region 高度的占比(从上至下)\n */\n y: StringOrNumber;\n};\n\nexport type ICoordinateOption = {\n x?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n y?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n angle?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n radius?: IOptionAggrField | (IDataPosCallback | StringOrNumber)[];\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n} & IOptionSeries;\n\nexport type IMarkerPositionsSpec = {\n /**\n * 画布坐标\n * `positions` 自 1.12.0 版本开始支持回调函数\n */\n positions:\n | MarkerPositionPoint[]\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => MarkerPositionPoint[]);\n /**\n * 是否为相对 region 的坐标,默认为 false,即相对画布的坐标\n * @default false\n * @since 1.7.0\n */\n regionRelative?: boolean;\n};\n\nexport type IMarkerLabelWithoutRefSpec = {\n visible?: boolean;\n /**\n * label整体 - 是否自动旋转\n */\n autoRotate?: boolean;\n /**\n * label整体 - 最小宽度,像素值\n * @default 30\n */\n minWidth?: number;\n /**\n * label整体 - 最大宽度,像素值。当文字超过最大宽度时,会自动省略。\n */\n maxWidth?: number;\n /**\n * label整体 - 背景面板配置\n */\n labelBackground?: {\n visible?: boolean;\n /**\n * 标签背景支持自定义path\n * @since 1.11.10\n */\n customShape?: (\n text: ITextGraphicAttribute | IRichTextGraphicAttribute,\n attrs: Partial<IGraphicAttribute>,\n path: ICustomPath2D\n ) => ICustomPath2D;\n /**\n * 内部边距\n */\n padding?: IPadding | number[] | number;\n } & Partial<IMarkerState<Omit<IRectMarkSpec, 'visible'>>>;\n\n /** @deprecated */\n type?: 'rich' | 'text';\n /**\n * 文本内容,如果需要进行换行,则使用数组形式,如 ['abc', '123']\n * 支持富文本内容 textConfig,设置富文本时要配置 textType 类型为 'rich'\n */\n text?: string | string[] | number | number[] | ReturnType<IRichTextFormatMethod<[]>>;\n /**\n * label文本 - 文本格式化\n * @param markData 组成标注的数据\n * @param seriesData 标注关联的数据\n * @returns 格式化后的文本\n */\n formatMethod?: IFormatMethod<[markData: Datum[], seriesData: Datum[]]>;\n\n /**\n * label文本 - 文本前 mark 图元\n */\n shape?: {\n visible?: boolean;\n style: Omit<ISymbolMarkSpec, 'visible'>;\n };\n /**\n * label文本 - shape 同文本之间的间距\n */\n space?: number;\n\n /**\n * 是否自动调整 label 使其展示在 marker 可见区域内。\n * @default false\n * @since 1.4.0\n */\n confine?: boolean;\n /**\n * 水平方向的偏移\n */\n dx?: number;\n /**\n * 垂直方向的偏移\n */\n dy?: number;\n} & Partial<IMarkerState<Omit<IComposedTextMarkSpec, 'visible'>>>; // label文本 - 文本样式\n\nexport type IMarkerLabelSpec = IMarkerLabelWithoutRefSpec & IMarkerRef;\n\nexport interface IMarkerRef {\n /**\n * label or symbol 相对line平行方向上的偏移\n */\n refX?: number;\n /**\n * label or symbol 相对line正交方向上的偏移\n */\n refY?: number;\n /**\n * label or symbol 相对默认角度的偏移 (label跟随line的角度做自动旋转时,默认按照line的平行向量作为初始角度)\n */\n refAngle?: number;\n}\n\n// 跨越系列的配置\nexport interface IMarkerCrossSeriesSpec {\n /**\n * 起点和终点关联的series(仅在标注目标:坐标空间下有效)\n */\n startRelativeSeriesIndex?: number;\n endRelativeSeriesIndex?: number;\n startRelativeSeriesId?: string;\n endRelativeSeriesId?: string;\n /**\n * 数据处理需要单独关联系列, 当配置为'all'时代表关联当前region下所有系列\n * @since 1.11.0\n */\n specifiedDataSeriesIndex?: 'all' | number | number[];\n specifiedDataSeriesId?: 'all' | string | string[];\n}\n\nexport type IMarkerSpec = IComponentSpec & {\n /**\n * 标注数据关联的series\n */\n relativeSeriesIndex?: number;\n relativeSeriesId?: number | string;\n /**\n * marker组件是否可见\n * @default true\n */\n visible?: boolean;\n /**\n * marker组件是否可交互\n * @default true\n */\n interactive?: boolean;\n /**\n * marker组件是否自动拓展轴范围\n * @default false\n * @since 1.1.0\n */\n autoRange?: boolean;\n /**\n * marker组件超出图表区域是否被裁剪\n * @default false\n * @since 1.3.0\n */\n clip?: boolean;\n\n /**\n * 标注组件的名称标识\n * @since 1.7.0\n */\n name?: string;\n /**\n * 标注所在的坐标系类型\n * @description 一般情况下内部逻辑会根据配置自动推导类型,但如果是coordinates的配置方式,则无法推导,需要用户自行配置\n * @since 1.11.0\n */\n coordinateType?: string;\n};\n\nexport type IMarkerSymbol = IMarkerRef & {\n /** 是否展示 symbol */\n visible: boolean;\n /**\n * symbol 形状,默认为带左右方向的箭头\n */\n symbolType?: SymbolType;\n /**\n * symbol 大小\n */\n size?: number;\n} & Partial<IMarkerState<Omit<ISymbolMarkSpec, 'visible'>>>;\n\nexport type MarkerStyleCallback<T> = (\n /**\n * markerData 标注组件聚合后的数据\n */\n markerData: DataView,\n /**\n * @since 1.13.0\n * context 组件上下文, 包括相对系列,起始相对系列,结束相对系列和图表实例\n */\n context: IMarkerAttributeContext\n) => T;\nexport type MarkerStateCallback<T> = (\n /**\n * markerData 标注组件聚合后的数据\n */\n markerData: DataView,\n /**\n * @since 1.13.0\n * context 组件上下文, 包括相对系列,起始相对系列,结束相对系列和图表实例\n */\n context: IMarkerAttributeContext\n) => T;\nexport type MarkerStateValue = 'hover' | 'hover_reverse' | 'selected' | 'selected_reverse';\nexport type IMarkerState<T> = {\n /** 默认样式设置 */\n style?: T | MarkerStyleCallback<T>;\n /** 不同状态下的样式配置 */\n state?: Record<MarkerStateValue, T | MarkerStateCallback<T>>;\n};\n\nexport type MarkCoordinateType = 'cartesian' | 'polar' | 'geo';\n\nexport type IMarkProcessOptions = {\n options: IOptionAggr[] | IOptionRegr | IOptionWithCoordinates;\n needAggr?: boolean;\n needRegr?: boolean;\n processData?: DataView;\n};\n\nexport type IMarkerAttributeContext = {\n vchart: VChart;\n relativeSeries: IMarkerSupportSeries;\n startRelativeSeries: IMarkerSupportSeries;\n endRelativeSeries: IMarkerSupportSeries;\n};\n"]}
|
|
@@ -41,13 +41,13 @@ export class BaseMarkArea extends BaseMarker {
|
|
|
41
41
|
outerRadius: 0,
|
|
42
42
|
startAngle: 0,
|
|
43
43
|
endAngle: 0,
|
|
44
|
-
areaStyle: transformStyle(transformToGraphic(null === (_e = this._spec.area) || void 0 === _e ? void 0 : _e.style), this._markerData),
|
|
44
|
+
areaStyle: transformStyle(transformToGraphic(null === (_e = this._spec.area) || void 0 === _e ? void 0 : _e.style), this._markerData, this._markAttributeContext),
|
|
45
45
|
clipInRange: null !== (_f = this._spec.clip) && void 0 !== _f && _f,
|
|
46
|
-
label: transformLabelAttributes(label, this._markerData),
|
|
46
|
+
label: transformLabelAttributes(label, this._markerData, this._markAttributeContext),
|
|
47
47
|
state: {
|
|
48
|
-
area: transformState(null === (_g = this._spec.area) || void 0 === _g ? void 0 : _g.state, this._markerData),
|
|
49
|
-
label: transformState(null === (_h = this._spec.label) || void 0 === _h ? void 0 : _h.state, this._markerData),
|
|
50
|
-
labelBackground: transformState(null === (_l = null === (_k = null === (_j = this._spec) || void 0 === _j ? void 0 : _j.label) || void 0 === _k ? void 0 : _k.labelBackground) || void 0 === _l ? void 0 : _l.state, this._markerData)
|
|
48
|
+
area: transformState(null === (_g = this._spec.area) || void 0 === _g ? void 0 : _g.state, this._markerData, this._markAttributeContext),
|
|
49
|
+
label: transformState(null === (_h = this._spec.label) || void 0 === _h ? void 0 : _h.state, this._markerData, this._markAttributeContext),
|
|
50
|
+
labelBackground: transformState(null === (_l = null === (_k = null === (_j = this._spec) || void 0 === _j ? void 0 : _j.label) || void 0 === _k ? void 0 : _k.labelBackground) || void 0 === _l ? void 0 : _l.state, this._markerData, this._markAttributeContext)
|
|
51
51
|
},
|
|
52
52
|
animation: null !== (_m = this._spec.animation) && void 0 !== _m && _m,
|
|
53
53
|
animationEnter: this._spec.animationEnter,
|