|
|
@@ -530,6 +530,32 @@
|
|
|
trigger: 'axis',
|
|
|
axisPointer: {
|
|
|
type: 'cross'
|
|
|
+ },
|
|
|
+ formatter: function(params) {
|
|
|
+ if (!params || params.length === 0) return '';
|
|
|
+
|
|
|
+ // 获取第一个数据点的时间戳(毫秒)
|
|
|
+ const timestamp = params[0].value[0];
|
|
|
+ const date = new Date(timestamp);
|
|
|
+
|
|
|
+ // 格式化时间为 YYYY-MM-DD HH:mm:ss.SSS
|
|
|
+ const year = date.getFullYear();
|
|
|
+ const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
|
+ const day = String(date.getDate()).padStart(2, '0');
|
|
|
+ const hours = String(date.getHours()).padStart(2, '0');
|
|
|
+ const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
|
+ const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
|
+ const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
|
|
|
+
|
|
|
+ let result = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}<br/>`;
|
|
|
+
|
|
|
+ // 添加各个系列的数据
|
|
|
+ params.forEach(param => {
|
|
|
+ const value = param.value[1];
|
|
|
+ result += `${param.marker} ${param.name}: ${value.toFixed(6)}<br/>`;
|
|
|
+ });
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
},
|
|
|
legend: {
|
|
|
@@ -641,6 +667,32 @@
|
|
|
trigger: 'axis',
|
|
|
axisPointer: {
|
|
|
type: 'cross'
|
|
|
+ },
|
|
|
+ formatter: function(params) {
|
|
|
+ if (!params || params.length === 0) return '';
|
|
|
+
|
|
|
+ // 获取第一个数据点的时间戳(毫秒)
|
|
|
+ const timestamp = params[0].value[0];
|
|
|
+ const date = new Date(timestamp);
|
|
|
+
|
|
|
+ // 格式化时间为 YYYY-MM-DD HH:mm:ss.SSS
|
|
|
+ const year = date.getFullYear();
|
|
|
+ const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
|
+ const day = String(date.getDate()).padStart(2, '0');
|
|
|
+ const hours = String(date.getHours()).padStart(2, '0');
|
|
|
+ const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
|
+ const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
|
+ const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
|
|
|
+
|
|
|
+ let result = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}<br/>`;
|
|
|
+
|
|
|
+ // 添加各个系列的数据
|
|
|
+ params.forEach(param => {
|
|
|
+ const value = param.value[1];
|
|
|
+ result += `${param.marker} ${param.name}: ${value.toFixed(2)}<br/>`;
|
|
|
+ });
|
|
|
+
|
|
|
+ return result;
|
|
|
}
|
|
|
},
|
|
|
legend: {
|
|
|
@@ -750,7 +802,9 @@
|
|
|
|
|
|
// 准备数据
|
|
|
// 对于时间类型的 X 轴,数据格式应该是 [[timestamp, value], ...]
|
|
|
- const seriesData = data.map(d => [d.timestamp * 1000, d.binance_price]);
|
|
|
+ const binancePriceData = data.map(d => [d.timestamp * 1000, d.binance_price]);
|
|
|
+ const lighterAskData = data.map(d => [d.timestamp * 1000, d.lighter_ask]);
|
|
|
+ const lighterBidData = data.map(d => [d.timestamp * 1000, d.lighter_bid]);
|
|
|
|
|
|
const option = {
|
|
|
tooltip: {
|
|
|
@@ -782,12 +836,30 @@
|
|
|
series: [
|
|
|
{
|
|
|
name: 'Binance价格',
|
|
|
- data: seriesData,
|
|
|
+ data: binancePriceData,
|
|
|
type: 'line',
|
|
|
smooth: true,
|
|
|
itemStyle: { color: '#ff6b6b' },
|
|
|
lineStyle: { width: 1.5 },
|
|
|
showSymbol: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Lighter卖价',
|
|
|
+ data: lighterAskData,
|
|
|
+ type: 'line',
|
|
|
+ smooth: true,
|
|
|
+ itemStyle: { color: '#f9ca24' },
|
|
|
+ lineStyle: { width: 1, type: 'dashed' },
|
|
|
+ showSymbol: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'Lighter买价',
|
|
|
+ data: lighterBidData,
|
|
|
+ type: 'line',
|
|
|
+ smooth: true,
|
|
|
+ itemStyle: { color: '#45b7d1' },
|
|
|
+ lineStyle: { width: 1, type: 'dashed' },
|
|
|
+ showSymbol: false
|
|
|
}
|
|
|
]
|
|
|
};
|