@easyv/charts 1.5.28 → 1.5.30

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.
Files changed (55) hide show
  1. package/.babelrc +8 -8
  2. package/.husky/commit-msg +3 -3
  3. package/CHANGELOG.md +18 -18
  4. package/commitlint.config.js +1 -1
  5. package/lib/components/Background.js +2 -2
  6. package/lib/components/ConicalGradient.js +21 -21
  7. package/lib/components/Lighter.js +2 -2
  8. package/lib/components/LinearGradient.js +2 -2
  9. package/lib/components/PieChart.js +3 -2
  10. package/lib/css/index.module.css +42 -42
  11. package/lib/css/piechart.module.css +26 -26
  12. package/lib/hooks/useAnimateData.js +6 -6
  13. package/lib/hooks/useAxes.js +29 -6
  14. package/lib/hooks/useExtentData.js +19 -4
  15. package/lib/hooks/useFilterData.js +5 -5
  16. package/lib/hooks/useStackData.js +5 -5
  17. package/lib/hooks/useTooltip.js +11 -11
  18. package/package.json +55 -55
  19. package/src/components/Background.tsx +61 -61
  20. package/src/components/Band.tsx +271 -271
  21. package/src/components/Brush.js +159 -159
  22. package/src/components/Chart.js +135 -135
  23. package/src/components/ChartContainer.tsx +71 -71
  24. package/src/components/ConicalGradient.js +258 -258
  25. package/src/components/Control.jsx +236 -236
  26. package/src/components/ExtentData.js +18 -18
  27. package/src/components/Indicator.js +58 -58
  28. package/src/components/Label.js +242 -242
  29. package/src/components/Legend.js +166 -166
  30. package/src/components/Lighter.jsx +173 -173
  31. package/src/components/Line.js +153 -153
  32. package/src/components/LinearGradient.js +29 -29
  33. package/src/components/PieChart.js +1 -1
  34. package/src/components/PieTooltip.jsx +160 -160
  35. package/src/components/StereoBar.tsx +307 -307
  36. package/src/components/index.js +59 -59
  37. package/src/context/index.js +2 -2
  38. package/src/css/index.module.css +42 -42
  39. package/src/css/piechart.module.css +26 -26
  40. package/src/element/ConicGradient.jsx +55 -55
  41. package/src/element/Line.tsx +33 -33
  42. package/src/element/index.ts +3 -3
  43. package/src/formatter/index.js +1 -1
  44. package/src/formatter/legend.js +92 -92
  45. package/src/hooks/index.js +20 -20
  46. package/src/hooks/useAnimateData.ts +68 -68
  47. package/src/hooks/useAxes.js +86 -32
  48. package/src/hooks/useExtentData.js +52 -16
  49. package/src/hooks/useFilterData.js +78 -78
  50. package/src/hooks/useStackData.js +102 -102
  51. package/src/hooks/useTooltip.ts +104 -104
  52. package/src/index.js +6 -6
  53. package/src/types/index.d.ts +68 -68
  54. package/src/utils/index.js +762 -762
  55. package/tsconfig.json +23 -23
