feat(All) 修改整体页面格式,增加地图中间模型与下方表格间的联动显示
This commit is contained in:
@@ -3,9 +3,11 @@ import './ResultsPanel.css'
|
||||
|
||||
interface ResultsPanelProps {
|
||||
results: Map<string, LatencyResult>
|
||||
selectedNodeId: string | null
|
||||
onNodeSelect: (nodeId: string | null) => void
|
||||
}
|
||||
|
||||
export default function ResultsPanel({ results }: ResultsPanelProps) {
|
||||
export default function ResultsPanel({ results, selectedNodeId, onNodeSelect }: ResultsPanelProps) {
|
||||
if (results.size === 0) return null
|
||||
|
||||
const sortedNodes = [...TEST_NODES].sort((a, b) => {
|
||||
@@ -34,11 +36,24 @@ export default function ResultsPanel({ results }: ResultsPanelProps) {
|
||||
<div className="results-panel">
|
||||
<div className="results-header">
|
||||
<h2>Test Results</h2>
|
||||
{avgLatency !== null && (
|
||||
<div className="avg-latency">
|
||||
Avg: <span style={{ color: getLatencyColor(avgLatency) }}>{avgLatency}ms</span>
|
||||
<div className="results-header-right">
|
||||
<div className="latency-legend">
|
||||
<div className="legend-gradient"></div>
|
||||
<div className="legend-labels">
|
||||
<span>0ms</span>
|
||||
<span>50</span>
|
||||
<span>100</span>
|
||||
<span>150</span>
|
||||
<span>200</span>
|
||||
<span>250+</span>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{avgLatency !== null && (
|
||||
<div className="avg-latency">
|
||||
Avg: <span style={{ color: getLatencyColor(avgLatency) }}>{avgLatency}ms</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="results-grid">
|
||||
@@ -47,8 +62,14 @@ export default function ResultsPanel({ results }: ResultsPanelProps) {
|
||||
const isTesting = result?.status === 'testing'
|
||||
const hasResult = result?.status === 'success' || result?.status === 'failed'
|
||||
|
||||
const isSelected = selectedNodeId === node.id
|
||||
|
||||
return (
|
||||
<div key={node.id} className={`result-card ${hasResult ? getLatencyLevel(result?.latency ?? null) : ''}`}>
|
||||
<div
|
||||
key={node.id}
|
||||
className={`result-card ${hasResult ? getLatencyLevel(result?.latency ?? null) : ''} ${isSelected ? 'selected' : ''}`}
|
||||
onClick={() => onNodeSelect(isSelected ? null : node.id)}
|
||||
>
|
||||
<div className="result-region">{node.region}</div>
|
||||
<div className="result-name">{node.name}</div>
|
||||
<div className="result-latency">
|
||||
|
||||
Reference in New Issue
Block a user