Files
ParkingRobot/.superpowers/brainstorm/1612-1785939150/content/dashboard-scientific.html
T

71 lines
7.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h2>科研绘图风 · A 布局精修</h2>
<p class="subtitle">以论文图表为基准:细线、白底、单位完整、图例克制;红色只表示真正越界。</p>
<style>
.scientific { background:#fff; color:#20252b; border:1px solid #cfd4da; border-radius:3px; padding:12px; font-family:Arial,"Microsoft YaHei",sans-serif; }
.s-head { display:flex; justify-content:space-between; align-items:flex-end; border-bottom:1px solid #60666d; padding-bottom:6px; margin-bottom:10px; }
.s-title { font-family:"Times New Roman","SimSun",serif; font-size:15px; font-weight:600; }
.s-meta { color:#59636e; font-size:9px; }
.s-grid { display:grid; grid-template-columns:1.55fr .85fr; gap:10px; }
.s-panel { border:1px solid #b8bec5; padding:7px; background:#fff; }
.s-panel-title { font-family:"Times New Roman","SimSun",serif; font-size:10px; font-weight:600; display:flex; justify-content:space-between; }
.s-plot { width:100%; height:132px; display:block; margin-top:3px; }
.s-side { display:flex; flex-direction:column; gap:8px; }
.s-table { width:100%; border-collapse:collapse; font-size:9px; }
.s-table td { padding:4px 3px; border-bottom:1px solid #e2e5e8; }
.s-table td:last-child { text-align:right; font-family:Consolas,monospace; }
.pass { color:#237a57; }.note { color:#b86514; }.fail { color:#b42318; }
.s-tabs { display:flex; gap:0; margin-top:10px; border-bottom:1px solid #777e86; }
.s-tab { padding:5px 11px 4px; border:1px solid transparent; font-size:9px; color:#545d66; }
.s-tab.active { color:#174c80; border:1px solid #777e86; border-bottom:1px solid white; margin-bottom:-1px; background:#fff; }
.s-multipanel { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; padding-top:9px; }
.s-small { border:1px solid #c8cdd2; padding:5px; }
.s-small svg { width:100%; height:72px; display:block; }
.caption { color:#56606a; font-size:9px; margin-top:8px; line-height:1.45; }
.limit { stroke:#b42318; stroke-width:.7; stroke-dasharray:3 3; fill:none; }
.gridline { stroke:#d9dde1; stroke-width:.55; }.axis { stroke:#343a40; stroke-width:.8; }.tick { fill:#555d65; font:5px Arial; }
.current { stroke:#1769aa; stroke-width:1.15; fill:none; }.previous { stroke:#8d959d; stroke-width:.8; stroke-dasharray:4 2; fill:none; }
.reference { stroke:#333; stroke-width:.75; fill:none; }.handoff { fill:#d87918; stroke:#fff; stroke-width:.7; }
</style>
<div class="mockup">
<div class="mockup-header">Preview: Scientific trajectory dashboard</div>
<div class="mockup-body">
<div class="scientific">
<div class="s-head">
<div><div class="s-title">EM Trajectory Planning Observation</div><div class="s-meta">OBSERVE_ONLY · local session · coordinate units: m / s / rad</div></div>
<div class="s-meta"><span class="pass">● LIVE</span> &nbsp; Cycle 128 &nbsp; RollingContinuation &nbsp; 42 ms</div>
</div>
<div class="s-grid">
<div class="s-panel">
<div class="s-panel-title"><span>(a) World path and rolling handoff</span><span style="font:8px Arial"><span style="color:#1769aa">━ current</span> &nbsp; <span style="color:#8d959d">┄ previous</span> &nbsp; <span style="color:#d87918">● handoff</span></span></div>
<svg class="s-plot" viewBox="0 0 360 132" preserveAspectRatio="none">
<g><line class="gridline" x1="38" y1="12" x2="38" y2="112"/><line class="gridline" x1="101" y1="12" x2="101" y2="112"/><line class="gridline" x1="164" y1="12" x2="164" y2="112"/><line class="gridline" x1="227" y1="12" x2="227" y2="112"/><line class="gridline" x1="290" y1="12" x2="290" y2="112"/><line class="gridline" x1="38" y1="32" x2="344" y2="32"/><line class="gridline" x1="38" y1="58" x2="344" y2="58"/><line class="gridline" x1="38" y1="84" x2="344" y2="84"/></g>
<line class="axis" x1="38" y1="112" x2="344" y2="112"/><line class="axis" x1="38" y1="12" x2="38" y2="112"/>
<path class="reference" d="M42,92 C92,88 116,70 151,67 S226,66 268,41 S322,25 341,22"/>
<path class="previous" d="M43,95 C91,90 116,73 152,69 S226,68 270,44 S323,29 339,27"/>
<path class="current" d="M43,93 C92,89 116,71 152,68 S226,67 269,42 S323,26 341,23"/>
<circle class="handoff" cx="269" cy="42" r="3.2"/>
<text class="tick" x="174" y="128">World X (m)</text><text class="tick" transform="rotate(-90 8 69)" x="8" y="69">World Y (m)</text>
</svg>
</div>
<div class="s-side">
<div class="s-panel"><div class="s-panel-title">Current sample</div><table class="s-table"><tr><td>t</td><td>0.35 s</td></tr><tr><td>v</td><td>0.182 m/s</td></tr><tr><td>a</td><td>0.041 m/s²</td></tr><tr><td>j</td><td>0.118 m/s³</td></tr><tr><td>κ</td><td>0.224 m⁻¹</td></tr></table></div>
<div class="s-panel"><div class="s-panel-title">Rolling continuity</div><table class="s-table"><tr><td>terminal speed ≠ 0</td><td class="pass">PASS</td></tr><tr><td>|Δv| ≤ tol</td><td class="pass">0.003</td></tr><tr><td>|Δa| ≤ tol</td><td class="pass">0.018</td></tr><tr><td>|j| ≤ limit</td><td class="pass">PASS</td></tr><tr><td>trajectory age</td><td class="note">61 ms</td></tr></table></div>
</div>
</div>
<div class="s-tabs"><span class="s-tab active">LS / ST</span><span class="s-tab">Curvature</span><span class="s-tab">Velocity / Acceleration / Jerk</span><span class="s-tab">Cycle history</span></div>
<div class="s-multipanel">
<div class="s-small"><div class="s-panel-title">(b) Lateral offset</div><svg viewBox="0 0 120 72" preserveAspectRatio="none"><line class="axis" x1="18" y1="60" x2="115" y2="60"/><line class="axis" x1="18" y1="8" x2="18" y2="60"/><line class="gridline" x1="18" y1="34" x2="115" y2="34"/><path class="current" d="M18,34 C38,25 51,30 65,35 S92,39 115,33"/><text class="tick" x="52" y="70">s (m)</text><text class="tick" x="1" y="9">l (m)</text></svg></div>
<div class="s-small"><div class="s-panel-title">(c) Longitudinal progress</div><svg viewBox="0 0 120 72" preserveAspectRatio="none"><line class="axis" x1="18" y1="60" x2="115" y2="60"/><line class="axis" x1="18" y1="8" x2="18" y2="60"/><path class="previous" d="M18,58 L42,52 L66,41 L90,27 L115,13"/><path class="current" d="M18,58 L42,51 L66,39 L90,25 L115,11"/><circle class="handoff" cx="90" cy="25" r="2.5"/><text class="tick" x="52" y="70">t (s)</text><text class="tick" x="2" y="9">s (m)</text></svg></div>
<div class="s-small"><div class="s-panel-title">(d) Signed velocity</div><svg viewBox="0 0 120 72" preserveAspectRatio="none"><line class="axis" x1="18" y1="60" x2="115" y2="60"/><line class="axis" x1="18" y1="8" x2="18" y2="60"/><line class="limit" x1="18" y1="14" x2="115" y2="14"/><path class="previous" d="M18,51 C36,43 48,30 67,26 S96,27 115,24"/><path class="current" d="M18,49 C36,41 48,29 67,25 S96,26 115,23"/><circle class="handoff" cx="67" cy="25" r="2.5"/><text class="tick" x="52" y="70">t (s)</text><text class="tick" x="1" y="9">v (m/s)</text></svg></div>
</div>
<div class="caption">Refresh: 10 Hz · latest-snapshot transport · history: 60 cycles (bounded) · browser clients: 1 · no planner backpressure</div>
</div>
</div>
</div>
<div class="options">
<div class="option" data-choice="approve-scientific" onclick="toggleSelect(this)"><div class="letter"></div><div class="content"><h3>采用这个科研风格</h3><p>后续页面都沿用细线、白底、论文式多子图与单位标注。</p></div></div>
</div>