@visactor/vchart 1.12.2-alpha.3 → 1.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +2 -2
- package/build/index.js +426 -746
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/component/axis/base-axis.d.ts +1 -1
- package/cjs/component/axis/base-axis.js +3 -5
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.d.ts +2 -3
- package/cjs/component/axis/cartesian/axis.js +11 -19
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
- package/cjs/component/axis/cartesian/linear-axis.d.ts +1 -5
- package/cjs/component/axis/cartesian/linear-axis.js +1 -37
- package/cjs/component/axis/cartesian/linear-axis.js.map +1 -1
- package/cjs/component/axis/interface/common.js.map +1 -1
- package/cjs/component/axis/interface/spec.d.ts +1 -5
- package/cjs/component/axis/interface/spec.js.map +1 -1
- package/cjs/component/axis/mixin/linear-axis-mixin.d.ts +1 -7
- package/cjs/component/axis/mixin/linear-axis-mixin.js +13 -37
- package/cjs/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/cjs/component/brush/brush.js +1 -4
- package/cjs/component/brush/brush.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.js +7 -9
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/data-zoom/util.js +2 -3
- package/cjs/component/data-zoom/util.js.map +1 -1
- package/cjs/component/tooltip/constant.d.ts +2 -1
- package/cjs/component/tooltip/constant.js +2 -2
- package/cjs/component/tooltip/constant.js.map +1 -1
- package/cjs/component/tooltip/interface/common.d.ts +3 -3
- package/cjs/component/tooltip/interface/common.js.map +1 -1
- package/cjs/component/tooltip/processor/base.d.ts +3 -4
- package/cjs/component/tooltip/processor/base.js +6 -39
- package/cjs/component/tooltip/processor/base.js.map +1 -1
- package/cjs/component/tooltip/processor/dimension-tooltip.d.ts +2 -1
- package/cjs/component/tooltip/processor/dimension-tooltip.js +37 -6
- package/cjs/component/tooltip/processor/dimension-tooltip.js.map +1 -1
- package/cjs/component/tooltip/processor/group-tooltip.d.ts +2 -3
- package/cjs/component/tooltip/processor/group-tooltip.js +3 -12
- package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/cjs/component/tooltip/processor/interface.d.ts +0 -1
- package/cjs/component/tooltip/processor/interface.js.map +1 -1
- package/cjs/component/tooltip/processor/mark-tooltip.d.ts +2 -3
- package/cjs/component/tooltip/processor/mark-tooltip.js +4 -13
- package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/cjs/component/tooltip/tooltip-transformer.js +2 -2
- package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
- package/cjs/component/tooltip/tooltip.js +20 -22
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/common.d.ts +3 -1
- package/cjs/component/tooltip/utils/common.js +19 -2
- package/cjs/component/tooltip/utils/common.js.map +1 -1
- package/cjs/component/tooltip/utils/compose.js +1 -1
- package/cjs/component/tooltip/utils/compose.js.map +1 -1
- package/cjs/component/tooltip/utils/get-spec.js +64 -81
- package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/utils/index.d.ts +0 -1
- package/cjs/component/tooltip/utils/index.js +1 -1
- package/cjs/component/tooltip/utils/index.js.map +1 -1
- package/cjs/component/tooltip/utils/show-tooltip.js +5 -6
- package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/cjs/constant/layout.js +2 -1
- package/cjs/constant/polar.js +1 -2
- 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/event/events/dimension/util/cartesian.d.ts +1 -1
- package/cjs/event/events/dimension/util/cartesian.js +6 -4
- package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
- package/cjs/event/events/dimension/util/polar.js +4 -2
- package/cjs/event/events/dimension/util/polar.js.map +1 -1
- package/cjs/plugin/components/axis-sync/tick-align-transform.js +3 -3
- package/cjs/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/cjs/plugin/components/axis-sync/zero-align-transform.js +3 -5
- package/cjs/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/base.js +27 -64
- package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -4
- package/cjs/plugin/components/tooltip-handler/utils/position.js +8 -11
- package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/cjs/series/base/tooltip-helper.d.ts +1 -3
- package/cjs/series/base/tooltip-helper.js +5 -30
- package/cjs/series/base/tooltip-helper.js.map +1 -1
- package/cjs/series/dot/tooltip-helper.d.ts +0 -1
- package/cjs/series/dot/tooltip-helper.js +2 -19
- package/cjs/series/dot/tooltip-helper.js.map +1 -1
- package/cjs/series/interface/series.d.ts +2 -0
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/pie/interface.d.ts +1 -1
- package/cjs/series/pie/interface.js.map +1 -1
- package/cjs/series/pie/pie-transformer.js +2 -2
- package/cjs/series/pie/pie-transformer.js.map +1 -1
- package/cjs/series/polar/polar.js.map +1 -1
- package/cjs/series/sankey/sankey.d.ts +1 -0
- package/cjs/series/sankey/sankey.js +23 -12
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/util/array.d.ts +0 -1
- package/cjs/util/array.js +2 -11
- package/cjs/util/array.js.map +1 -1
- package/esm/component/axis/base-axis.d.ts +1 -1
- package/esm/component/axis/base-axis.js +2 -6
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.d.ts +2 -3
- package/esm/component/axis/cartesian/axis.js +10 -18
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/common.js.map +1 -1
- package/esm/component/axis/cartesian/linear-axis.d.ts +1 -5
- package/esm/component/axis/cartesian/linear-axis.js +1 -40
- package/esm/component/axis/cartesian/linear-axis.js.map +1 -1
- package/esm/component/axis/interface/common.js.map +1 -1
- package/esm/component/axis/interface/spec.d.ts +1 -5
- package/esm/component/axis/interface/spec.js.map +1 -1
- package/esm/component/axis/mixin/linear-axis-mixin.d.ts +1 -7
- package/esm/component/axis/mixin/linear-axis-mixin.js +13 -37
- package/esm/component/axis/mixin/linear-axis-mixin.js.map +1 -1
- package/esm/component/brush/brush.js +2 -2
- package/esm/component/brush/brush.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.js +6 -6
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +2 -2
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/data-zoom/util.js +1 -3
- package/esm/component/data-zoom/util.js.map +1 -1
- package/esm/component/tooltip/constant.d.ts +2 -1
- package/esm/component/tooltip/constant.js +2 -0
- package/esm/component/tooltip/constant.js.map +1 -1
- package/esm/component/tooltip/interface/common.d.ts +3 -3
- package/esm/component/tooltip/interface/common.js.map +1 -1
- package/esm/component/tooltip/processor/base.d.ts +3 -4
- package/esm/component/tooltip/processor/base.js +7 -44
- package/esm/component/tooltip/processor/base.js.map +1 -1
- package/esm/component/tooltip/processor/dimension-tooltip.d.ts +2 -1
- package/esm/component/tooltip/processor/dimension-tooltip.js +43 -6
- package/esm/component/tooltip/processor/dimension-tooltip.js.map +1 -1
- package/esm/component/tooltip/processor/group-tooltip.d.ts +2 -3
- package/esm/component/tooltip/processor/group-tooltip.js +4 -13
- package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/esm/component/tooltip/processor/interface.d.ts +0 -1
- package/esm/component/tooltip/processor/interface.js.map +1 -1
- package/esm/component/tooltip/processor/mark-tooltip.d.ts +2 -3
- package/esm/component/tooltip/processor/mark-tooltip.js +3 -14
- package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/esm/component/tooltip/tooltip-transformer.js +1 -1
- package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
- package/esm/component/tooltip/tooltip.js +21 -23
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/common.d.ts +3 -1
- package/esm/component/tooltip/utils/common.js +15 -1
- package/esm/component/tooltip/utils/common.js.map +1 -1
- package/esm/component/tooltip/utils/compose.js +2 -2
- package/esm/component/tooltip/utils/compose.js.map +1 -1
- package/esm/component/tooltip/utils/get-spec.js +61 -81
- package/esm/component/tooltip/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/utils/index.d.ts +0 -1
- package/esm/component/tooltip/utils/index.js +0 -2
- package/esm/component/tooltip/utils/index.js.map +1 -1
- package/esm/component/tooltip/utils/show-tooltip.js +5 -6
- package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/esm/constant/layout.js +2 -1
- package/esm/constant/polar.js +1 -2
- 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/event/events/dimension/util/cartesian.d.ts +1 -1
- package/esm/event/events/dimension/util/cartesian.js +6 -4
- package/esm/event/events/dimension/util/cartesian.js.map +1 -1
- package/esm/event/events/dimension/util/polar.js +3 -1
- package/esm/event/events/dimension/util/polar.js.map +1 -1
- package/esm/plugin/components/axis-sync/tick-align-transform.js +2 -4
- package/esm/plugin/components/axis-sync/tick-align-transform.js.map +1 -1
- package/esm/plugin/components/axis-sync/zero-align-transform.js +4 -4
- package/esm/plugin/components/axis-sync/zero-align-transform.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/base.js +20 -57
- package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -4
- package/esm/plugin/components/tooltip-handler/utils/position.js +8 -11
- package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/esm/series/base/tooltip-helper.d.ts +1 -3
- package/esm/series/base/tooltip-helper.js +4 -25
- package/esm/series/base/tooltip-helper.js.map +1 -1
- package/esm/series/dot/tooltip-helper.d.ts +0 -1
- package/esm/series/dot/tooltip-helper.js +3 -20
- package/esm/series/dot/tooltip-helper.js.map +1 -1
- package/esm/series/interface/series.d.ts +2 -0
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/pie/interface.d.ts +1 -1
- package/esm/series/pie/interface.js.map +1 -1
- package/esm/series/pie/pie-transformer.js +1 -1
- package/esm/series/pie/pie-transformer.js.map +1 -1
- package/esm/series/polar/polar.js.map +1 -1
- package/esm/series/sankey/sankey.d.ts +1 -0
- package/esm/series/sankey/sankey.js +21 -12
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/util/array.d.ts +0 -1
- package/esm/util/array.js +0 -9
- package/esm/util/array.js.map +1 -1
- package/package.json +15 -15
- package/cjs/component/axis/mixin/util/break-data.d.ts +0 -4
- package/cjs/component/axis/mixin/util/break-data.js +0 -39
- package/cjs/component/axis/mixin/util/break-data.js.map +0 -1
- package/cjs/component/tooltip/utils/pattern.d.ts +0 -4
- package/cjs/component/tooltip/utils/pattern.js +0 -13
- package/cjs/component/tooltip/utils/pattern.js.map +0 -1
- package/esm/component/axis/mixin/util/break-data.d.ts +0 -4
- package/esm/component/axis/mixin/util/break-data.js +0 -31
- package/esm/component/axis/mixin/util/break-data.js.map +0 -1
- package/esm/component/tooltip/utils/pattern.d.ts +0 -4
- package/esm/component/tooltip/utils/pattern.js +0 -5
- package/esm/component/tooltip/utils/pattern.js.map +0 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.BaseSeriesTooltipHelper = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils"), tooltip_helper_1 = require("../../model/tooltip-helper")
|
|
7
|
+
const vutils_1 = require("@visactor/vutils"), tooltip_helper_1 = require("../../model/tooltip-helper");
|
|
8
8
|
|
|
9
9
|
class BaseSeriesTooltipHelper extends tooltip_helper_1.BaseTooltipHelper {
|
|
10
10
|
constructor(series) {
|
|
@@ -53,20 +53,9 @@ class BaseSeriesTooltipHelper extends tooltip_helper_1.BaseTooltipHelper {
|
|
|
53
53
|
}, this.series = series, this.updateTooltipSpec();
|
|
54
54
|
}
|
|
55
55
|
updateTooltipSpec() {
|
|
56
|
-
var _a
|
|
57
|
-
const seriesTooltipSpec = null
|
|
58
|
-
|
|
59
|
-
const pattern = spec[activeType];
|
|
60
|
-
(0, vutils_1.isValid)(pattern) && (spec[activeType] = Object.assign(Object.assign({}, pattern), {
|
|
61
|
-
title: (0, exports.addExtraInfoToTooltipTitlePattern)(pattern.title, {
|
|
62
|
-
seriesId: this.series.id
|
|
63
|
-
}, !0),
|
|
64
|
-
content: (0, exports.addExtraInfoToTooltipContentPattern)(pattern.content, {
|
|
65
|
-
seriesId: this.series.id
|
|
66
|
-
}, !0)
|
|
67
|
-
}));
|
|
68
|
-
})), this.spec = spec, this.activeType = (0, common_1.getTooltipActualActiveType)(spec),
|
|
69
|
-
this._seriesCacheInfo = this._getSeriesCacheInfo();
|
|
56
|
+
var _a;
|
|
57
|
+
const seriesTooltipSpec = null === (_a = this.series.getSpec()) || void 0 === _a ? void 0 : _a.tooltip;
|
|
58
|
+
this.spec = seriesTooltipSpec, this._seriesCacheInfo = this._getSeriesCacheInfo();
|
|
70
59
|
}
|
|
71
60
|
getDefaultTooltipPattern(activeType, dimensionInfo) {
|
|
72
61
|
switch (activeType) {
|
|
@@ -143,18 +132,4 @@ class BaseSeriesTooltipHelper extends tooltip_helper_1.BaseTooltipHelper {
|
|
|
143
132
|
}
|
|
144
133
|
|
|
145
134
|
exports.BaseSeriesTooltipHelper = BaseSeriesTooltipHelper;
|
|
146
|
-
|
|
147
|
-
const merge = (source, extraInfo, overwrite) => {
|
|
148
|
-
const info = (0, vutils_1.isFunction)(extraInfo) ? extraInfo(source) : extraInfo;
|
|
149
|
-
return overwrite ? Object.assign(Object.assign({}, source), info) : Object.assign(Object.assign({}, info), source);
|
|
150
|
-
}, addExtraInfoToTooltipTitlePattern = (pattern, extraInfo, overwrite) => (0, vutils_1.isValid)(pattern) ? (0,
|
|
151
|
-
vutils_1.isFunction)(pattern) ? (...args) => merge(pattern(...args), extraInfo, overwrite) : merge(pattern, extraInfo, overwrite) : void 0;
|
|
152
|
-
|
|
153
|
-
exports.addExtraInfoToTooltipTitlePattern = addExtraInfoToTooltipTitlePattern;
|
|
154
|
-
|
|
155
|
-
const addExtraInfoToTooltipContentPattern = (pattern, extraInfo, overwrite) => (0,
|
|
156
|
-
vutils_1.isValid)(pattern) ? (0, vutils_1.array)(pattern).map((patternItem => (0,
|
|
157
|
-
vutils_1.isFunction)(patternItem) ? (...args) => (0, vutils_1.array)(patternItem(...args)).map((line => merge(line, extraInfo, overwrite))) : merge(patternItem, extraInfo, overwrite))) : void 0;
|
|
158
|
-
|
|
159
|
-
exports.addExtraInfoToTooltipContentPattern = addExtraInfoToTooltipContentPattern;
|
|
160
135
|
//# sourceMappingURL=tooltip-helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/base/tooltip-helper.ts"],"names":[],"mappings":";;;AAEA,6CAA8D;AAE9D,+DAA+D;AAG/D,iEAAkF;AASlF,MAAa,uBAAwB,SAAQ,kCAAiB;IAK5D,YAAY,MAAe;QACzB,KAAK,EAAE,CAAC;QA2CA,wBAAmB,GAAG,GAAqB,EAAE;;YACrD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACxB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,aAAa,EAAE,mCAAI,EAAE,CAAC;YAChG,OAAO;gBACL,YAAY;gBACZ,eAAe,EAAE,MAAA,MAAM,CAAC,iBAAiB,EAAE,mCAAI,EAAE;gBACjD,aAAa,EAAE,MAAA,MAAM,CAAC,eAAe,EAAE,mCAAI,EAAE;gBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC,CAAC;QAEQ,sBAAiB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClD,OAAO,eAAe,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;QAC3D,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,KAAU,EAAE,EAAE;YACzC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChD,OAAO,aAAa,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;QACvD,CAAC,CAAC;QAEQ,wBAAmB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC7C,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAEhE,IAAI,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA,EAAE;gBACxD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;YAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;gBACxG,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;aACnC;YAED,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;QACpC,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,KAAU,EAAE,QAA2B,EAAE,YAAkB,EAAE,EAAE;;YAC1F,KAAK,MAAM,GAAG,IAAI,IAAA,cAAK,EAAC,QAAQ,CAAC,EAAE;gBACjC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAG,GAAG,CAAC,CAAC;gBACvD,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC,EAAE;oBAClB,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC3F,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,6BAAwB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC7F,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAyB,EAAE;;YACzF,OAAO,CACL,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,mCAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAC7E,CAAC;QACJ,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YACvF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,wBAAmB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YACxF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,kCAA6B,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAClG,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,8BAAyB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC9F,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,4BAAuB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC5F,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC/C,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAC5D,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBACnB,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9E;YACD,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC,CAAC;QA/HA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB;;QACf,MAAM,iBAAiB,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,0CAAE,OAAO,mCAAI,EAAE,CAAC;QAC/D,MAAM,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,0CAAE,OAAO,mCAAI,EAAE,CAAC;QAEzE,MAAM,IAAI,GAAG,gCACR,gBAAgB,GAChB,iBAAiB,CACL,CAAC;QAGjB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAA0D,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC5G,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACjC,IAAI,IAAA,gBAAO,EAAC,OAAO,CAAC,EAAE;gBACpB,IAAI,CAAC,UAAU,CAAC,mCACX,OAAO,KACV,KAAK,EAAE,IAAA,yCAAiC,EACtC,OAAO,CAAC,KAAK,EACb;wBACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;qBACzB,EACD,IAAI,CACL,EACD,OAAO,EAAE,IAAA,2CAAmC,EAC1C,OAAO,CAAC,OAAO,EACf;wBACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;qBACzB,EACD,IAAI,CACL,GACF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAA,mCAA0B,EAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACrD,CAAC;IA0FD,wBAAwB,CAAC,UAA6B,EAAE,aAAgC;QACtF,QAAQ,UAAU,EAAE;YAClB,KAAK,MAAM;gBACT,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,KAAK,EAAE;wBACL,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,6BAA6B;wBACzC,QAAQ,EAAE,KAAK;qBAChB;oBACD,OAAO,EAAE;wBACP;4BACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;4BACxB,GAAG,EAAE,IAAI,CAAC,sBAAsB;4BAChC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB;qBACF;iBACF,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,KAAK,EAAE;wBACL,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,yBAAyB;wBACrC,QAAQ,EAAE,KAAK;qBAChB;oBACD,OAAO,EAAE;wBACP;4BACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;4BACxB,GAAG,EAAE,IAAI,CAAC,uBAAuB;4BACjC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB;qBACF;iBACF,CAAC;YACJ,KAAK,WAAW;gBACd,IAAI,aAAa,EAAE;oBACjB,MAAM,KAAK,GAAwB;wBACjC,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,6BAA6B;wBACzC,QAAQ,EAAE,KAAK;qBAChB,CAAC;oBACF,MAAM,OAAO,GAA0B,EAAE,CAAC;oBAC1C,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACjC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;wBAC1B,OAAO,CAAC,IAAI,CAAC;4BACX,QAAQ,EAAE,MAAM,CAAC,EAAE;4BACnB,GAAG,EAAE,IAAI,CAAC,sBAAsB;4BAChC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB,CAAC,CAAC;oBACL,CAAC,CAAC,CACH,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,UAAU;wBACV,KAAK;wBACL,OAAO;qBACR,CAAC;iBACH;gBACD,MAAM;SACT;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAxND,0DAwNC;AAED,MAAM,KAAK,GAAG,CAAO,MAAS,EAAE,SAAiC,EAAE,SAAmB,EAAE,EAAE;IACxF,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,OAAO,SAAS,CAAC,CAAC,iCAAM,MAAM,GAAK,IAAI,EAAG,CAAC,iCAAM,IAAI,GAAK,MAAM,CAAE,CAAC;AACrE,CAAC,CAAC;AAEK,MAAM,iCAAiC,GAAG,CAC/C,OAAiC,EACjC,SAAiD,EACjD,SAAmB,EACmB,EAAE;IACxC,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,IAAA,mBAAU,EAAC,OAAO,CAAC;YACnB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,iCAAiC,qCAW5C;AAEK,MAAM,mCAAmC,GAAG,CACjD,OAAmC,EACnC,SAAiD,EACjD,SAAmB,EACqB,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAC/B,IAAA,mBAAU,EAAC,WAAW,CAAC;YACrB,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAA,cAAK,EAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChG,CAAC,CAAC,KAAK,CAAC,WAAkC,EAAE,SAAS,EAAE,SAAS,CAAC,CACpE;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAbW,QAAA,mCAAmC,uCAa9C","file":"tooltip-helper.js","sourcesContent":["import type { ITooltipActiveTypeAsKeys, ITooltipSpec, TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { ITooltipLinePattern, ITooltipPattern, ShapeType, TooltipActiveType } from '../../typings';\nimport { array, isFunction, isValid } from '@visactor/vutils';\nimport type { ISeries, ISeriesTooltipHelper } from '../interface';\nimport { BaseTooltipHelper } from '../../model/tooltip-helper';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\nimport type { Datum } from '@visactor/vgrammar-core';\nimport { getTooltipActualActiveType } from '../../component/tooltip/utils/common';\n\ninterface ISeriesCacheInfo {\n seriesFields: string[];\n dimensionFields: string[];\n measureFields: string[];\n type: string;\n}\n\nexport class BaseSeriesTooltipHelper extends BaseTooltipHelper implements ISeriesTooltipHelper {\n series: ISeries;\n\n protected _seriesCacheInfo: ISeriesCacheInfo;\n\n constructor(series: ISeries) {\n super();\n this.series = series;\n this.updateTooltipSpec();\n }\n\n updateTooltipSpec() {\n const seriesTooltipSpec = this.series.getSpec()?.tooltip ?? {};\n const chartTooltipSpec = this.series.getChart().getSpec()?.tooltip ?? {};\n\n const spec = {\n ...chartTooltipSpec,\n ...seriesTooltipSpec\n } as ITooltipSpec;\n\n // 将 series id 放入 pattern\n (['mark', 'dimension', 'group'] as Array<keyof ITooltipActiveTypeAsKeys<any, any, any>>).forEach(activeType => {\n const pattern = spec[activeType];\n if (isValid(pattern)) {\n spec[activeType] = {\n ...pattern,\n title: addExtraInfoToTooltipTitlePattern(\n pattern.title,\n {\n seriesId: this.series.id\n },\n true\n ),\n content: addExtraInfoToTooltipContentPattern(\n pattern.content,\n {\n seriesId: this.series.id\n },\n true\n )\n };\n }\n });\n\n this.spec = spec;\n this.activeType = getTooltipActualActiveType(spec);\n this._seriesCacheInfo = this._getSeriesCacheInfo();\n }\n\n protected _getSeriesCacheInfo = (): ISeriesCacheInfo => {\n const { series } = this;\n const _seriesField = series.getSeriesField();\n const seriesFields = isValid(_seriesField) ? array(_seriesField) : series.getSeriesKeys() ?? [];\n return {\n seriesFields,\n dimensionFields: series.getDimensionField() ?? [],\n measureFields: series.getMeasureField() ?? [],\n type: series.type\n };\n };\n\n protected _getDimensionData = (datum: any) => {\n const { dimensionFields } = this._seriesCacheInfo;\n return dimensionFields[0] && datum?.[dimensionFields[0]];\n };\n\n protected _getMeasureData = (datum: any) => {\n const { measureFields } = this._seriesCacheInfo;\n return measureFields[0] && datum?.[measureFields[0]];\n };\n\n protected _getSeriesFieldData = (datum: any) => {\n const { dimensionFields, seriesFields } = this._seriesCacheInfo;\n\n if (isValid(seriesFields[0]) && datum?.[seriesFields[0]]) {\n return datum?.[seriesFields[0]];\n }\n\n const subDimensionField = dimensionFields[dimensionFields.length - 1];\n if (dimensionFields.length > 1 && (seriesFields.length === 0 || this.series.getSeriesKeys().length <= 1)) {\n return datum?.[subDimensionField];\n }\n\n return datum?.[subDimensionField];\n };\n\n protected _getSeriesStyle = (datum: any, styleKey: string | string[], defaultValue?: any) => {\n for (const key of array(styleKey)) {\n const value = this.series.getSeriesStyle(datum)?.(key);\n if (isValid(value)) {\n return value;\n }\n }\n return defaultValue;\n };\n\n markTooltipKeyCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesFieldData(datum);\n };\n\n markTooltipValueCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getMeasureData(datum);\n };\n\n shapeTypeCallback = (datum: Datum, params?: TooltipHandlerParams): ShapeType | undefined => {\n return (\n this._getSeriesStyle(datum, 'shape', null) ??\n this._getSeriesStyle(datum, 'symbolType', this.series.getDefaultShapeType())\n );\n };\n\n shapeColorCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesStyle(datum, ['fill', 'stroke']);\n };\n\n shapeStrokeCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesStyle(datum, ['stroke', 'fill']);\n };\n\n dimensionTooltipTitleCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getDimensionData(datum);\n };\n\n groupTooltipTitleCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesFieldData(datum);\n };\n\n groupTooltipKeyCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n const { seriesFields } = this._seriesCacheInfo;\n let dimensionFields = this._seriesCacheInfo.dimensionFields;\n if (seriesFields[0]) {\n dimensionFields = dimensionFields.filter(field => field !== seriesFields[0]);\n }\n return dimensionFields.map(field => datum?.[field]).join('-');\n };\n\n /** 获取默认的tooltip pattern */\n getDefaultTooltipPattern(activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]): ITooltipPattern | null {\n switch (activeType) {\n case 'mark':\n return {\n visible: true,\n activeType,\n title: {\n key: undefined,\n value: this.dimensionTooltipTitleCallback,\n hasShape: false\n },\n content: [\n {\n seriesId: this.series.id,\n key: this.markTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n }\n ]\n };\n case 'group':\n return {\n visible: true,\n activeType,\n title: {\n key: undefined,\n value: this.groupTooltipTitleCallback,\n hasShape: false\n },\n content: [\n {\n seriesId: this.series.id,\n key: this.groupTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n }\n ]\n };\n case 'dimension':\n if (dimensionInfo) {\n const title: ITooltipLinePattern = {\n key: undefined,\n value: this.dimensionTooltipTitleCallback,\n hasShape: false\n };\n const content: ITooltipLinePattern[] = [];\n dimensionInfo.forEach(({ data }) =>\n data.forEach(({ series }) => {\n content.push({\n seriesId: series.id,\n key: this.markTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n });\n })\n );\n return {\n visible: true,\n activeType,\n title,\n content\n };\n }\n break;\n }\n return null;\n }\n}\n\nconst merge = <T, K>(source: K, extraInfo: T | ((source: K) => T), overwrite?: boolean) => {\n const info = isFunction(extraInfo) ? extraInfo(source) : extraInfo;\n return overwrite ? { ...source, ...info } : { ...info, ...source };\n};\n\nexport const addExtraInfoToTooltipTitlePattern = <T>(\n pattern: ITooltipPattern['title'],\n extraInfo: T | ((line: ITooltipLinePattern) => T),\n overwrite?: boolean\n): ITooltipPattern['title'] | undefined => {\n const result = isValid(pattern)\n ? isFunction(pattern)\n ? (...args: any[]) => merge(pattern(...args), extraInfo, overwrite)\n : merge(pattern, extraInfo, overwrite)\n : undefined;\n return result;\n};\n\nexport const addExtraInfoToTooltipContentPattern = <T>(\n pattern: ITooltipPattern['content'],\n extraInfo: T | ((line: ITooltipLinePattern) => T),\n overwrite?: boolean\n): ITooltipPattern['content'] | undefined => {\n const result = isValid(pattern)\n ? array(pattern).map(patternItem =>\n isFunction(patternItem)\n ? (...args: any[]) => array(patternItem(...args)).map(line => merge(line, extraInfo, overwrite))\n : merge(patternItem as ITooltipLinePattern, extraInfo, overwrite)\n )\n : undefined;\n return result;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/base/tooltip-helper.ts"],"names":[],"mappings":";;;AAEA,6CAAkD;AAElD,+DAA+D;AAW/D,MAAa,uBAAwB,SAAQ,kCAAiB;IAK5D,YAAY,MAAe;QACzB,KAAK,EAAE,CAAC;QAYA,wBAAmB,GAAG,GAAqB,EAAE;;YACrD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACxB,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,aAAa,EAAE,mCAAI,EAAE,CAAC;YAChG,OAAO;gBACL,YAAY;gBACZ,eAAe,EAAE,MAAA,MAAM,CAAC,iBAAiB,EAAE,mCAAI,EAAE;gBACjD,aAAa,EAAE,MAAA,MAAM,CAAC,eAAe,EAAE,mCAAI,EAAE;gBAC7C,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC,CAAC;QAEQ,sBAAiB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClD,OAAO,eAAe,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;QAC3D,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,KAAU,EAAE,EAAE;YACzC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChD,OAAO,aAAa,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC;QACvD,CAAC,CAAC;QAEQ,wBAAmB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC7C,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAEhE,IAAI,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA,EAAE;gBACxD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;YAED,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;gBACxG,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;aACnC;YAED,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;QACpC,CAAC,CAAC;QAEQ,oBAAe,GAAG,CAAC,KAAU,EAAE,QAA2B,EAAE,YAAkB,EAAE,EAAE;;YAC1F,KAAK,MAAM,GAAG,IAAI,IAAA,cAAK,EAAC,QAAQ,CAAC,EAAE;gBACjC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0CAAG,GAAG,CAAC,CAAC;gBACvD,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC,EAAE;oBAClB,OAAO,KAAK,CAAC;iBACd;aACF;YACD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC3F,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,6BAAwB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC7F,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAyB,EAAE;;YACzF,OAAO,CACL,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,mCAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAC7E,CAAC;QACJ,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YACvF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,wBAAmB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YACxF,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QAEF,kCAA6B,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAClG,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,8BAAyB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC9F,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,4BAAuB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAsB,EAAE;YAC5F,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC/C,IAAI,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAC5D,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBACnB,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9E;YACD,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC,CAAC;QAhGA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,iBAAiB;;QACf,MAAM,iBAAiB,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,0CAAE,OAAO,CAAC;QAEzD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACrD,CAAC;IA0FD,wBAAwB,CAAC,UAA6B,EAAE,aAAgC;QACtF,QAAQ,UAAU,EAAE;YAClB,KAAK,MAAM;gBACT,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,KAAK,EAAE;wBACL,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,6BAA6B;wBACzC,QAAQ,EAAE,KAAK;qBAChB;oBACD,OAAO,EAAE;wBACP;4BACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;4BACxB,GAAG,EAAE,IAAI,CAAC,sBAAsB;4BAChC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB;qBACF;iBACF,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU;oBACV,KAAK,EAAE;wBACL,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,yBAAyB;wBACrC,QAAQ,EAAE,KAAK;qBAChB;oBACD,OAAO,EAAE;wBACP;4BACE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;4BACxB,GAAG,EAAE,IAAI,CAAC,uBAAuB;4BACjC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB;qBACF;iBACF,CAAC;YACJ,KAAK,WAAW;gBACd,IAAI,aAAa,EAAE;oBACjB,MAAM,KAAK,GAAwB;wBACjC,GAAG,EAAE,SAAS;wBACd,KAAK,EAAE,IAAI,CAAC,6BAA6B;wBACzC,QAAQ,EAAE,KAAK;qBAChB,CAAC;oBACF,MAAM,OAAO,GAA0B,EAAE,CAAC;oBAC1C,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CACjC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;wBAC1B,OAAO,CAAC,IAAI,CAAC;4BACX,QAAQ,EAAE,MAAM,CAAC,EAAE;4BACnB,GAAG,EAAE,IAAI,CAAC,sBAAsB;4BAChC,KAAK,EAAE,IAAI,CAAC,wBAAwB;4BACpC,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI,CAAC,iBAAiB;4BACjC,UAAU,EAAE,IAAI,CAAC,kBAAkB;4BACnC,WAAW,EAAE,IAAI,CAAC,mBAAmB;4BACrC,WAAW,EAAE,KAAK;yBACnB,CAAC,CAAC;oBACL,CAAC,CAAC,CACH,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,UAAU;wBACV,KAAK;wBACL,OAAO;qBACR,CAAC;iBACH;gBACD,MAAM;SACT;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAzLD,0DAyLC","file":"tooltip-helper.js","sourcesContent":["import type { TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { ITooltipLinePattern, ITooltipPattern, ShapeType, TooltipActiveType } from '../../typings';\nimport { array, isValid } from '@visactor/vutils';\nimport type { ISeries, ISeriesTooltipHelper } from '../interface';\nimport { BaseTooltipHelper } from '../../model/tooltip-helper';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\nimport type { Datum } from '@visactor/vgrammar-core';\n\ninterface ISeriesCacheInfo {\n seriesFields: string[];\n dimensionFields: string[];\n measureFields: string[];\n type: string;\n}\n\nexport class BaseSeriesTooltipHelper extends BaseTooltipHelper implements ISeriesTooltipHelper {\n series: ISeries;\n\n protected _seriesCacheInfo: ISeriesCacheInfo;\n\n constructor(series: ISeries) {\n super();\n this.series = series;\n this.updateTooltipSpec();\n }\n\n updateTooltipSpec() {\n const seriesTooltipSpec = this.series.getSpec()?.tooltip;\n\n this.spec = seriesTooltipSpec;\n this._seriesCacheInfo = this._getSeriesCacheInfo();\n }\n\n protected _getSeriesCacheInfo = (): ISeriesCacheInfo => {\n const { series } = this;\n const _seriesField = series.getSeriesField();\n const seriesFields = isValid(_seriesField) ? array(_seriesField) : series.getSeriesKeys() ?? [];\n return {\n seriesFields,\n dimensionFields: series.getDimensionField() ?? [],\n measureFields: series.getMeasureField() ?? [],\n type: series.type\n };\n };\n\n protected _getDimensionData = (datum: any) => {\n const { dimensionFields } = this._seriesCacheInfo;\n return dimensionFields[0] && datum?.[dimensionFields[0]];\n };\n\n protected _getMeasureData = (datum: any) => {\n const { measureFields } = this._seriesCacheInfo;\n return measureFields[0] && datum?.[measureFields[0]];\n };\n\n protected _getSeriesFieldData = (datum: any) => {\n const { dimensionFields, seriesFields } = this._seriesCacheInfo;\n\n if (isValid(seriesFields[0]) && datum?.[seriesFields[0]]) {\n return datum?.[seriesFields[0]];\n }\n\n const subDimensionField = dimensionFields[dimensionFields.length - 1];\n if (dimensionFields.length > 1 && (seriesFields.length === 0 || this.series.getSeriesKeys().length <= 1)) {\n return datum?.[subDimensionField];\n }\n\n return datum?.[subDimensionField];\n };\n\n protected _getSeriesStyle = (datum: any, styleKey: string | string[], defaultValue?: any) => {\n for (const key of array(styleKey)) {\n const value = this.series.getSeriesStyle(datum)?.(key);\n if (isValid(value)) {\n return value;\n }\n }\n return defaultValue;\n };\n\n markTooltipKeyCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesFieldData(datum);\n };\n\n markTooltipValueCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getMeasureData(datum);\n };\n\n shapeTypeCallback = (datum: Datum, params?: TooltipHandlerParams): ShapeType | undefined => {\n return (\n this._getSeriesStyle(datum, 'shape', null) ??\n this._getSeriesStyle(datum, 'symbolType', this.series.getDefaultShapeType())\n );\n };\n\n shapeColorCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesStyle(datum, ['fill', 'stroke']);\n };\n\n shapeStrokeCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesStyle(datum, ['stroke', 'fill']);\n };\n\n dimensionTooltipTitleCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getDimensionData(datum);\n };\n\n groupTooltipTitleCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesFieldData(datum);\n };\n\n groupTooltipKeyCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n const { seriesFields } = this._seriesCacheInfo;\n let dimensionFields = this._seriesCacheInfo.dimensionFields;\n if (seriesFields[0]) {\n dimensionFields = dimensionFields.filter(field => field !== seriesFields[0]);\n }\n return dimensionFields.map(field => datum?.[field]).join('-');\n };\n\n /** 获取默认的tooltip pattern */\n getDefaultTooltipPattern(activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]): ITooltipPattern | null {\n switch (activeType) {\n case 'mark':\n return {\n visible: true,\n activeType,\n title: {\n key: undefined,\n value: this.dimensionTooltipTitleCallback,\n hasShape: false\n },\n content: [\n {\n seriesId: this.series.id,\n key: this.markTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n }\n ]\n };\n case 'group':\n return {\n visible: true,\n activeType,\n title: {\n key: undefined,\n value: this.groupTooltipTitleCallback,\n hasShape: false\n },\n content: [\n {\n seriesId: this.series.id,\n key: this.groupTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n }\n ]\n };\n case 'dimension':\n if (dimensionInfo) {\n const title: ITooltipLinePattern = {\n key: undefined,\n value: this.dimensionTooltipTitleCallback,\n hasShape: false\n };\n const content: ITooltipLinePattern[] = [];\n dimensionInfo.forEach(({ data }) =>\n data.forEach(({ series }) => {\n content.push({\n seriesId: series.id,\n key: this.markTooltipKeyCallback,\n value: this.markTooltipValueCallback,\n hasShape: true,\n shapeType: this.shapeTypeCallback,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n shapeHollow: false\n });\n })\n );\n return {\n visible: true,\n activeType,\n title,\n content\n };\n }\n break;\n }\n return null;\n }\n}\n"]}
|
|
@@ -2,6 +2,5 @@ import type { ISeriesTooltipHelper } from '../interface';
|
|
|
2
2
|
import { BaseSeriesTooltipHelper } from '../base/tooltip-helper';
|
|
3
3
|
import type { ITooltipPattern, TooltipActiveType } from '../../typings';
|
|
4
4
|
export declare class DotSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {
|
|
5
|
-
updateTooltipSpec(): void;
|
|
6
5
|
getDefaultTooltipPattern(activeType: TooltipActiveType): ITooltipPattern | null;
|
|
7
6
|
}
|
|
@@ -7,23 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
const tooltip_helper_1 = require("../base/tooltip-helper"), vutils_1 = require("@visactor/vutils");
|
|
8
8
|
|
|
9
9
|
class DotSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
|
|
10
|
-
updateTooltipSpec() {
|
|
11
|
-
var _a;
|
|
12
|
-
super.updateTooltipSpec(), (0, vutils_1.isValid)(null === (_a = this.spec) || void 0 === _a ? void 0 : _a.mark) && (this.spec.mark.updateContent = (prev, datum, params) => {
|
|
13
|
-
const childrenContent = [], childrenPrev = prev.filter((p => "children" === p.key));
|
|
14
|
-
return childrenPrev.length > 0 && childrenPrev[0].value.forEach((element => {
|
|
15
|
-
let flag = !0;
|
|
16
|
-
for (const key in element) childrenContent.push({
|
|
17
|
-
shapeType: "circle",
|
|
18
|
-
hasShape: flag,
|
|
19
|
-
shapeColor: this.shapeColorCallback(datum[0].datum[0]),
|
|
20
|
-
shapeStroke: this.shapeStrokeCallback(datum[0].datum[0]),
|
|
21
|
-
key: key,
|
|
22
|
-
value: element[key] + ""
|
|
23
|
-
}), flag = !1;
|
|
24
|
-
})), prev.concat(childrenContent);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
10
|
getDefaultTooltipPattern(activeType) {
|
|
28
11
|
return "mark" === activeType ? {
|
|
29
12
|
visible: !0,
|
|
@@ -62,8 +45,8 @@ class DotSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
|
|
|
62
45
|
value: datum => datum.children
|
|
63
46
|
} ],
|
|
64
47
|
updateContent: (prev, datum, params) => {
|
|
65
|
-
const childrenContent = [];
|
|
66
|
-
return
|
|
48
|
+
const childrenContent = [], childrenPrev = prev.filter((p => "children" === p.key));
|
|
49
|
+
return childrenPrev.length > 0 && childrenPrev[0].value.forEach((element => {
|
|
67
50
|
let flag = !0;
|
|
68
51
|
for (const key in element) childrenContent.push({
|
|
69
52
|
shapeType: "circle",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/dot/tooltip-helper.ts"],"names":[],"mappings":";;;AACA,2DAAiE;AAEjE,
|
|
1
|
+
{"version":3,"sources":["../src/series/dot/tooltip-helper.ts"],"names":[],"mappings":"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","file":"tooltip-helper.js","sourcesContent":["import type { ISeriesTooltipHelper } from '../interface';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport type { ITooltipLinePattern, ITooltipPattern, TooltipActiveType } from '../../typings';\nimport { TimeUtil } from '@visactor/vutils';\n\nexport class DotSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n /** 获取默认的tooltip pattern */\n getDefaultTooltipPattern(activeType: TooltipActiveType): ITooltipPattern | null {\n if (activeType === 'mark') {\n return {\n visible: true,\n activeType,\n title: {\n key: 'event info',\n value: 'event info'\n },\n content: [\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n key: (datum: any) => datum.type,\n value: (datum: any) => datum.id\n },\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n key: 'event_time',\n value: (datum: any) => TimeUtil.getInstance().timeFormat('%Y%m%d', datum.event_time)\n },\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n key: 'action_type',\n value: (datum: any) => datum.action_type\n },\n {\n shapeType: 'square',\n hasShape: true,\n shapeColor: this.shapeColorCallback,\n shapeStroke: this.shapeStrokeCallback,\n key: 'children',\n value: (datum: any) => {\n return datum.children;\n }\n }\n ],\n updateContent: (prev: any, datum: any, params: any) => {\n const childrenContent: ITooltipLinePattern[] = [];\n const childrenPrev = prev.filter((p: any) => p.key === 'children');\n\n childrenPrev.length > 0 &&\n childrenPrev[0].value.forEach((element: any) => {\n let flag = true;\n for (const key in element) {\n childrenContent.push({\n shapeType: 'circle',\n hasShape: flag,\n shapeColor: this.shapeColorCallback(datum[0].datum[0]),\n shapeStroke: this.shapeStrokeCallback(datum[0].datum[0]),\n key: key,\n value: element[key] + ''\n } as ITooltipLinePattern);\n flag = false;\n }\n });\n return prev.concat(childrenContent);\n }\n };\n }\n return null;\n }\n}\n"]}
|
|
@@ -81,6 +81,8 @@ export interface ISeries extends IModel {
|
|
|
81
81
|
key: string;
|
|
82
82
|
operations: StatisticOperations;
|
|
83
83
|
}[];
|
|
84
|
+
getDatumPositionValues: (datum: Datum, fields: string | string[]) => any[];
|
|
85
|
+
getDatumPositionValue: (datum: Datum, field: string) => any;
|
|
84
86
|
setSeriesField: (field: string) => void;
|
|
85
87
|
handleZoom?: (e: ZoomEventParam) => void;
|
|
86
88
|
handlePan?: (e: PanEventParam) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/interface/series.ts"],"names":[],"mappings":"","file":"series.js","sourcesContent":["import type { ILabelInfo } from './../../component/label/label';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { IModel } from '../../model/interface';\nimport type { DataSet, DataView, ITransformOptions } from '@visactor/vdataset';\nimport type { IMark } from '../../mark/interface';\nimport type { CoordinateType, IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IRegion } from '../../region/interface';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\nimport type { ISeriesSeriesInfo, ISeriesSpecInfo, ISeriesStackData } from './common';\nimport type { ISeriesTooltipHelper } from './tooltip-helper';\nimport type { IInvalidType, Datum, DirectionType, IGroup, StringOrNumber } from '../../typings';\nimport type { ISeriesMarkAttributeContext, StateValueType } from '../../compile/mark';\nimport type { StatisticOperations } from '../../data/transforms/dimension-statistics';\nimport type { IGroupMark } from '../../mark/group';\nimport type { IGeoCoordinateHelper } from '../../component/geo/interface';\nimport type { ILabelMark } from '../../mark/label';\nimport type { BaseLegend } from '../../component/legend/base-legend';\nimport type { ILabelSpec } from '../../component/label/interface';\n\n// 使用类型约束系列支持的样式,但是感觉这样不合理 不使用这样的方式去做\n// export interface ISeries<A extends string> extends IModel\n\nexport interface ISeries extends IModel {\n readonly type: string;\n readonly name?: string;\n\n // tooltip\n tooltipHelper: ISeriesTooltipHelper;\n\n // 配置\n getSpec: () => any;\n\n // 坐标系信息\n readonly coordinate: CoordinateType;\n\n // layout\n onLayoutEnd: (ctx: any) => void;\n\n // 数据\n getRawData: () => DataView | undefined;\n getViewDataFilter: () => DataView | undefined;\n getViewData: () => DataView | undefined;\n getViewDataProductId: () => string | undefined;\n getRawDataStatisticsByField: (field: string, isNumeric?: boolean) => { values?: any[]; min?: number; max?: number };\n getViewDataStatistics?: () => DataView | undefined;\n getDataSet?: () => DataSet;\n getFieldAlias: (field: string) => string;\n // 更新原始数据\n updateRawData: (d: any) => void;\n setData?: (dv: DataView) => void;\n rawDataUpdate: (d: DataView) => void;\n viewDataUpdate: (d: DataView) => void;\n viewDataStatisticsUpdate: (d: DataView) => void;\n addViewDataFilter: (option: ITransformOptions) => void;\n reFilterViewData: () => void;\n reTransformViewData: () => void;\n fillData: () => void;\n isHierarchyData?: () => boolean;\n getMarkData?: (d: Datum) => Datum;\n\n /**\n * 常见数据使用问题\n *\n * 一、使用图表最终展示数据\n * 比如 markline,数值轴 这样的组件\n * 需要操作展示数据,做 筛选 | 变换 的\n * 比如图例,datazoom\n series.getViewData().transform({},false)\n * 需要获取展示数据,生成自身数据做自身展示的 使用消息机制。比如 轴\n series.event.on('viewDataStatisticsUpdate' | 'viewDataUpdate', { filter: ({ model }) => model?.id === series.id }, () => {\n this.updateData();\n });\n *\n * 二、使用图表原始数据\n * 比如图例,datazoom\n * 需要使用原始数据信息,生成自身数据\n * 比如图例,datazoom\n series.getRawData().parserData | latestData // parserData latestData 区别见下面说明\n series.getRawDataStatistics().latestData\n\n series.event.on('rawDataUpdate', { filter: ({ model }) => model?.id === series.id }, () => {\n this.updateData();\n });\n * 或者使用系列自身的特殊api 特殊情况外不建议这样用\n series.getSeriesInfoList()\n\n * 建议:使用数据时需要注意数据更新,使用系列数据更新组件数据的场景,只建议使用消息监听\n series.event.on(\n 'viewDataStatisticsUpdate' |\n 'viewDataUpdate' |\n 'rawDataUpdate',\n { filter: ({ model }) => model?.id === series.id })\n */\n\n // 区域\n getRegion: () => IRegion;\n\n // mark\n initMark: () => void;\n getMarks: () => IMark[];\n getMarksWithoutRoot: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarksInType: (type: string | string[]) => IMark[];\n getMarkInName: (name: string) => IMark | undefined;\n getMarkInId: (id: number) => IMark | undefined;\n\n getRootMark: () => IGroupMark;\n getActiveMarks: () => IMark[];\n getSeriesMark: () => IMark;\n\n // example\n /**\n * [\n * {\n * fields: {\n * x: '周一',\n * __VChart_STACK: 'stack'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20}];\n * },\n * {\n * fields: {\n * x: '周一',\n * stack: 'stackA'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20, stack: 'stackA'}];\n * },\n * {\n * fields: {\n * x: '周一',\n * stack: 'stackB'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20, stack: 'stackB'}];\n * },\n * ]\n */\n getStackData: () => ISeriesStackData;\n\n getStack: () => boolean;\n getStackValue: () => StringOrNumber | undefined;\n getPercent: () => boolean;\n getStackOffsetSilhouette: () => boolean;\n\n getStackValueField: () => string;\n setValueFieldToStack: () => void;\n setValueFieldToPercent: () => void;\n setValueFieldToStackOffsetSilhouette: () => void;\n\n getStackGroupFields: () => string[];\n getSeriesField: () => string | undefined;\n getSeriesKeys: () => string[];\n getSeriesStyle: (datum: Datum) => ISeriesSeriesInfo['style'];\n getSeriesInfoInField: (field: string) => ISeriesSeriesInfo[];\n getSeriesInfoList: () => ISeriesSeriesInfo[];\n getGroups: () => IGroup | undefined;\n getDimensionField: () => string[];\n getMeasureField: () => string[];\n getStatisticFields: () => { key: string; operations: StatisticOperations }[];\n\n setSeriesField: (field: string) => void;\n handleZoom?: (e: ZoomEventParam) => void;\n handlePan?: (e: PanEventParam) => void;\n\n // 数据映射\n dataToPosition: (datum: Datum, checkInViewData?: boolean) => IPoint | null;\n dataToPositionX: (datum: Datum) => number | null;\n dataToPositionY: (datum: Datum) => number | null;\n dataToPositionZ?: (datum: Datum) => number | null;\n valueToPosition: (value1: any, value2?: any) => IPoint;\n\n getColorAttribute: () => { scale: IBaseScale; field: string };\n getDefaultColorDomain: () => any[];\n\n getInvalidType: () => IInvalidType;\n\n // 交互\n\n /**\n * 获取系列默认的缩略图形\n * @returns 默认的缩略图形\n */\n getDefaultShapeType: () => string;\n /** 获取系列标签配置 */\n initLabelMarkStyle?: (labelMark: ILabelMark, labelSpec: ILabelSpec) => void;\n /** 设置总计标签配置 */\n initTotalLabelMarkStyle?: (labelMark: ILabelMark) => void;\n getTotalLabelComponentStyle?: (info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) => any;\n\n getGroupFields: () => string[];\n\n getSpecInfo: () => ISeriesSpecInfo;\n getMarkAttributeContext: () => ISeriesMarkAttributeContext;\n\n getSeriesFieldValue: (datum: Datum, seriesField?: string) => any;\n\n legendSelectedFilter?: (component: BaseLegend<any>, selectedKeys: StringOrNumber[]) => StringOrNumber[];\n parseLabelStyle?: (labelStyle: any, labelSpec: any, labelMark?: ILabelMark) => any;\n}\n\nexport interface ICartesianSeries extends ISeries {\n readonly coordinate: 'cartesian';\n readonly direction: DirectionType;\n\n scaleX: IBaseScale;\n setScaleX: (s: IBaseScale) => void;\n scaleY: IBaseScale;\n setScaleY: (s: IBaseScale) => void;\n scaleZ?: IBaseScale;\n setScaleZ: (s: IBaseScale) => void;\n // 要考虑基于多个field的场景\n fieldX: string[];\n setFieldX: (field: string | string[], level?: number) => void;\n fieldX2: string;\n setFieldX2: (field: string) => void;\n fieldY: string[];\n setFieldY: (field: string | string[], level?: number) => void;\n fieldY2: string;\n setFieldY2: (field: string) => void;\n fieldZ?: string[];\n setFieldZ: (field: string | string[], level?: number) => void;\n\n positionToData: (p: IPoint) => any | null;\n positionToDataX: (xPos: number) => any | null;\n positionToDataY: (yPos: number) => any | null;\n\n // 轴API\n getXAxisHelper: () => IAxisHelper;\n setXAxisHelper: (h: IAxisHelper) => void;\n getYAxisHelper: () => IAxisHelper;\n setYAxisHelper: (h: IAxisHelper) => void;\n getZAxisHelper: () => IAxisHelper | undefined;\n setZAxisHelper: (h: IAxisHelper) => void;\n\n dataToPositionX1: (datum: Datum) => number | null;\n dataToPositionY1: (datum: Datum) => number | null;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n valueToPositionX: (value: StringOrNumber | StringOrNumber[], datum?: any) => any;\n valueToPositionY: (value: StringOrNumber | StringOrNumber[], datum?: any) => any;\n}\n\nexport interface IPolarSeries extends ISeries {\n readonly coordinate: 'polar';\n\n outerRadius: number;\n innerRadius: number;\n\n getRadiusField: () => string[];\n setRadiusField: (field: string | string[], level?: number) => void;\n getAngleField: () => string[];\n setAngleField: (field: string | string[], level?: number) => void;\n\n // 轴将是一个实现了 scale 的组件。这里接收的可以是一个轴\n radiusScale: IBaseScale;\n setRadiusScale: (s: IBaseScale) => void;\n angleScale: IBaseScale;\n setAngleScale: (s: IBaseScale) => void;\n\n // TODO:\n positionToData: (point: IPolarPoint) => any;\n radiusToData: (radius: number) => any;\n angleToData: (angle: number) => any;\n\n // 轴\n radiusAxisHelper: IPolarAxisHelper;\n angleAxisHelper: IPolarAxisHelper;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n}\n\nexport interface IGeoSeries extends ISeries {\n readonly coordinate: 'geo';\n\n nameField?: string;\n valueField?: string;\n\n getMapViewData: () => DataView;\n getNameProperty: () => string;\n\n dataToPosition: (datum: any, checkInViewData?: boolean) => IPoint | null;\n dataToLatitude: (latValue: any) => number | null;\n dataToLongitude: (lonValue: any) => number | null;\n nameValueToPosition: (name: string) => IPoint | null;\n\n positionToData: (p: IPoint) => any;\n latitudeToData: (lat: number) => any;\n longitudeToData: (lon: number) => any;\n\n getCoordinateHelper: () => IGeoCoordinateHelper;\n setCoordinateHelper: (helper: IGeoCoordinateHelper) => void;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n getDatumCenter: (datum: any) => [number, number];\n}\n\n// 收拢扇区标签形式依赖的 api\nexport interface IArcSeries extends IPolarSeries {\n getCenter: () => IPoint;\n getRadius: (state?: StateValueType) => number;\n getInnerRadius: (state?: StateValueType) => number;\n\n computeRadius: (r: number, k?: number) => number;\n computeDatumRadius: (datum: any, state?: StateValueType) => number;\n}\n\nexport interface IFunnelSeries extends ISeries {\n getPoints: (datum: any) => IPoint[];\n getCategoryField: () => string;\n\n valueToPosition: (value: any) => IPoint;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/interface/series.ts"],"names":[],"mappings":"","file":"series.js","sourcesContent":["import type { ILabelInfo } from './../../component/label/label';\nimport type { PanEventParam, ZoomEventParam } from '../../event/interface';\nimport type { IModel } from '../../model/interface';\nimport type { DataSet, DataView, ITransformOptions } from '@visactor/vdataset';\nimport type { IMark } from '../../mark/interface';\nimport type { CoordinateType, IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IRegion } from '../../region/interface';\nimport type { IBaseScale } from '@visactor/vscale';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\nimport type { ISeriesSeriesInfo, ISeriesSpecInfo, ISeriesStackData } from './common';\nimport type { ISeriesTooltipHelper } from './tooltip-helper';\nimport type { IInvalidType, Datum, DirectionType, IGroup, StringOrNumber } from '../../typings';\nimport type { ISeriesMarkAttributeContext, StateValueType } from '../../compile/mark';\nimport type { StatisticOperations } from '../../data/transforms/dimension-statistics';\nimport type { IGroupMark } from '../../mark/group';\nimport type { IGeoCoordinateHelper } from '../../component/geo/interface';\nimport type { ILabelMark } from '../../mark/label';\nimport type { BaseLegend } from '../../component/legend/base-legend';\nimport type { ILabelSpec } from '../../component/label/interface';\n\n// 使用类型约束系列支持的样式,但是感觉这样不合理 不使用这样的方式去做\n// export interface ISeries<A extends string> extends IModel\n\nexport interface ISeries extends IModel {\n readonly type: string;\n readonly name?: string;\n\n // tooltip\n tooltipHelper: ISeriesTooltipHelper;\n\n // 配置\n getSpec: () => any;\n\n // 坐标系信息\n readonly coordinate: CoordinateType;\n\n // layout\n onLayoutEnd: (ctx: any) => void;\n\n // 数据\n getRawData: () => DataView | undefined;\n getViewDataFilter: () => DataView | undefined;\n getViewData: () => DataView | undefined;\n getViewDataProductId: () => string | undefined;\n getRawDataStatisticsByField: (field: string, isNumeric?: boolean) => { values?: any[]; min?: number; max?: number };\n getViewDataStatistics?: () => DataView | undefined;\n getDataSet?: () => DataSet;\n getFieldAlias: (field: string) => string;\n // 更新原始数据\n updateRawData: (d: any) => void;\n setData?: (dv: DataView) => void;\n rawDataUpdate: (d: DataView) => void;\n viewDataUpdate: (d: DataView) => void;\n viewDataStatisticsUpdate: (d: DataView) => void;\n addViewDataFilter: (option: ITransformOptions) => void;\n reFilterViewData: () => void;\n reTransformViewData: () => void;\n fillData: () => void;\n isHierarchyData?: () => boolean;\n getMarkData?: (d: Datum) => Datum;\n\n /**\n * 常见数据使用问题\n *\n * 一、使用图表最终展示数据\n * 比如 markline,数值轴 这样的组件\n * 需要操作展示数据,做 筛选 | 变换 的\n * 比如图例,datazoom\n series.getViewData().transform({},false)\n * 需要获取展示数据,生成自身数据做自身展示的 使用消息机制。比如 轴\n series.event.on('viewDataStatisticsUpdate' | 'viewDataUpdate', { filter: ({ model }) => model?.id === series.id }, () => {\n this.updateData();\n });\n *\n * 二、使用图表原始数据\n * 比如图例,datazoom\n * 需要使用原始数据信息,生成自身数据\n * 比如图例,datazoom\n series.getRawData().parserData | latestData // parserData latestData 区别见下面说明\n series.getRawDataStatistics().latestData\n\n series.event.on('rawDataUpdate', { filter: ({ model }) => model?.id === series.id }, () => {\n this.updateData();\n });\n * 或者使用系列自身的特殊api 特殊情况外不建议这样用\n series.getSeriesInfoList()\n\n * 建议:使用数据时需要注意数据更新,使用系列数据更新组件数据的场景,只建议使用消息监听\n series.event.on(\n 'viewDataStatisticsUpdate' |\n 'viewDataUpdate' |\n 'rawDataUpdate',\n { filter: ({ model }) => model?.id === series.id })\n */\n\n // 区域\n getRegion: () => IRegion;\n\n // mark\n initMark: () => void;\n getMarks: () => IMark[];\n getMarksWithoutRoot: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarksInType: (type: string | string[]) => IMark[];\n getMarkInName: (name: string) => IMark | undefined;\n getMarkInId: (id: number) => IMark | undefined;\n\n getRootMark: () => IGroupMark;\n getActiveMarks: () => IMark[];\n getSeriesMark: () => IMark;\n\n // example\n /**\n * [\n * {\n * fields: {\n * x: '周一',\n * __VChart_STACK: 'stack'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20}];\n * },\n * {\n * fields: {\n * x: '周一',\n * stack: 'stackA'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20, stack: 'stackA'}];\n * },\n * {\n * fields: {\n * x: '周一',\n * stack: 'stackB'\n * },\n * valueField: 'y',\n * values: [{x: '周一', y: 20, stack: 'stackB'}];\n * },\n * ]\n */\n getStackData: () => ISeriesStackData;\n\n getStack: () => boolean;\n getStackValue: () => StringOrNumber | undefined;\n getPercent: () => boolean;\n getStackOffsetSilhouette: () => boolean;\n\n getStackValueField: () => string;\n setValueFieldToStack: () => void;\n setValueFieldToPercent: () => void;\n setValueFieldToStackOffsetSilhouette: () => void;\n\n getStackGroupFields: () => string[];\n getSeriesField: () => string | undefined;\n getSeriesKeys: () => string[];\n getSeriesStyle: (datum: Datum) => ISeriesSeriesInfo['style'];\n getSeriesInfoInField: (field: string) => ISeriesSeriesInfo[];\n getSeriesInfoList: () => ISeriesSeriesInfo[];\n getGroups: () => IGroup | undefined;\n getDimensionField: () => string[];\n getMeasureField: () => string[];\n getStatisticFields: () => { key: string; operations: StatisticOperations }[];\n getDatumPositionValues: (datum: Datum, fields: string | string[]) => any[];\n getDatumPositionValue: (datum: Datum, field: string) => any;\n\n setSeriesField: (field: string) => void;\n handleZoom?: (e: ZoomEventParam) => void;\n handlePan?: (e: PanEventParam) => void;\n\n // 数据映射\n dataToPosition: (datum: Datum, checkInViewData?: boolean) => IPoint | null;\n dataToPositionX: (datum: Datum) => number | null;\n dataToPositionY: (datum: Datum) => number | null;\n dataToPositionZ?: (datum: Datum) => number | null;\n valueToPosition: (value1: any, value2?: any) => IPoint;\n\n getColorAttribute: () => { scale: IBaseScale; field: string };\n getDefaultColorDomain: () => any[];\n\n getInvalidType: () => IInvalidType;\n\n // 交互\n\n /**\n * 获取系列默认的缩略图形\n * @returns 默认的缩略图形\n */\n getDefaultShapeType: () => string;\n /** 获取系列标签配置 */\n initLabelMarkStyle?: (labelMark: ILabelMark, labelSpec: ILabelSpec) => void;\n /** 设置总计标签配置 */\n initTotalLabelMarkStyle?: (labelMark: ILabelMark) => void;\n getTotalLabelComponentStyle?: (info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) => any;\n\n getGroupFields: () => string[];\n\n getSpecInfo: () => ISeriesSpecInfo;\n getMarkAttributeContext: () => ISeriesMarkAttributeContext;\n\n getSeriesFieldValue: (datum: Datum, seriesField?: string) => any;\n\n legendSelectedFilter?: (component: BaseLegend<any>, selectedKeys: StringOrNumber[]) => StringOrNumber[];\n parseLabelStyle?: (labelStyle: any, labelSpec: any, labelMark?: ILabelMark) => any;\n}\n\nexport interface ICartesianSeries extends ISeries {\n readonly coordinate: 'cartesian';\n readonly direction: DirectionType;\n\n scaleX: IBaseScale;\n setScaleX: (s: IBaseScale) => void;\n scaleY: IBaseScale;\n setScaleY: (s: IBaseScale) => void;\n scaleZ?: IBaseScale;\n setScaleZ: (s: IBaseScale) => void;\n // 要考虑基于多个field的场景\n fieldX: string[];\n setFieldX: (field: string | string[], level?: number) => void;\n fieldX2: string;\n setFieldX2: (field: string) => void;\n fieldY: string[];\n setFieldY: (field: string | string[], level?: number) => void;\n fieldY2: string;\n setFieldY2: (field: string) => void;\n fieldZ?: string[];\n setFieldZ: (field: string | string[], level?: number) => void;\n\n positionToData: (p: IPoint) => any | null;\n positionToDataX: (xPos: number) => any | null;\n positionToDataY: (yPos: number) => any | null;\n\n // 轴API\n getXAxisHelper: () => IAxisHelper;\n setXAxisHelper: (h: IAxisHelper) => void;\n getYAxisHelper: () => IAxisHelper;\n setYAxisHelper: (h: IAxisHelper) => void;\n getZAxisHelper: () => IAxisHelper | undefined;\n setZAxisHelper: (h: IAxisHelper) => void;\n\n dataToPositionX1: (datum: Datum) => number | null;\n dataToPositionY1: (datum: Datum) => number | null;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n valueToPositionX: (value: StringOrNumber | StringOrNumber[], datum?: any) => any;\n valueToPositionY: (value: StringOrNumber | StringOrNumber[], datum?: any) => any;\n}\n\nexport interface IPolarSeries extends ISeries {\n readonly coordinate: 'polar';\n\n outerRadius: number;\n innerRadius: number;\n\n getRadiusField: () => string[];\n setRadiusField: (field: string | string[], level?: number) => void;\n getAngleField: () => string[];\n setAngleField: (field: string | string[], level?: number) => void;\n\n // 轴将是一个实现了 scale 的组件。这里接收的可以是一个轴\n radiusScale: IBaseScale;\n setRadiusScale: (s: IBaseScale) => void;\n angleScale: IBaseScale;\n setAngleScale: (s: IBaseScale) => void;\n\n // TODO:\n positionToData: (point: IPolarPoint) => any;\n radiusToData: (radius: number) => any;\n angleToData: (angle: number) => any;\n\n // 轴\n radiusAxisHelper: IPolarAxisHelper;\n angleAxisHelper: IPolarAxisHelper;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n}\n\nexport interface IGeoSeries extends ISeries {\n readonly coordinate: 'geo';\n\n nameField?: string;\n valueField?: string;\n\n getMapViewData: () => DataView;\n getNameProperty: () => string;\n\n dataToPosition: (datum: any, checkInViewData?: boolean) => IPoint | null;\n dataToLatitude: (latValue: any) => number | null;\n dataToLongitude: (lonValue: any) => number | null;\n nameValueToPosition: (name: string) => IPoint | null;\n\n positionToData: (p: IPoint) => any;\n latitudeToData: (lat: number) => any;\n longitudeToData: (lon: number) => any;\n\n getCoordinateHelper: () => IGeoCoordinateHelper;\n setCoordinateHelper: (helper: IGeoCoordinateHelper) => void;\n\n valueToPosition: (value1: any, value2: any) => IPoint;\n getDatumCenter: (datum: any) => [number, number];\n}\n\n// 收拢扇区标签形式依赖的 api\nexport interface IArcSeries extends IPolarSeries {\n getCenter: () => IPoint;\n getRadius: (state?: StateValueType) => number;\n getInnerRadius: (state?: StateValueType) => number;\n\n computeRadius: (r: number, k?: number) => number;\n computeDatumRadius: (datum: any, state?: StateValueType) => number;\n}\n\nexport interface IFunnelSeries extends ISeries {\n getPoints: (datum: any) => IPoint[];\n getCategoryField: () => string;\n\n valueToPosition: (value: any) => IPoint;\n}\n"]}
|
|
@@ -70,7 +70,7 @@ export interface IArcLabelLayoutSpec {
|
|
|
70
70
|
tangentConstraint?: boolean;
|
|
71
71
|
}
|
|
72
72
|
export type IArcLabelSpec = Omit<ILabelSpec, 'position'> & {
|
|
73
|
-
position?: 'outside' | 'inside';
|
|
73
|
+
position?: 'outside' | 'inside' | 'inside-center';
|
|
74
74
|
showRule?: 'all' | 'max' | 'min' | 'minAndMax' | 'headAndTail';
|
|
75
75
|
coverEnable?: boolean;
|
|
76
76
|
rotate?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/pie/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IAnimationSpec } from '../../animation/spec';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { IArcMarkSpec, ITextMarkSpec, IArc3dMarkSpec, ILineMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { IPolarSeriesSpec, IPolarSeriesTheme } from '../polar/interface';\nimport type { PieAppearPreset } from './animation/animation';\nimport type { ILabelSpec, IMultiLabelSpec } from '../../component/label';\nimport type { ICustomPath2D, ILineGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';\nimport type { ILayoutRect } from '../../typings/layout';\nimport type { IPointLike } from '@visactor/vutils';\n\nexport type PieMarks = 'pie' | 'label' | 'labelLine';\n\nexport type IBasePieSeriesSpec = Omit<IPieSeriesSpec, 'type'> & { type: string };\n\nexport interface IPieSeriesSpec extends IPolarSeriesSpec, IAnimationSpec<PieMarks, PieAppearPreset> {\n type: 'pie';\n /**\n * 分类字段\n * @description 饼图每个扇区为独立的系列\n */\n categoryField: string;\n /** 数值字段 */\n valueField: string;\n /** 饼图中心点 x 坐标 */\n centerX?: number;\n /** 饼图中心点 y 坐标 */\n centerY?: number;\n /** 饼图扇区中心偏移 */\n centerOffset?: number;\n\n /**\n * 饼图扇区半径\n * @default 0.6\n * @deprecated use outerRadius instead\n */\n radius?: number;\n\n /**\n * 饼图扇区外半径\n * @default 0.6\n */\n outerRadius?: number;\n\n /**\n * 饼图扇区内半径\n * @default 0\n */\n innerRadius?: number;\n\n /**\n * 饼图扇区圆角半径\n * @default 0\n */\n cornerRadius?: number;\n /**\n * 饼图的起始角度(0 ~ 360)\n * @default -90\n */\n startAngle?: number;\n /**\n * 饼图的结束角度(0 ~ 360)\n * @default 270\n */\n endAngle?: number;\n /**\n * 扇区之间的间隔角度\n */\n padAngle?: number;\n\n /**\n * 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互。\n * @default 0\n * @since 1.4.0\n */\n minAngle?: number;\n\n /**\n * @since 1.11.12\n */\n layoutRadius?: 'auto' | number | ((layoutRect: ILayoutRect, center: IPointLike) => number);\n\n /** 扇区样式 */\n [SeriesMarkNameEnum.pie]?: IMarkSpec<IArcMarkSpec>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IMultiLabelSpec<IArcLabelSpec>;\n\n /** 数据为空时显示的占位图形 */\n emptyPlaceholder?: {\n /** 是否显示占位圆\n * @default false\n */\n showEmptyCircle?: boolean;\n\n /** 占位圆样式 */\n emptyCircle?: IMarkSpec<IArcMarkSpec>;\n };\n\n /**\n * 是否在数据均为0时显示均分扇区。\n * @default false\n */\n showAllZero?: boolean;\n\n /**\n * 是否将负数按照绝对值进行处理。\n * @default false\n */\n supportNegative?: boolean;\n}\n\nexport interface IPieSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie]?: Partial<IMarkTheme<IArcMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n /** 数据为空时显示的占位圆样式\n * @since 1.12.0\n */\n emptyCircle?: Partial<IMarkTheme<IArcMarkSpec>>;\n}\n\nexport type IPie3dSeriesSpec = {\n type: 'pie3d';\n // 饼图整体绕x轴的旋转角度\n angle3d?: number;\n} & Omit<IPieSeriesSpec, 'type'>;\n\nexport interface IPie3dSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie3d]?: Partial<IMarkTheme<IArc3dMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n}\n\nexport interface IArcLabelLineSpec extends Omit<IMarkSpec<ILineMarkSpec>, 'customShape'> {\n /**\n * 是否显示引导线\n * @default true\n */\n visible?: boolean;\n /**\n * 引导线 line1 部分最小长度\n * @default 20\n */\n line1MinLength?: number;\n /**\n * 引导线 line2 部分最小长度\n * @default 10\n */\n line2MinLength?: number;\n /**\n * 引导线是否光滑\n * @default false\n * @since 1.4.0\n */\n smooth?: boolean;\n /**\n * 标签引导线支持自定义path\n * @since 1.11.11\n */\n customShape?: (\n text: ITextGraphicAttribute,\n attrs: Partial<ILineGraphicAttribute>,\n path: ICustomPath2D\n ) => ICustomPath2D;\n}\n\nexport type ArcLabelAlignType = 'arc' | 'labelLine' | 'edge';\n\nexport type ArcLabelStrategyType = 'priority' | 'vertical' | 'none';\n\nexport interface IArcLabelLayoutSpec {\n /**\n * 标签对齐方式\n * @default 'arc'\n */\n textAlign?: ArcLabelAlignType;\n /** @deprecate 建议统一使用textAlign,后续将废除 */\n align?: ArcLabelAlignType;\n /**\n * 标签布局策略\n * @default 'priority'\n */\n strategy?: ArcLabelStrategyType;\n /**\n * 是否启用切线约束\n * @default true\n */\n tangentConstraint?: boolean;\n}\n\nexport type IArcLabelSpec = Omit<ILabelSpec, 'position'> & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside';\n /**\n * 标签内容显示规则\n * @default 'all'\n */\n showRule?: 'all' | 'max' | 'min' | 'minAndMax' | 'headAndTail';\n /**\n * 是否允许标签重叠\n * @default false\n */\n coverEnable?: boolean;\n /**\n * 是否允许标签旋转\n * @default true\n */\n rotate?: boolean;\n\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 扇区间标签的间隔\n * @default 6\n */\n layoutArcGap?: number;\n /** 中心点偏移距离 */\n centerOffset?: number;\n /** 标签文字样式 */\n style?: ITextMarkSpec;\n /** 标签引导线样式 */\n line?: IArcLabelLineSpec;\n /** 标签布局配置 */\n layout?: IArcLabelLayoutSpec;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/pie/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IAnimationSpec } from '../../animation/spec';\nimport type { IMarkSpec, IMarkTheme } from '../../typings/spec/common';\nimport type { IArcMarkSpec, ITextMarkSpec, IArc3dMarkSpec, ILineMarkSpec } from '../../typings/visual';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { IPolarSeriesSpec, IPolarSeriesTheme } from '../polar/interface';\nimport type { PieAppearPreset } from './animation/animation';\nimport type { ILabelSpec, IMultiLabelSpec } from '../../component/label';\nimport type { ICustomPath2D, ILineGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';\nimport type { ILayoutRect } from '../../typings/layout';\nimport type { IPointLike } from '@visactor/vutils';\n\nexport type PieMarks = 'pie' | 'label' | 'labelLine';\n\nexport type IBasePieSeriesSpec = Omit<IPieSeriesSpec, 'type'> & { type: string };\n\nexport interface IPieSeriesSpec extends IPolarSeriesSpec, IAnimationSpec<PieMarks, PieAppearPreset> {\n type: 'pie';\n /**\n * 分类字段\n * @description 饼图每个扇区为独立的系列\n */\n categoryField: string;\n /** 数值字段 */\n valueField: string;\n /** 饼图中心点 x 坐标 */\n centerX?: number;\n /** 饼图中心点 y 坐标 */\n centerY?: number;\n /** 饼图扇区中心偏移 */\n centerOffset?: number;\n\n /**\n * 饼图扇区半径\n * @default 0.6\n * @deprecated use outerRadius instead\n */\n radius?: number;\n\n /**\n * 饼图扇区外半径\n * @default 0.6\n */\n outerRadius?: number;\n\n /**\n * 饼图扇区内半径\n * @default 0\n */\n innerRadius?: number;\n\n /**\n * 饼图扇区圆角半径\n * @default 0\n */\n cornerRadius?: number;\n /**\n * 饼图的起始角度(0 ~ 360)\n * @default -90\n */\n startAngle?: number;\n /**\n * 饼图的结束角度(0 ~ 360)\n * @default 270\n */\n endAngle?: number;\n /**\n * 扇区之间的间隔角度\n */\n padAngle?: number;\n\n /**\n * 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互。\n * @default 0\n * @since 1.4.0\n */\n minAngle?: number;\n\n /**\n * @since 1.11.12\n */\n layoutRadius?: 'auto' | number | ((layoutRect: ILayoutRect, center: IPointLike) => number);\n\n /** 扇区样式 */\n [SeriesMarkNameEnum.pie]?: IMarkSpec<IArcMarkSpec>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IMultiLabelSpec<IArcLabelSpec>;\n\n /** 数据为空时显示的占位图形 */\n emptyPlaceholder?: {\n /** 是否显示占位圆\n * @default false\n */\n showEmptyCircle?: boolean;\n\n /** 占位圆样式 */\n emptyCircle?: IMarkSpec<IArcMarkSpec>;\n };\n\n /**\n * 是否在数据均为0时显示均分扇区。\n * @default false\n */\n showAllZero?: boolean;\n\n /**\n * 是否将负数按照绝对值进行处理。\n * @default false\n */\n supportNegative?: boolean;\n}\n\nexport interface IPieSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie]?: Partial<IMarkTheme<IArcMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n /** 数据为空时显示的占位圆样式\n * @since 1.12.0\n */\n emptyCircle?: Partial<IMarkTheme<IArcMarkSpec>>;\n}\n\nexport type IPie3dSeriesSpec = {\n type: 'pie3d';\n // 饼图整体绕x轴的旋转角度\n angle3d?: number;\n} & Omit<IPieSeriesSpec, 'type'>;\n\nexport interface IPie3dSeriesTheme extends IPolarSeriesTheme {\n [SeriesMarkNameEnum.pie3d]?: Partial<IMarkTheme<IArc3dMarkSpec>>;\n /** 标签配置 */\n [SeriesMarkNameEnum.label]?: IArcLabelSpec;\n /**\n * 内标签配置\n * @since 1.5.1\n */\n innerLabel?: IArcLabelSpec;\n /**\n * 外标签配置\n * @since 1.5.1\n */\n outerLabel?: IArcLabelSpec;\n}\n\nexport interface IArcLabelLineSpec extends Omit<IMarkSpec<ILineMarkSpec>, 'customShape'> {\n /**\n * 是否显示引导线\n * @default true\n */\n visible?: boolean;\n /**\n * 引导线 line1 部分最小长度\n * @default 20\n */\n line1MinLength?: number;\n /**\n * 引导线 line2 部分最小长度\n * @default 10\n */\n line2MinLength?: number;\n /**\n * 引导线是否光滑\n * @default false\n * @since 1.4.0\n */\n smooth?: boolean;\n /**\n * 标签引导线支持自定义path\n * @since 1.11.11\n */\n customShape?: (\n text: ITextGraphicAttribute,\n attrs: Partial<ILineGraphicAttribute>,\n path: ICustomPath2D\n ) => ICustomPath2D;\n}\n\nexport type ArcLabelAlignType = 'arc' | 'labelLine' | 'edge';\n\nexport type ArcLabelStrategyType = 'priority' | 'vertical' | 'none';\n\nexport interface IArcLabelLayoutSpec {\n /**\n * 标签对齐方式\n * @default 'arc'\n */\n textAlign?: ArcLabelAlignType;\n /** @deprecate 建议统一使用textAlign,后续将废除 */\n align?: ArcLabelAlignType;\n /**\n * 标签布局策略\n * @default 'priority'\n */\n strategy?: ArcLabelStrategyType;\n /**\n * 是否启用切线约束\n * @default true\n */\n tangentConstraint?: boolean;\n}\n\nexport type IArcLabelSpec = Omit<ILabelSpec, 'position'> & {\n /**\n * 标签布局方式\n * @default 'outside'\n */\n position?: 'outside' | 'inside' | 'inside-center';\n /**\n * 标签内容显示规则\n * @default 'all'\n */\n showRule?: 'all' | 'max' | 'min' | 'minAndMax' | 'headAndTail';\n /**\n * 是否允许标签重叠\n * @default false\n */\n coverEnable?: boolean;\n /**\n * 是否允许标签旋转\n * @default true\n */\n rotate?: boolean;\n\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 扇区间标签的间隔\n * @default 6\n */\n layoutArcGap?: number;\n /** 中心点偏移距离 */\n centerOffset?: number;\n /** 标签文字样式 */\n style?: ITextMarkSpec;\n /** 标签引导线样式 */\n line?: IArcLabelLineSpec;\n /** 标签布局配置 */\n layout?: IArcLabelLayoutSpec;\n};\n"]}
|
|
@@ -16,8 +16,8 @@ class PieSeriesSpecTransformer extends base_1.BaseSeriesSpecTransformer {
|
|
|
16
16
|
if (this._shouldMergeThemeToSpec()) {
|
|
17
17
|
const specFromChart = this._getDefaultSpecFromChart(chartSpec);
|
|
18
18
|
newSpec = (0, vutils_extension_1.mergeSpec)({}, this._theme, specFromChart, spec);
|
|
19
|
-
const getMergedLabelSpec = (position, label) => "inside" === position
|
|
20
|
-
vutils_extension_1.mergeSpec)({}, this._theme.outerLabel, label);
|
|
19
|
+
const getMergedLabelSpec = (position, label) => "inside" === position || "inside-center" === position ? (0,
|
|
20
|
+
vutils_extension_1.mergeSpec)({}, this._theme.innerLabel, label) : (0, vutils_extension_1.mergeSpec)({}, this._theme.outerLabel, label);
|
|
21
21
|
(0, vutils_1.isArray)(newSpec.label) ? newSpec.label = newSpec.label.map((label => getMergedLabelSpec(label.position, label))) : newSpec.label = getMergedLabelSpec(newSpec.label.position, newSpec.label);
|
|
22
22
|
}
|
|
23
23
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/pie/pie-transformer.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,iEAAuD;AACvD,kCAAoD;AAIpD,MAAa,wBAGX,SAAQ,gCAA+B;IAC7B,mBAAmB,CAAC,IAAO;QACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,QAAyB,CAAC;IACvD,CAAC;IAGS,iBAAiB,CAAC,IAAO,EAAE,SAAc;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAI/D,OAAO,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAQ,CAAC;YAEjE,MAAM,kBAAkB,GAAG,CAAC,QAAmC,EAAE,KAAoB,EAAE,EAAE;gBACvF,IAAI,QAAQ,KAAK,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/series/pie/pie-transformer.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AACpD,iEAAuD;AACvD,kCAAoD;AAIpD,MAAa,wBAGX,SAAQ,gCAA+B;IAC7B,mBAAmB,CAAC,IAAO;QACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,QAAyB,CAAC;IACvD,CAAC;IAGS,iBAAiB,CAAC,IAAO,EAAE,SAAc;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;YAI/D,OAAO,GAAG,IAAA,4BAAS,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAQ,CAAC;YAEjE,MAAM,kBAAkB,GAAG,CAAC,QAAmC,EAAE,KAAoB,EAAE,EAAE;gBACvF,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,eAAe,EAAE;oBACzD,OAAO,IAAA,4BAAS,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;iBACrD;gBACD,OAAO,IAAA,4BAAS,EAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC,CAAC;YAEF,IAAI,IAAA,gBAAO,EAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC1B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;aACvF;iBAAM;gBACL,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;aAC3E;SACF;QAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAES,wBAAwB,CAAC,SAAc;;QAC/C,MAAM,IAAI,GAAG,MAAC,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAS,mCAAI,EAAE,CAAC;QACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QACvC,IAAI,IAAA,gBAAO,EAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,IAAI,IAAA,gBAAO,EAAC,OAAO,CAAC,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;CACF;AA/CD,4DA+CC","file":"pie-transformer.js","sourcesContent":["import { isArray, isValid } from '@visactor/vutils';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport { BaseSeriesSpecTransformer } from '../base';\nimport { SeriesMarkNameEnum } from '../interface';\nimport type { IArcLabelSpec, IBasePieSeriesSpec, IPieSeriesTheme } from './interface';\n\nexport class PieSeriesSpecTransformer<\n T extends IBasePieSeriesSpec = IBasePieSeriesSpec,\n K extends IPieSeriesTheme = IPieSeriesTheme\n> extends BaseSeriesSpecTransformer<T, K> {\n protected _transformLabelSpec(spec: T): void {\n this._addMarkLabelSpec(spec, SeriesMarkNameEnum.pie);\n }\n\n /** 将 theme merge 到 spec 中 */\n protected _mergeThemeToSpec(spec: T, chartSpec: any): { spec: T; theme: K } {\n const theme = this._theme;\n let newSpec = spec;\n if (this._shouldMergeThemeToSpec()) {\n const specFromChart = this._getDefaultSpecFromChart(chartSpec);\n\n // this._originalSpec + specFromChart + this._theme = this._spec\n // 动态处理 label 样式,对于展示在内部的 label 默认使用 innerLabel 样式\n newSpec = mergeSpec({}, this._theme, specFromChart, spec) as any;\n\n const getMergedLabelSpec = (position: IArcLabelSpec['position'], label: IArcLabelSpec) => {\n if (position === 'inside' || position === 'inside-center') {\n return mergeSpec({}, this._theme.innerLabel, label);\n }\n return mergeSpec({}, this._theme.outerLabel, label);\n };\n\n if (isArray(newSpec.label)) {\n newSpec.label = newSpec.label.map(label => getMergedLabelSpec(label.position, label));\n } else {\n newSpec.label = getMergedLabelSpec(newSpec.label.position, newSpec.label);\n }\n }\n\n return { spec: newSpec, theme };\n }\n\n protected _getDefaultSpecFromChart(chartSpec: any): any {\n const spec = (super._getDefaultSpecFromChart(chartSpec) as any) ?? {};\n const { centerX, centerY } = chartSpec;\n if (isValid(centerX)) {\n spec.centerX = centerX;\n }\n if (isValid(centerY)) {\n spec.centerY = centerY;\n }\n return Object.keys(spec).length > 0 ? spec : undefined;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/polar/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IPolarSeries } from '../interface';\nimport { array, isValid, isNil } from '@visactor/vutils';\nimport { couldBeValidNumber } from '../../util/type';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { POLAR_DEFAULT_RADIUS } from '../../constant/polar';\nimport { BaseSeries } from '../base/base-series';\nimport type { IPolarSeriesSpec } from './interface';\nimport type { Datum, StringOrNumber } from '../../typings';\nimport { sortDataInAxisHelper } from '../util/utils';\nimport { ChartEvent } from '../../constant/event';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { invalidTravel } from '../../data/transforms/invalid-travel';\n\nexport abstract class PolarSeries<T extends IPolarSeriesSpec = IPolarSeriesSpec>\n extends BaseSeries<T>\n implements IPolarSeries\n{\n readonly coordinate: 'polar' = 'polar';\n\n protected _outerRadius: number = POLAR_DEFAULT_RADIUS;\n public get outerRadius() {\n return this._outerRadius;\n }\n\n protected _innerRadius: number = 0;\n public get innerRadius() {\n return this._innerRadius;\n }\n\n protected _angleField: string[] = [];\n getAngleField() {\n return this._angleField;\n }\n setAngleField(f: string | string[]): string[] {\n this._angleField = isValid(f) ? array(f) : [];\n return this._angleField;\n }\n\n protected _radiusField: string[] = [];\n getRadiusField() {\n return this._radiusField;\n }\n setRadiusField(f: string | string[]): string[] {\n this._radiusField = isValid(f) ? array(f) : [];\n return this._radiusField;\n }\n\n protected _specAngleField: string[];\n protected _specRadiusField: string[];\n\n protected _innerRadiusField!: string[];\n public get innerRadiusField() {\n return this._innerRadiusField;\n }\n setInnerRadiusField(f: string | string[]): string[] {\n this._innerRadiusField = array(f);\n return this._innerRadiusField;\n }\n\n protected _radiusScale!: IBaseScale;\n public get radiusScale() {\n return this._radiusScale;\n }\n setRadiusScale(s: IBaseScale) {\n this._radiusScale = s;\n return s;\n }\n\n protected _angleScale!: IBaseScale;\n public get angleScale() {\n return this._angleScale;\n }\n setAngleScale(s: IBaseScale) {\n this._angleScale = s;\n return s;\n }\n\n private _angleAxisHelper!: IPolarAxisHelper;\n public get angleAxisHelper() {\n return this._angleAxisHelper;\n }\n public set angleAxisHelper(h: IPolarAxisHelper) {\n this._angleAxisHelper = h;\n this.onAngleAxisHelperUpdate();\n }\n\n private _radiusAxisHelper!: IPolarAxisHelper;\n public get radiusAxisHelper() {\n return this._radiusAxisHelper;\n }\n public set radiusAxisHelper(h: IPolarAxisHelper) {\n this._radiusAxisHelper = h;\n this.onRadiusAxisHelperUpdate();\n }\n\n protected _sortDataByAxis: boolean = false;\n get sortDataByAxis() {\n return this._sortDataByAxis;\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // position\n this._markAttributeContext.valueToPosition = this.valueToPosition.bind(this);\n this._markAttributeContext.getCenter = () => this.angleAxisHelper.center();\n this._markAttributeContext.getLayoutRadius = () => this._computeLayoutRadius();\n }\n\n valueToPosition(angleValue: StringOrNumber | StringOrNumber[], radiusValue: StringOrNumber | StringOrNumber[]) {\n if (isNil(angleValue) || isNil(radiusValue) || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return { x: Number.NaN, y: Number.NaN };\n }\n const angle = this.angleAxisHelper.dataToPosition(array(angleValue));\n const radius = this.radiusAxisHelper.dataToPosition(array(radiusValue));\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.angleAxisHelper.coordToPoint({ angle, radius });\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint {\n if (!datum || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.valueToPosition(\n this.getDatumPositionValues(datum, this._angleField),\n this.getDatumPositionValues(datum, this._radiusField)\n );\n }\n\n dataToPositionX(datum: Datum): number {\n return this.dataToPosition(datum)?.x;\n }\n\n dataToPositionY(datum: Datum): number {\n return this.dataToPosition(datum)?.y;\n }\n\n dataToPositionZ(datum: Datum): number {\n return 0;\n }\n\n // todo: 待实现\n positionToData(p: IPolarPoint): any {\n /* do nothing */\n }\n radiusToData(r: number): any {\n /* do nothing */\n }\n angleToData(a: number): any {\n /* do nothing */\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n if (this.radiusAxisHelper?.getScale) {\n this._radiusField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.radiusAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n if (this.angleAxisHelper?.getScale) {\n this._angleField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.angleAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n return fields;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n if (isValid(this._spec.outerRadius)) {\n this._outerRadius = this._spec.outerRadius;\n }\n if (isValid(this._spec.radius)) {\n // 优先使用outerRadius, 但要兼容spec.radius\n this._outerRadius = this._spec.radius;\n }\n if (isValid(this._spec.innerRadius)) {\n this._innerRadius = this._spec.innerRadius;\n }\n\n if (isValid(this._spec.sortDataByAxis)) {\n this._sortDataByAxis = this._spec.sortDataByAxis === true;\n }\n }\n\n onRadiusAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n onAngleAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n protected _computeLayoutRadius() {\n const axisHelper = this._angleAxisHelper || this._radiusAxisHelper;\n\n if (axisHelper) {\n return axisHelper.layoutRadius();\n }\n\n const { width, height } = this._region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n protected initEvent() {\n super.initEvent();\n // 通过轴事件来进行排序。轴的domain数据变化在系列的统计数据完成后\n if (this.sortDataByAxis) {\n this.event.on(\n ChartEvent.scaleDomainUpdate,\n {\n filter: param => param.model.id === this._angleAxisHelper?.getAxisId()\n },\n () => {\n // 只能排序,不能修改数据,此时已经在数据流的统计流程之后\n this._sortDataInAxisDomain();\n }\n );\n }\n }\n\n _sortDataInAxisDomain() {\n if (this.getViewData()?.latestData?.length) {\n sortDataInAxisHelper(this.angleAxisHelper, this._angleField[0], this.getViewData().latestData);\n }\n }\n\n protected getInvalidCheckFields() {\n const fields: string[] = [];\n\n if (this.angleAxisHelper.isContinuous) {\n this._angleField.forEach(f => {\n fields.push(f);\n });\n }\n\n if (this.radiusAxisHelper.isContinuous) {\n this._radiusField.forEach(f => {\n fields.push(f);\n });\n }\n return fields;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/polar/polar.ts"],"names":[],"mappings":"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","file":"polar.js","sourcesContent":["import type { IBaseScale } from '@visactor/vscale';\nimport type { IPoint, IPolarPoint } from '../../typings/coordinate';\nimport type { IPolarSeries } from '../interface';\nimport { array, isValid, isNil } from '@visactor/vutils';\nimport type { IPolarAxisHelper } from '../../component/axis/polar/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport { POLAR_DEFAULT_RADIUS } from '../../constant/polar';\nimport { BaseSeries } from '../base/base-series';\nimport type { IPolarSeriesSpec } from './interface';\nimport type { Datum, StringOrNumber } from '../../typings';\nimport { sortDataInAxisHelper } from '../util/utils';\nimport { ChartEvent } from '../../constant/event';\n\nexport abstract class PolarSeries<T extends IPolarSeriesSpec = IPolarSeriesSpec>\n extends BaseSeries<T>\n implements IPolarSeries\n{\n readonly coordinate: 'polar' = 'polar';\n\n protected _outerRadius: number = POLAR_DEFAULT_RADIUS;\n public get outerRadius() {\n return this._outerRadius;\n }\n\n protected _innerRadius: number = 0;\n public get innerRadius() {\n return this._innerRadius;\n }\n\n protected _angleField: string[] = [];\n getAngleField() {\n return this._angleField;\n }\n setAngleField(f: string | string[]): string[] {\n this._angleField = isValid(f) ? array(f) : [];\n return this._angleField;\n }\n\n protected _radiusField: string[] = [];\n getRadiusField() {\n return this._radiusField;\n }\n setRadiusField(f: string | string[]): string[] {\n this._radiusField = isValid(f) ? array(f) : [];\n return this._radiusField;\n }\n\n protected _specAngleField: string[];\n protected _specRadiusField: string[];\n\n protected _innerRadiusField!: string[];\n public get innerRadiusField() {\n return this._innerRadiusField;\n }\n setInnerRadiusField(f: string | string[]): string[] {\n this._innerRadiusField = array(f);\n return this._innerRadiusField;\n }\n\n protected _radiusScale!: IBaseScale;\n public get radiusScale() {\n return this._radiusScale;\n }\n setRadiusScale(s: IBaseScale) {\n this._radiusScale = s;\n return s;\n }\n\n protected _angleScale!: IBaseScale;\n public get angleScale() {\n return this._angleScale;\n }\n setAngleScale(s: IBaseScale) {\n this._angleScale = s;\n return s;\n }\n\n private _angleAxisHelper!: IPolarAxisHelper;\n public get angleAxisHelper() {\n return this._angleAxisHelper;\n }\n public set angleAxisHelper(h: IPolarAxisHelper) {\n this._angleAxisHelper = h;\n this.onAngleAxisHelperUpdate();\n }\n\n private _radiusAxisHelper!: IPolarAxisHelper;\n public get radiusAxisHelper() {\n return this._radiusAxisHelper;\n }\n public set radiusAxisHelper(h: IPolarAxisHelper) {\n this._radiusAxisHelper = h;\n this.onRadiusAxisHelperUpdate();\n }\n\n protected _sortDataByAxis: boolean = false;\n get sortDataByAxis() {\n return this._sortDataByAxis;\n }\n\n protected _buildMarkAttributeContext() {\n super._buildMarkAttributeContext();\n // position\n this._markAttributeContext.valueToPosition = this.valueToPosition.bind(this);\n this._markAttributeContext.getCenter = () => this.angleAxisHelper.center();\n this._markAttributeContext.getLayoutRadius = () => this._computeLayoutRadius();\n }\n\n valueToPosition(angleValue: StringOrNumber | StringOrNumber[], radiusValue: StringOrNumber | StringOrNumber[]) {\n if (isNil(angleValue) || isNil(radiusValue) || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return { x: Number.NaN, y: Number.NaN };\n }\n const angle = this.angleAxisHelper.dataToPosition(array(angleValue));\n const radius = this.radiusAxisHelper.dataToPosition(array(radiusValue));\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.angleAxisHelper.coordToPoint({ angle, radius });\n }\n\n dataToPosition(datum: Datum, checkInViewData?: boolean): IPoint {\n if (!datum || !this.angleAxisHelper || !this.radiusAxisHelper) {\n return null;\n }\n if (checkInViewData && !this.isDatumInViewData(datum)) {\n return null;\n }\n // FIXME: 由于存在两个轴,这里的 坐标系转换逻辑会有点尬\n return this.valueToPosition(\n this.getDatumPositionValues(datum, this._angleField),\n this.getDatumPositionValues(datum, this._radiusField)\n );\n }\n\n dataToPositionX(datum: Datum): number {\n return this.dataToPosition(datum)?.x;\n }\n\n dataToPositionY(datum: Datum): number {\n return this.dataToPosition(datum)?.y;\n }\n\n dataToPositionZ(datum: Datum): number {\n return 0;\n }\n\n // todo: 待实现\n positionToData(p: IPolarPoint): any {\n /* do nothing */\n }\n radiusToData(r: number): any {\n /* do nothing */\n }\n angleToData(a: number): any {\n /* do nothing */\n }\n\n getStatisticFields() {\n const fields: { key: string; operations: Array<'max' | 'min' | 'values'> }[] = [];\n if (this.radiusAxisHelper?.getScale) {\n this._radiusField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.radiusAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n if (this.angleAxisHelper?.getScale) {\n this._angleField.forEach(f => {\n const result: { key: string; operations: Array<'max' | 'min' | 'values'> } = { key: f, operations: [] };\n if (isContinuous(this.angleAxisHelper.getScale(0).type)) {\n result.operations = ['max', 'min'];\n } else {\n result.operations = ['values'];\n }\n fields.push(result);\n });\n }\n return fields;\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n if (isValid(this._spec.outerRadius)) {\n this._outerRadius = this._spec.outerRadius;\n }\n if (isValid(this._spec.radius)) {\n // 优先使用outerRadius, 但要兼容spec.radius\n this._outerRadius = this._spec.radius;\n }\n if (isValid(this._spec.innerRadius)) {\n this._innerRadius = this._spec.innerRadius;\n }\n\n if (isValid(this._spec.sortDataByAxis)) {\n this._sortDataByAxis = this._spec.sortDataByAxis === true;\n }\n }\n\n onRadiusAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n onAngleAxisHelperUpdate(): void {\n this.onMarkPositionUpdate();\n }\n\n afterInitMark(): void {\n super.afterInitMark();\n }\n\n protected _computeLayoutRadius() {\n const axisHelper = this._angleAxisHelper || this._radiusAxisHelper;\n\n if (axisHelper) {\n return axisHelper.layoutRadius();\n }\n\n const { width, height } = this._region.getLayoutRect();\n return Math.min(width / 2, height / 2);\n }\n\n protected initEvent() {\n super.initEvent();\n // 通过轴事件来进行排序。轴的domain数据变化在系列的统计数据完成后\n if (this.sortDataByAxis) {\n this.event.on(\n ChartEvent.scaleDomainUpdate,\n {\n filter: param => param.model.id === this._angleAxisHelper?.getAxisId()\n },\n () => {\n // 只能排序,不能修改数据,此时已经在数据流的统计流程之后\n this._sortDataInAxisDomain();\n }\n );\n }\n }\n\n _sortDataInAxisDomain() {\n if (this.getViewData()?.latestData?.length) {\n sortDataInAxisHelper(this.angleAxisHelper, this._angleField[0], this.getViewData().latestData);\n }\n }\n\n protected getInvalidCheckFields() {\n const fields: string[] = [];\n\n if (this.angleAxisHelper.isContinuous) {\n this._angleField.forEach(f => {\n fields.push(f);\n });\n }\n\n if (this.radiusAxisHelper.isContinuous) {\n this._radiusField.forEach(f => {\n fields.push(f);\n });\n }\n return fields;\n }\n}\n"]}
|
|
@@ -27,6 +27,7 @@ export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpe
|
|
|
27
27
|
protected _categoryField: string;
|
|
28
28
|
private _colorScale;
|
|
29
29
|
private _nodeList;
|
|
30
|
+
private _needClear;
|
|
30
31
|
get direction(): "vertical" | "horizontal";
|
|
31
32
|
getCategoryField(): string;
|
|
32
33
|
setCategoryField(f: string): string;
|
|
@@ -31,11 +31,12 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
31
31
|
const sourceName = (0, vutils_1.isNumber)(datum.source) ? this.getNodeList()[datum.source] : datum.source;
|
|
32
32
|
return null === (_g = this._colorScale) || void 0 === _g ? void 0 : _g.scale(sourceName);
|
|
33
33
|
}, this._handleEmphasisElement = params => {
|
|
34
|
-
var _a;
|
|
34
|
+
var _a, _b, _c, _d, _e;
|
|
35
35
|
const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, element = params.item;
|
|
36
|
-
"adjacency" === emphasisSpec.effect ? element && element.mark.
|
|
36
|
+
"adjacency" === emphasisSpec.effect ? element && element.mark === (null === (_b = this._nodeMark) || void 0 === _b ? void 0 : _b.getProduct()) ? this._handleNodeAdjacencyClick(element) : element && element.mark === (null === (_c = this._linkMark) || void 0 === _c ? void 0 : _c.getProduct()) ? this._handleLinkAdjacencyClick(element) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (element && element.mark === (null === (_d = this._nodeMark) || void 0 === _d ? void 0 : _d.getProduct()) ? this._handleNodeRelatedClick(element) : element && element.mark === (null === (_e = this._linkMark) || void 0 === _e ? void 0 : _e.getProduct()) ? this._handleLinkRelatedClick(element) : this._handleClearEmpty());
|
|
37
37
|
}, this._handleClearEmpty = () => {
|
|
38
38
|
var _a, _b;
|
|
39
|
+
if (!this._needClear) return;
|
|
39
40
|
const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getProductElements();
|
|
40
41
|
if (!allNodeElements || !allNodeElements.length) return;
|
|
41
42
|
const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getProductElements();
|
|
@@ -45,7 +46,7 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
45
46
|
el.removeState(states);
|
|
46
47
|
})), allLinkElements.forEach((el => {
|
|
47
48
|
el.removeState(states);
|
|
48
|
-
}));
|
|
49
|
+
})), this._needClear = !1;
|
|
49
50
|
}, this._handleNodeAdjacencyClick = element => {
|
|
50
51
|
const nodeDatum = element.getDatum(), highlightNodes = [ nodeDatum.key ];
|
|
51
52
|
if (this._linkMark) {
|
|
@@ -69,7 +70,8 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
69
70
|
linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
|
|
70
71
|
}));
|
|
71
72
|
}
|
|
72
|
-
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes)
|
|
73
|
+
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
74
|
+
this._needClear = !0;
|
|
73
75
|
}, this._handleLinkAdjacencyClick = element => {
|
|
74
76
|
const curLinkDatum = element.getDatum(), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
|
|
75
77
|
if (this._linkMark) {
|
|
@@ -82,7 +84,8 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
82
84
|
})) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
|
|
83
85
|
}));
|
|
84
86
|
}
|
|
85
|
-
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes)
|
|
87
|
+
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
88
|
+
this._needClear = !0;
|
|
86
89
|
}, this._handleNodeRelatedClick = element => {
|
|
87
90
|
var _a;
|
|
88
91
|
const nodeDatum = element.getDatum(), allNodeElements = this._nodeMark.getProductElements();
|
|
@@ -174,6 +177,7 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
174
177
|
linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
|
|
175
178
|
})), this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes);
|
|
176
179
|
}
|
|
180
|
+
this._needClear = !0;
|
|
177
181
|
}, this._handleLinkRelatedClick = element => {
|
|
178
182
|
var _a;
|
|
179
183
|
const allNodeElements = this._nodeMark.getProductElements();
|
|
@@ -235,6 +239,7 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
235
239
|
linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
|
|
236
240
|
})), this._highLightElements(allNodeElements, highlightNodes);
|
|
237
241
|
}
|
|
242
|
+
this._needClear = !0;
|
|
238
243
|
};
|
|
239
244
|
}
|
|
240
245
|
get direction() {
|
|
@@ -388,26 +393,32 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
388
393
|
this._initNodeMarkStyle(), this._initLinkMarkStyle();
|
|
389
394
|
}
|
|
390
395
|
_initNodeMarkStyle() {
|
|
396
|
+
var _a, _b;
|
|
391
397
|
const nodeMark = this._nodeMark;
|
|
392
|
-
nodeMark && this.setMarkStyle(nodeMark, {
|
|
398
|
+
nodeMark && (this.setMarkStyle(nodeMark, {
|
|
393
399
|
x: datum => datum.x0,
|
|
394
400
|
x1: datum => datum.x1,
|
|
395
401
|
y: datum => datum.y0,
|
|
396
|
-
y1: datum => datum.y1
|
|
397
|
-
|
|
398
|
-
|
|
402
|
+
y1: datum => datum.y1
|
|
403
|
+
}, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Mark),
|
|
404
|
+
this.setMarkStyle(nodeMark, {
|
|
405
|
+
fill: null !== (_b = null === (_a = this._spec.node.style) || void 0 === _a ? void 0 : _a.fill) && void 0 !== _b ? _b : this._fillByNode
|
|
406
|
+
}, "normal", attribute_1.AttributeLevel.User_Mark));
|
|
399
407
|
}
|
|
400
408
|
_initLinkMarkStyle() {
|
|
409
|
+
var _a, _b;
|
|
401
410
|
const linkMark = this._linkMark;
|
|
402
|
-
linkMark && this.setMarkStyle(linkMark, {
|
|
411
|
+
linkMark && (this.setMarkStyle(linkMark, {
|
|
403
412
|
x0: datum => datum.x0,
|
|
404
413
|
x1: datum => datum.x1,
|
|
405
414
|
y0: datum => datum.y0,
|
|
406
415
|
y1: datum => datum.y1,
|
|
407
416
|
thickness: datum => datum.thickness,
|
|
408
|
-
fill: this._fillByLink,
|
|
409
417
|
direction: this.direction
|
|
410
|
-
}, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Series)
|
|
418
|
+
}, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Series),
|
|
419
|
+
this.setMarkStyle(linkMark, {
|
|
420
|
+
fill: null !== (_b = null === (_a = this._spec.link.style) || void 0 === _a ? void 0 : _a.fill) && void 0 !== _b ? _b : this._fillByLink
|
|
421
|
+
}, "normal", attribute_1.AttributeLevel.User_Mark));
|
|
411
422
|
}
|
|
412
423
|
initLabelMarkStyle(labelMark, labelSpec) {
|
|
413
424
|
if (!labelMark) return;
|