@visactor/vchart 2.0.23-alpha.7 → 2.0.23-alpha.9
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.es.js +91 -78
- package/build/index.js +91 -78
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/index.js +1 -2
- package/cjs/chart/base/base-chart.js +13 -7
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/radar/radar-transformer.js +4 -4
- package/cjs/chart/radar/radar-transformer.js.map +1 -1
- package/cjs/compile/compiler.d.ts +2 -0
- package/cjs/compile/compiler.js +14 -2
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/state-manager.js +2 -1
- package/cjs/component/legend/base-legend.js +1 -1
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/vchart.js +3 -1
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/interaction/triggers/element-active.js +2 -1
- package/cjs/interaction/triggers/element-active.js.map +1 -1
- package/cjs/mark/base/base-line.js +2 -2
- package/cjs/mark/base/base-line.js.map +1 -1
- package/cjs/series/bar/bar.js +1 -1
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/rose/rose.js +3 -7
- package/cjs/series/rose/rose.js.map +1 -1
- package/cjs/series/scatter/scatter.d.ts +0 -3
- package/cjs/series/scatter/scatter.js +6 -24
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/series/treemap/interface.d.ts +1 -1
- package/cjs/series/treemap/interface.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +2 -0
- package/cjs/series/waterfall/waterfall.js +12 -4
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +4 -2
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/util/spec/transform.d.ts +5 -2
- package/cjs/util/spec/transform.js +7 -11
- package/cjs/util/spec/transform.js.map +1 -1
- package/esm/animation/index.js +1 -2
- package/esm/chart/base/base-chart.js +12 -7
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/radar/radar-transformer.js +4 -4
- package/esm/chart/radar/radar-transformer.js.map +1 -1
- package/esm/compile/compiler.d.ts +2 -0
- package/esm/compile/compiler.js +14 -2
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/state-manager.js +2 -1
- package/esm/component/legend/base-legend.js +1 -1
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/vchart.js +2 -1
- package/esm/core/vchart.js.map +1 -1
- package/esm/interaction/triggers/element-active.js +2 -1
- package/esm/interaction/triggers/element-active.js.map +1 -1
- package/esm/mark/base/base-line.js +2 -2
- package/esm/mark/base/base-line.js.map +1 -1
- package/esm/series/bar/bar.js +1 -1
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/rose/rose.js +3 -7
- package/esm/series/rose/rose.js.map +1 -1
- package/esm/series/scatter/scatter.d.ts +0 -3
- package/esm/series/scatter/scatter.js +5 -27
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/series/treemap/interface.d.ts +1 -1
- package/esm/series/treemap/interface.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +2 -0
- package/esm/series/waterfall/waterfall.js +12 -4
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/typings/spec/common.d.ts +4 -2
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/util/spec/transform.d.ts +5 -2
- package/esm/util/spec/transform.js +7 -11
- package/esm/util/spec/transform.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/triggers/element-active.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAC7C,iCAAqC;AAGrC,4DAAgE;AAIhE,MAAM,cAAc,GAAmC;IACrD,KAAK,EAAE,4BAAgB,CAAC,YAAY;IACpC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAa,aAAc,SAAQ,kBAAkC;IAMnE,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,SAAI,oBAA4C;QAmDhD,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAnDA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IACS,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5C,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAExB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAsB;QAC1B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5C,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/interaction/triggers/element-active.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAC7C,iCAAqC;AAGrC,4DAAgE;AAIhE,MAAM,cAAc,GAAmC;IACrD,KAAK,EAAE,4BAAgB,CAAC,YAAY;IACpC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAa,aAAc,SAAQ,kBAAkC;IAMnE,YAAY,OAA+B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,SAAI,oBAA4C;QAmDhD,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAnDA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAE1D,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,CAAC;IACS,SAAS;QACjB,OAAO;YACL;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC1B,OAAO,EAAE,IAAI,CAAC,WAAW;aAC1B;YACD,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,IAAI,CAAC,EAAE;YACL,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5C,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAExB,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IAED,KAAK,CAAC,OAAsB;QAC1B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5C,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAA,EAAE;YACpC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,WAAW,CAAC,iBAAiB,CAC3B,IAAI,EACJ,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACtC,CAAC;SACH;IACH,CAAC;;AAnDH,sCA4DC;AA3DQ,kBAAI,oBAA4C;AAGhD,4BAAc,GAAG,cAAc,CAAC;AA0DlC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,iBAAO,CAAC,0BAA0B,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC","file":"element-active.js","sourcesContent":["import { Factory } from '../../core/factory';\nimport { BaseTrigger } from './base';\nimport type { IElementActiveOptions, ITrigger, ITriggerEventHandler } from '../interface/trigger';\nimport { TRIGGER_TYPE_ENUM } from './enum';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport type { IMarkGraphic } from '../../mark/interface';\nimport type { BaseEventParams } from '../../event/interface';\n\nconst defaultOptions: Partial<IElementActiveOptions> = {\n state: STATE_VALUE_ENUM.STATE_ACTIVE,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n};\n\nexport class ElementActive extends BaseTrigger<IElementActiveOptions> implements ITrigger<IElementActiveOptions> {\n static type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n type: string = TRIGGER_TYPE_ENUM.ELEMENT_ACTIVE;\n\n static defaultOptions = defaultOptions;\n\n constructor(options?: IElementActiveOptions) {\n super(options);\n this.options = Object.assign({}, defaultOptions, options);\n\n this.updateMarkIdByState([this.options.state]);\n }\n protected getEvents(): Array<{ type: string | string[]; handler: ITriggerEventHandler }> {\n return [\n {\n type: this.options.trigger,\n handler: this.handleStart\n },\n { type: this.options.triggerOff, handler: this.handleReset }\n ];\n }\n\n getStartState(): string {\n return this.options.state;\n }\n\n start(g: IMarkGraphic) {\n if (g) {\n const { state, interaction } = this.options;\n\n if (this.isGraphicInStateMark(g, state)) {\n g.addState(state, true);\n\n interaction.setStatedGraphics(this, [g]);\n }\n }\n }\n\n reset(graphic?: IMarkGraphic) {\n const { interaction, state } = this.options;\n\n const statedGraphics = interaction.getStatedGraphics(this);\n const g = graphic ?? statedGraphics?.[0];\n\n if (g && statedGraphics?.includes(g)) {\n g.removeState(state);\n interaction.setStatedGraphics(\n this,\n statedGraphics.filter(sg => sg !== g)\n );\n }\n }\n\n handleStart = (e: BaseEventParams) => {\n this.start(e.item);\n };\n\n handleReset = (e: BaseEventParams) => {\n this.reset(e.item);\n };\n}\n\nexport const registerElementActive = () => {\n Factory.registerInteractionTrigger(ElementActive.type, ElementActive);\n};\n"]}
|
|
@@ -52,7 +52,7 @@ class BaseLineMark extends base_mark_1.BaseMark {
|
|
|
52
52
|
})), res)), []) : null;
|
|
53
53
|
}
|
|
54
54
|
_runPointsEncoder(newStyles, g, attrs = {}) {
|
|
55
|
-
var _a, _b
|
|
55
|
+
var _a, _b;
|
|
56
56
|
const data = g.context.data, lineAttrs = [], points = [], commonAttrs = {}, progressive = null === (_a = this.renderContext) || void 0 === _a ? void 0 : _a.progressive, isFirstFrame = progressive && 0 === progressive.currentIndex;
|
|
57
57
|
if (data.forEach(((datum, index) => {
|
|
58
58
|
var _a;
|
|
@@ -60,7 +60,7 @@ class BaseLineMark extends base_mark_1.BaseMark {
|
|
|
60
60
|
this._isValidPointChannel(attrName) ? points[index][attrName] = newStyles[attrName](datum) : this._segmentStyleKeys.includes(attrName) && !progressive ? lineAttrs[index][attrName] = newStyles[attrName](datum) : 0 !== index || progressive && !isFirstFrame || (commonAttrs[attrName] = newStyles[attrName](datum));
|
|
61
61
|
})), points[index].context = null !== (_a = this._keyGetter(datum)) && void 0 !== _a ? _a : index;
|
|
62
62
|
})), progressive) {
|
|
63
|
-
const segments =
|
|
63
|
+
const segments = (null === (_b = g.attribute) || void 0 === _b ? void 0 : _b.segments) ? [ ...g.attribute.segments ] : [];
|
|
64
64
|
return segments.push({
|
|
65
65
|
points: points
|
|
66
66
|
}), isFirstFrame ? Object.assign(Object.assign({}, commonAttrs), {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mark/base/base-line.ts"],"names":[],"mappings":"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","file":"base-line.js","sourcesContent":["import { isValidScaleType } from '@visactor/vscale';\nimport type { StateValueType } from '../../compile/mark';\nimport type { ConvertToMarkStyleSpec, ILineLikeMarkSpec } from '../../typings/visual';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isFunction, isNil } from '@visactor/vutils';\nimport { BaseMark } from './base-mark';\nimport { DiffState, type IMarkGraphic, type IMarkStyle } from '../interface';\nimport type { Datum } from '../../typings/common';\nimport type { IGroup, ILine, ILineGraphicAttribute } from '@visactor/vrender-core';\nimport { isSegmentAttrEqual } from '../utils/line';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport { DEFAULT_DATA_KEY } from '../../constant/data';\n\nexport const LINE_SEGMENT_ATTRIBUTES = [\n 'stroke',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit'\n];\n\nexport abstract class BaseLineMark<T extends ILineLikeMarkSpec = ILineLikeMarkSpec> extends BaseMark<T> {\n protected abstract _getIgnoreAttributes(): string[];\n\n protected _getSegmentAttributes() {\n return LINE_SEGMENT_ATTRIBUTES;\n }\n\n protected _segmentStyleKeys: string[] = [];\n\n initStyleWithSpec(spec: IMarkSpec<T>) {\n this._segmentStyleKeys = [];\n\n super.initStyleWithSpec(spec);\n }\n /**\n * @override\n * 之所以覆写是因为 vgrammar 侧默认都会处理 lineSegments,非常耗性能,所以需要 VChart 给一个标志位用于是否执行。\n * 由外部series调用,设置markStyle的接口。\n * @param style\n * @param level\n * @param state\n */\n setStyle<T>(\n style: Partial<ConvertToMarkStyleSpec<T>> | Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n const ignoreAttributes = this._getIgnoreAttributes();\n const segmentAttributes = this._getSegmentAttributes();\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach(attr => {\n const attrStyle = (style as any)[attr];\n if (isNil(attrStyle) || ignoreAttributes.includes(attr)) {\n return;\n }\n if (\n isUserLevel &&\n segmentAttributes.includes(attr) &&\n (isValidScaleType(attrStyle?.type) || attrStyle?.scale || isFunction(attrStyle))\n ) {\n if (!this._segmentStyleKeys.includes(attr)) {\n this._segmentStyleKeys.push(attr);\n }\n }\n\n const styleConverter = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel);\n\n this.setAttribute(attr as any, styleConverter, state, level);\n });\n }\n\n _isValidPointChannel = (channel: string) => {\n return ['x', 'y', 'defined'].includes(channel);\n };\n\n _getLineSegments(items: any[], points: IPointLike[]) {\n if (!this._segmentStyleKeys || !this._segmentStyleKeys.length) {\n return null;\n }\n\n const segments: { attrs: any; startIndex: number; endIndex?: number }[] = [];\n let prevSegmentAttrs: any = null;\n\n items.forEach((item, index) => {\n if (\n !prevSegmentAttrs ||\n !this._segmentStyleKeys.every(key => {\n return isSegmentAttrEqual(prevSegmentAttrs[key], item[key], key);\n })\n ) {\n if (segments.length) {\n segments[segments.length - 1].endIndex = index;\n }\n\n prevSegmentAttrs = item;\n segments.push({\n attrs: prevSegmentAttrs,\n startIndex: index\n });\n }\n });\n\n if (segments.length >= 2) {\n return segments.map(entry => {\n return {\n ...entry.attrs,\n points: points.slice(entry.startIndex, isNil(entry.endIndex) ? points.length : entry.endIndex)\n };\n });\n }\n\n return null;\n }\n\n _getPrevPoints(g: ILine): IPointLike[] | null {\n const { points, segments } = g.attribute;\n\n return (\n points ??\n (segments\n ? segments.reduce((res: IPointLike[], seg: ILineGraphicAttribute) => {\n if (seg.points) {\n seg.points.forEach((point: IPointLike) => {\n res.push(point);\n });\n }\n\n return res;\n }, [])\n : null)\n );\n }\n\n _runPointsEncoder(newStyles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n const data = g.context.data;\n const lineAttrs: any[] = [];\n const points: IPointLike[] = [];\n const commonAttrs: any = {};\n const progressive = this.renderContext?.progressive;\n const isFirstFrame = progressive && progressive.currentIndex === 0;\n\n data.forEach((datum: Datum, index: number) => {\n points[index] = {} as IPointLike;\n lineAttrs[index] = {};\n\n Object.keys(newStyles).forEach(attrName => {\n if (this._isValidPointChannel(attrName)) {\n (points[index] as any)[attrName] = newStyles[attrName](datum);\n } else if (this._segmentStyleKeys.includes(attrName) && !progressive) {\n lineAttrs[index][attrName] = newStyles[attrName](datum);\n } else if (index === 0 && (!progressive || isFirstFrame)) {\n commonAttrs[attrName] = newStyles[attrName](datum);\n }\n });\n\n // todo 上下文,似乎是动画相关的\n (points[index] as any).context = this._keyGetter(datum) ?? index;\n });\n\n if (progressive) {\n const segments = (g as any).attribute?.segments ?? [];\n\n segments.push({\n points\n });\n return isFirstFrame\n ? {\n ...commonAttrs,\n segments\n }\n : { segments };\n } else if (this._segmentStyleKeys && this._segmentStyleKeys.length) {\n const segments = this._getLineSegments(lineAttrs, points);\n\n if (segments) {\n return {\n ...commonAttrs,\n ...lineAttrs[0],\n segments,\n points: null as IPointLike[]\n };\n }\n }\n\n return {\n ...commonAttrs,\n ...lineAttrs[0],\n points,\n segments: null as any[]\n };\n }\n\n _runEncoderOfGraphic(newStyles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n const data = g.context.data;\n if (newStyles && Object.keys(newStyles).some(this._isValidPointChannel) && data && data.length) {\n return this._runPointsEncoder(newStyles, g, attrs);\n }\n\n return super._runEncoderOfGraphic(newStyles, g, attrs);\n }\n\n protected _getDataByKey(data: Datum[]) {\n return this._dataByGroup;\n }\n\n protected _runProgressiveJoin() {\n const currentIndex = this.renderContext.progressive.currentIndex;\n const graphics: IMarkGraphic[] = [];\n\n this._dataByGroup.keys.forEach((groupKey, index) => {\n const data = this.renderContext.progressive.groupedData.get(groupKey as string);\n const groupStep = this.renderContext.progressive.step;\n const dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep);\n\n if (currentIndex === 0) {\n const g = {\n context: {\n ...this._getCommonContext(),\n diffState: DiffState.enter,\n data: dataSlice,\n uniqueKey: groupKey,\n key: groupKey,\n groupKey: groupKey\n }\n };\n\n graphics.push(g as IMarkGraphic);\n } else {\n const g = this._graphics[index];\n g.context.data = dataSlice;\n }\n });\n const res = currentIndex === 0 ? graphics : this._graphics;\n\n return {\n graphicsByGroup: { [DEFAULT_DATA_KEY]: res },\n graphics: res,\n needUpdate: false\n };\n }\n\n protected _setCommonAttributesToTheme(g: IMarkGraphic) {\n // do nothing in line/area\n }\n protected _addProgressiveGraphic(parent: IGroup, g: IMarkGraphic) {\n g.incremental = 1;\n (parent as IGroup).appendChild(g);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/mark/base/base-line.ts"],"names":[],"mappings":"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","file":"base-line.js","sourcesContent":["import { isValidScaleType } from '@visactor/vscale';\nimport type { StateValueType } from '../../compile/mark';\nimport type { ConvertToMarkStyleSpec, ILineLikeMarkSpec } from '../../typings/visual';\nimport type { IPointLike } from '@visactor/vutils';\nimport { isFunction, isNil } from '@visactor/vutils';\nimport { BaseMark } from './base-mark';\nimport { DiffState, type IMarkGraphic, type IMarkStyle } from '../interface';\nimport type { Datum } from '../../typings/common';\nimport type { IGroup, ILine, ILineGraphicAttribute } from '@visactor/vrender-core';\nimport { isSegmentAttrEqual } from '../utils/line';\nimport type { IMarkSpec } from '../../typings/spec/common';\nimport { DEFAULT_DATA_KEY } from '../../constant/data';\n\nexport const LINE_SEGMENT_ATTRIBUTES = [\n 'stroke',\n 'strokeOpacity',\n 'lineDash',\n 'lineDashOffset',\n 'lineCap',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit'\n];\n\nexport abstract class BaseLineMark<T extends ILineLikeMarkSpec = ILineLikeMarkSpec> extends BaseMark<T> {\n protected abstract _getIgnoreAttributes(): string[];\n\n protected _getSegmentAttributes() {\n return LINE_SEGMENT_ATTRIBUTES;\n }\n\n protected _segmentStyleKeys: string[] = [];\n\n initStyleWithSpec(spec: IMarkSpec<T>) {\n this._segmentStyleKeys = [];\n\n super.initStyleWithSpec(spec);\n }\n /**\n * @override\n * 之所以覆写是因为 vgrammar 侧默认都会处理 lineSegments,非常耗性能,所以需要 VChart 给一个标志位用于是否执行。\n * 由外部series调用,设置markStyle的接口。\n * @param style\n * @param level\n * @param state\n */\n setStyle<T>(\n style: Partial<ConvertToMarkStyleSpec<T>> | Partial<IMarkStyle<T>>,\n state: StateValueType = 'normal',\n level: number = 0\n ): void {\n if (isNil(style)) {\n return;\n }\n\n if (this.stateStyle[state] === undefined) {\n this.stateStyle[state] = {};\n }\n\n const ignoreAttributes = this._getIgnoreAttributes();\n const segmentAttributes = this._getSegmentAttributes();\n const isUserLevel = this.isUserLevel(level);\n\n Object.keys(style).forEach(attr => {\n const attrStyle = (style as any)[attr];\n if (isNil(attrStyle) || ignoreAttributes.includes(attr)) {\n return;\n }\n if (\n isUserLevel &&\n segmentAttributes.includes(attr) &&\n (isValidScaleType(attrStyle?.type) || attrStyle?.scale || isFunction(attrStyle))\n ) {\n if (!this._segmentStyleKeys.includes(attr)) {\n this._segmentStyleKeys.push(attr);\n }\n }\n\n const styleConverter = this._filterAttribute(attr as any, attrStyle, state, level, isUserLevel);\n\n this.setAttribute(attr as any, styleConverter, state, level);\n });\n }\n\n _isValidPointChannel = (channel: string) => {\n return ['x', 'y', 'defined'].includes(channel);\n };\n\n _getLineSegments(items: any[], points: IPointLike[]) {\n if (!this._segmentStyleKeys || !this._segmentStyleKeys.length) {\n return null;\n }\n\n const segments: { attrs: any; startIndex: number; endIndex?: number }[] = [];\n let prevSegmentAttrs: any = null;\n\n items.forEach((item, index) => {\n if (\n !prevSegmentAttrs ||\n !this._segmentStyleKeys.every(key => {\n return isSegmentAttrEqual(prevSegmentAttrs[key], item[key], key);\n })\n ) {\n if (segments.length) {\n segments[segments.length - 1].endIndex = index;\n }\n\n prevSegmentAttrs = item;\n segments.push({\n attrs: prevSegmentAttrs,\n startIndex: index\n });\n }\n });\n\n if (segments.length >= 2) {\n return segments.map(entry => {\n return {\n ...entry.attrs,\n points: points.slice(entry.startIndex, isNil(entry.endIndex) ? points.length : entry.endIndex)\n };\n });\n }\n\n return null;\n }\n\n _getPrevPoints(g: ILine): IPointLike[] | null {\n const { points, segments } = g.attribute;\n\n return (\n points ??\n (segments\n ? segments.reduce((res: IPointLike[], seg: ILineGraphicAttribute) => {\n if (seg.points) {\n seg.points.forEach((point: IPointLike) => {\n res.push(point);\n });\n }\n\n return res;\n }, [])\n : null)\n );\n }\n\n _runPointsEncoder(newStyles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n const data = g.context.data;\n const lineAttrs: any[] = [];\n const points: IPointLike[] = [];\n const commonAttrs: any = {};\n const progressive = this.renderContext?.progressive;\n const isFirstFrame = progressive && progressive.currentIndex === 0;\n\n data.forEach((datum: Datum, index: number) => {\n points[index] = {} as IPointLike;\n lineAttrs[index] = {};\n\n Object.keys(newStyles).forEach(attrName => {\n if (this._isValidPointChannel(attrName)) {\n (points[index] as any)[attrName] = newStyles[attrName](datum);\n } else if (this._segmentStyleKeys.includes(attrName) && !progressive) {\n lineAttrs[index][attrName] = newStyles[attrName](datum);\n } else if (index === 0 && (!progressive || isFirstFrame)) {\n commonAttrs[attrName] = newStyles[attrName](datum);\n }\n });\n\n // todo 上下文,似乎是动画相关的\n (points[index] as any).context = this._keyGetter(datum) ?? index;\n });\n\n if (progressive) {\n const segments = (g as any).attribute?.segments ? [...(g as any).attribute.segments] : [];\n\n segments.push({\n points\n });\n return isFirstFrame\n ? {\n ...commonAttrs,\n segments\n }\n : { segments };\n } else if (this._segmentStyleKeys && this._segmentStyleKeys.length) {\n const segments = this._getLineSegments(lineAttrs, points);\n\n if (segments) {\n return {\n ...commonAttrs,\n ...lineAttrs[0],\n segments,\n points: null as IPointLike[]\n };\n }\n }\n\n return {\n ...commonAttrs,\n ...lineAttrs[0],\n points,\n segments: null as any[]\n };\n }\n\n _runEncoderOfGraphic(newStyles: Record<string, (datum: Datum) => any>, g: IMarkGraphic, attrs: any = {}) {\n const data = g.context.data;\n if (newStyles && Object.keys(newStyles).some(this._isValidPointChannel) && data && data.length) {\n return this._runPointsEncoder(newStyles, g, attrs);\n }\n\n return super._runEncoderOfGraphic(newStyles, g, attrs);\n }\n\n protected _getDataByKey(data: Datum[]) {\n return this._dataByGroup;\n }\n\n protected _runProgressiveJoin() {\n const currentIndex = this.renderContext.progressive.currentIndex;\n const graphics: IMarkGraphic[] = [];\n\n this._dataByGroup.keys.forEach((groupKey, index) => {\n const data = this.renderContext.progressive.groupedData.get(groupKey as string);\n const groupStep = this.renderContext.progressive.step;\n const dataSlice = data.slice(currentIndex * groupStep, (currentIndex + 1) * groupStep);\n\n if (currentIndex === 0) {\n const g = {\n context: {\n ...this._getCommonContext(),\n diffState: DiffState.enter,\n data: dataSlice,\n uniqueKey: groupKey,\n key: groupKey,\n groupKey: groupKey\n }\n };\n\n graphics.push(g as IMarkGraphic);\n } else {\n const g = this._graphics[index];\n g.context.data = dataSlice;\n }\n });\n const res = currentIndex === 0 ? graphics : this._graphics;\n\n return {\n graphicsByGroup: { [DEFAULT_DATA_KEY]: res },\n graphics: res,\n needUpdate: false\n };\n }\n\n protected _setCommonAttributesToTheme(g: IMarkGraphic) {\n // do nothing in line/area\n }\n protected _addProgressiveGraphic(parent: IGroup, g: IMarkGraphic) {\n g.incremental = 1;\n (parent as IGroup).appendChild(g);\n }\n}\n"]}
|
package/cjs/series/bar/bar.js
CHANGED
|
@@ -415,7 +415,7 @@ class BarSeries extends cartesian_1.CartesianSeries {
|
|
|
415
415
|
if (super.compile(), this._spec.sampling) {
|
|
416
416
|
const {width: width, height: height} = this._region.getLayoutRect(), fieldsY = this._fieldY, fieldsX = this._fieldX;
|
|
417
417
|
this._data.setTransform([ {
|
|
418
|
-
type: "
|
|
418
|
+
type: "sampling",
|
|
419
419
|
size: "horizontal" === this._direction ? height : width,
|
|
420
420
|
factor: this._spec.samplingFactor,
|
|
421
421
|
yfield: "horizontal" === this._direction ? fieldsX[0] : fieldsY[0],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'dataSampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
|
package/cjs/series/rose/rose.js
CHANGED
|
@@ -55,10 +55,9 @@ class RoseSeries extends rose_like_1.RoseLikeSeries {
|
|
|
55
55
|
fill: this.getColorAttribute(),
|
|
56
56
|
outerRadius: datum => (0, scale_1.valueInScaleRange)(this.radiusAxisHelper.dataToPosition([ datum[this._radiusField[0]] ]), this.radiusAxisHelper.getScale(0)),
|
|
57
57
|
innerRadius: datum => {
|
|
58
|
-
|
|
59
|
-
if (!this.getStack()) return 0;
|
|
58
|
+
if (!this.getStack()) return this._computeLayoutRadius() * this._innerRadius;
|
|
60
59
|
const stackStart = (0, scale_1.valueInScaleRange)(this.radiusAxisHelper.dataToPosition([ datum[this._innerRadiusField[0]] ]), this.radiusAxisHelper.getScale(0));
|
|
61
|
-
return stackStart <= Number.MIN_VALUE ? this._computeLayoutRadius() *
|
|
60
|
+
return stackStart <= Number.MIN_VALUE ? this._computeLayoutRadius() * this._innerRadius : stackStart;
|
|
62
61
|
}
|
|
63
62
|
});
|
|
64
63
|
}
|
|
@@ -77,10 +76,7 @@ class RoseSeries extends rose_like_1.RoseLikeSeries {
|
|
|
77
76
|
const appearPreset = null === (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.animationAppear) || void 0 === _b ? void 0 : _b.preset;
|
|
78
77
|
if (this._roseMark) {
|
|
79
78
|
const animationParams = {
|
|
80
|
-
innerRadius: () =>
|
|
81
|
-
var _a;
|
|
82
|
-
return this._computeLayoutRadius() * (null !== (_a = this._spec.innerRadius) && void 0 !== _a ? _a : 0);
|
|
83
|
-
}
|
|
79
|
+
innerRadius: () => this._computeLayoutRadius() * this._innerRadius
|
|
84
80
|
};
|
|
85
81
|
this._roseMark.setAnimationConfig((0, utils_1.animationConfig)(null === (_c = factory_1.Factory.getAnimationInKey("rose")) || void 0 === _c ? void 0 : _c(animationParams, appearPreset), (0,
|
|
86
82
|
utils_1.userAnimationConfig)("rose", this._spec, this._markAttributeContext)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/rose/rose.ts"],"names":[],"mappings":"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","file":"rose.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { Datum } from '../../typings';\nimport { valueInScaleRange } from '../../util/scale';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerRoseAnimation } from './animation';\nimport type { IRoseAnimationParams, IRoseSeriesSpec, RoseAppearPreset } from './interface';\nimport { RoseLikeSeries } from '../polar/rose-like';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerArcMark } from '../../mark/arc';\nimport { roseSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport type { IArcMark, ILabelMark, IMark, ITextMark } from '../../mark/interface';\nimport { RoseSeriesSpecTransformer } from './rose-transformer';\nimport { registerPolarBandAxis, registerPolarLinearAxis } from '../../component/axis/polar';\nimport { rose } from '../../theme/builtin/common/series/rose';\n\nexport const DefaultBandWidth = 0.5;\n\nexport class RoseSeries<T extends IRoseSeriesSpec = IRoseSeriesSpec> extends RoseLikeSeries<T> {\n static readonly type: string = SeriesTypeEnum.rose;\n type = SeriesTypeEnum.rose;\n\n static readonly mark: SeriesMarkMap = roseSeriesMark;\n static readonly builtInTheme = { rose };\n static readonly transformerConstructor = RoseSeriesSpecTransformer as any;\n readonly transformerConstructor = RoseSeriesSpecTransformer;\n\n private _roseMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n\n initMark(): void {\n this.initRoseMark();\n }\n\n initMarkStyle(): void {\n this.initRoseMarkStyle();\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => {\n return {\n x: () => this.angleAxisHelper.center().x,\n y: () => this.angleAxisHelper.center().y\n };\n };\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n private initRoseMark() {\n this._roseMark = this._createMark(\n RoseSeries.mark.rose,\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morph: shouldMarkDoMorph(this._spec, RoseSeries.mark.rose.name),\n morphElementKey: this.getDimensionField()[0]\n }\n ) as IArcMark;\n }\n\n private getRoseAngle() {\n const angleBandWidth =\n this.angleAxisHelper.getBandwidth?.(this._groups ? this._groups.fields.length - 1 : 0) ?? DefaultBandWidth;\n return angleBandWidth;\n }\n\n private startAngleScale(datum: Datum) {\n return (\n this.angleAxisHelper.dataToPosition(this.getDatumPositionValues(datum, this.getGroupFields())) -\n this.angleAxisHelper.getBandwidth(this.getGroupFields().length - 1) * 0.5\n );\n }\n\n private endAngleScale(datum: Datum) {\n return (\n this.angleAxisHelper.dataToPosition(this.getDatumPositionValues(datum, this.getGroupFields())) +\n this.getRoseAngle() -\n this.angleAxisHelper.getBandwidth(this.getGroupFields().length - 1) * 0.5\n );\n }\n\n private initRoseMarkStyle() {\n const roseMark = this._roseMark;\n if (roseMark) {\n this.setMarkStyle(roseMark, {\n x: () => this.angleAxisHelper.center().x,\n y: () => this.angleAxisHelper.center().y,\n startAngle: (datum: Datum) => this.startAngleScale(datum),\n endAngle: (datum: Datum) => this.endAngleScale(datum),\n fill: this.getColorAttribute(),\n outerRadius: (datum: Datum) =>\n valueInScaleRange(\n this.radiusAxisHelper.dataToPosition([datum[this._radiusField[0]]]),\n this.radiusAxisHelper.getScale(0)\n ),\n innerRadius: (datum: Datum) => {\n if (!this.getStack()) {\n return 0;\n }\n const stackStart = valueInScaleRange(\n this.radiusAxisHelper.dataToPosition([datum[this._innerRadiusField[0]]]),\n this.radiusAxisHelper.getScale(0)\n );\n return stackStart <= Number.MIN_VALUE\n ? this._computeLayoutRadius() * (this._spec.innerRadius ?? 0)\n : stackStart;\n }\n });\n }\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._roseMark && this._tooltipHelper.activeTriggerSet.mark.add(this._roseMark);\n }\n\n initLabelMarkStyle(textMark: ILabelMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: 0\n });\n }\n\n initAnimation() {\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<RoseAppearPreset>)?.preset;\n\n if (this._roseMark) {\n const animationParams: IRoseAnimationParams = {\n innerRadius: () => this._computeLayoutRadius() * (this._spec.innerRadius ?? 0)\n };\n this._roseMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('rose')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.rose, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getActiveMarks(): IMark[] {\n return [this._roseMark];\n }\n}\n\nexport const registerRoseSeries = () => {\n Factory.registerSeries(RoseSeries.type, RoseSeries);\n registerArcMark();\n registerRoseAnimation();\n registerPolarBandAxis();\n registerPolarLinearAxis();\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/rose/rose.ts"],"names":[],"mappings":"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","file":"rose.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { Datum } from '../../typings';\nimport { valueInScaleRange } from '../../util/scale';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerRoseAnimation } from './animation';\nimport type { IRoseAnimationParams, IRoseSeriesSpec, RoseAppearPreset } from './interface';\nimport { RoseLikeSeries } from '../polar/rose-like';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerArcMark } from '../../mark/arc';\nimport { roseSeriesMark } from './constant';\nimport { Factory } from '../../core/factory';\nimport type { IArcMark, ILabelMark, IMark, ITextMark } from '../../mark/interface';\nimport { RoseSeriesSpecTransformer } from './rose-transformer';\nimport { registerPolarBandAxis, registerPolarLinearAxis } from '../../component/axis/polar';\nimport { rose } from '../../theme/builtin/common/series/rose';\n\nexport const DefaultBandWidth = 0.5;\n\nexport class RoseSeries<T extends IRoseSeriesSpec = IRoseSeriesSpec> extends RoseLikeSeries<T> {\n static readonly type: string = SeriesTypeEnum.rose;\n type = SeriesTypeEnum.rose;\n\n static readonly mark: SeriesMarkMap = roseSeriesMark;\n static readonly builtInTheme = { rose };\n static readonly transformerConstructor = RoseSeriesSpecTransformer as any;\n readonly transformerConstructor = RoseSeriesSpecTransformer;\n\n private _roseMark: IArcMark | null = null;\n protected _labelMark: ITextMark | null = null;\n\n initMark(): void {\n this.initRoseMark();\n }\n\n initMarkStyle(): void {\n this.initRoseMarkStyle();\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // center\n this._markAttributeContext.getCenter = () => {\n return {\n x: () => this.angleAxisHelper.center().x,\n y: () => this.angleAxisHelper.center().y\n };\n };\n // angle scale\n this._markAttributeContext.startAngleScale = (datum: Datum) => this.startAngleScale(datum);\n this._markAttributeContext.endAngleScale = (datum: Datum) => this.endAngleScale(datum);\n }\n\n private initRoseMark() {\n this._roseMark = this._createMark(\n RoseSeries.mark.rose,\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morph: shouldMarkDoMorph(this._spec, RoseSeries.mark.rose.name),\n morphElementKey: this.getDimensionField()[0]\n }\n ) as IArcMark;\n }\n\n private getRoseAngle() {\n const angleBandWidth =\n this.angleAxisHelper.getBandwidth?.(this._groups ? this._groups.fields.length - 1 : 0) ?? DefaultBandWidth;\n return angleBandWidth;\n }\n\n private startAngleScale(datum: Datum) {\n return (\n this.angleAxisHelper.dataToPosition(this.getDatumPositionValues(datum, this.getGroupFields())) -\n this.angleAxisHelper.getBandwidth(this.getGroupFields().length - 1) * 0.5\n );\n }\n\n private endAngleScale(datum: Datum) {\n return (\n this.angleAxisHelper.dataToPosition(this.getDatumPositionValues(datum, this.getGroupFields())) +\n this.getRoseAngle() -\n this.angleAxisHelper.getBandwidth(this.getGroupFields().length - 1) * 0.5\n );\n }\n\n private initRoseMarkStyle() {\n const roseMark = this._roseMark;\n if (roseMark) {\n this.setMarkStyle(roseMark, {\n x: () => this.angleAxisHelper.center().x,\n y: () => this.angleAxisHelper.center().y,\n startAngle: (datum: Datum) => this.startAngleScale(datum),\n endAngle: (datum: Datum) => this.endAngleScale(datum),\n fill: this.getColorAttribute(),\n outerRadius: (datum: Datum) =>\n valueInScaleRange(\n this.radiusAxisHelper.dataToPosition([datum[this._radiusField[0]]]),\n this.radiusAxisHelper.getScale(0)\n ),\n innerRadius: (datum: Datum) => {\n if (!this.getStack()) {\n return this._computeLayoutRadius() * this._innerRadius;\n }\n const stackStart = valueInScaleRange(\n this.radiusAxisHelper.dataToPosition([datum[this._innerRadiusField[0]]]),\n this.radiusAxisHelper.getScale(0)\n );\n return stackStart <= Number.MIN_VALUE ? this._computeLayoutRadius() * this._innerRadius : stackStart;\n }\n });\n }\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n this._roseMark && this._tooltipHelper.activeTriggerSet.mark.add(this._roseMark);\n }\n\n initLabelMarkStyle(textMark: ILabelMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n text: (datum: Datum) => {\n return datum[this.getDimensionField()[0]];\n },\n fill: this.getColorAttribute(),\n z: 0\n });\n }\n\n initAnimation() {\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<RoseAppearPreset>)?.preset;\n\n if (this._roseMark) {\n const animationParams: IRoseAnimationParams = {\n innerRadius: () => this._computeLayoutRadius() * this._innerRadius\n };\n this._roseMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('rose')?.(animationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.rose, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n getDefaultShapeType() {\n return 'circle';\n }\n\n getActiveMarks(): IMark[] {\n return [this._roseMark];\n }\n}\n\nexport const registerRoseSeries = () => {\n Factory.registerSeries(RoseSeries.type, RoseSeries);\n registerArcMark();\n registerRoseAnimation();\n registerPolarBandAxis();\n registerPolarLinearAxis();\n};\n"]}
|
|
@@ -21,7 +21,6 @@ export declare class ScatterSeries<T extends IScatterSeriesSpec = IScatterSeries
|
|
|
21
21
|
private _sizeField;
|
|
22
22
|
private _shape;
|
|
23
23
|
private _shapeField;
|
|
24
|
-
private _enableLabelAnimationHook?;
|
|
25
24
|
protected _invalidType: IScatterInvalidType;
|
|
26
25
|
setAttrFromSpec(): void;
|
|
27
26
|
private _getSeriesAttribute;
|
|
@@ -36,8 +35,6 @@ export declare class ScatterSeries<T extends IScatterSeriesSpec = IScatterSeries
|
|
|
36
35
|
initLabelMarkStyle(labelMark?: ILabelMark): void;
|
|
37
36
|
private _updateSymbolGraphicPosition;
|
|
38
37
|
private _ensureLabelGraphicPostMatrix;
|
|
39
|
-
private _isGeoCoordinateSeries;
|
|
40
|
-
private _refreshLabelComponent;
|
|
41
38
|
handleZoom(e: any): void;
|
|
42
39
|
handlePan(e: any): void;
|
|
43
40
|
onLayoutEnd(): void;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.registerScatterSeries = exports.ScatterSeries = void 0;
|
|
6
6
|
|
|
7
|
-
const base_1 = require("../../constant/base"), cartesian_1 = require("../cartesian/cartesian"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("../../constant/attribute"), type_1 = require("../interface/type"), interface_1 = require("../../compile/mark/interface"), scatter_1 = require("../../constant/scatter"), utils_1 = require("../../animation/utils"), animation_1 = require("./animation"), symbol_1 = require("../../mark/symbol"), constant_1 = require("./constant"), factory_1 = require("../../core/factory"), scatter_transformer_1 = require("./scatter-transformer"), utils_2 = require("../util/utils"), cartesian_2 = require("../../component/axis/cartesian"), scatter_2 = require("../../theme/builtin/common/series/scatter")
|
|
7
|
+
const base_1 = require("../../constant/base"), cartesian_1 = require("../cartesian/cartesian"), vutils_1 = require("@visactor/vutils"), attribute_1 = require("../../constant/attribute"), type_1 = require("../interface/type"), interface_1 = require("../../compile/mark/interface"), scatter_1 = require("../../constant/scatter"), utils_1 = require("../../animation/utils"), animation_1 = require("./animation"), symbol_1 = require("../../mark/symbol"), constant_1 = require("./constant"), factory_1 = require("../../core/factory"), scatter_transformer_1 = require("./scatter-transformer"), utils_2 = require("../util/utils"), cartesian_2 = require("../../component/axis/cartesian"), scatter_2 = require("../../theme/builtin/common/series/scatter");
|
|
8
8
|
|
|
9
9
|
class ScatterSeries extends cartesian_1.CartesianSeries {
|
|
10
10
|
constructor() {
|
|
@@ -120,8 +120,7 @@ class ScatterSeries extends cartesian_1.CartesianSeries {
|
|
|
120
120
|
visible: !0
|
|
121
121
|
}, "normal", attribute_1.AttributeLevel.Series) : this.setMarkStyle(this._symbolMark, {
|
|
122
122
|
visible: this._getInvalidDefined.bind(this)
|
|
123
|
-
}, "normal", attribute_1.AttributeLevel.Series), this._symbolMark.getProduct() && this._symbolMark.compileEncode()
|
|
124
|
-
this._isGeoCoordinateSeries() && (this._updateSymbolGraphicPosition(), this._refreshLabelComponent(!0, !0));
|
|
123
|
+
}, "normal", attribute_1.AttributeLevel.Series), this._symbolMark.getProduct() && this._symbolMark.compileEncode();
|
|
125
124
|
}
|
|
126
125
|
initLabelMarkStyle(labelMark) {
|
|
127
126
|
labelMark && (this._labelMark = labelMark, this.setMarkStyle(labelMark, {
|
|
@@ -152,25 +151,6 @@ class ScatterSeries extends cartesian_1.CartesianSeries {
|
|
|
152
151
|
postMatrix: new vutils_1.Matrix
|
|
153
152
|
}), labelGraphic;
|
|
154
153
|
}
|
|
155
|
-
_isGeoCoordinateSeries() {
|
|
156
|
-
var _a, _b;
|
|
157
|
-
return (null === (_b = null === (_a = this.getXAxisHelper()) || void 0 === _a ? void 0 : _a.getAxisType) || void 0 === _b ? void 0 : _b.call(_a)) === type_2.ComponentTypeEnum.geoCoordinate;
|
|
158
|
-
}
|
|
159
|
-
_refreshLabelComponent(resetPostMatrix = !1, disableAnimation = !1) {
|
|
160
|
-
var _a, _b;
|
|
161
|
-
const vgrammarLabel = null === (_a = this._labelMark) || void 0 === _a ? void 0 : _a.getComponent(), labelGraphic = null === (_b = null == vgrammarLabel ? void 0 : vgrammarLabel.getComponent) || void 0 === _b ? void 0 : _b.call(vgrammarLabel);
|
|
162
|
-
resetPostMatrix && (null == labelGraphic ? void 0 : labelGraphic.attribute.postMatrix) && labelGraphic.setAttributes({
|
|
163
|
-
postMatrix: new vutils_1.Matrix
|
|
164
|
-
}), disableAnimation && (null == labelGraphic ? void 0 : labelGraphic.disableAnimation) && (labelGraphic.disableAnimation(),
|
|
165
|
-
this._enableLabelAnimationHook || (this._enableLabelAnimationHook = () => {
|
|
166
|
-
var _a, _b, _c, _d;
|
|
167
|
-
const currentLabelGraphic = null === (_c = null === (_b = null === (_a = this._labelMark) || void 0 === _a ? void 0 : _a.getComponent()) || void 0 === _b ? void 0 : _b.getComponent) || void 0 === _c ? void 0 : _c.call(_b);
|
|
168
|
-
null === (_d = null == currentLabelGraphic ? void 0 : currentLabelGraphic.enableAnimation) || void 0 === _d || _d.call(currentLabelGraphic),
|
|
169
|
-
this.event.off(event_1.HOOK_EVENT.AFTER_MARK_RENDER_END, this._enableLabelAnimationHook),
|
|
170
|
-
this._enableLabelAnimationHook = void 0;
|
|
171
|
-
}, this.event.on(event_1.HOOK_EVENT.AFTER_MARK_RENDER_END, this._enableLabelAnimationHook))),
|
|
172
|
-
(null == vgrammarLabel ? void 0 : vgrammarLabel.getProduct()) && vgrammarLabel.renderInner();
|
|
173
|
-
}
|
|
174
154
|
handleZoom(e) {
|
|
175
155
|
const {scale: scale, scaleCenter: scaleCenter} = e;
|
|
176
156
|
if (1 === scale) return;
|
|
@@ -186,12 +166,14 @@ class ScatterSeries extends cartesian_1.CartesianSeries {
|
|
|
186
166
|
labelGraphic && labelGraphic.translate(delta[0], delta[1]);
|
|
187
167
|
}
|
|
188
168
|
onLayoutEnd() {
|
|
189
|
-
var _a, _b;
|
|
169
|
+
var _a, _b, _c;
|
|
190
170
|
super.onLayoutEnd(), this._updateSymbolGraphicPosition();
|
|
191
171
|
const labelGraphic = null === (_b = null === (_a = this._labelMark) || void 0 === _a ? void 0 : _a.getComponent()) || void 0 === _b ? void 0 : _b.getComponent();
|
|
192
172
|
(null == labelGraphic ? void 0 : labelGraphic.attribute.postMatrix) && labelGraphic.setAttributes({
|
|
193
173
|
postMatrix: new vutils_1.Matrix
|
|
194
|
-
})
|
|
174
|
+
});
|
|
175
|
+
const vgrammarLabel = null === (_c = this._labelMark) || void 0 === _c ? void 0 : _c.getComponent();
|
|
176
|
+
vgrammarLabel && vgrammarLabel.renderInner();
|
|
195
177
|
}
|
|
196
178
|
getDefaultShapeType() {
|
|
197
179
|
return "circle";
|