@visactor/vchart 1.12.0-alpha.1 → 1.12.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.js +799 -379
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +1 -0
- package/cjs/chart/base/base-chart.js +4 -2
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/cartesian/cartesian-transformer.d.ts +4 -0
- package/cjs/chart/cartesian/cartesian-transformer.js +25 -10
- package/cjs/chart/cartesian/cartesian-transformer.js.map +1 -1
- package/cjs/chart/index.d.ts +5 -3
- package/cjs/chart/index.js +16 -2
- package/cjs/chart/index.js.map +1 -1
- package/cjs/chart/interface/type.d.ts +2 -1
- package/cjs/chart/interface/type.js +2 -1
- package/cjs/chart/interface/type.js.map +1 -1
- package/cjs/chart/mosaic/index.d.ts +3 -0
- package/cjs/chart/mosaic/index.js +22 -0
- package/cjs/chart/mosaic/index.js.map +1 -0
- package/cjs/chart/mosaic/interface.d.ts +7 -0
- package/cjs/chart/mosaic/interface.js +6 -0
- package/cjs/chart/mosaic/interface.js.map +1 -0
- package/cjs/chart/mosaic/mosaic-transformer.d.ts +9 -0
- package/cjs/chart/mosaic/mosaic-transformer.js +43 -0
- package/cjs/chart/mosaic/mosaic-transformer.js.map +1 -0
- package/cjs/chart/mosaic/mosaic.d.ts +20 -0
- package/cjs/chart/mosaic/mosaic.js +39 -0
- package/cjs/chart/mosaic/mosaic.js.map +1 -0
- package/cjs/chart/stack.d.ts +11 -1
- package/cjs/chart/stack.js +5 -4
- package/cjs/chart/stack.js.map +1 -1
- package/cjs/compile/grammar-item.js +2 -1
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/crosshair/cartesian.js +8 -3
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/indicator/indicator.d.ts +1 -1
- package/cjs/component/indicator/indicator.js +4 -2
- package/cjs/component/indicator/indicator.js.map +1 -1
- package/cjs/component/indicator/interface.d.ts +3 -1
- package/cjs/component/indicator/interface.js.map +1 -1
- package/cjs/component/label/interface.d.ts +2 -1
- package/cjs/component/label/interface.js.map +1 -1
- package/cjs/component/label/label.js +8 -5
- package/cjs/component/label/label.js.map +1 -1
- package/cjs/component/label/util.d.ts +9 -0
- package/cjs/component/label/util.js +35 -8
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/marker/base-marker.d.ts +4 -3
- package/cjs/component/marker/base-marker.js +6 -45
- package/cjs/component/marker/base-marker.js.map +1 -1
- package/cjs/component/marker/interface.d.ts +3 -3
- package/cjs/component/marker/interface.js.map +1 -1
- package/cjs/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
- package/cjs/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-area/interface/spec.d.ts +3 -2
- package/cjs/component/marker/mark-area/interface/spec.js.map +1 -1
- package/cjs/component/marker/mark-area/polar-mark-area.d.ts +2 -2
- package/cjs/component/marker/mark-area/polar-mark-area.js.map +1 -1
- package/cjs/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
- package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/interface/spec.d.ts +5 -5
- package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
- package/cjs/component/marker/mark-line/polar-mark-line.d.ts +2 -2
- package/cjs/component/marker/mark-line/polar-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
- package/cjs/component/marker/mark-point/cartesian-mark-point.js +1 -1
- package/cjs/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/cjs/component/marker/mark-point/geo-mark-point.d.ts +2 -1
- package/cjs/component/marker/mark-point/geo-mark-point.js.map +1 -1
- package/cjs/component/marker/mark-point/interface/spec.d.ts +4 -3
- package/cjs/component/marker/mark-point/interface/spec.js.map +1 -1
- package/cjs/component/marker/mark-point/polar-mark-point.d.ts +2 -1
- package/cjs/component/marker/mark-point/polar-mark-point.js.map +1 -1
- package/cjs/component/marker/utils.d.ts +2 -3
- package/cjs/component/marker/utils.js +16 -14
- package/cjs/component/marker/utils.js.map +1 -1
- package/cjs/component/tooltip/interface/spec.d.ts +1 -0
- package/cjs/component/tooltip/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +2 -1
- package/cjs/component/tooltip/tooltip.js +5 -3
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/util.js +1 -2
- package/cjs/constant/index.d.ts +5 -0
- package/cjs/constant/index.js +6 -2
- package/cjs/constant/index.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +3 -2
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +8 -6
- package/cjs/core/vchart.js +45 -26
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/aggregation.d.ts +8 -3
- package/cjs/data/transforms/aggregation.js +62 -2
- package/cjs/data/transforms/aggregation.js.map +1 -1
- package/cjs/data/transforms/stack-split.js +2 -2
- package/cjs/data/transforms/stack-split.js.map +1 -1
- package/cjs/model/interface.d.ts +4 -0
- package/cjs/model/interface.js.map +1 -1
- package/cjs/series/bar/bar.js +7 -7
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/base/base-series.js +6 -6
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/constant.d.ts +6 -0
- package/cjs/series/base/constant.js +12 -2
- package/cjs/series/base/constant.js.map +1 -1
- package/cjs/series/interface/common.d.ts +2 -0
- package/cjs/series/interface/common.js.map +1 -1
- package/cjs/series/interface/series.d.ts +3 -1
- package/cjs/series/interface/series.js.map +1 -1
- package/cjs/series/interface/theme.d.ts +2 -0
- package/cjs/series/interface/theme.js +2 -1
- package/cjs/series/interface/theme.js.map +1 -1
- package/cjs/series/interface/type.d.ts +2 -1
- package/cjs/series/interface/type.js +1 -1
- package/cjs/series/interface/type.js.map +1 -1
- package/cjs/series/mosaic/interface.d.ts +16 -0
- package/cjs/series/mosaic/interface.js +6 -0
- package/cjs/series/mosaic/interface.js.map +1 -0
- package/cjs/series/mosaic/mosaic.d.ts +16 -0
- package/cjs/series/mosaic/mosaic.js +69 -0
- package/cjs/series/mosaic/mosaic.js.map +1 -0
- package/cjs/series/sankey/interface.d.ts +5 -4
- package/cjs/series/sankey/interface.js.map +1 -1
- package/cjs/series/sankey/sankey-transformer.d.ts +5 -0
- package/cjs/series/sankey/sankey-transformer.js +16 -0
- package/cjs/series/sankey/sankey-transformer.js.map +1 -0
- package/cjs/series/sankey/sankey.d.ts +7 -2
- package/cjs/series/sankey/sankey.js +47 -151
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/word-cloud/interface.d.ts +1 -1
- package/cjs/series/word-cloud/interface.js.map +1 -1
- package/cjs/theme/builtin/common/series/index.js +3 -2
- package/cjs/theme/builtin/common/series/index.js.map +1 -1
- package/cjs/theme/builtin/common/series/mosaic.d.ts +2 -0
- package/cjs/theme/builtin/common/series/mosaic.js +27 -0
- package/cjs/theme/builtin/common/series/mosaic.js.map +1 -0
- package/cjs/util/data.d.ts +24 -1
- package/cjs/util/data.js +88 -17
- package/cjs/util/data.js.map +1 -1
- package/cjs/util/style.d.ts +1 -0
- package/cjs/util/style.js +11 -2
- package/cjs/util/style.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +1 -0
- package/esm/chart/base/base-chart.js +4 -2
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/cartesian/cartesian-transformer.d.ts +4 -0
- package/esm/chart/cartesian/cartesian-transformer.js +25 -10
- package/esm/chart/cartesian/cartesian-transformer.js.map +1 -1
- package/esm/chart/index.d.ts +5 -3
- package/esm/chart/index.js +4 -2
- package/esm/chart/index.js.map +1 -1
- package/esm/chart/interface/type.d.ts +2 -1
- package/esm/chart/interface/type.js +2 -1
- package/esm/chart/interface/type.js.map +1 -1
- package/esm/chart/mosaic/index.d.ts +3 -0
- package/esm/chart/mosaic/index.js +6 -0
- package/esm/chart/mosaic/index.js.map +1 -0
- package/esm/chart/mosaic/interface.d.ts +7 -0
- package/esm/chart/mosaic/interface.js +2 -0
- package/esm/chart/mosaic/interface.js.map +1 -0
- package/esm/chart/mosaic/mosaic-transformer.d.ts +9 -0
- package/esm/chart/mosaic/mosaic-transformer.js +37 -0
- package/esm/chart/mosaic/mosaic-transformer.js.map +1 -0
- package/esm/chart/mosaic/mosaic.d.ts +20 -0
- package/esm/chart/mosaic/mosaic.js +41 -0
- package/esm/chart/mosaic/mosaic.js.map +1 -0
- package/esm/chart/stack.d.ts +11 -1
- package/esm/chart/stack.js +5 -4
- package/esm/chart/stack.js.map +1 -1
- package/esm/compile/grammar-item.js +2 -1
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/crosshair/cartesian.js +8 -3
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/indicator/indicator.d.ts +1 -1
- package/esm/component/indicator/indicator.js +4 -4
- package/esm/component/indicator/indicator.js.map +1 -1
- package/esm/component/indicator/interface.d.ts +3 -1
- package/esm/component/indicator/interface.js.map +1 -1
- package/esm/component/label/interface.d.ts +2 -1
- package/esm/component/label/interface.js.map +1 -1
- package/esm/component/label/label.js +9 -5
- package/esm/component/label/label.js.map +1 -1
- package/esm/component/label/util.d.ts +9 -0
- package/esm/component/label/util.js +34 -5
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/marker/base-marker.d.ts +4 -3
- package/esm/component/marker/base-marker.js +6 -39
- package/esm/component/marker/base-marker.js.map +1 -1
- package/esm/component/marker/interface.d.ts +3 -3
- package/esm/component/marker/interface.js.map +1 -1
- package/esm/component/marker/mark-area/cartesian-mark-area.d.ts +2 -2
- package/esm/component/marker/mark-area/cartesian-mark-area.js.map +1 -1
- package/esm/component/marker/mark-area/interface/spec.d.ts +3 -2
- package/esm/component/marker/mark-area/interface/spec.js.map +1 -1
- package/esm/component/marker/mark-area/polar-mark-area.d.ts +2 -2
- package/esm/component/marker/mark-area/polar-mark-area.js.map +1 -1
- package/esm/component/marker/mark-line/cartesian-mark-line.d.ts +2 -2
- package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/interface/spec.d.ts +5 -5
- package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
- package/esm/component/marker/mark-line/polar-mark-line.d.ts +2 -2
- package/esm/component/marker/mark-line/polar-mark-line.js.map +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.d.ts +2 -2
- package/esm/component/marker/mark-point/cartesian-mark-point.js +1 -1
- package/esm/component/marker/mark-point/cartesian-mark-point.js.map +1 -1
- package/esm/component/marker/mark-point/geo-mark-point.d.ts +2 -1
- package/esm/component/marker/mark-point/geo-mark-point.js.map +1 -1
- package/esm/component/marker/mark-point/interface/spec.d.ts +4 -3
- package/esm/component/marker/mark-point/interface/spec.js.map +1 -1
- package/esm/component/marker/mark-point/polar-mark-point.d.ts +2 -1
- package/esm/component/marker/mark-point/polar-mark-point.js.map +1 -1
- package/esm/component/marker/utils.d.ts +2 -3
- package/esm/component/marker/utils.js +16 -14
- package/esm/component/marker/utils.js.map +1 -1
- package/esm/component/tooltip/interface/spec.d.ts +1 -0
- package/esm/component/tooltip/interface/spec.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +2 -1
- package/esm/component/tooltip/tooltip.js +5 -3
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/util.js +1 -2
- package/esm/constant/index.d.ts +5 -0
- package/esm/constant/index.js +10 -0
- package/esm/constant/index.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +3 -2
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +8 -6
- package/esm/core/vchart.js +45 -26
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/aggregation.d.ts +8 -3
- package/esm/data/transforms/aggregation.js +60 -2
- package/esm/data/transforms/aggregation.js.map +1 -1
- package/esm/data/transforms/stack-split.js +2 -2
- package/esm/data/transforms/stack-split.js.map +1 -1
- package/esm/model/interface.d.ts +4 -0
- package/esm/model/interface.js.map +1 -1
- package/esm/series/bar/bar.js +8 -8
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/base/base-series.js +7 -6
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/constant.d.ts +6 -0
- package/esm/series/base/constant.js +13 -0
- package/esm/series/base/constant.js.map +1 -1
- package/esm/series/interface/common.d.ts +2 -0
- package/esm/series/interface/common.js.map +1 -1
- package/esm/series/interface/series.d.ts +3 -1
- package/esm/series/interface/series.js.map +1 -1
- package/esm/series/interface/theme.d.ts +2 -0
- package/esm/series/interface/theme.js +2 -1
- package/esm/series/interface/theme.js.map +1 -1
- package/esm/series/interface/type.d.ts +2 -1
- package/esm/series/interface/type.js +1 -1
- package/esm/series/interface/type.js.map +1 -1
- package/esm/series/mosaic/interface.d.ts +16 -0
- package/esm/series/mosaic/interface.js +2 -0
- package/esm/series/mosaic/interface.js.map +1 -0
- package/esm/series/mosaic/mosaic.d.ts +16 -0
- package/esm/series/mosaic/mosaic.js +78 -0
- package/esm/series/mosaic/mosaic.js.map +1 -0
- package/esm/series/sankey/interface.d.ts +5 -4
- package/esm/series/sankey/interface.js.map +1 -1
- package/esm/series/sankey/sankey-transformer.d.ts +5 -0
- package/esm/series/sankey/sankey-transformer.js +8 -0
- package/esm/series/sankey/sankey-transformer.js.map +1 -0
- package/esm/series/sankey/sankey.d.ts +7 -2
- package/esm/series/sankey/sankey.js +49 -147
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/word-cloud/interface.d.ts +1 -1
- package/esm/series/word-cloud/interface.js.map +1 -1
- package/esm/theme/builtin/common/series/index.js +4 -1
- package/esm/theme/builtin/common/series/index.js.map +1 -1
- package/esm/theme/builtin/common/series/mosaic.d.ts +2 -0
- package/esm/theme/builtin/common/series/mosaic.js +23 -0
- package/esm/theme/builtin/common/series/mosaic.js.map +1 -0
- package/esm/util/data.d.ts +24 -1
- package/esm/util/data.js +86 -17
- package/esm/util/data.js.map +1 -1
- package/esm/util/style.d.ts +1 -0
- package/esm/util/style.js +8 -0
- package/esm/util/style.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
var __rest = this && this.__rest || function(s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0 && (t[p] = s[p]);
|
|
4
|
+
if (null != s && "function" == typeof Object.getOwnPropertySymbols) {
|
|
5
|
+
var i = 0;
|
|
6
|
+
for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]) && (t[p[i]] = s[p[i]]);
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
import { array, isArray, isFunction, isPlainObject, isString, isValid } from "@visactor/vutils";
|
|
2
12
|
|
|
3
13
|
import { variance, average, min, max, sum, standardDeviation, median } from "../../util/math";
|
|
4
14
|
|
|
15
|
+
import { isAggrSpec } from "../../component/marker/utils";
|
|
16
|
+
|
|
5
17
|
export const markerMin = (_data, opt) => {
|
|
6
18
|
const data = _data[0].latestData;
|
|
7
19
|
return min(data, opt.field);
|
|
@@ -38,8 +50,54 @@ export function markerMedian(_data, opt) {
|
|
|
38
50
|
}
|
|
39
51
|
|
|
40
52
|
export function markerAggregation(_data, options) {
|
|
53
|
+
let markerSource;
|
|
54
|
+
if (options.coordinates) {
|
|
55
|
+
const _a = options, {coordinates: coordinatesInOptions, coordinateType: coordinateType, getSeriesByIdOrIndex: getSeriesByIdOrIndex} = _a, rest = __rest(_a, [ "coordinates", "coordinateType", "getSeriesByIdOrIndex" ]);
|
|
56
|
+
let coordinates, option;
|
|
57
|
+
if (isFunction(coordinatesInOptions)) {
|
|
58
|
+
const relativeSeries = options.getRelativeSeries();
|
|
59
|
+
coordinates = coordinatesInOptions(relativeSeries.getData().getLatestData(), relativeSeries);
|
|
60
|
+
} else coordinates = coordinatesInOptions;
|
|
61
|
+
coordinates = array(coordinates), markerSource = coordinates.map((coordinate => {
|
|
62
|
+
const refRelativeSeries = getSeriesByIdOrIndex(coordinate.refRelativeSeriesId, coordinate.refRelativeSeriesIndex);
|
|
63
|
+
if ("cartesian" === coordinateType) {
|
|
64
|
+
const {xField: xField, yField: yField} = refRelativeSeries.getSpec(), {xFieldDim: xFieldDim, xFieldIndex: xFieldIndex, yFieldDim: yFieldDim, yFieldIndex: yFieldIndex} = coordinate;
|
|
65
|
+
let bindXField = xField;
|
|
66
|
+
isValid(xFieldIndex) && (bindXField = array(xField)[xFieldIndex]), xFieldDim && array(xField).includes(xFieldDim) && (bindXField = xFieldDim);
|
|
67
|
+
let bindYField = yField;
|
|
68
|
+
isValid(yFieldIndex) && (bindYField = array(yField)[yFieldIndex]), yFieldDim && array(yField).includes(yFieldDim) && (bindYField = yFieldDim),
|
|
69
|
+
option = Object.assign({
|
|
70
|
+
x: void 0,
|
|
71
|
+
y: void 0
|
|
72
|
+
}, rest), isString(coordinate[bindXField]) && isAggrSpec(coordinate[bindXField]) ? option.x = {
|
|
73
|
+
field: bindXField,
|
|
74
|
+
aggrType: coordinate[bindXField]
|
|
75
|
+
} : option.x = array(bindXField).map((field => coordinate[field])), isString(coordinate[bindYField]) && isAggrSpec(coordinate[bindYField]) ? option.y = {
|
|
76
|
+
field: bindYField,
|
|
77
|
+
aggrType: coordinate[bindYField]
|
|
78
|
+
} : option.y = array(bindYField).map((field => coordinate[field]));
|
|
79
|
+
} else if ("polar" === coordinateType) {
|
|
80
|
+
const {valueField: radiusField, categoryField: angleField} = refRelativeSeries.getSpec(), {angleFieldDim: angleFieldDim, angleFieldIndex: angleFieldIndex} = coordinate;
|
|
81
|
+
let bindAngleField = angleField;
|
|
82
|
+
isValid(angleFieldIndex) && (bindAngleField = array(angleField)[angleFieldIndex]),
|
|
83
|
+
angleFieldDim && array(angleField).includes(angleFieldDim) && (bindAngleField = angleFieldDim);
|
|
84
|
+
const bindRadiusField = radiusField;
|
|
85
|
+
option = Object.assign({
|
|
86
|
+
angle: void 0,
|
|
87
|
+
radius: void 0
|
|
88
|
+
}, rest), isString(coordinate[bindAngleField]) && isAggrSpec(coordinate[bindAngleField]) ? option.angle = {
|
|
89
|
+
field: bindAngleField,
|
|
90
|
+
aggrType: coordinate[bindAngleField]
|
|
91
|
+
} : option.angle = array(bindAngleField).map((field => coordinate[field])), isString(coordinate[bindRadiusField]) && isAggrSpec(coordinate[bindRadiusField]) ? option.radius = {
|
|
92
|
+
field: bindRadiusField,
|
|
93
|
+
aggrType: coordinate[bindRadiusField]
|
|
94
|
+
} : option.radius = array(bindRadiusField).map((field => coordinate[field]));
|
|
95
|
+
}
|
|
96
|
+
return option.getRefRelativeSeries = () => refRelativeSeries, option;
|
|
97
|
+
}));
|
|
98
|
+
} else markerSource = options;
|
|
41
99
|
const results = [];
|
|
42
|
-
return
|
|
100
|
+
return markerSource.forEach((option => {
|
|
43
101
|
const result = {
|
|
44
102
|
x: null,
|
|
45
103
|
y: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/aggregation.ts"],"names":[],"mappings":"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","file":"aggregation.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { IAggrType, IMarkerSupportSeries } from '../../component/marker/interface';\nimport type { Datum, StringOrNumber } from '../../typings';\n\nimport { isArray, isFunction, isPlainObject, isValid } from '@visactor/vutils';\nimport { variance, average, min, max, sum, standardDeviation, median } from '../../util/math';\n\nexport type IOption = {\n field: string;\n};\n\nexport type IOptionAggrField = {\n field: string;\n aggrType: IAggrType;\n};\n\nexport type IOptionPos = IOptionAggrField | string | number | StringOrNumber[];\n\nexport type IOptionSeries = {\n getRelativeSeries: () => IMarkerSupportSeries;\n getStartRelativeSeries: () => IMarkerSupportSeries;\n getEndRelativeSeries: () => IMarkerSupportSeries;\n};\n\nexport type IOptionCallback = (\n relativeSeriesData: any,\n startRelativeSeriesData: any,\n endRelativeSeriesData: any,\n relativeSeries: IMarkerSupportSeries,\n startRelative: IMarkerSupportSeries,\n endRelative: IMarkerSupportSeries\n) => IOptionPos;\n\nexport type IOptionAggr = {\n x?: IOptionPos | IOptionCallback;\n y?: IOptionPos | IOptionCallback;\n angle?: IOptionPos | IOptionCallback;\n radius?: IOptionPos | IOptionCallback;\n areaName?: string | IOptionCallback;\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n} & IOptionSeries;\n\nexport const markerMin = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return min(data, opt.field);\n};\nexport const markerMax = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return max(data, opt.field);\n};\n\nexport function markerSum(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return sum(data, opt.field);\n}\nexport function markerAverage(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return average(data, opt.field);\n}\n\nexport function markerVariance(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return variance(data, opt.field);\n}\n\nexport function markerStandardDeviation(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return standardDeviation(data, opt.field);\n}\n\nexport function markerMedian(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return median(data, opt.field);\n}\n\nexport function markerAggregation(_data: Array<DataView>, options: IOptionAggr[]) {\n const results: {\n x: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n y: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n angle: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n radius: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n areaName: string | IOptionCallback | null;\n }[] = [];\n options.forEach(option => {\n const result: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n angle: StringOrNumber[] | StringOrNumber | null;\n radius: StringOrNumber[] | StringOrNumber | null;\n areaName: string | null;\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n } = { x: null, y: null, angle: null, radius: null, areaName: null };\n\n if (isValid(option.x)) {\n const x = option.x;\n\n if (isArray(x)) {\n result.x = x.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.x = getFinalValue(x, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.y)) {\n const y = option.y;\n if (isArray(y)) {\n result.y = y.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.y = getFinalValue(y, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.angle)) {\n const angle = option.angle;\n if (isArray(angle)) {\n result.angle = angle.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.angle = getFinalValue(angle, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.radius)) {\n const radius = option.radius;\n if (isArray(radius)) {\n result.radius = radius.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.radius = getFinalValue(radius, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.areaName)) {\n const name = option.areaName;\n result.areaName = getFinalValue(name, _data, option) as string;\n }\n if (option.getRefRelativeSeries) {\n result.getRefRelativeSeries = option.getRefRelativeSeries;\n }\n results.push(result);\n });\n\n return results;\n}\n\nconst aggrMap = {\n min: markerMin,\n max: markerMax,\n sum: markerSum,\n average: markerAverage,\n variance: markerVariance,\n standardDeviation: markerStandardDeviation,\n median: markerMedian\n};\n\nfunction getFinalValue(source: IOptionPos | IOptionCallback, _data: Array<DataView>, option: IOptionAggr) {\n const relativeSeries = option.getRelativeSeries();\n const startSeries = option.getStartRelativeSeries();\n const endSeries = option.getEndRelativeSeries();\n const relativeSeriesData = relativeSeries.getData().getLatestData();\n const startRelativeSeriesData = startSeries.getData().getLatestData();\n const endRelativeSeriesData = endSeries.getData().getLatestData();\n\n if (isFunction(source)) {\n return source(\n relativeSeriesData,\n startRelativeSeriesData,\n endRelativeSeriesData,\n relativeSeries,\n startSeries,\n endSeries\n ) as StringOrNumber[] | StringOrNumber;\n }\n if (isPlainObject(source)) {\n const { aggrType, field } = source as IOptionAggrField;\n return aggrMap[aggrType](_data, { field: field });\n }\n\n return source;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/aggregation.ts"],"names":[],"mappings":"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","file":"aggregation.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type {\n IAggrType,\n ICoordinateOption,\n IDataPointSpec,\n IDataPos,\n IMarkerSupportSeries\n} from '../../component/marker/interface';\nimport type { CoordinateType, Datum, StringOrNumber } from '../../typings';\n\nimport { array, isArray, isFunction, isPlainObject, isString, isValid } from '@visactor/vutils';\nimport { variance, average, min, max, sum, standardDeviation, median } from '../../util/math';\nimport { isAggrSpec } from '../../component/marker/utils';\n\nexport type IOption = {\n field: string;\n};\n\nexport type IOptionAggrField = {\n field: string;\n aggrType: IAggrType;\n};\n\nexport type IOptionPos = IOptionAggrField | string | number | StringOrNumber[];\n\nexport type IOptionSeries = {\n getRelativeSeries: () => IMarkerSupportSeries;\n getStartRelativeSeries: () => IMarkerSupportSeries;\n getEndRelativeSeries: () => IMarkerSupportSeries;\n};\n\nexport type IOptionCallback = (\n relativeSeriesData: any,\n startRelativeSeriesData: any,\n endRelativeSeriesData: any,\n relativeSeries: IMarkerSupportSeries,\n startRelative: IMarkerSupportSeries,\n endRelative: IMarkerSupportSeries\n) => IOptionPos;\n\nexport type IOptionAggr = {\n x?: IOptionPos | IOptionCallback;\n y?: IOptionPos | IOptionCallback;\n angle?: IOptionPos | IOptionCallback;\n radius?: IOptionPos | IOptionCallback;\n areaName?: string | IOptionCallback;\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n} & IOptionSeries;\n\nexport type IOptionWithCoordinates = {\n coordinates:\n | ((seriesData: Datum[], relativeSeries: IMarkerSupportSeries) => IDataPointSpec[] | IDataPointSpec)\n | IDataPointSpec\n | IDataPointSpec[];\n getSeriesByIdOrIndex: (seriesUserId: StringOrNumber, seriesIndex: number) => IMarkerSupportSeries;\n coordinateType: CoordinateType;\n} & IOptionSeries;\n\nexport const markerMin = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return min(data, opt.field);\n};\nexport const markerMax = (_data: Array<DataView>, opt: IOption) => {\n const data = _data[0].latestData as Datum[];\n\n return max(data, opt.field);\n};\n\nexport function markerSum(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return sum(data, opt.field);\n}\nexport function markerAverage(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return average(data, opt.field);\n}\n\nexport function markerVariance(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return variance(data, opt.field);\n}\n\nexport function markerStandardDeviation(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return standardDeviation(data, opt.field);\n}\n\nexport function markerMedian(_data: Array<DataView>, opt: IOption) {\n const data = _data[0].latestData;\n\n return median(data, opt.field);\n}\n\nexport function markerAggregation(_data: Array<DataView>, options: IOptionWithCoordinates | IOptionAggr[]) {\n let markerSource: IOptionAggr[];\n if ((options as IOptionWithCoordinates).coordinates) {\n const {\n coordinates: coordinatesInOptions,\n coordinateType,\n getSeriesByIdOrIndex,\n ...rest\n } = options as IOptionWithCoordinates;\n let coordinates;\n if (isFunction(coordinatesInOptions)) {\n const relativeSeries = (options as IOptionWithCoordinates).getRelativeSeries();\n coordinates = coordinatesInOptions(relativeSeries.getData().getLatestData(), relativeSeries);\n } else {\n coordinates = coordinatesInOptions;\n }\n coordinates = array(coordinates);\n let option: IOptionAggr;\n\n markerSource = coordinates.map((coordinate: IDataPointSpec) => {\n const refRelativeSeries = getSeriesByIdOrIndex(coordinate.refRelativeSeriesId, coordinate.refRelativeSeriesIndex);\n\n if (coordinateType === 'cartesian') {\n const { xField, yField } = refRelativeSeries.getSpec();\n const { xFieldDim, xFieldIndex, yFieldDim, yFieldIndex } = coordinate;\n let bindXField = xField;\n if (isValid(xFieldIndex)) {\n bindXField = array(xField)[xFieldIndex];\n }\n if (xFieldDim && array(xField).includes(xFieldDim)) {\n bindXField = xFieldDim;\n }\n\n let bindYField = yField;\n if (isValid(yFieldIndex)) {\n bindYField = array(yField)[yFieldIndex];\n }\n if (yFieldDim && array(yField).includes(yFieldDim)) {\n bindYField = yFieldDim;\n }\n\n option = {\n x: undefined,\n y: undefined,\n ...rest\n };\n\n if (isString(coordinate[bindXField]) && isAggrSpec(coordinate[bindXField] as IDataPos)) {\n option.x = { field: bindXField, aggrType: coordinate[bindXField] as IAggrType };\n } else {\n option.x = array(bindXField).map(field => coordinate[field]) as StringOrNumber[];\n }\n\n if (isString(coordinate[bindYField]) && isAggrSpec(coordinate[bindYField] as IDataPos)) {\n option.y = { field: bindYField, aggrType: coordinate[bindYField] as IAggrType };\n } else {\n option.y = array(bindYField).map(field => coordinate[field]) as StringOrNumber[];\n }\n } else if (coordinateType === 'polar') {\n const { valueField: radiusField, categoryField: angleField } = refRelativeSeries.getSpec();\n const { angleFieldDim, angleFieldIndex } = coordinate;\n let bindAngleField = angleField;\n if (isValid(angleFieldIndex)) {\n bindAngleField = array(angleField)[angleFieldIndex];\n }\n if (angleFieldDim && array(angleField).includes(angleFieldDim)) {\n bindAngleField = angleFieldDim;\n }\n\n const bindRadiusField = radiusField;\n\n option = {\n angle: undefined,\n radius: undefined,\n ...rest\n };\n\n if (isString(coordinate[bindAngleField]) && isAggrSpec(coordinate[bindAngleField] as IDataPos)) {\n option.angle = { field: bindAngleField, aggrType: coordinate[bindAngleField] as IAggrType };\n } else {\n option.angle = array(bindAngleField).map(field => coordinate[field]) as StringOrNumber[];\n }\n\n if (isString(coordinate[bindRadiusField]) && isAggrSpec(coordinate[bindRadiusField] as IDataPos)) {\n option.radius = { field: bindRadiusField, aggrType: coordinate[bindRadiusField] as IAggrType };\n } else {\n option.radius = array(bindRadiusField).map(field => coordinate[field]) as StringOrNumber[];\n }\n }\n\n option.getRefRelativeSeries = () => refRelativeSeries;\n return option;\n });\n } else {\n markerSource = options as IOptionAggr[];\n }\n\n const results: {\n x: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n y: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n angle: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n radius: StringOrNumber[] | StringOrNumber | IOptionCallback | null;\n areaName: string | IOptionCallback | null;\n }[] = [];\n markerSource.forEach(option => {\n const result: {\n x: StringOrNumber[] | StringOrNumber | null;\n y: StringOrNumber[] | StringOrNumber | null;\n angle: StringOrNumber[] | StringOrNumber | null;\n radius: StringOrNumber[] | StringOrNumber | null;\n areaName: string | null;\n getRefRelativeSeries?: () => IMarkerSupportSeries;\n } = { x: null, y: null, angle: null, radius: null, areaName: null };\n\n if (isValid(option.x)) {\n const x = option.x;\n\n if (isArray(x)) {\n result.x = x.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.x = getFinalValue(x, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.y)) {\n const y = option.y;\n if (isArray(y)) {\n result.y = y.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.y = getFinalValue(y, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.angle)) {\n const angle = option.angle;\n if (isArray(angle)) {\n result.angle = angle.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.angle = getFinalValue(angle, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.radius)) {\n const radius = option.radius;\n if (isArray(radius)) {\n result.radius = radius.map(item => getFinalValue(item, _data, option)) as StringOrNumber[];\n } else {\n result.radius = getFinalValue(radius, _data, option) as StringOrNumber;\n }\n }\n if (isValid(option.areaName)) {\n const name = option.areaName;\n result.areaName = getFinalValue(name, _data, option) as string;\n }\n if (option.getRefRelativeSeries) {\n result.getRefRelativeSeries = option.getRefRelativeSeries;\n }\n results.push(result);\n });\n\n return results;\n}\n\nconst aggrMap = {\n min: markerMin,\n max: markerMax,\n sum: markerSum,\n average: markerAverage,\n variance: markerVariance,\n standardDeviation: markerStandardDeviation,\n median: markerMedian\n};\n\nfunction getFinalValue(source: IOptionPos | IOptionCallback, _data: Array<DataView>, option: IOptionAggr) {\n const relativeSeries = option.getRelativeSeries();\n const startSeries = option.getStartRelativeSeries();\n const endSeries = option.getEndRelativeSeries();\n const relativeSeriesData = relativeSeries.getData().getLatestData();\n const startRelativeSeriesData = startSeries.getData().getLatestData();\n const endRelativeSeriesData = endSeries.getData().getLatestData();\n\n if (isFunction(source)) {\n return source(\n relativeSeriesData,\n startRelativeSeriesData,\n endRelativeSeriesData,\n relativeSeries,\n startSeries,\n endSeries\n ) as StringOrNumber[] | StringOrNumber;\n }\n if (isPlainObject(source)) {\n const { aggrType, field } = source as IOptionAggrField;\n return aggrMap[aggrType](_data, { field: field });\n }\n\n return source;\n}\n"]}
|
|
@@ -11,9 +11,9 @@ export const stackSplit = (data, op) => {
|
|
|
11
11
|
dv.latestData.forEach((d => {
|
|
12
12
|
temp = result;
|
|
13
13
|
for (let i = 0; i < fields.length; i++) {
|
|
14
|
-
const
|
|
14
|
+
const f = fields[i], fV = d[f];
|
|
15
15
|
if (isNil(fV)) break;
|
|
16
|
-
temp.nodes[fV] || (i === lastFieldIndex ? temp.nodes[fV] = {
|
|
16
|
+
temp.groupField = f, temp.nodes[fV] || (i === lastFieldIndex ? temp.nodes[fV] = {
|
|
17
17
|
values: []
|
|
18
18
|
} : (nextNode = {
|
|
19
19
|
nodes: {}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/stack-split.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAE,EAAgB,EAAE,EAAE;IACpE,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,GAAyB,MAAM,CAAC;IACxC,IAAI,QAA8B,CAAC;IACnC,IAAI,IAA0B,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAChB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE;YACjC,IAAI,GAAG,MAAM,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;oBACb,MAAM;iBACP;gBACD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACnB,IAAI,CAAC,KAAK,cAAc,EAAE;wBACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;qBACjC;yBAAM;wBACL,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;wBACzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;qBAC3B;iBACF;gBACD,IAAI,CAAC,KAAK,cAAc,EAAE;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACrB;qBAAM;oBACL,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;iBAC/C;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","file":"stack-split.js","sourcesContent":["import type { ISeriesStackData, ISeriesStackDataLeaf, ISeriesStackDataNode } from '../../series/interface';\nimport { isNil } from '@visactor/vutils';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\n\nexport interface IStackOption {\n fields: string[];\n}\n\nexport const stackSplit = (data: Array<DataView>, op: IStackOption) => {\n const result: ISeriesStackData = {\n nodes: {}\n };\n const { fields } = op;\n if (!fields?.length) {\n return result;\n }\n const lastFieldIndex = fields.length - 1;\n let temp: ISeriesStackDataNode = result;\n let nextNode: ISeriesStackDataNode;\n let leaf: ISeriesStackDataLeaf;\n data.forEach(dv => {\n dv.latestData.forEach((d: Datum) => {\n temp = result;\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n const fV = d[f];\n if (isNil(fV)) {\n break;\n }\n if (!temp.nodes[fV]) {\n if (i === lastFieldIndex) {\n temp.nodes[fV] = { values: [] };\n } else {\n nextNode = { nodes: {} };\n temp.nodes[fV] = nextNode;\n }\n }\n if (i === lastFieldIndex) {\n leaf = temp.nodes[fV] as ISeriesStackDataLeaf;\n leaf.values.push(d);\n } else {\n temp = temp.nodes[fV] as ISeriesStackDataNode;\n }\n }\n });\n });\n return result;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/stack-split.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAQzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAE,EAAgB,EAAE,EAAE;IACpE,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,EAAE;KACV,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,IAAI,IAAI,GAAyB,MAAM,CAAC;IACxC,IAAI,QAA8B,CAAC;IACnC,IAAI,IAA0B,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAChB,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAQ,EAAE,EAAE;YACjC,IAAI,GAAG,MAAM,CAAC;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChB,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE;oBACb,MAAM;iBACP;gBACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;oBACnB,IAAI,CAAC,KAAK,cAAc,EAAE;wBACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;qBACjC;yBAAM;wBACL,QAAQ,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;wBACzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;qBAC3B;iBACF;gBACD,IAAI,CAAC,KAAK,cAAc,EAAE;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACrB;qBAAM;oBACL,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAyB,CAAC;iBAC/C;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC","file":"stack-split.js","sourcesContent":["import type { ISeriesStackData, ISeriesStackDataLeaf, ISeriesStackDataNode } from '../../series/interface';\nimport { isNil } from '@visactor/vutils';\nimport type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\n\nexport interface IStackOption {\n fields: string[];\n}\n\nexport const stackSplit = (data: Array<DataView>, op: IStackOption) => {\n const result: ISeriesStackData = {\n nodes: {}\n };\n const { fields } = op;\n if (!fields?.length) {\n return result;\n }\n const lastFieldIndex = fields.length - 1;\n let temp: ISeriesStackDataNode = result;\n let nextNode: ISeriesStackDataNode;\n let leaf: ISeriesStackDataLeaf;\n data.forEach(dv => {\n dv.latestData.forEach((d: Datum) => {\n temp = result;\n for (let i = 0; i < fields.length; i++) {\n const f = fields[i];\n const fV = d[f];\n if (isNil(fV)) {\n break;\n }\n temp.groupField = f;\n if (!temp.nodes[fV]) {\n if (i === lastFieldIndex) {\n temp.nodes[fV] = { values: [] };\n } else {\n nextNode = { nodes: {} };\n temp.nodes[fV] = nextNode;\n }\n }\n if (i === lastFieldIndex) {\n leaf = temp.nodes[fV] as ISeriesStackDataLeaf;\n leaf.values.push(d);\n } else {\n temp = temp.nodes[fV] as ISeriesStackDataNode;\n }\n }\n });\n });\n return result;\n};\n"]}
|
package/esm/model/interface.d.ts
CHANGED
|
@@ -44,6 +44,10 @@ export interface IUpdateSpecResult {
|
|
|
44
44
|
reSize?: boolean;
|
|
45
45
|
reCompile?: boolean;
|
|
46
46
|
reTransformSpec?: boolean;
|
|
47
|
+
reAnimate?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface IUpdateDataResult {
|
|
50
|
+
reAnimate?: boolean;
|
|
47
51
|
}
|
|
48
52
|
export interface IModelProduct {
|
|
49
53
|
srData: IData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n reAnimate?: boolean;\n}\n\nexport interface IUpdateDataResult {\n reAnimate?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n getMarkInfoList: () => IModelMarkInfo[];\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
|
package/esm/series/bar/bar.js
CHANGED
|
@@ -2,7 +2,7 @@ import { isContinuous } from "@visactor/vscale";
|
|
|
2
2
|
|
|
3
3
|
import { CartesianSeries } from "../cartesian/cartesian";
|
|
4
4
|
|
|
5
|
-
import { AttributeLevel, STACK_FIELD_END, STACK_FIELD_END_PERCENT, STACK_FIELD_START, STACK_FIELD_START_PERCENT } from "../../constant";
|
|
5
|
+
import { AttributeLevel, DEFAULT_DATA_KEY, STACK_FIELD_END, STACK_FIELD_END_PERCENT, STACK_FIELD_START, STACK_FIELD_START_PERCENT } from "../../constant";
|
|
6
6
|
|
|
7
7
|
import { valueInScaleRange } from "../../util/scale";
|
|
8
8
|
|
|
@@ -143,15 +143,16 @@ export class BarSeries extends CartesianSeries {
|
|
|
143
143
|
if (registerDataSetInstanceTransform(this._option.dataSet, "addVChartProperty", addVChartProperty),
|
|
144
144
|
hasBandAxis) {
|
|
145
145
|
const dimensionItems = ([data], {scaleDepth: scaleDepth}) => {
|
|
146
|
-
var _a;
|
|
146
|
+
var _a, _b;
|
|
147
147
|
let dataCollect = [ {} ];
|
|
148
148
|
const fields = this.getDimensionField(), depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);
|
|
149
149
|
for (let i = 0; i < depth; i++) {
|
|
150
150
|
const field = fields[i], values = null === (_a = data.latestData[field]) || void 0 === _a ? void 0 : _a.values;
|
|
151
151
|
if (!(null == values ? void 0 : values.length)) continue;
|
|
152
|
-
const newDataCollect = [];
|
|
152
|
+
const newDataCollect = [], dataKey = null !== (_b = this._spec.dataKey) && void 0 !== _b ? _b : DEFAULT_DATA_KEY;
|
|
153
153
|
for (let j = 0; j < values.length; j++) for (let k = 0; k < dataCollect.length; k++) newDataCollect.push(Object.assign(Object.assign({}, dataCollect[k]), {
|
|
154
|
-
[field]: values[j]
|
|
154
|
+
[field]: values[j],
|
|
155
|
+
[dataKey]: values[j]
|
|
155
156
|
}));
|
|
156
157
|
dataCollect = newDataCollect;
|
|
157
158
|
}
|
|
@@ -374,11 +375,10 @@ export class BarSeries extends CartesianSeries {
|
|
|
374
375
|
}
|
|
375
376
|
_getBarWidth(axisHelper, scaleDepth) {
|
|
376
377
|
var _a, _b;
|
|
377
|
-
const depthFromSpec = this._groups ? this._groups.fields.length : 1, depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth), bandWidth = null !== (_b = null === (_a = axisHelper.getBandwidth) || void 0 === _a ? void 0 : _a.call(axisHelper, depth - 1)) && void 0 !== _b ? _b : 6;
|
|
378
|
-
if (void 0 !== this._spec.barWidth && depth === depthFromSpec) return getActualNumValue(this._spec.barWidth, bandWidth);
|
|
379
|
-
const hasBarMinWidth = void 0 !== this._spec.barMinWidth, hasBarMaxWidth = void 0 !== this._spec.barMaxWidth;
|
|
378
|
+
const depthFromSpec = this._groups ? this._groups.fields.length : 1, depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth), bandWidth = null !== (_b = null === (_a = axisHelper.getBandwidth) || void 0 === _a ? void 0 : _a.call(axisHelper, depth - 1)) && void 0 !== _b ? _b : 6, hasBarWidth = void 0 !== this._spec.barWidth && depth === depthFromSpec, hasBarMinWidth = void 0 !== this._spec.barMinWidth, hasBarMaxWidth = void 0 !== this._spec.barMaxWidth;
|
|
380
379
|
let width = bandWidth;
|
|
381
|
-
return
|
|
380
|
+
return hasBarWidth && (width = getActualNumValue(this._spec.barWidth, bandWidth)),
|
|
381
|
+
hasBarMinWidth && (width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth))),
|
|
382
382
|
hasBarMaxWidth && (width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth))),
|
|
383
383
|
width;
|
|
384
384
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IMarkProgressiveConfig } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n AttributeLevel,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant';\nimport type { Datum, DirectionType } from '../../typings';\nimport { valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport type { BarAppearPreset, IBarAnimationParams } from './animation';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { IBarSeriesSpec } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IRectMark } from '../../mark/rect';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { ITextMark } from '../../mark/text';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { registerSampleTransform } from '@visactor/vgrammar-core';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type = SeriesTypeEnum.bar;\n protected _barMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.bar;\n protected _barMarkType: MarkTypeEnum = MarkTypeEnum.rect;\n\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: SeriesData;\n\n initMark(): void {\n const progressive = {\n progressiveStep: this._spec.progressiveStep,\n progressiveThreshold: this._spec.progressiveThreshold,\n large: this._spec.large,\n largeThreshold: this._spec.largeThreshold\n };\n\n this._initBarBackgroundMark(progressive);\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._barMarkName),\n defaultMorphElementKey: this.getDimensionField()[0],\n groupKey: this._seriesField,\n isSeriesMark: true,\n progressive,\n customShape: this._spec.bar?.customShape,\n stateSort: this._spec.bar?.stateSort\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(progressive?: IMarkProgressiveConfig): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId(),\n progressive,\n customShape: this._spec.barBackground.customShape,\n stateSort: this._spec.barBackground.stateSort\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new SeriesData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale);\n\n let height = Math.abs(y1 - y);\n if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n this._barMark.setClip(() => {\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n rectPaths.push(\n createRect({\n ...(this.direction === Direction.horizontal\n ? {\n x: this._getBarXStart(mockDatum, xScale),\n x1: this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: this._getBarYStart(mockDatum, yScale),\n y1: this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n }),\n cornerRadius: this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => valueInScaleRange(this._dataToPosY(datum), yScale),\n y1: (datum: Datum) => valueInScaleRange(this._dataToPosY1(datum), yScale)\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => valueInScaleRange(this._dataToPosX(datum), xScale),\n x1: (datum: Datum) => valueInScaleRange(this._dataToPosX1(datum), xScale)\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = this._spec.barWidth !== undefined && depth === depthFromSpec;\n\n if (hasBarWidth) {\n return getActualNumValue(this._spec.barWidth, bandWidth);\n }\n const hasBarMinWidth = this._spec.barMinWidth !== undefined;\n const hasBarMaxWidth = this._spec.barMaxWidth !== undefined;\n let width = bandWidth;\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const samplingTrans = [];\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n samplingTrans.push({\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n });\n this._data.getProduct().transform(samplingTrans);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerSampleTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IMarkProgressiveConfig } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n AttributeLevel,\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant';\nimport type { Datum, DirectionType } from '../../typings';\nimport { valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport type { BarAppearPreset, IBarAnimationParams } from './animation';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { IBarSeriesSpec } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IRectMark } from '../../mark/rect';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { ITextMark } from '../../mark/text';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { registerSampleTransform } from '@visactor/vgrammar-core';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type = SeriesTypeEnum.bar;\n protected _barMarkName: SeriesMarkNameEnum = SeriesMarkNameEnum.bar;\n protected _barMarkType: MarkTypeEnum = MarkTypeEnum.rect;\n\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: SeriesData;\n\n initMark(): void {\n const progressive = {\n progressiveStep: this._spec.progressiveStep,\n progressiveThreshold: this._spec.progressiveThreshold,\n large: this._spec.large,\n largeThreshold: this._spec.largeThreshold\n };\n\n this._initBarBackgroundMark(progressive);\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n morph: shouldMarkDoMorph(this._spec, this._barMarkName),\n defaultMorphElementKey: this.getDimensionField()[0],\n groupKey: this._seriesField,\n isSeriesMark: true,\n progressive,\n customShape: this._spec.bar?.customShape,\n stateSort: this._spec.bar?.stateSort\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(progressive?: IMarkProgressiveConfig): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId(),\n progressive,\n customShape: this._spec.barBackground.customShape,\n stateSort: this._spec.barBackground.stateSort\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new SeriesData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale);\n\n let height = Math.abs(y1 - y);\n if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n this._barMark.setClip(() => {\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n rectPaths.push(\n createRect({\n ...(this.direction === Direction.horizontal\n ? {\n x: this._getBarXStart(mockDatum, xScale),\n x1: this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: this._getBarYStart(mockDatum, yScale),\n y1: this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n }),\n cornerRadius: this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => valueInScaleRange(this._dataToPosY(datum), yScale),\n y1: (datum: Datum) => valueInScaleRange(this._dataToPosY1(datum), yScale)\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => valueInScaleRange(this._dataToPosX(datum), xScale),\n x1: (datum: Datum) => valueInScaleRange(this._dataToPosX1(datum), xScale)\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = this._spec.barWidth !== undefined && depth === depthFromSpec;\n\n const hasBarMinWidth = this._spec.barMinWidth !== undefined;\n const hasBarMaxWidth = this._spec.barMaxWidth !== undefined;\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(ctx: any): void {\n super.onLayoutEnd(ctx);\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const samplingTrans = [];\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n samplingTrans.push({\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n });\n this._data.getProduct().transform(samplingTrans);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerSampleTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
|
|
@@ -38,7 +38,7 @@ import { array, isEqual, isNil, isValid, isBoolean, isString, isFunction, isArra
|
|
|
38
38
|
|
|
39
39
|
import { ColorOrdinalScale } from "../../scale/color-ordinal-scale";
|
|
40
40
|
|
|
41
|
-
import { baseSeriesMark } from "./constant";
|
|
41
|
+
import { baseSeriesMark, defaultSeriesIgnoreCheckKeys, defaultSeriesCompileCheckKeys } from "./constant";
|
|
42
42
|
|
|
43
43
|
import { animationConfig, userAnimationConfig, isAnimationEnabledForSeries } from "../../animation/utils";
|
|
44
44
|
|
|
@@ -554,15 +554,15 @@ export class BaseSeries extends BaseModel {
|
|
|
554
554
|
_compareSpec(spec, prevSpec, ignoreCheckKeys) {
|
|
555
555
|
var _a, _b;
|
|
556
556
|
const result = super._compareSpec(spec, prevSpec), currentKeys = Object.keys(prevSpec || {}).sort(), nextKeys = Object.keys(spec || {}).sort();
|
|
557
|
-
return isEqual(currentKeys, nextKeys) ? ((ignoreCheckKeys =
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
ignoreCheckKeys.extensionMark = !0, (array(spec.extensionMark).length !== array(prevSpec.extensionMark).length || (null === (_a = prevSpec.extensionMark) || void 0 === _a ? void 0 : _a.some(((mark, index) => mark.type !== spec.extensionMark[index].type || mark.id !== spec.extensionMark[index].id)))) && (result.reMake = !0),
|
|
557
|
+
return isEqual(currentKeys, nextKeys) ? ((ignoreCheckKeys = Object.assign(Object.assign(Object.assign({}, defaultSeriesIgnoreCheckKeys), defaultSeriesCompileCheckKeys), ignoreCheckKeys)).invalidType = !0,
|
|
558
|
+
spec.invalidType !== prevSpec.invalidType && (result.reCompile = !0), ignoreCheckKeys.extensionMark = !0,
|
|
559
|
+
(array(spec.extensionMark).length !== array(prevSpec.extensionMark).length || (null === (_a = prevSpec.extensionMark) || void 0 === _a ? void 0 : _a.some(((mark, index) => mark.type !== spec.extensionMark[index].type || mark.id !== spec.extensionMark[index].id)))) && (result.reMake = !0),
|
|
561
560
|
result.reMake ? result : ((null === (_b = prevSpec.extensionMark) || void 0 === _b ? void 0 : _b.some(((mark, index) => mark.visible !== spec.extensionMark[index].visible))) && (result.reCompile = !0),
|
|
562
561
|
this._marks.getMarks().some((m => {
|
|
563
562
|
var _a, _b;
|
|
564
563
|
return ignoreCheckKeys[m.name] = !0, (null === (_a = prevSpec[m.name]) || void 0 === _a ? void 0 : _a.visible) !== (null === (_b = spec[m.name]) || void 0 === _b ? void 0 : _b.visible);
|
|
565
|
-
})) && (result.reCompile = !0), currentKeys.some((k =>
|
|
564
|
+
})) && (result.reCompile = !0), currentKeys.some((k => defaultSeriesCompileCheckKeys[k] && !isEqual(spec[k], prevSpec[k]))) && (result.reCompile = !0),
|
|
565
|
+
currentKeys.some((k => !ignoreCheckKeys[k] && !isEqual(spec[k], prevSpec[k]))) ? (result.reMake = !0,
|
|
566
566
|
result) : result)) : (result.reMake = !0, result);
|
|
567
567
|
}
|
|
568
568
|
_updateSpecData() {
|
|
@@ -576,6 +576,7 @@ export class BaseSeries extends BaseModel {
|
|
|
576
576
|
})), this.initMarkStyle(), marks.forEach((mark => {
|
|
577
577
|
mark.updateStaticEncode(), mark.updateLayoutState(!0);
|
|
578
578
|
})), this._updateExtensionMarkSpec(), this._updateSpecData(), this._tooltipHelper && this._tooltipHelper.updateTooltipSpec();
|
|
579
|
+
isAnimationEnabledForSeries(this) && this.initAnimation();
|
|
579
580
|
}
|
|
580
581
|
onEvaluateEnd(ctx) {
|
|
581
582
|
this._data.updateData();
|