feat(lidar): add point-aligned ground review

This commit is contained in:
DCCONSTRUCTIONS
2026-07-25 09:44:38 +03:00
parent 75a3e669d9
commit 2dfb34ef21
15 changed files with 1548 additions and 140 deletions
@@ -171,6 +171,37 @@
grid-template-columns: 1fr;
}
.lidar-ground-review > header,
.lidar-ground-review__controls {
align-items: stretch;
flex-direction: column;
}
.lidar-ground-frame-status {
justify-items: start;
text-align: left;
}
.lidar-ground-modes {
flex-wrap: wrap;
}
.lidar-ground-frame-control input {
width: 100%;
}
.lidar-ground-frame-control {
width: 100%;
}
.lidar-ground-scene {
min-height: 22rem;
}
.lidar-ground-scene__toolbar span {
display: none;
}
.polygon-run-identity dl {
grid-template-columns: 1fr;
}
@@ -1020,6 +1020,209 @@
padding-top: 0.7rem;
}
.lidar-ground-review {
display: grid;
gap: 0.75rem;
margin-top: 0.85rem;
border: 1px solid rgb(74 215 255 / 0.18);
border-radius: 1rem;
background:
radial-gradient(circle at 18% 0%, rgb(56 124 255 / 0.12), transparent 34%),
rgb(4 12 19 / 0.72);
padding: 0.85rem;
}
.lidar-ground-review > header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 1rem;
}
.lidar-ground-review h3,
.lidar-ground-review p {
margin: 0;
}
.lidar-ground-review h3 {
margin-top: 0.2rem;
color: var(--nodedc-text-primary);
font-size: 0.95rem;
}
.lidar-ground-review p,
.lidar-ground-frame-status span,
.lidar-ground-scene__toolbar,
.lidar-ground-legend {
color: var(--nodedc-text-muted);
font-size: 0.61rem;
line-height: 1.45;
}
.lidar-ground-review > header p {
max-width: 35rem;
margin-top: 0.25rem;
}
.lidar-ground-frame-status {
display: grid;
flex: 0 0 auto;
gap: 0.18rem;
justify-items: end;
text-align: right;
}
.lidar-ground-frame-status strong {
color: var(--nodedc-text-primary);
font-size: 0.7rem;
}
.lidar-ground-review__controls {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.75rem;
}
.lidar-ground-modes,
.lidar-ground-frame-control {
display: flex;
align-items: center;
gap: 0.35rem;
}
.lidar-ground-modes button,
.lidar-ground-frame-control button,
.lidar-ground-scene__toolbar button {
border: 1px solid var(--station-hairline);
border-radius: 999px;
background: rgb(255 255 255 / 0.035);
padding: 0.4rem 0.62rem;
color: var(--nodedc-text-secondary);
font: inherit;
font-size: 0.61rem;
cursor: pointer;
}
.lidar-ground-modes button:hover,
.lidar-ground-modes button[data-active="true"],
.lidar-ground-frame-control button:hover:not(:disabled),
.lidar-ground-scene__toolbar button:hover {
border-color: rgb(74 215 255 / 0.48);
background: rgb(74 215 255 / 0.1);
color: var(--nodedc-text-primary);
}
.lidar-ground-frame-control button {
display: grid;
width: 1.75rem;
height: 1.75rem;
place-items: center;
padding: 0;
font-size: 0.82rem;
}
.lidar-ground-frame-control button:disabled {
opacity: 0.35;
cursor: default;
}
.lidar-ground-frame-control input {
width: min(16rem, 24vw);
accent-color: #4ad7ff;
}
.lidar-ground-scene {
position: relative;
overflow: hidden;
min-height: 30rem;
border: 1px solid rgb(255 255 255 / 0.09);
border-radius: 0.9rem;
background: #071018;
}
.lidar-ground-scene__viewport {
position: absolute;
inset: 0;
}
.lidar-ground-scene__viewport canvas {
display: block;
width: 100%;
height: 100%;
}
.lidar-ground-scene__toolbar {
position: absolute;
z-index: 2;
right: 0.6rem;
bottom: 0.6rem;
display: flex;
align-items: center;
gap: 0.5rem;
border: 1px solid rgb(255 255 255 / 0.08);
border-radius: 999px;
background: rgb(5 13 21 / 0.82);
padding: 0.28rem;
backdrop-filter: blur(14px);
}
.lidar-ground-scene__toolbar button {
background: rgb(74 215 255 / 0.08);
}
.lidar-ground-scene__error {
position: absolute;
inset: 0;
display: grid;
place-items: center;
margin: 0;
color: var(--nodedc-danger);
}
.lidar-ground-scene-placeholder {
display: grid;
min-height: 18rem;
place-content: center;
justify-items: center;
gap: 0.55rem;
border: 1px solid var(--station-hairline);
border-radius: 0.9rem;
background: #071018;
text-align: center;
}
.lidar-ground-legend {
display: flex;
flex-wrap: wrap;
gap: 0.45rem 0.85rem;
}
.lidar-ground-legend span {
display: inline-flex;
align-items: center;
gap: 0.35rem;
}
.lidar-ground-legend i {
width: 0.46rem;
height: 0.46rem;
border-radius: 50%;
background: #3d4a58;
}
.lidar-ground-legend i[data-color="shared"] {
background: #b9ff4a;
}
.lidar-ground-legend i[data-color="current"] {
background: #ffa32e;
}
.lidar-ground-legend i[data-color="candidate"] {
background: #3dd7ff;
}
.lidar-ground-empty {
margin-top: 1rem;
}