@@ -1,153 +1,153 @@
1
- /**
2
- * 折线图
3
- */
4
- import React, { memo, useMemo } from 'react';
5
- import { line as d3Line, area as d3Area, curveCatmullRom, curveMonotoneX } from 'd3v7';
6
- import { getColorList } from '../utils';
7
- import { Lighter, LinearGradient } from '.';
8
-
9
- const defined = (d) => d.data.y != null;
10
- const getLineData = (data, connectNulls) =>{
11
- return data.flatMap(d=>{
12
- const y = d.data.y;
13
- return isNaN(y)?
14
- connectNulls?
15
- []:
16
- {...d,data:{...d.data,y:null}}:
17
- d
18
- });
19
- }
20
-
21
-
22
- const Area = ({
23
- data,
24
- config,
25
- config: {
26
- id,
27
- fill,
28
- type,
29
- url,
30
- opacity,
31
- size: { width: patternW, height: patternH },
32
- curve,
33
- tension
34
- },
35
- xScaler,
36
- yScaler,
37
- }) => {
38
- const [height] = yScaler.range();
39
- const area = useMemo(() => getColorList(fill), [fill]);
40
-
41
- const areaGen = useMemo(() => {
42
- const areaGen = d3Area()
43
- .x(({ data: { x } }) => xScaler(x))
44
- .y1(({ data: { y } }) => yScaler(y))
45
- .y0(({})=>yScaler(0))
46
- .defined(defined);
47
- curve && areaGen.curve(curveCatmullRom.alpha(tension));
48
- curve && areaGen.curve(curveMonotoneX);
49
- return areaGen;
50
- }, [xScaler, yScaler, curve, tension]);
51
-
52
- return (
53
- <>
54
- <path d={areaGen(data)} style={{pointerEvents:"none"}} stroke='none' fill={'url(#' + id + ')'} />
55
- <defs>
56
- {type && type == 'pattern' ? (
57
- <pattern id={id} patternUnits="userSpaceOnUse" width={patternW} height={patternH}>
58
- {url && <image opacity={opacity} width={patternW} height={patternH} xlinkHref={window.appConfig.ASSETS_URL + url} />}
59
- </pattern>
60
- ) : (
61
- <LinearGradient id={id} colors={area} rotate={0} />
62
- )}
63
- </defs>
64
- </>
65
- );
66
- };
67
-
68
- export default memo(
69
- ({
70
- type,
71
- config: {
72
- line: {
73
- type: lineType,
74
- lineWidth,
75
- curve,
76
- tension,
77
- connectNulls,
78
- lineShadow,
79
- lighter,
80
- },
81
- // icon,
82
- // label,
83
- },
84
- line: { id: lineId, stroke },
85
- area,
86
- data,
87
- xAxis: { scaler: xScaler, direction },
88
- yAxis: { scaler: yScaler },
89
- }) => {
90
- if (!data.length) return null;
91
- const ticks = xScaler.domain();
92
-
93
- const sortData = useMemo(() => {
94
- const usefulData = data.filter(
95
- ({ data: { x } }) => ticks.indexOf(x) > -1
96
- );
97
- return usefulData.sort(
98
- ({ data: { x: a } }, { data: { x: b } }) =>
99
- ticks.indexOf(a) - ticks.indexOf(b)
100
- );
101
- }, [data, ticks]);
102
-
103
- const _data = useMemo(
104
- () => getLineData(sortData, connectNulls),
105
- [sortData, connectNulls]
106
- );
107
- const lineGen = useMemo(() => {
108
- const isVertical = direction === 'vertical';
109
-
110
- let lineGen = (
111
- isVertical
112
- ? d3Line()
113
- .y(({ data: { x } }) => xScaler(x))
114
- .x(({ data: { y } }) => yScaler(y))
115
- : d3Line()
116
- .x(({ data: { x } }) => xScaler(x))
117
- .y(({ data: { y } }) => yScaler(y))
118
- ).defined(defined);
119
- curve && lineGen.curve(curveCatmullRom.alpha(tension));
120
- curve && lineGen.curve(curveMonotoneX);
121
- return lineGen;
122
- }, [direction, xScaler, yScaler, tension, curve]);
123
-
124
- const path = lineGen(_data);
125
- const showLighter = lighter && lighter.show;
126
- const show = lineShadow && lineShadow.show;
127
- const shadow = lineShadow && lineShadow.shadow;
128
- return (
129
- <g className='__easyv-line'>
130
- <path
131
- d={path}
132
- stroke={stroke}
133
- style={{
134
- filter:show?`drop-shadow(${shadow.hShadow}px ${shadow.vShadow}px ${shadow.blur}px ${shadow.color})`:"none",
135
- pointerEvents:"none"
136
- }}
137
- fill='none'
138
- strokeDasharray={lineType === 'dash' ? '3 3' : null}
139
- strokeWidth={lineWidth}
140
- />
141
- {type == 'area' && (
142
- <Area
143
- data={_data}
144
- config={{ ...area, curve, tension }}
145
- xScaler={xScaler}
146
- yScaler={yScaler}
147
- />
148
- )}
149
- {showLighter && <Lighter path={path} config={lighter} />}
150
- </g>
151
- );
152
- }
153
- );
1
+ /**
2
+ * 折线图
3
+ */
4
+ import React, { memo, useMemo } from 'react';
5
+ import { line as d3Line, area as d3Area, curveCatmullRom, curveMonotoneX } from 'd3v7';
6
+ import { getColorList } from '../utils';
7
+ import { Lighter, LinearGradient } from '.';
8
+
9
+ const defined = (d) => d.data.y != null;
10
+ const getLineData = (data, connectNulls) =>{
11
+ return data.flatMap(d=>{
12
+ const y = d.data.y;
13
+ return isNaN(y)?
14
+ connectNulls?
15
+ []:
16
+ {...d,data:{...d.data,y:null}}:
17
+ d
18
+ });
19
+ }
20
+
21
+
22
+ const Area = ({
23
+ data,
24
+ config,
25
+ config: {
26
+ id,
27
+ fill,
28
+ type,
29
+ url,
30
+ opacity,
31
+ size: { width: patternW, height: patternH },
32
+ curve,
33
+ tension
34
+ },
35
+ xScaler,
36
+ yScaler,
37
+ }) => {
38
+ const [height] = yScaler.range();
39
+ const area = useMemo(() => getColorList(fill), [fill]);
40
+
41
+ const areaGen = useMemo(() => {
42
+ const areaGen = d3Area()
43
+ .x(({ data: { x } }) => xScaler(x))
44
+ .y1(({ data: { y } }) => yScaler(y))
45
+ .y0(({})=>yScaler(0))
46
+ .defined(defined);
47
+ curve && areaGen.curve(curveCatmullRom.alpha(tension));
48
+ curve && areaGen.curve(curveMonotoneX);
49
+ return areaGen;
50
+ }, [xScaler, yScaler, curve, tension]);
51
+
52
+ return (
53
+ <>
54
+ <path d={areaGen(data)} style={{pointerEvents:"none"}} stroke='none' fill={'url(#' + id + ')'} />
55
+ <defs>
56
+ {type && type == 'pattern' ? (
57
+ <pattern id={id} patternUnits="userSpaceOnUse" width={patternW} height={patternH}>
58
+ {url && <image opacity={opacity} width={patternW} height={patternH} xlinkHref={window.appConfig.ASSETS_URL + url} />}
59
+ </pattern>
60
+ ) : (
61
+ <LinearGradient id={id} colors={area} rotate={0} />
62
+ )}
63
+ </defs>
64
+ </>
65
+ );
66
+ };
67
+
68
+ export default memo(
69
+ ({
70
+ type,
71
+ config: {
72
+ line: {
73
+ type: lineType,
74
+ lineWidth,
75
+ curve,
76
+ tension,
77
+ connectNulls,
78
+ lineShadow,
79
+ lighter,
80
+ },
81
+ // icon,
82
+ // label,
83
+ },
84
+ line: { id: lineId, stroke },
85
+ area,
86
+ data,
87
+ xAxis: { scaler: xScaler, direction },
88
+ yAxis: { scaler: yScaler },
89
+ }) => {
90
+ if (!data.length) return null;
91
+ const ticks = xScaler.domain();
92
+
93
+ const sortData = useMemo(() => {
94
+ const usefulData = data.filter(
95
+ ({ data: { x } }) => ticks.indexOf(x) > -1
96
+ );
97
+ return usefulData.sort(
98
+ ({ data: { x: a } }, { data: { x: b } }) =>
99
+ ticks.indexOf(a) - ticks.indexOf(b)
100
+ );
101
+ }, [data, ticks]);
102
+
103
+ const _data = useMemo(
104
+ () => getLineData(sortData, connectNulls),
105
+ [sortData, connectNulls]
106
+ );
107
+ const lineGen = useMemo(() => {
108
+ const isVertical = direction === 'vertical';
109
+
110
+ let lineGen = (
111
+ isVertical
112
+ ? d3Line()
113
+ .y(({ data: { x } }) => xScaler(x))
114
+ .x(({ data: { y } }) => yScaler(y))
115
+ : d3Line()
116
+ .x(({ data: { x } }) => xScaler(x))
117
+ .y(({ data: { y } }) => yScaler(y))
118
+ ).defined(defined);
119
+ curve && lineGen.curve(curveCatmullRom.alpha(tension));
120
+ curve && lineGen.curve(curveMonotoneX);
121
+ return lineGen;
122
+ }, [direction, xScaler, yScaler, tension, curve]);
123
+
124
+ const path = lineGen(_data);
125
+ const showLighter = lighter && lighter.show;
126
+ const show = lineShadow && lineShadow.show;
127
+ const shadow = lineShadow && lineShadow.shadow;
128
+ return (
129
+ <g className='__easyv-line'>
130
+ <path
131
+ d={path}
132
+ stroke={stroke}
133
+ style={{
134
+ filter:show?`drop-shadow(${shadow.hShadow}px ${shadow.vShadow}px ${shadow.blur}px ${shadow.color})`:"none",
135
+ pointerEvents:"none"
136
+ }}
137
+ fill='none'
138
+ strokeDasharray={lineType === 'dash' ? '3 3' : null}
139
+ strokeWidth={lineWidth}
140
+ />
141
+ {type == 'area' && (
142
+ <Area
143
+ data={_data}
144
+ config={{ ...area, curve, tension }}
145
+ xScaler={xScaler}
146
+ yScaler={yScaler}
147
+ />
148
+ )}
149
+ {showLighter && <Lighter path={path} config={lighter} />}
150
+ </g>
151
+ );
152
+ }
153
+ );
@@ -1,29 +1,29 @@
1
- /**
2
- * svg渐变滤镜
3
- */
4
- export default ({
5
- id,
6
- colors,
7
- rotate = 0,
8
- gradientUnits,
9
- position: [x1, y1, x2, y2] = [0, 0, 0, 1],
10
- }) => (
11
- <linearGradient
12
- x1={x1}
13
- y1={y1}
14
- x2={x2}
15
- y2={y2}
16
- id={id}
17
- gradientUnits={gradientUnits}
18
- gradientTransform={'rotate(' + rotate + ', .5, .5)'}
19
- >
20
- {colors.map(({ offset, color, stopOpacity = 1 }, index) => (
21
- <stop
22
- key={index}
23
- offset={offset}
24
- stopColor={color}
25
- stopOpacity={stopOpacity}
26
- />
27
- ))}
28
- </linearGradient>
29
- );
1
+ /**
2
+ * svg渐变滤镜
3
+ */
4
+ export default ({
5
+ id,
6
+ colors,
7
+ rotate = 0,
8
+ gradientUnits,
9
+ position: [x1, y1, x2, y2] = [0, 0, 0, 1],
10
+ }) => (
11
+ <linearGradient
12
+ x1={x1}
13
+ y1={y1}
14
+ x2={x2}
15
+ y2={y2}
16
+ id={id}
17
+ gradientUnits={gradientUnits}
18
+ gradientTransform={'rotate(' + rotate + ', .5, .5)'}
19
+ >
20
+ {colors.map(({ offset, color, stopOpacity = 1 }, index) => (
21
+ <stop
22
+ key={index}
23
+ offset={offset}
24
+ stopColor={color}
25
+ stopOpacity={stopOpacity}
26
+ />
27
+ ))}
28
+ </linearGradient>
29
+ );
@@ -254,7 +254,7 @@ const Component = memo(
254
254
  },
255
255
  label,
256
256
  legend: { formatter = legendFormatter, ...legend },
257
- animation: { ringDuration, labelDuration },
257
+ animation: { ringDuration, labelDuration } = {},
258
258
  margin: { marginLeft, marginTop },
259
259
  },
260
260
  fan: {