chore: update dashboard

This commit is contained in:
JustSong 2025-02-02 13:38:48 +08:00
parent 174dea7763
commit 4685c52a5d

View File

@ -118,11 +118,17 @@ const Dashboard = () => {
// 获取日期范围 // 获取日期范围
const dates = data.map((item) => item.Day); const dates = data.map((item) => item.Day);
const minDate =
dates.length > 0
? new Date(Math.min(...dates.map((d) => new Date(d))))
: new Date();
const maxDate = new Date(); // 总是使用今天作为最后一天 const maxDate = new Date(); // 总是使用今天作为最后一天
let minDate = dates.length > 0
? new Date(Math.min(...dates.map((d) => new Date(d))))
: new Date();
// 确保至少显示5天的数据
const fiveDaysAgo = new Date();
fiveDaysAgo.setDate(fiveDaysAgo.getDate() - 4); // -4是因为包含今天
if (minDate > fiveDaysAgo) {
minDate = fiveDaysAgo;
}
// 生成所有日期 // 生成所有日期
for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) { for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) {
@ -153,11 +159,17 @@ const Dashboard = () => {
// 获取日期范围 // 获取日期范围
const dates = data.map((item) => item.Day); const dates = data.map((item) => item.Day);
const minDate =
dates.length > 0
? new Date(Math.min(...dates.map((d) => new Date(d))))
: new Date();
const maxDate = new Date(); // 总是使用今天作为最后一天 const maxDate = new Date(); // 总是使用今天作为最后一天
let minDate = dates.length > 0
? new Date(Math.min(...dates.map((d) => new Date(d))))
: new Date();
// 确保至少显示5天的数据
const fiveDaysAgo = new Date();
fiveDaysAgo.setDate(fiveDaysAgo.getDate() - 4); // -4是因为包含今天
if (minDate > fiveDaysAgo) {
minDate = fiveDaysAgo;
}
// 生成所有日期 // 生成所有日期
for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) { for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) {
@ -196,6 +208,28 @@ const Dashboard = () => {
return chartConfig.barColors[index % chartConfig.barColors.length]; return chartConfig.barColors[index % chartConfig.barColors.length];
}; };
// 添加一个日期格式化函数
const formatDate = (dateStr) => {
const date = new Date(dateStr);
return date.toLocaleDateString('zh-CN', { month: 'numeric', day: 'numeric' });
};
// 修改所有 XAxis 配置
const xAxisConfig = {
dataKey: 'date',
axisLine: false,
tickLine: false,
tick: {
fontSize: 12,
fill: '#A3AED0',
dx: 15 // 向右偏移文本
},
tickFormatter: formatDate,
interval: 0,
minTickGap: 5,
padding: { left: 20, right: 20 } // 增加两侧的内边距
};
return ( return (
<div className='dashboard-container'> <div className='dashboard-container'>
{/* 三个并排的折线图 */} {/* 三个并排的折线图 */}
@ -208,7 +242,7 @@ const Dashboard = () => {
<span className='stat-value'>{summaryData.todayRequests}</span> <span className='stat-value'>{summaryData.todayRequests}</span>
</Card.Header> </Card.Header>
<div className='chart-container'> <div className='chart-container'>
<ResponsiveContainer width='100%' height={120}> <ResponsiveContainer width='100%' height={120} margin={{ left: 20, right: 20 }}>
<LineChart data={timeSeriesData}> <LineChart data={timeSeriesData}>
<CartesianGrid <CartesianGrid
strokeDasharray='3 3' strokeDasharray='3 3'
@ -216,12 +250,7 @@ const Dashboard = () => {
horizontal={chartConfig.lineChart.grid.horizontal} horizontal={chartConfig.lineChart.grid.horizontal}
opacity={chartConfig.lineChart.grid.opacity} opacity={chartConfig.lineChart.grid.opacity}
/> />
<XAxis <XAxis {...xAxisConfig} />
dataKey='date'
axisLine={false}
tickLine={false}
tick={{ fontSize: 12, fill: '#A3AED0' }}
/>
<YAxis hide={true} /> <YAxis hide={true} />
<Tooltip <Tooltip
contentStyle={{ contentStyle={{
@ -235,7 +264,7 @@ const Dashboard = () => {
t('dashboard.charts.requests.tooltip'), t('dashboard.charts.requests.tooltip'),
]} ]}
labelFormatter={(label) => labelFormatter={(label) =>
`${t('dashboard.tooltip.date')}: ${label}` `${t('dashboard.tooltip.date')}: ${formatDate(label)}`
} }
/> />
<Line <Line
@ -263,7 +292,7 @@ const Dashboard = () => {
</span> </span>
</Card.Header> </Card.Header>
<div className='chart-container'> <div className='chart-container'>
<ResponsiveContainer width='100%' height={120}> <ResponsiveContainer width='100%' height={120} margin={{ left: 20, right: 20 }}>
<LineChart data={timeSeriesData}> <LineChart data={timeSeriesData}>
<CartesianGrid <CartesianGrid
strokeDasharray='3 3' strokeDasharray='3 3'
@ -271,12 +300,7 @@ const Dashboard = () => {
horizontal={chartConfig.lineChart.grid.horizontal} horizontal={chartConfig.lineChart.grid.horizontal}
opacity={chartConfig.lineChart.grid.opacity} opacity={chartConfig.lineChart.grid.opacity}
/> />
<XAxis <XAxis {...xAxisConfig} />
dataKey='date'
axisLine={false}
tickLine={false}
tick={{ fontSize: 12, fill: '#A3AED0' }}
/>
<YAxis hide={true} /> <YAxis hide={true} />
<Tooltip <Tooltip
contentStyle={{ contentStyle={{
@ -290,7 +314,7 @@ const Dashboard = () => {
t('dashboard.charts.quota.tooltip'), t('dashboard.charts.quota.tooltip'),
]} ]}
labelFormatter={(label) => labelFormatter={(label) =>
`${t('dashboard.tooltip.date')}: ${label}` `${t('dashboard.tooltip.date')}: ${formatDate(label)}`
} }
/> />
<Line <Line
@ -316,7 +340,7 @@ const Dashboard = () => {
<span className='stat-value'>{summaryData.todayTokens}</span> <span className='stat-value'>{summaryData.todayTokens}</span>
</Card.Header> </Card.Header>
<div className='chart-container'> <div className='chart-container'>
<ResponsiveContainer width='100%' height={120}> <ResponsiveContainer width='100%' height={120} margin={{ left: 20, right: 20 }}>
<LineChart data={timeSeriesData}> <LineChart data={timeSeriesData}>
<CartesianGrid <CartesianGrid
strokeDasharray='3 3' strokeDasharray='3 3'
@ -324,12 +348,7 @@ const Dashboard = () => {
horizontal={chartConfig.lineChart.grid.horizontal} horizontal={chartConfig.lineChart.grid.horizontal}
opacity={chartConfig.lineChart.grid.opacity} opacity={chartConfig.lineChart.grid.opacity}
/> />
<XAxis <XAxis {...xAxisConfig} />
dataKey='date'
axisLine={false}
tickLine={false}
tick={{ fontSize: 12, fill: '#A3AED0' }}
/>
<YAxis hide={true} /> <YAxis hide={true} />
<Tooltip <Tooltip
contentStyle={{ contentStyle={{
@ -343,7 +362,7 @@ const Dashboard = () => {
t('dashboard.charts.tokens.tooltip'), t('dashboard.charts.tokens.tooltip'),
]} ]}
labelFormatter={(label) => labelFormatter={(label) =>
`${t('dashboard.tooltip.date')}: ${label}` `${t('dashboard.tooltip.date')}: ${formatDate(label)}`
} }
/> />
<Line <Line
@ -374,12 +393,7 @@ const Dashboard = () => {
vertical={false} vertical={false}
opacity={0.1} opacity={0.1}
/> />
<XAxis <XAxis {...xAxisConfig} />
dataKey='date'
axisLine={false}
tickLine={false}
tick={{ fontSize: 12, fill: '#A3AED0' }}
/>
<YAxis <YAxis
axisLine={false} axisLine={false}
tickLine={false} tickLine={false}
@ -393,7 +407,7 @@ const Dashboard = () => {
boxShadow: '0 2px 8px rgba(0,0,0,0.1)', boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
}} }}
labelFormatter={(label) => labelFormatter={(label) =>
`${t('dashboard.tooltip.date')}: ${label}` `${t('dashboard.tooltip.date')}: ${formatDate(label)}`
} }
/> />
<Legend <Legend