@easyv/charts 1.10.22 → 1.10.24
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/lib/components/StereoBar.js +4 -3
- package/lib/utils/index.js +33 -9
- package/package.json +1 -1
- package/src/components/Legend.js +5 -3
- package/src/components/StereoBar.tsx +15 -11
- package/src/utils/index.js +30 -1
|
@@ -71,6 +71,7 @@ var getBorderRadius = function getBorderRadius(_ref2) {
|
|
|
71
71
|
};
|
|
72
72
|
var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref3) {
|
|
73
73
|
var triggerClick = _ref3.triggerClick,
|
|
74
|
+
triggerEvents = _ref3.triggerEvents,
|
|
74
75
|
maxWidth1 = _ref3.maxWidth,
|
|
75
76
|
config = _ref3.config,
|
|
76
77
|
_ref3$config = _ref3.config,
|
|
@@ -109,8 +110,8 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
|
|
|
109
110
|
seriesStart = _getSeriesInfo.seriesStart;
|
|
110
111
|
var _data = showHighlight ? getHighlightData(data, extent) : data;
|
|
111
112
|
var isVertical = direction === "vertical";
|
|
112
|
-
var highlightColor = parseMultiColorToSVG(highlightFill, "highlight_gradient_" + id + "_" + name);
|
|
113
|
-
var color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
|
|
113
|
+
var highlightColor = parseMultiColorToSVG((0, _utils.reverseGradientStops)(highlightFill), "highlight_gradient_" + id + "_" + name);
|
|
114
|
+
var color = parseMultiColorToSVG((0, _utils.reverseGradientStops)(fill), "gradient_" + id + "_" + name);
|
|
114
115
|
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
115
116
|
className: "__easyv-band"
|
|
116
117
|
}, /*#__PURE__*/_react["default"].createElement("defs", null, /*#__PURE__*/_react["default"].createElement("filter", {
|
|
@@ -161,7 +162,7 @@ var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(function (_ref
|
|
|
161
162
|
});
|
|
162
163
|
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
163
164
|
key: i,
|
|
164
|
-
onClick:
|
|
165
|
+
onClick: triggerEvents,
|
|
165
166
|
"data-data": JSON.stringify(data)
|
|
166
167
|
}, /*#__PURE__*/_react["default"].createElement(Column3DSkin, (0, _extends2["default"])({}, attr, {
|
|
167
168
|
color: extent === flag ? highlightColor : color
|
package/lib/utils/index.js
CHANGED
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.SvgBackground = void 0;
|
|
8
8
|
exports.band = band;
|
|
9
|
-
exports.sortPie = exports.seriesYOrZ = exports.resetStacks = exports.renderCanvasBackground = exports.reduceConfig = exports.mathR = exports.isValidHttpUrl = exports.identity = exports.getTranslate3d = exports.getTranslate2d = exports.getTicksOfAxis = exports.getTickCoord = exports.getStacks = exports.getSeriesInfo = exports.getMultiColorStr = exports.getMousePos = exports.getMargin = exports.getIcon = exports.getGridCoord = exports.getFontStyle = exports.getDomPath = exports.getDataWithPercent = exports.getCurrentStack = exports.getColorList = exports.getChildren = exports.getBreakWord = exports.getBandwidth = exports.getBandSeriesStepAndWidth = exports.getBandBackground = exports.formatFont = exports.filterChildren = exports.dateFormat = exports.dataYOrZ = void 0;
|
|
9
|
+
exports.sortPie = exports.seriesYOrZ = exports.reverseGradientStops = exports.resetStacks = exports.renderCanvasBackground = exports.reduceConfig = exports.mathR = exports.isValidHttpUrl = exports.identity = exports.getTranslate3d = exports.getTranslate2d = exports.getTicksOfAxis = exports.getTickCoord = exports.getStacks = exports.getSeriesInfo = exports.getMultiColorStr = exports.getMousePos = exports.getMargin = exports.getIcon = exports.getGridCoord = exports.getFontStyle = exports.getDomPath = exports.getDataWithPercent = exports.getCurrentStack = exports.getColorList = exports.getChildren = exports.getBreakWord = exports.getBandwidth = exports.getBandSeriesStepAndWidth = exports.getBandBackground = exports.formatFont = exports.filterChildren = exports.dateFormat = exports.dataYOrZ = void 0;
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
11
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
14
|
var _utils = require("@easyv/utils");
|
|
15
15
|
var _utils2 = require("@easyv/utils/lib/common/utils");
|
|
16
16
|
var _d3v = require("d3v7");
|
|
@@ -193,19 +193,43 @@ var getMultiColorStr = exports.getMultiColorStr = function getMultiColorStr(colo
|
|
|
193
193
|
return result.slice(0, -1) + ")";
|
|
194
194
|
}
|
|
195
195
|
};
|
|
196
|
+
var reverseLinearGradient = function reverseLinearGradient(background) {
|
|
197
|
+
if (!background || typeof background !== "string") {
|
|
198
|
+
return background;
|
|
199
|
+
}
|
|
200
|
+
var match = background.match(/^linear-gradient\(\s*(-?\d*\.?\d+)(deg|turn|grad|rad)\s*,\s*(.+)\)$/i);
|
|
201
|
+
if (!match) {
|
|
202
|
+
return background;
|
|
203
|
+
}
|
|
204
|
+
var _match = (0, _slicedToArray2["default"])(match, 4),
|
|
205
|
+
angleStr = _match[1],
|
|
206
|
+
unit = _match[2],
|
|
207
|
+
stops = _match[3];
|
|
208
|
+
var newAngle = (parseFloat(angleStr) + 180) % 360;
|
|
209
|
+
return "linear-gradient(".concat(newAngle).concat(unit, ", ").concat(stops, ")");
|
|
210
|
+
};
|
|
211
|
+
var getReversedIconBackground = function getReversedIconBackground(background) {
|
|
212
|
+
if (!background || typeof background !== "string" || !background.includes("linear-gradient")) {
|
|
213
|
+
return background;
|
|
214
|
+
}
|
|
215
|
+
return reverseLinearGradient(background);
|
|
216
|
+
};
|
|
196
217
|
var getIcon = exports.getIcon = function getIcon(type, icon) {
|
|
197
218
|
var lineType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "solid";
|
|
198
219
|
switch (type) {
|
|
199
220
|
case "area":
|
|
200
221
|
case "line":
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
222
|
+
{
|
|
223
|
+
var color = icon.background;
|
|
224
|
+
return icon ? _objectSpread(_objectSpread(_objectSpread({}, defaultLineIcon), icon), {}, {
|
|
225
|
+
minWidth: icon.width,
|
|
226
|
+
background: lineType == "solid" ? color : "linear-gradient(90deg, ".concat(color, ", ").concat(color, " 66%, transparent 66%) 0 0/33% 100% repeat")
|
|
227
|
+
}) : defaultLineIcon;
|
|
228
|
+
}
|
|
206
229
|
default:
|
|
207
230
|
return icon ? _objectSpread(_objectSpread(_objectSpread({}, defaultIcon), icon), {}, {
|
|
208
|
-
minWidth: icon.width
|
|
231
|
+
minWidth: icon.width,
|
|
232
|
+
background: getReversedIconBackground(icon.background)
|
|
209
233
|
}) : defaultIcon;
|
|
210
234
|
}
|
|
211
235
|
};
|
|
@@ -607,7 +631,7 @@ var getCurrentStack = exports.getCurrentStack = function getCurrentStack(stack,
|
|
|
607
631
|
return _type == stack.type && _stack == stack.stack && _yOrZ == stack.yOrZ && _s.includes(stack.name);
|
|
608
632
|
});
|
|
609
633
|
};
|
|
610
|
-
var reverseGradientStops = function reverseGradientStops(gradient) {
|
|
634
|
+
var reverseGradientStops = exports.reverseGradientStops = function reverseGradientStops(gradient) {
|
|
611
635
|
var _gradient$linear;
|
|
612
636
|
if (gradient.type !== "linear" || !((_gradient$linear = gradient.linear) !== null && _gradient$linear !== void 0 && _gradient$linear.stops)) {
|
|
613
637
|
return gradient;
|
package/package.json
CHANGED
package/src/components/Legend.js
CHANGED
|
@@ -234,7 +234,10 @@ export default memo(
|
|
|
234
234
|
const fullWidth = componentWidth ?? chartWidth ?? 0;
|
|
235
235
|
// Adaptive+上下:组件总宽;Adaptive+左右:仅 maxWidth = 总宽 − 左右 chart.margin,宽度由内容撑开
|
|
236
236
|
const pieLegendFullWidth = Math.max(0, fullWidth);
|
|
237
|
-
const pieLegendInnerWidth = Math.max(
|
|
237
|
+
const pieLegendInnerWidth = Math.max(
|
|
238
|
+
0,
|
|
239
|
+
fullWidth - marginLeft - marginRight,
|
|
240
|
+
);
|
|
238
241
|
const sideLegendMaxWidth = isSideLegend ? pieLegendInnerWidth : 0;
|
|
239
242
|
const fixedColumnsPerRow = Math.min(
|
|
240
243
|
Math.max(1, Number(gridTemplateColumns) || 1),
|
|
@@ -272,8 +275,7 @@ export default memo(
|
|
|
272
275
|
parseFloat(_icon.minWidth) ||
|
|
273
276
|
parseFloat(icon?.width) ||
|
|
274
277
|
0;
|
|
275
|
-
const sideItemGap =
|
|
276
|
-
Number(iconGap) || parseFloat(_icon.marginRight) || 0;
|
|
278
|
+
const sideItemGap = Number(iconGap) || parseFloat(_icon.marginRight) || 0;
|
|
277
279
|
const sideTextMaxWidth =
|
|
278
280
|
sideLegendMaxWidth > 0
|
|
279
281
|
? Math.max(0, sideLegendMaxWidth - sideIconWidth - sideItemGap)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import React, { memo } from "react";
|
|
5
5
|
import { min, max } from "d3v7";
|
|
6
|
-
import { getSeriesInfo } from "../utils";
|
|
6
|
+
import { getSeriesInfo, reverseGradientStops } from "../utils";
|
|
7
7
|
|
|
8
8
|
const getHighlightData = (data: Array<DataWithBoundType>, extent: string) => {
|
|
9
9
|
switch (extent) {
|
|
@@ -78,13 +78,14 @@ const getBorderRadius = ({
|
|
|
78
78
|
? "0px " + seriesWidth + "px " + seriesWidth + "px 0"
|
|
79
79
|
: seriesWidth + "px 0 0 " + seriesWidth + "px"
|
|
80
80
|
: positive
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
? seriesWidth / 2 + "px " + seriesWidth / 2 + "px 0 0"
|
|
82
|
+
: "0 0 " + seriesWidth / 2 + "px " + seriesWidth / 2 + "px";
|
|
83
83
|
};
|
|
84
84
|
|
|
85
85
|
export default memo(
|
|
86
86
|
({
|
|
87
87
|
triggerClick,
|
|
88
|
+
triggerEvents,
|
|
88
89
|
maxWidth: maxWidth1,
|
|
89
90
|
config,
|
|
90
91
|
config: {
|
|
@@ -115,10 +116,13 @@ export default memo(
|
|
|
115
116
|
const isVertical = direction === "vertical";
|
|
116
117
|
|
|
117
118
|
const highlightColor = parseMultiColorToSVG(
|
|
118
|
-
highlightFill,
|
|
119
|
-
"highlight_gradient_" + id + "_" + name
|
|
119
|
+
reverseGradientStops(highlightFill),
|
|
120
|
+
"highlight_gradient_" + id + "_" + name,
|
|
121
|
+
);
|
|
122
|
+
const color = parseMultiColorToSVG(
|
|
123
|
+
reverseGradientStops(fill),
|
|
124
|
+
"gradient_" + id + "_" + name,
|
|
120
125
|
);
|
|
121
|
-
const color = parseMultiColorToSVG(fill, "gradient_" + id + "_" + name);
|
|
122
126
|
return (
|
|
123
127
|
<g className="__easyv-band">
|
|
124
128
|
<defs>
|
|
@@ -148,7 +152,7 @@ export default memo(
|
|
|
148
152
|
data,
|
|
149
153
|
data: { x, y, s },
|
|
150
154
|
}: DataWithBoundType,
|
|
151
|
-
i: number
|
|
155
|
+
i: number,
|
|
152
156
|
) => {
|
|
153
157
|
const y1 = yScaler(isVertical ? end : start);
|
|
154
158
|
const y2 = yScaler(isVertical ? start : end);
|
|
@@ -170,7 +174,7 @@ export default memo(
|
|
|
170
174
|
return (
|
|
171
175
|
<g
|
|
172
176
|
key={i}
|
|
173
|
-
onClick={
|
|
177
|
+
onClick={triggerEvents}
|
|
174
178
|
data-data={JSON.stringify(data)}
|
|
175
179
|
>
|
|
176
180
|
<Column3DSkin
|
|
@@ -179,11 +183,11 @@ export default memo(
|
|
|
179
183
|
/>
|
|
180
184
|
</g>
|
|
181
185
|
);
|
|
182
|
-
}
|
|
186
|
+
},
|
|
183
187
|
)}
|
|
184
188
|
</g>
|
|
185
189
|
);
|
|
186
|
-
}
|
|
190
|
+
},
|
|
187
191
|
);
|
|
188
192
|
|
|
189
193
|
const Column3DSkin = function (props: any) {
|
|
@@ -301,7 +305,7 @@ function parseMultiColorToSVG(config: any, id: any) {
|
|
|
301
305
|
stopColor: e.color,
|
|
302
306
|
stopOpacity: opacity,
|
|
303
307
|
});
|
|
304
|
-
})
|
|
308
|
+
}),
|
|
305
309
|
),
|
|
306
310
|
firstColor: getTopColor(_stops, angle),
|
|
307
311
|
};
|
package/src/utils/index.js
CHANGED
|
@@ -158,10 +158,36 @@ const getMultiColorStr = (colors) => {
|
|
|
158
158
|
}
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
+
const reverseLinearGradient = (background) => {
|
|
162
|
+
if (!background || typeof background !== "string") {
|
|
163
|
+
return background;
|
|
164
|
+
}
|
|
165
|
+
const match = background.match(
|
|
166
|
+
/^linear-gradient\(\s*(-?\d*\.?\d+)(deg|turn|grad|rad)\s*,\s*(.+)\)$/i,
|
|
167
|
+
);
|
|
168
|
+
if (!match) {
|
|
169
|
+
return background;
|
|
170
|
+
}
|
|
171
|
+
const [, angleStr, unit, stops] = match;
|
|
172
|
+
const newAngle = (parseFloat(angleStr) + 180) % 360;
|
|
173
|
+
return `linear-gradient(${newAngle}${unit}, ${stops})`;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const getReversedIconBackground = (background) => {
|
|
177
|
+
if (
|
|
178
|
+
!background ||
|
|
179
|
+
typeof background !== "string" ||
|
|
180
|
+
!background.includes("linear-gradient")
|
|
181
|
+
) {
|
|
182
|
+
return background;
|
|
183
|
+
}
|
|
184
|
+
return reverseLinearGradient(background);
|
|
185
|
+
};
|
|
186
|
+
|
|
161
187
|
const getIcon = (type, icon, lineType = "solid") => {
|
|
162
188
|
switch (type) {
|
|
163
189
|
case "area":
|
|
164
|
-
case "line":
|
|
190
|
+
case "line": {
|
|
165
191
|
let color = icon.background;
|
|
166
192
|
return icon
|
|
167
193
|
? {
|
|
@@ -174,12 +200,14 @@ const getIcon = (type, icon, lineType = "solid") => {
|
|
|
174
200
|
: `linear-gradient(90deg, ${color}, ${color} 66%, transparent 66%) 0 0/33% 100% repeat`,
|
|
175
201
|
}
|
|
176
202
|
: defaultLineIcon;
|
|
203
|
+
}
|
|
177
204
|
default:
|
|
178
205
|
return icon
|
|
179
206
|
? {
|
|
180
207
|
...defaultIcon,
|
|
181
208
|
...icon,
|
|
182
209
|
minWidth: icon.width,
|
|
210
|
+
background: getReversedIconBackground(icon.background),
|
|
183
211
|
}
|
|
184
212
|
: defaultIcon;
|
|
185
213
|
}
|
|
@@ -905,4 +933,5 @@ export {
|
|
|
905
933
|
mathR,
|
|
906
934
|
renderCanvasBackground, // 导出 Canvas 绘制方法
|
|
907
935
|
SvgBackground,
|
|
936
|
+
reverseGradientStops,
|
|
908
937
|
};
|