20260726 修复rpki-explorer体验问题32项(#130):RocksDB max_open_files+compose ulimits、objects列表流式早停+scope前置(每页2.85s->10ms级)、未知/过期run统一404、runs倒序、导出文件名Content-Disposition、路径段percent_decode、nginx /api/v1代理与400回SPA;前端serialNumber schema、30s请求超时、reason筛选、组合VRP查询、导出反馈与repo/PP入口、键盘可达、cursor进URL、分页/对比度/skip-link等体验项
This commit is contained in:
@@ -36,7 +36,7 @@ import {
|
||||
truncateMiddle,
|
||||
} from "../lib/format";
|
||||
import { withRunParam } from "../lib/run";
|
||||
import { useRun } from "../lib/useRun";
|
||||
import { useRun, runErrorTitle } from "../lib/useRun";
|
||||
|
||||
/** Semantic colors keyed by validation result — never assigned by index. */
|
||||
const RESULT_COLORS: Record<string, string> = {
|
||||
@@ -126,7 +126,7 @@ export default function OverviewPage() {
|
||||
<ErrorBlock
|
||||
error={runQuery.error}
|
||||
onRetry={() => runQuery.refetch()}
|
||||
title="Failed to load the latest run"
|
||||
title={runErrorTitle(runId, runQuery.error)}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
@@ -170,6 +170,17 @@ export default function OverviewPage() {
|
||||
numeric: true,
|
||||
render: (repo) => formatDurationMs(repo.syncDurationMsTotal),
|
||||
},
|
||||
{
|
||||
key: "terminal",
|
||||
header: "Terminal states",
|
||||
render: (repo) => (
|
||||
<span className="chip-list">
|
||||
{Object.entries(repo.terminalStates ?? {}).map(([state, count]) => (
|
||||
<StatusPill key={state} status={state} label={`${state} ${formatInt(count)}`} />
|
||||
))}
|
||||
</span>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
@@ -224,6 +235,7 @@ export default function OverviewPage() {
|
||||
value={formatInt(counts?.warnings)}
|
||||
tone="amber"
|
||||
sub="objects with warnings"
|
||||
to={withRunParam("/validation", runId)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -238,7 +250,7 @@ export default function OverviewPage() {
|
||||
) : (
|
||||
<>
|
||||
<div className="chart-box">
|
||||
<ResponsiveContainer>
|
||||
<ResponsiveContainer initialDimension={{ width: 400, height: 240 }}>
|
||||
<PieChart>
|
||||
<Pie
|
||||
data={validationData}
|
||||
@@ -286,7 +298,7 @@ export default function OverviewPage() {
|
||||
<p className="text-muted">No object type stats recorded.</p>
|
||||
) : (
|
||||
<div className="chart-box">
|
||||
<ResponsiveContainer>
|
||||
<ResponsiveContainer initialDimension={{ width: 400, height: 240 }}>
|
||||
<BarChart data={typeData} layout="vertical" margin={{ left: 12, right: 24 }}>
|
||||
<XAxis type="number" hide />
|
||||
<YAxis
|
||||
|
||||
Reference in New Issue
Block a user