@tsingroc/tsingroc-components 3.6.1 → 3.7.1
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.
|
@@ -26,11 +26,15 @@ export interface LineChartEditorProps extends Omit<FlexProps, "children"> {
|
|
|
26
26
|
newName?: string;
|
|
27
27
|
/** 用户按下“确认”按钮时的回调。*/
|
|
28
28
|
onConfirm?: (newData: number[]) => void;
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* 上下调整数值的步长。
|
|
31
|
+
* @default 0.1
|
|
32
|
+
*/
|
|
30
33
|
adjustStep?: number;
|
|
31
34
|
}
|
|
32
35
|
/**
|
|
33
|
-
*
|
|
36
|
+
* 一个曲线图编辑器,由曲线图、数据表格和确认/撤销按钮三部分组成。
|
|
37
|
+
* 可以在曲线上使用键盘上下/WS 键,或者在表格中编辑数据。
|
|
34
38
|
*
|
|
35
39
|
* 除了文档列出的属性外,多余的属性会被传递给最外层的 [Flex][1] 组件。
|
|
36
40
|
*
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Button, Flex, Input, Table } from "antd";
|
|
3
|
-
import { useMemo, useState } from "react";
|
|
3
|
+
import { useEffect, useMemo, useRef, useState, } from "react";
|
|
4
4
|
import { createStyles } from "antd-style";
|
|
5
5
|
import EChartsReact from "echarts-for-react";
|
|
6
6
|
import * as echarts from "../echarts";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* 一个曲线图编辑器,由曲线图、数据表格和确认/撤销按钮三部分组成。
|
|
9
|
+
* 可以在曲线上使用键盘上下/WS 键,或者在表格中编辑数据。
|
|
9
10
|
*
|
|
10
11
|
* 除了文档列出的属性外,多余的属性会被传递给最外层的 [Flex][1] 组件。
|
|
11
12
|
*
|
|
12
13
|
* [1]: https://ant-design.antgroup.com/components/flex-cn#api
|
|
13
14
|
*/
|
|
14
15
|
function LineChartEditor(props) {
|
|
15
|
-
const { xData, origData, xName = "时间", yName = "数值", origName = "原始曲线", newName = "修正曲线", onConfirm, adjustStep, ...rest } = props;
|
|
16
|
+
const { xData, origData, xName = "时间", yName = "数值", origName = "原始曲线", newName = "修正曲线", onConfirm, adjustStep = 0.1, ...rest } = props;
|
|
16
17
|
const { styles, theme: token } = useStyles();
|
|
17
18
|
const [newData, setNewData] = useState(origData);
|
|
19
|
+
const echartsRef = useRef(null);
|
|
20
|
+
const tableRef = useRef(null);
|
|
21
|
+
// 用户鼠标所在的数据项下标
|
|
22
|
+
const [hoverIndex, setHoverIndex] = useState(null);
|
|
18
23
|
const option = echarts.buildEChartsOption({}, echarts.useGrid({
|
|
19
24
|
xAxis: {
|
|
20
25
|
name: xName,
|
|
@@ -37,6 +42,73 @@ function LineChartEditor(props) {
|
|
|
37
42
|
}),
|
|
38
43
|
],
|
|
39
44
|
}), echarts.tooltip({ trigger: "axis" }));
|
|
45
|
+
const onEvents = useMemo(() => ({
|
|
46
|
+
highlight: (params) => {
|
|
47
|
+
if (!params.batch || params.batch.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
if (!echartsRef.current?.ele?.matches(":hover"))
|
|
50
|
+
return;
|
|
51
|
+
const index = params.batch[0].dataIndex;
|
|
52
|
+
setHoverIndex(index);
|
|
53
|
+
echartsRef.current?.ele?.focus();
|
|
54
|
+
const table = tableRef.current;
|
|
55
|
+
if (table) {
|
|
56
|
+
const elem = table.nativeElement;
|
|
57
|
+
const header = elem.getElementsByTagName("thead")[0];
|
|
58
|
+
const row = elem.getElementsByTagName("tr")[index];
|
|
59
|
+
elem.scrollTo({
|
|
60
|
+
top: header.offsetHeight +
|
|
61
|
+
row.offsetTop +
|
|
62
|
+
row.offsetHeight / 2 -
|
|
63
|
+
elem.offsetHeight / 2,
|
|
64
|
+
behavior: "smooth",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
downplay: () => {
|
|
69
|
+
setHoverIndex(null);
|
|
70
|
+
},
|
|
71
|
+
}), []);
|
|
72
|
+
// 监听键盘事件
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
const inst = echartsRef.current;
|
|
75
|
+
if (!inst)
|
|
76
|
+
return;
|
|
77
|
+
inst.ele.tabIndex = 0;
|
|
78
|
+
const listener = (event) => {
|
|
79
|
+
if (hoverIndex === null)
|
|
80
|
+
return;
|
|
81
|
+
switch (event.key) {
|
|
82
|
+
case "ArrowUp":
|
|
83
|
+
case "W":
|
|
84
|
+
setNewData((prev) => {
|
|
85
|
+
const next = [...prev];
|
|
86
|
+
next[hoverIndex] += adjustStep;
|
|
87
|
+
return next;
|
|
88
|
+
});
|
|
89
|
+
break;
|
|
90
|
+
case "ArrowDown":
|
|
91
|
+
case "D":
|
|
92
|
+
setNewData((prev) => {
|
|
93
|
+
const next = [...prev];
|
|
94
|
+
next[hoverIndex] -= adjustStep;
|
|
95
|
+
return next;
|
|
96
|
+
});
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
};
|
|
103
|
+
inst.ele.addEventListener("keydown", listener);
|
|
104
|
+
return () => inst.ele.removeEventListener("keydown", listener);
|
|
105
|
+
});
|
|
106
|
+
const tableData = xData.map((x, i) => ({
|
|
107
|
+
key: i,
|
|
108
|
+
x,
|
|
109
|
+
orig: origData[i],
|
|
110
|
+
new: newData[i],
|
|
111
|
+
}));
|
|
40
112
|
const tableColumns = [
|
|
41
113
|
{
|
|
42
114
|
key: "x",
|
|
@@ -72,22 +144,36 @@ function LineChartEditor(props) {
|
|
|
72
144
|
}),
|
|
73
145
|
},
|
|
74
146
|
];
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
orig
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
147
|
+
const onRow = (data, index) => {
|
|
148
|
+
if (index === undefined)
|
|
149
|
+
return {};
|
|
150
|
+
const modified = data.orig != data.new;
|
|
151
|
+
const hover = index == hoverIndex;
|
|
152
|
+
return {
|
|
153
|
+
className: styles.editableRow,
|
|
154
|
+
style: {
|
|
155
|
+
color: modified ? token.colorError : undefined,
|
|
156
|
+
background: hover
|
|
157
|
+
? token.colorFillQuaternary
|
|
158
|
+
: modified
|
|
159
|
+
? token.colorErrorBg
|
|
160
|
+
: undefined,
|
|
161
|
+
},
|
|
162
|
+
onMouseOver: () => {
|
|
163
|
+
echartsRef.current?.getEchartsInstance()?.dispatchAction({
|
|
164
|
+
type: "showTip",
|
|
165
|
+
seriesIndex: 1,
|
|
166
|
+
dataIndex: index,
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
onMouseLeave: () => {
|
|
170
|
+
echartsRef.current?.getEchartsInstance()?.dispatchAction({
|
|
171
|
+
type: "hideTip",
|
|
172
|
+
});
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
return (_jsxs(Flex, { vertical: true, gap: token.marginXS, ...rest, children: [_jsx(EChartsReact, { ref: echartsRef, option: option, onEvents: onEvents, style: { outline: "none" } }), _jsx(Table, { ref: tableRef, dataSource: tableData, columns: tableColumns, size: "small", pagination: false, style: { flexBasis: "100%", overflowY: "auto" }, components: { body: { cell: EditorCell } }, onRow: onRow }), _jsxs(Flex, { gap: token.marginXXS, children: [_jsx("div", { style: { flexBasis: "100%" } }), _jsx(Button, { type: "primary", onClick: () => onConfirm?.(newData), children: "\u4FDD\u5B58" }), _jsx(Button, { danger: true, onClick: () => setNewData(origData), children: "\u91CD\u7F6E" })] })] }));
|
|
91
177
|
}
|
|
92
178
|
export default LineChartEditor;
|
|
93
179
|
function EditorCell({ value, onChange, step, ...props }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChartEditor.js","sourceRoot":"","sources":["../../src/components/LineChartEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAkB,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAElE,OAAO,
|
|
1
|
+
{"version":3,"file":"LineChartEditor.js","sourceRoot":"","sources":["../../src/components/LineChartEditor.tsx"],"names":[],"mappings":"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"}
|