feat: complete dual-seat whole-vehicle orchestration

This commit is contained in:
vee
2026-08-12 15:12:40 +08:00
parent 32379a1573
commit 9ce64b3a01
62 changed files with 9741 additions and 3950 deletions
+337 -1
View File
@@ -1075,6 +1075,311 @@
border-radius: inherit;
}
/* Unified live calibration workspace ------------------------------------ */
.v2-calibration-live-view {
height: 100%;
display: grid;
grid-template-rows: minmax(275px, 1fr) auto;
gap: 10px;
padding: 1px 3px 6px 1px;
overflow: hidden;
}
.v2-calibration-live-grid {
min-width: 0;
min-height: 0;
display: grid;
grid-template-columns: minmax(300px, 1.15fr) minmax(250px, 0.94fr) minmax(270px, 0.91fr);
gap: 10px;
}
.v2-calibration-live-grid > .v2-calibration-panel {
min-width: 0;
min-height: 0;
height: 100%;
padding: 12px;
overflow: hidden;
}
.v2-calibration-live-grid .v2-calibration-stage {
display: grid;
grid-template-rows: auto minmax(150px, 1fr) auto;
}
.v2-calibration-live-grid .v2-calibration-stage > header,
.v2-calibration-live-grid .v2-calibration-video-panel > header,
.v2-calibration-live-grid .v2-calibration-mqtt-panel > header {
align-items: center;
}
.v2-calibration-live-grid .v2-calibration-panel h2 {
font-size: clamp(14px, 1.12vw, 18px);
}
.v2-calibration-live-grid .v2-calibration-operation {
min-height: 38px;
margin-top: 7px;
padding-block: 5px;
}
.v2-calibration-live-grid .v2-axis-tag {
padding: 4px 6px;
font-size: 7px;
}
.v2-calibration-live-grid .v2-calibration-video-panel {
display: grid;
grid-template-rows: auto minmax(150px, 1fr) auto auto;
}
.v2-calibration-live-grid .v2-calibration-video-frame {
min-height: 0;
margin-top: 8px;
}
.v2-calibration-live-grid .v2-calibration-video-panel .v2-calibration-detail {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-calibration-live-grid .v2-calibration-actions {
margin-top: 5px;
}
.v2-calibration-live-grid .v2-calibration-actions button {
min-height: 26px;
padding: 4px 9px;
}
.v2-calibration-live-grid .v2-calibration-mqtt-panel {
display: flex;
flex-direction: column;
}
.v2-calibration-live-grid .v2-calibration-metrics {
gap: 5px;
margin: 8px 0 5px;
}
.v2-calibration-live-grid .v2-calibration-metrics > div {
gap: 1px;
padding: 6px 7px;
border-radius: 8px;
}
.v2-calibration-live-grid .v2-calibration-metrics strong {
font-size: 13px;
}
.v2-calibration-live-grid .v2-calibration-detail {
margin: 4px 0;
}
.v2-calibration-live-grid .v2-calibration-pose-areas {
min-height: 38px;
max-height: 92px;
display: grid;
grid-template-columns: 1fr;
gap: 4px;
overflow: auto;
scrollbar-width: thin;
}
.v2-calibration-live-grid .v2-calibration-empty {
align-self: center;
margin: 10px auto;
font-size: 8px;
}
.v2-calibration-live-grid .v2-calibration-pose-row {
gap: 2px 6px;
padding: 3px 6px;
border-radius: 8px;
}
.v2-calibration-live-grid .v2-calibration-pose-row strong {
font-size: 8px;
line-height: 1.1;
}
.v2-calibration-live-grid .v2-calibration-pose-row span {
font-size: 7px;
line-height: 1.1;
}
.v2-calibration-live-grid .v2-calibration-pose-row small {
font-size: 6px;
line-height: 1.1;
}
.v2-calibration-live-mapping {
min-height: 0;
margin-top: 6px;
padding-top: 6px;
border-top: 1px solid rgba(49, 94, 170, 0.1);
}
.v2-calibration-subheading {
display: flex;
align-items: baseline;
justify-content: space-between;
}
.v2-calibration-subheading span {
color: #5b77aa;
font: 800 7px Consolas, monospace;
letter-spacing: 0.12em;
}
.v2-calibration-subheading strong {
color: #596a6d;
font-size: 9px;
}
.v2-calibration-live-mapping .v2-calibration-mapping-rows {
grid-template-columns: 1fr;
gap: 2px;
margin-top: 4px;
}
.v2-calibration-live-mapping .v2-calibration-mapping-row {
grid-template-columns: 34px 52px minmax(28px, 1fr) 47px;
gap: 5px;
padding: 2px 6px;
border-radius: 7px;
font-size: 7px;
line-height: 1;
}
.v2-calibration-live-mapping .v2-calibration-mapping-row span,
.v2-calibration-live-mapping .v2-calibration-mapping-row b {
font-size: 6px;
}
.v2-calibration-live-axes {
min-width: 0;
margin: 0;
padding: 10px 11px 8px;
}
.v2-calibration-live-axes > .v2-calibration-live-toolbar {
display: grid;
grid-template-columns: minmax(128px, 0.54fr) minmax(340px, 1.5fr) minmax(155px, 0.64fr);
align-items: center;
gap: 10px;
margin: 0 0 8px;
}
.v2-calibration-axis-title {
min-width: 0;
}
.v2-calibration-axis-title h2 {
margin-top: 1px;
}
.v2-calibration-axis-title small {
display: block;
overflow: hidden;
margin-top: 2px;
color: #919d9e;
font-size: 7px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-calibration-live-toolbar .v2-calibration-flow {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) 12px minmax(0, 1fr) 12px minmax(0, 1fr);
align-items: center;
}
.v2-calibration-live-toolbar .v2-calibration-flow > div {
min-height: 36px;
grid-template-columns: 24px minmax(0, 1fr);
gap: 5px;
padding: 4px 6px;
border-radius: 9px;
}
.v2-calibration-live-toolbar .v2-calibration-flow > div > span {
font-size: 8px;
}
.v2-calibration-live-toolbar .v2-calibration-flow strong {
font-size: 8px;
}
.v2-calibration-live-toolbar .v2-calibration-flow small {
overflow: hidden;
font-size: 6px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-calibration-live-toolbar .v2-calibration-flow > i {
width: 100%;
height: 1px;
margin: 0;
}
.v2-calibration-live-toolbar > .v2-calibration-primary {
width: 100%;
min-height: 36px;
padding: 7px 9px;
font-size: 8px;
}
.v2-calibration-live-axes .v2-calibration-axis-card {
padding: 8px 9px;
border-radius: 13px;
box-shadow: 0 8px 22px rgba(39, 70, 72, 0.055);
}
.v2-calibration-live-axes .v2-calibration-axis-reading {
margin: 7px 0 4px;
}
.v2-calibration-live-axes .v2-calibration-axis-reading strong {
font-size: clamp(13px, 1.1vw, 17px);
}
.v2-calibration-live-axes .v2-calibration-axis-actions {
margin-top: 6px;
}
.v2-calibration-live-axes .v2-calibration-axis-actions button {
min-height: 25px;
padding: 4px 5px;
}
.v2-calibration-live-safety {
min-height: 24px;
grid-template-columns: 18px minmax(0, 1fr);
gap: 5px;
margin-top: 6px;
padding: 4px 7px;
}
.v2-calibration-live-safety svg {
width: 13px;
height: 13px;
}
.v2-calibration-live-safety p {
display: flex;
gap: 7px;
align-items: baseline;
font-size: 7px;
}
.v2-calibration-live-safety span {
color: #718985;
}
.v2-calibration-settings-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
@@ -1168,6 +1473,18 @@
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-calibration-live-grid {
grid-template-columns: minmax(220px, 1.1fr) minmax(210px, 0.94fr) minmax(225px, 0.96fr);
}
.v2-calibration-live-axes .v2-calibration-axis-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
.v2-calibration-live-axes > .v2-calibration-live-toolbar {
grid-template-columns: minmax(118px, 0.48fr) minmax(300px, 1.45fr) minmax(140px, 0.62fr);
}
.v2-calibration-settings-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
@@ -1196,11 +1513,30 @@
overflow: visible;
}
.v2-calibration-live-view {
height: auto;
grid-template-rows: auto auto;
overflow: visible;
}
.v2-calibration-hero-grid,
.v2-calibration-stereo-grid {
.v2-calibration-stereo-grid,
.v2-calibration-live-grid {
grid-template-columns: 1fr;
}
.v2-calibration-live-grid > .v2-calibration-panel {
min-height: 330px;
}
.v2-calibration-live-axes > .v2-calibration-live-toolbar {
grid-template-columns: 1fr;
}
.v2-calibration-live-axes .v2-calibration-axis-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-calibration-workflow {
min-height: 360px;
}