@easyv/charts 1.4.22 → 1.4.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/.babelrc +8 -8
- package/.husky/commit-msg +3 -3
- package/CHANGELOG.md +18 -18
- package/commitlint.config.js +1 -1
- package/lib/components/AnimateData.js +8 -16
- package/lib/components/Axis.js +106 -138
- package/lib/components/Background.js +18 -26
- package/lib/components/Band.js +105 -91
- package/lib/components/BaseLine.js +33 -46
- package/lib/components/Brush.js +29 -46
- package/lib/components/Carousel.js +13 -40
- package/lib/components/CartesianChart.js +291 -112
- package/lib/components/Chart.js +23 -36
- package/lib/components/ChartContainer.js +21 -29
- package/lib/components/ConicalGradient.js +56 -89
- package/lib/components/Control.js +65 -0
- package/lib/components/ExtentData.js +9 -17
- package/lib/components/FilterData.js +16 -27
- package/lib/components/Indicator.js +66 -12
- package/lib/components/Label.js +128 -118
- package/lib/components/Legend.js +41 -66
- package/lib/components/Lighter.js +21 -50
- package/lib/components/Line.js +39 -59
- package/lib/components/LinearGradient.js +16 -22
- package/lib/components/Mapping.js +9 -34
- package/lib/components/Marquee.js +14 -30
- package/lib/components/PieChart.js +311 -405
- package/lib/components/StackData.js +8 -18
- package/lib/components/StereoBar.js +65 -105
- package/lib/components/TextOverflow.js +8 -21
- package/lib/components/Tooltip.js +41 -55
- package/lib/components/index.js +7 -27
- package/lib/context/index.js +0 -2
- package/lib/css/index.module.css +42 -42
- package/lib/css/piechart.module.css +26 -26
- package/lib/element/ConicGradient.js +29 -35
- package/lib/element/Line.js +9 -13
- package/lib/element/index.js +0 -2
- package/lib/formatter/index.js +0 -2
- package/lib/formatter/legend.js +30 -41
- package/lib/hooks/index.js +0 -9
- package/lib/hooks/useAiData.js +12 -20
- package/lib/hooks/useAnimateData.js +8 -21
- package/lib/hooks/useAxes.js +69 -115
- package/lib/hooks/useCarouselAxisX.js +47 -68
- package/lib/hooks/useExtentData.js +14 -46
- package/lib/hooks/useFilterData.js +13 -34
- package/lib/hooks/useStackData.js +12 -35
- package/lib/hooks/useTooltip.js +37 -54
- package/lib/index.js +0 -15
- package/lib/utils/index.js +95 -247
- package/package.json +55 -55
- package/src/components/Axis.tsx +223 -183
- package/src/components/Background.tsx +61 -61
- package/src/components/Band.tsx +274 -239
- package/src/components/Brush.js +159 -159
- package/src/components/CartesianChart.js +319 -43
- package/src/components/Chart.js +99 -99
- package/src/components/ChartContainer.tsx +71 -64
- package/src/components/ConicalGradient.js +258 -258
- package/src/components/Control.jsx +51 -0
- package/src/components/ExtentData.js +17 -17
- package/src/components/Indicator.js +61 -13
- package/src/components/Label.js +275 -242
- package/src/components/Legend.js +165 -165
- package/src/components/Lighter.jsx +173 -173
- package/src/components/Line.js +150 -150
- package/src/components/LinearGradient.js +29 -29
- package/src/components/PieChart.js +7 -3
- package/src/components/StereoBar.tsx +307 -307
- package/src/components/index.js +57 -55
- package/src/context/index.js +2 -2
- package/src/css/index.module.css +42 -42
- package/src/css/piechart.module.css +26 -26
- package/src/element/ConicGradient.jsx +55 -55
- package/src/element/Line.tsx +33 -33
- package/src/element/index.ts +3 -3
- package/src/formatter/index.js +1 -1
- package/src/formatter/legend.js +92 -92
- package/src/hooks/index.js +20 -20
- package/src/hooks/useAnimateData.ts +67 -67
- package/src/hooks/useAxes.js +9 -2
- package/src/hooks/useCarouselAxisX.js +35 -18
- package/src/hooks/useFilterData.js +72 -72
- package/src/hooks/useStackData.js +101 -101
- package/src/hooks/useTooltip.ts +100 -100
- package/src/index.js +6 -6
- package/src/types/index.d.ts +67 -67
- package/src/utils/index.js +757 -757
- package/tsconfig.json +23 -23
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React, { forwardRef, memo, useRef } from "react";
|
|
2
|
+
import { scaleLinear } from "d3-scale";
|
|
3
|
+
|
|
4
|
+
export default memo(forwardRef((props, ref) => {
|
|
5
|
+
const { props: { control, axes, series, xLineRange, yLineRange, marginTop, axisX, bandLength } } = props;
|
|
6
|
+
const _axisX = { ...axisX, scaler: axisX.controlDragScaler }
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<foreignObject
|
|
10
|
+
style={{
|
|
11
|
+
width: xLineRange,
|
|
12
|
+
height: control.height,
|
|
13
|
+
backgroundColor: control.color,
|
|
14
|
+
// padding: ` 0 ${control.margin.left}px 0 ${control.margin.right}px`,
|
|
15
|
+
transform: `translateY(${yLineRange + marginTop}px)`,
|
|
16
|
+
}}
|
|
17
|
+
>
|
|
18
|
+
<svg width="100%" height="100%">
|
|
19
|
+
{series.map(({ Component, yOrZ, ...config }, index) => {
|
|
20
|
+
const yAxis = axes.get(yOrZ);
|
|
21
|
+
const cloneYAxis = JSON.parse(JSON.stringify(yAxis));
|
|
22
|
+
//todo range
|
|
23
|
+
cloneYAxis.scaler = scaleLinear()
|
|
24
|
+
.domain(yAxis.domain)
|
|
25
|
+
.range([control.height, 0]);
|
|
26
|
+
return (
|
|
27
|
+
yAxis &&
|
|
28
|
+
Component && (
|
|
29
|
+
<Component
|
|
30
|
+
key={index}
|
|
31
|
+
{...config}
|
|
32
|
+
bandLength={bandLength}
|
|
33
|
+
xAxis={_axisX}
|
|
34
|
+
yAxis={cloneYAxis}
|
|
35
|
+
/>
|
|
36
|
+
)
|
|
37
|
+
);
|
|
38
|
+
})}
|
|
39
|
+
{/* 控制条 */}
|
|
40
|
+
<rect
|
|
41
|
+
ref={ref}
|
|
42
|
+
height={control.height}
|
|
43
|
+
width={(xLineRange * control.drag.width) / 100}
|
|
44
|
+
fill={control.drag.color}
|
|
45
|
+
></rect>
|
|
46
|
+
</svg>
|
|
47
|
+
</foreignObject>
|
|
48
|
+
</>
|
|
49
|
+
);
|
|
50
|
+
}))
|
|
51
|
+
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 计算X/Y/Z轴的domain,具体的逻辑在useExtentData(HOC)
|
|
3
|
-
*/
|
|
4
|
-
import { memo } from 'react';
|
|
5
|
-
import { useExtentData } from '../hooks';
|
|
6
|
-
export default (Component) =>
|
|
7
|
-
memo(({ config: { axes, series, ...config }, data, ...props }) => (
|
|
8
|
-
<Component
|
|
9
|
-
{...props}
|
|
10
|
-
config={{
|
|
11
|
-
...config,
|
|
12
|
-
axes: useExtentData({ series, axes, data }),
|
|
13
|
-
series,
|
|
14
|
-
}}
|
|
15
|
-
data={data}
|
|
16
|
-
/>
|
|
17
|
-
));
|
|
1
|
+
/**
|
|
2
|
+
* 计算X/Y/Z轴的domain,具体的逻辑在useExtentData(HOC)
|
|
3
|
+
*/
|
|
4
|
+
import { memo } from 'react';
|
|
5
|
+
import { useExtentData } from '../hooks';
|
|
6
|
+
export default (Component) =>
|
|
7
|
+
memo(({ config: { axes, series, ...config }, data, ...props }) => (
|
|
8
|
+
<Component
|
|
9
|
+
{...props}
|
|
10
|
+
config={{
|
|
11
|
+
...config,
|
|
12
|
+
axes: useExtentData({ series, axes, data }),
|
|
13
|
+
series,
|
|
14
|
+
}}
|
|
15
|
+
data={data}
|
|
16
|
+
/>
|
|
17
|
+
));
|
|
@@ -1,13 +1,61 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 轴类图表移上去的指示框背景
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 轴类图表移上去的指示框背景
|
|
3
|
+
*/
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
export default ({
|
|
6
|
+
color,
|
|
7
|
+
height,
|
|
8
|
+
width,
|
|
9
|
+
x = 0,
|
|
10
|
+
y = 0,
|
|
11
|
+
isControlChart = false,
|
|
12
|
+
xName = null,
|
|
13
|
+
setControlChartTooltipShow = null,
|
|
14
|
+
setControlChartTooltipXName = null,
|
|
15
|
+
setControlChartTooltipX = null,
|
|
16
|
+
setControlChartIndicatorList = null,
|
|
17
|
+
controlChartIndicatorList = null,
|
|
18
|
+
}) => {
|
|
19
|
+
let isShow = true;
|
|
20
|
+
if (isControlChart && controlChartIndicatorList) {
|
|
21
|
+
isShow = controlChartIndicatorList.find(
|
|
22
|
+
(item) => item.tick === xName
|
|
23
|
+
).isShow;
|
|
24
|
+
}
|
|
25
|
+
return (
|
|
26
|
+
<rect
|
|
27
|
+
width={width}
|
|
28
|
+
height={height}
|
|
29
|
+
x={x}
|
|
30
|
+
onMouseEnter={() => {
|
|
31
|
+
if (isControlChart) {
|
|
32
|
+
setControlChartIndicatorList((v) => {
|
|
33
|
+
return v.map((item) => {
|
|
34
|
+
if (item.tick === xName) {
|
|
35
|
+
return { ...item, isShow: true };
|
|
36
|
+
} else {
|
|
37
|
+
return item;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
setControlChartTooltipShow(true);
|
|
42
|
+
setControlChartTooltipXName(xName);
|
|
43
|
+
setControlChartTooltipX(x);
|
|
44
|
+
}
|
|
45
|
+
}}
|
|
46
|
+
onMouseLeave={() => {
|
|
47
|
+
if (isControlChart) {
|
|
48
|
+
setControlChartIndicatorList((v) =>
|
|
49
|
+
v.map((item) => ({ ...item, isShow: false }))
|
|
50
|
+
);
|
|
51
|
+
setControlChartTooltipShow(false);
|
|
52
|
+
setControlChartTooltipXName(undefined);
|
|
53
|
+
setControlChartTooltipX(undefined);
|
|
54
|
+
}
|
|
55
|
+
}}
|
|
56
|
+
fill={isShow ? color : "transparent"}
|
|
57
|
+
y={y}
|
|
58
|
+
stroke="none"
|
|
59
|
+
/>
|
|
60
|
+
);
|
|
61
|
+
};
|