@easyv/charts 1.0.57 → 1.0.61
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/lib/components/AnimateData.js +2 -2
- package/lib/components/Axis.js +12 -12
- package/lib/components/Background.js +2 -2
- package/lib/components/Carousel.js +2 -2
- package/lib/components/Chart.js +2 -2
- package/lib/components/ConicalGradient.js +21 -21
- package/lib/components/Indicator.js +2 -2
- package/lib/components/Label.js +2 -1
- package/lib/components/LinearGradient.js +2 -2
- package/lib/components/PieChart.js +39 -2
- package/lib/components/Tooltip.js +25 -5
- package/lib/css/index.module.css +41 -41
- package/lib/css/piechart.module.css +26 -26
- package/lib/formatter/legend.js +4 -2
- package/lib/hooks/useAnimateData.js +5 -5
- package/lib/hooks/useAxes.js +5 -5
- package/lib/hooks/useCarouselAxisX.js +5 -5
- package/lib/hooks/useExtentData.js +6 -6
- package/lib/hooks/useFilterData.js +11 -6
- package/lib/hooks/useStackData.js +5 -5
- package/lib/hooks/useTooltip.js +10 -10
- package/package.json +34 -34
- package/src/components/AnimateData.tsx +24 -24
- package/src/components/Axis.tsx +333 -333
- package/src/components/Background.tsx +45 -45
- package/src/components/Band.tsx +160 -160
- package/src/components/Brush.js +159 -159
- package/src/components/Carousel.tsx +144 -144
- package/src/components/Chart.js +99 -99
- package/src/components/ChartContainer.tsx +63 -63
- package/src/components/ConicalGradient.js +258 -258
- package/src/components/ExtentData.js +17 -17
- package/src/components/FilterData.js +23 -23
- package/src/components/Indicator.js +13 -13
- package/src/components/Label.js +193 -194
- package/src/components/Legend.js +158 -158
- package/src/components/Lighter.jsx +162 -162
- package/src/components/Line.js +126 -126
- package/src/components/LinearGradient.js +29 -29
- package/src/components/Mapping.js +71 -71
- package/src/components/PieChart.js +1092 -1092
- package/src/components/StackData.js +20 -20
- package/src/components/StereoBar.tsx +298 -298
- package/src/components/Tooltip.js +134 -117
- package/src/components/index.js +49 -49
- package/src/context/index.js +2 -2
- package/src/css/index.module.css +41 -41
- package/src/css/piechart.module.css +26 -26
- package/src/element/ConicGradient.jsx +56 -0
- 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 +87 -87
- package/src/hooks/index.js +17 -17
- package/src/hooks/useAnimateData.ts +62 -62
- package/src/hooks/useAxes.js +143 -143
- package/src/hooks/useCarouselAxisX.js +163 -163
- package/src/hooks/useExtentData.js +88 -88
- package/src/hooks/useFilterData.js +72 -65
- package/src/hooks/useStackData.js +100 -100
- package/src/hooks/useTooltip.ts +96 -96
- package/src/index.js +6 -6
- package/src/types/index.d.ts +59 -59
- package/src/utils/index.js +640 -640
- package/tsconfig.json +22 -22
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
import { group } from 'd3v7';
|
|
3
|
-
import {
|
|
4
|
-
dataYOrZ,
|
|
5
|
-
seriesYOrZ,
|
|
6
|
-
getCurrentStack,
|
|
7
|
-
getStacks,
|
|
8
|
-
resetStacks,
|
|
9
|
-
} from '../utils';
|
|
10
|
-
|
|
11
|
-
const getSeriesMap = (series) => {
|
|
12
|
-
const seriesMap = new Map();
|
|
13
|
-
series.forEach(({ name, ...rest }) => {
|
|
14
|
-
seriesMap.set(name, {
|
|
15
|
-
...rest,
|
|
16
|
-
name,
|
|
17
|
-
data: [],
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
return seriesMap;
|
|
21
|
-
};
|
|
22
|
-
const resetStackData = (series) => {
|
|
23
|
-
series.forEach((series) => {
|
|
24
|
-
series.data = [];
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const setStackData = (data, series, stacks) => {
|
|
29
|
-
const dataMap = group(data, (d) => d.x);
|
|
30
|
-
|
|
31
|
-
dataMap.forEach((value) => {
|
|
32
|
-
resetStacks(stacks);
|
|
33
|
-
for (let i = 0, j = value.length; i < j; i++) {
|
|
34
|
-
const d = value[i];
|
|
35
|
-
const currentSeries = series.get(d.s);
|
|
36
|
-
if (d && d.y !== undefined && !isNaN(d.y)) {
|
|
37
|
-
const currentStack = getCurrentStack(currentSeries, stacks);
|
|
38
|
-
if (currentSeries && currentStack) {
|
|
39
|
-
if (d.y >= 0) {
|
|
40
|
-
currentSeries.data.push({
|
|
41
|
-
data: d,
|
|
42
|
-
index: currentStack.index,
|
|
43
|
-
bound: [currentStack.positive, currentStack.positive + d.y],
|
|
44
|
-
});
|
|
45
|
-
currentStack.positive += d.y;
|
|
46
|
-
} else {
|
|
47
|
-
currentSeries.data.push({
|
|
48
|
-
data: d,
|
|
49
|
-
index: currentStack.index,
|
|
50
|
-
bound: [currentStack.negative, currentStack.negative + d.y],
|
|
51
|
-
});
|
|
52
|
-
currentStack.negative += d.y;
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
currentSeries.data.push({
|
|
56
|
-
data: d,
|
|
57
|
-
bound: [0, d.y],
|
|
58
|
-
index: 0,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
currentSeries.bandLength =
|
|
64
|
-
currentSeries.type === 'band' ? stacks.filter((item) => item.type == 'band').length : 1;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
dataMap.clear();
|
|
68
|
-
return series;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* 计算堆叠数据
|
|
73
|
-
* @param {Array} data 数据
|
|
74
|
-
* @param {Map} series 系列
|
|
75
|
-
* @returns {Array} 返回堆叠后的数据,由一开始的{x, y, s}变成{data: {x, y, s}, bound: [start, end], index}
|
|
76
|
-
*/
|
|
77
|
-
|
|
78
|
-
export default ({ data, series }) => {
|
|
79
|
-
const _series = useMemo(() => {
|
|
80
|
-
const stacks = getStacks(series);
|
|
81
|
-
const _series = getSeriesMap(series);
|
|
82
|
-
return { stacks, series: seriesYOrZ(_series) };
|
|
83
|
-
}, [series]);
|
|
84
|
-
|
|
85
|
-
const _data = useMemo(() => dataYOrZ(data, _series.series), [data, _series]);
|
|
86
|
-
|
|
87
|
-
const tmp = useMemo(() => {
|
|
88
|
-
const { y: dataY, z: dataZ } = _data;
|
|
89
|
-
const {
|
|
90
|
-
stacks,
|
|
91
|
-
series: { y: seriesY, z: seriesZ },
|
|
92
|
-
} = _series;
|
|
93
|
-
resetStackData(seriesY);
|
|
94
|
-
resetStackData(seriesZ);
|
|
95
|
-
setStackData(dataY, seriesY, stacks);
|
|
96
|
-
setStackData(dataZ, seriesZ, stacks);
|
|
97
|
-
return [...seriesY.values(), ...seriesZ.values()];
|
|
98
|
-
}, [_data, _series]);
|
|
99
|
-
return tmp;
|
|
100
|
-
};
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { group } from 'd3v7';
|
|
3
|
+
import {
|
|
4
|
+
dataYOrZ,
|
|
5
|
+
seriesYOrZ,
|
|
6
|
+
getCurrentStack,
|
|
7
|
+
getStacks,
|
|
8
|
+
resetStacks,
|
|
9
|
+
} from '../utils';
|
|
10
|
+
|
|
11
|
+
const getSeriesMap = (series) => {
|
|
12
|
+
const seriesMap = new Map();
|
|
13
|
+
series.forEach(({ name, ...rest }) => {
|
|
14
|
+
seriesMap.set(name, {
|
|
15
|
+
...rest,
|
|
16
|
+
name,
|
|
17
|
+
data: [],
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
return seriesMap;
|
|
21
|
+
};
|
|
22
|
+
const resetStackData = (series) => {
|
|
23
|
+
series.forEach((series) => {
|
|
24
|
+
series.data = [];
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const setStackData = (data, series, stacks) => {
|
|
29
|
+
const dataMap = group(data, (d) => d.x);
|
|
30
|
+
|
|
31
|
+
dataMap.forEach((value) => {
|
|
32
|
+
resetStacks(stacks);
|
|
33
|
+
for (let i = 0, j = value.length; i < j; i++) {
|
|
34
|
+
const d = value[i];
|
|
35
|
+
const currentSeries = series.get(d.s);
|
|
36
|
+
if (d && d.y !== undefined && !isNaN(d.y)) {
|
|
37
|
+
const currentStack = getCurrentStack(currentSeries, stacks);
|
|
38
|
+
if (currentSeries && currentStack) {
|
|
39
|
+
if (d.y >= 0) {
|
|
40
|
+
currentSeries.data.push({
|
|
41
|
+
data: d,
|
|
42
|
+
index: currentStack.index,
|
|
43
|
+
bound: [currentStack.positive, currentStack.positive + d.y],
|
|
44
|
+
});
|
|
45
|
+
currentStack.positive += d.y;
|
|
46
|
+
} else {
|
|
47
|
+
currentSeries.data.push({
|
|
48
|
+
data: d,
|
|
49
|
+
index: currentStack.index,
|
|
50
|
+
bound: [currentStack.negative, currentStack.negative + d.y],
|
|
51
|
+
});
|
|
52
|
+
currentStack.negative += d.y;
|
|
53
|
+
}
|
|
54
|
+
} else {
|
|
55
|
+
currentSeries.data.push({
|
|
56
|
+
data: d,
|
|
57
|
+
bound: [0, d.y],
|
|
58
|
+
index: 0,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
currentSeries.bandLength =
|
|
64
|
+
currentSeries.type === 'band' ? stacks.filter((item) => item.type == 'band').length : 1;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
dataMap.clear();
|
|
68
|
+
return series;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 计算堆叠数据
|
|
73
|
+
* @param {Array} data 数据
|
|
74
|
+
* @param {Map} series 系列
|
|
75
|
+
* @returns {Array} 返回堆叠后的数据,由一开始的{x, y, s}变成{data: {x, y, s}, bound: [start, end], index}
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
export default ({ data, series }) => {
|
|
79
|
+
const _series = useMemo(() => {
|
|
80
|
+
const stacks = getStacks(series);
|
|
81
|
+
const _series = getSeriesMap(series);
|
|
82
|
+
return { stacks, series: seriesYOrZ(_series) };
|
|
83
|
+
}, [series]);
|
|
84
|
+
|
|
85
|
+
const _data = useMemo(() => dataYOrZ(data, _series.series), [data, _series]);
|
|
86
|
+
|
|
87
|
+
const tmp = useMemo(() => {
|
|
88
|
+
const { y: dataY, z: dataZ } = _data;
|
|
89
|
+
const {
|
|
90
|
+
stacks,
|
|
91
|
+
series: { y: seriesY, z: seriesZ },
|
|
92
|
+
} = _series;
|
|
93
|
+
resetStackData(seriesY);
|
|
94
|
+
resetStackData(seriesZ);
|
|
95
|
+
setStackData(dataY, seriesY, stacks);
|
|
96
|
+
setStackData(dataZ, seriesZ, stacks);
|
|
97
|
+
return [...seriesY.values(), ...seriesZ.values()];
|
|
98
|
+
}, [_data, _series]);
|
|
99
|
+
return tmp;
|
|
100
|
+
};
|
package/src/hooks/useTooltip.ts
CHANGED
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import { useCallback, useState, useEffect } from 'react';
|
|
2
|
-
import { getMousePos } from '../utils';
|
|
3
|
-
const callback = () => {};
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 主要用于轴类图表,返回当前选中的是哪一个x
|
|
7
|
-
* @param {Array} svg svg的dom实例
|
|
8
|
-
* @param {Number} marginLeft 左间距
|
|
9
|
-
* @param {Number} marginTop 上间距
|
|
10
|
-
* @param {Number} width 宽
|
|
11
|
-
* @param {Number} height 高
|
|
12
|
-
* @param {Number} axisX 类目轴
|
|
13
|
-
* @param {Object} config 轮播动画参数
|
|
14
|
-
* @returns {Object} 返回被选中的名称,坐标,选中方法
|
|
15
|
-
*/
|
|
16
|
-
type Props = {
|
|
17
|
-
svg: any;
|
|
18
|
-
marginLeft: number;
|
|
19
|
-
marginTop: number;
|
|
20
|
-
width: number;
|
|
21
|
-
height: number;
|
|
22
|
-
axisX: AxisX;
|
|
23
|
-
config: { auto?: boolean; interval?: number; manual?: boolean };
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
export default ({
|
|
27
|
-
svg,
|
|
28
|
-
marginLeft,
|
|
29
|
-
marginTop,
|
|
30
|
-
width,
|
|
31
|
-
height,
|
|
32
|
-
axisX,
|
|
33
|
-
config: { auto, interval = 0, manual } = {},
|
|
34
|
-
}: Props) => {
|
|
35
|
-
const [currentIndex, setCurrentIndex] = useState<number | null>(null);
|
|
36
|
-
|
|
37
|
-
const tickLength = axisX.allTicks.length;
|
|
38
|
-
const setIndex = useCallback(
|
|
39
|
-
(e) => {
|
|
40
|
-
if (svg) {
|
|
41
|
-
const {
|
|
42
|
-
x: mouseX,
|
|
43
|
-
y: mouseY,
|
|
44
|
-
w: boundWidth,
|
|
45
|
-
h: boundHeight,
|
|
46
|
-
} = getMousePos(e, svg.current);
|
|
47
|
-
const { carousel, allTicks, ticks, scaler, direction } = axisX;
|
|
48
|
-
const _ticks = carousel ? ticks : allTicks;
|
|
49
|
-
const ratioX = parseInt(svg.current.style.width) / boundWidth;
|
|
50
|
-
const ratioY = parseInt(svg.current.style.height) / boundHeight;
|
|
51
|
-
const resetX = mouseX * ratioX;
|
|
52
|
-
const resetY = mouseY * ratioY;
|
|
53
|
-
const x = resetX - marginLeft;
|
|
54
|
-
const y = resetY - marginTop;
|
|
55
|
-
if (x > 0 && x < width && y > 0 && y < height && _ticks.length) {
|
|
56
|
-
const position = direction === 'vertical' ? y : x;
|
|
57
|
-
const name = _ticks.reduce((prev: string, current: string) =>
|
|
58
|
-
Math.abs(scaler(prev) - position) >
|
|
59
|
-
Math.abs(scaler(current) - position)
|
|
60
|
-
? current
|
|
61
|
-
: prev
|
|
62
|
-
);
|
|
63
|
-
setCurrentIndex(allTicks.findIndex((tick: string) => tick == name));
|
|
64
|
-
} else {
|
|
65
|
-
setCurrentIndex(null);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
[svg, marginLeft, axisX]
|
|
70
|
-
);
|
|
71
|
-
useEffect(() => {
|
|
72
|
-
const on = auto && tickLength;
|
|
73
|
-
if (!!on) setCurrentIndex(0);
|
|
74
|
-
const intervalHandler = on
|
|
75
|
-
? setInterval(() => {
|
|
76
|
-
setCurrentIndex((index) => {
|
|
77
|
-
const tmp = index == null ? 0 : index;
|
|
78
|
-
const currentIndex = tmp + 1;
|
|
79
|
-
if (currentIndex >= tickLength) {
|
|
80
|
-
return 0;
|
|
81
|
-
}
|
|
82
|
-
return currentIndex;
|
|
83
|
-
});
|
|
84
|
-
}, interval * 1000)
|
|
85
|
-
: null;
|
|
86
|
-
return () => {
|
|
87
|
-
intervalHandler && clearInterval(intervalHandler);
|
|
88
|
-
};
|
|
89
|
-
}, [auto, tickLength, interval]);
|
|
90
|
-
const name = currentIndex === null ? null : axisX.allTicks[currentIndex];
|
|
91
|
-
return {
|
|
92
|
-
name,
|
|
93
|
-
x: axisX.scaler(name),
|
|
94
|
-
setIndex: manual ? setIndex : callback,
|
|
95
|
-
};
|
|
96
|
-
};
|
|
1
|
+
import { useCallback, useState, useEffect } from 'react';
|
|
2
|
+
import { getMousePos } from '../utils';
|
|
3
|
+
const callback = () => {};
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 主要用于轴类图表,返回当前选中的是哪一个x
|
|
7
|
+
* @param {Array} svg svg的dom实例
|
|
8
|
+
* @param {Number} marginLeft 左间距
|
|
9
|
+
* @param {Number} marginTop 上间距
|
|
10
|
+
* @param {Number} width 宽
|
|
11
|
+
* @param {Number} height 高
|
|
12
|
+
* @param {Number} axisX 类目轴
|
|
13
|
+
* @param {Object} config 轮播动画参数
|
|
14
|
+
* @returns {Object} 返回被选中的名称,坐标,选中方法
|
|
15
|
+
*/
|
|
16
|
+
type Props = {
|
|
17
|
+
svg: any;
|
|
18
|
+
marginLeft: number;
|
|
19
|
+
marginTop: number;
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
axisX: AxisX;
|
|
23
|
+
config: { auto?: boolean; interval?: number; manual?: boolean };
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default ({
|
|
27
|
+
svg,
|
|
28
|
+
marginLeft,
|
|
29
|
+
marginTop,
|
|
30
|
+
width,
|
|
31
|
+
height,
|
|
32
|
+
axisX,
|
|
33
|
+
config: { auto, interval = 0, manual } = {},
|
|
34
|
+
}: Props) => {
|
|
35
|
+
const [currentIndex, setCurrentIndex] = useState<number | null>(null);
|
|
36
|
+
|
|
37
|
+
const tickLength = axisX.allTicks.length;
|
|
38
|
+
const setIndex = useCallback(
|
|
39
|
+
(e) => {
|
|
40
|
+
if (svg) {
|
|
41
|
+
const {
|
|
42
|
+
x: mouseX,
|
|
43
|
+
y: mouseY,
|
|
44
|
+
w: boundWidth,
|
|
45
|
+
h: boundHeight,
|
|
46
|
+
} = getMousePos(e, svg.current);
|
|
47
|
+
const { carousel, allTicks, ticks, scaler, direction } = axisX;
|
|
48
|
+
const _ticks = carousel ? ticks : allTicks;
|
|
49
|
+
const ratioX = parseInt(svg.current.style.width) / boundWidth;
|
|
50
|
+
const ratioY = parseInt(svg.current.style.height) / boundHeight;
|
|
51
|
+
const resetX = mouseX * ratioX;
|
|
52
|
+
const resetY = mouseY * ratioY;
|
|
53
|
+
const x = resetX - marginLeft;
|
|
54
|
+
const y = resetY - marginTop;
|
|
55
|
+
if (x > 0 && x < width && y > 0 && y < height && _ticks.length) {
|
|
56
|
+
const position = direction === 'vertical' ? y : x;
|
|
57
|
+
const name = _ticks.reduce((prev: string, current: string) =>
|
|
58
|
+
Math.abs(scaler(prev) - position) >
|
|
59
|
+
Math.abs(scaler(current) - position)
|
|
60
|
+
? current
|
|
61
|
+
: prev
|
|
62
|
+
);
|
|
63
|
+
setCurrentIndex(allTicks.findIndex((tick: string) => tick == name));
|
|
64
|
+
} else {
|
|
65
|
+
setCurrentIndex(null);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
[svg, marginLeft, axisX]
|
|
70
|
+
);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
const on = auto && tickLength;
|
|
73
|
+
if (!!on) setCurrentIndex(0);
|
|
74
|
+
const intervalHandler = on
|
|
75
|
+
? setInterval(() => {
|
|
76
|
+
setCurrentIndex((index) => {
|
|
77
|
+
const tmp = index == null ? 0 : index;
|
|
78
|
+
const currentIndex = tmp + 1;
|
|
79
|
+
if (currentIndex >= tickLength) {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
return currentIndex;
|
|
83
|
+
});
|
|
84
|
+
}, interval * 1000)
|
|
85
|
+
: null;
|
|
86
|
+
return () => {
|
|
87
|
+
intervalHandler && clearInterval(intervalHandler);
|
|
88
|
+
};
|
|
89
|
+
}, [auto, tickLength, interval]);
|
|
90
|
+
const name = currentIndex === null ? null : axisX.allTicks[currentIndex];
|
|
91
|
+
return {
|
|
92
|
+
name,
|
|
93
|
+
x: axisX.scaler(name),
|
|
94
|
+
setIndex: manual ? setIndex : callback,
|
|
95
|
+
};
|
|
96
|
+
};
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './components';
|
|
2
|
-
export * from './hooks';
|
|
3
|
-
export * from './context';
|
|
4
|
-
export * from './formatter';
|
|
5
|
-
export * as utils from './utils';
|
|
6
|
-
export * from '@easyv/utils';
|
|
1
|
+
export * from './components';
|
|
2
|
+
export * from './hooks';
|
|
3
|
+
export * from './context';
|
|
4
|
+
export * from './formatter';
|
|
5
|
+
export * as utils from './utils';
|
|
6
|
+
export * from '@easyv/utils';
|
package/src/types/index.d.ts
CHANGED
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
declare module 'd3v7' {
|
|
2
|
-
export * from 'd3-timer';
|
|
3
|
-
export * from 'd3-array';
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
type DataType = {
|
|
7
|
-
x: string;
|
|
8
|
-
y: number;
|
|
9
|
-
s: string;
|
|
10
|
-
};
|
|
11
|
-
type DataWithBoundType = {
|
|
12
|
-
index: number;
|
|
13
|
-
data: DataType;
|
|
14
|
-
bound: Array<number>;
|
|
15
|
-
flag: boolean;
|
|
16
|
-
};
|
|
17
|
-
type Context = {
|
|
18
|
-
width: number;
|
|
19
|
-
height: number;
|
|
20
|
-
id: string;
|
|
21
|
-
triggerOnRelative: Function;
|
|
22
|
-
svg: Object;
|
|
23
|
-
onEmit: Function;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
type ChartLine = {
|
|
27
|
-
show: boolean;
|
|
28
|
-
color: string;
|
|
29
|
-
lineWidth: number;
|
|
30
|
-
strokeDasharray?: string;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
type Orientation = 'top' | 'bottom' | 'left' | 'right';
|
|
34
|
-
|
|
35
|
-
type Translate = {
|
|
36
|
-
x: number;
|
|
37
|
-
y: number;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
type Font = {
|
|
41
|
-
bold: boolean;
|
|
42
|
-
color: string;
|
|
43
|
-
fontFamily: string;
|
|
44
|
-
fontSize: number;
|
|
45
|
-
italic: boolean;
|
|
46
|
-
letterSpacing: number;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
type Align = { textAnchor: string; dominantBaseline: string };
|
|
50
|
-
|
|
51
|
-
type Tick = { show: boolean; tick: string };
|
|
52
|
-
|
|
53
|
-
type AxisX = {
|
|
54
|
-
carousel: boolean;
|
|
55
|
-
allTicks: Array<string>;
|
|
56
|
-
ticks: Array<string>;
|
|
57
|
-
scaler: Function;
|
|
58
|
-
direction: 'vertical' | 'horizontal';
|
|
59
|
-
};
|
|
1
|
+
declare module 'd3v7' {
|
|
2
|
+
export * from 'd3-timer';
|
|
3
|
+
export * from 'd3-array';
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
type DataType = {
|
|
7
|
+
x: string;
|
|
8
|
+
y: number;
|
|
9
|
+
s: string;
|
|
10
|
+
};
|
|
11
|
+
type DataWithBoundType = {
|
|
12
|
+
index: number;
|
|
13
|
+
data: DataType;
|
|
14
|
+
bound: Array<number>;
|
|
15
|
+
flag: boolean;
|
|
16
|
+
};
|
|
17
|
+
type Context = {
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
id: string;
|
|
21
|
+
triggerOnRelative: Function;
|
|
22
|
+
svg: Object;
|
|
23
|
+
onEmit: Function;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type ChartLine = {
|
|
27
|
+
show: boolean;
|
|
28
|
+
color: string;
|
|
29
|
+
lineWidth: number;
|
|
30
|
+
strokeDasharray?: string;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
type Orientation = 'top' | 'bottom' | 'left' | 'right';
|
|
34
|
+
|
|
35
|
+
type Translate = {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
type Font = {
|
|
41
|
+
bold: boolean;
|
|
42
|
+
color: string;
|
|
43
|
+
fontFamily: string;
|
|
44
|
+
fontSize: number;
|
|
45
|
+
italic: boolean;
|
|
46
|
+
letterSpacing: number;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
type Align = { textAnchor: string; dominantBaseline: string };
|
|
50
|
+
|
|
51
|
+
type Tick = { show: boolean; tick: string };
|
|
52
|
+
|
|
53
|
+
type AxisX = {
|
|
54
|
+
carousel: boolean;
|
|
55
|
+
allTicks: Array<string>;
|
|
56
|
+
ticks: Array<string>;
|
|
57
|
+
scaler: Function;
|
|
58
|
+
direction: 'vertical' | 'horizontal';
|
|
59
|
+
};
|