GPS im Admin und offline verbesserungen

This commit is contained in:
2026-05-24 10:43:57 +02:00
parent 91fb1fcf0b
commit 1899a49f4d
5 changed files with 1019 additions and 427 deletions
+149 -24
View File
@@ -184,6 +184,15 @@ header {
}
#stat-panel { flex-shrink: 0; }
#joy-panel.is-disabled {
opacity: .55;
}
#joy-panel.is-disabled .joy-base,
#joy-panel.is-disabled .dpad-btn,
#joy-panel.is-disabled .dbtn,
#joy-panel.is-disabled .mtbtn {
cursor: not-allowed;
}
.drive-btns { display: flex; gap: 8px; padding: 10px 12px; }
.dbtn {
@@ -298,6 +307,9 @@ header {
letter-spacing: calc(2px * var(--cam-scale));
z-index: 10;
}
.c-rec.is-offline {
color: rgba(170,255,220,.72);
}
.c-rec-dot {
width: calc(6px * var(--cam-scale));
height: calc(6px * var(--cam-scale));
@@ -305,6 +317,10 @@ header {
background: #FF3333;
animation: blink 1.1s step-end infinite;
}
.c-rec.is-offline .c-rec-dot {
background: rgba(170,255,220,.72);
animation: none;
}
@keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: 0; } }
.c-tl, .c-tr, .c-bl, .c-br {
position: absolute;
@@ -324,34 +340,59 @@ header {
left: 50%;
bottom: calc(13px * var(--cam-scale));
transform: translateX(-50%);
display: flex;
align-items: center;
gap: calc(8px * var(--cam-scale));
z-index: 10;
pointer-events: none;
}
.c-bm-box {
display: flex;
align-items: baseline;
gap: calc(5px * var(--cam-scale));
padding: calc(6px * var(--cam-scale)) calc(10px * var(--cam-scale));
background: rgba(3, 10, 14, .72);
border: 1px solid rgba(0,255,145,.18);
box-shadow: inset 0 0 12px rgba(0,255,145,.04), 0 0 16px rgba(0,0,0,.18);
backdrop-filter: blur(2px);
}
.c-bm-lbl,
.c-bm-unit {
font-size: calc(8px * var(--cam-scale));
color: rgba(0,255,145,.72);
letter-spacing: calc(1.2px * var(--cam-scale));
text-transform: uppercase;
}
.c-bm-box strong {
font-size: calc(14px * var(--cam-scale));
line-height: 1;
color: rgba(245,255,250,.98);
font-size: calc(9px * var(--cam-scale));
letter-spacing: calc(1px * var(--cam-scale));
line-height: 1.9;
text-align: center;
white-space: nowrap;
}
.connection-banner{
display:flex;
align-items:center;
gap:12px;
min-height:36px;
padding:8px 16px;
border-bottom:1px solid rgba(255,179,0,.2);
background:linear-gradient(90deg, rgba(255,179,0,.14) 0%, rgba(255,140,0,.06) 60%, transparent 100%);
color:rgba(255,235,190,.92);
font-size:11px;
letter-spacing:.4px;
}
.connection-banner strong{
font-size:10px;
letter-spacing:2px;
text-transform:uppercase;
color:#fff3cf;
}
body.page-connection-offline .connection-banner{
border-bottom-color:rgba(255,107,107,.3);
background:linear-gradient(90deg, rgba(255,107,107,.18) 0%, rgba(120,12,12,.12) 60%, transparent 100%);
color:rgba(255,220,220,.94);
}
body.page-connection-offline .mission-ok{
color:#ffb0b0;
}
body.page-connection-offline .pulse-dot{
background:#ff6b6b;
box-shadow:0 0 0 0 rgba(255,107,107,.5);
}
body.page-connection-degraded .mission-ok{
color:#ffd37a;
}
body.page-connection-degraded .pulse-dot{
background:var(--warn);
box-shadow:0 0 0 0 rgba(255,179,0,.5);
}
body.page-connection-offline .main,
body.page-connection-offline .admin-shell{
opacity:.74;
}
body.page-connection-degraded .main,
body.page-connection-degraded .admin-shell{
opacity:.9;
}
/* ── STAT PANEL ─────────────────────────────────────── */
.c-track {
@@ -1186,13 +1227,23 @@ body.page-admin .drive-calibration-button{
body.page-admin .admin-section-grid_map{
grid-template-columns:minmax(0, 1.7fr) minmax(280px, .85fr);
}
body.page-admin .admin-section-grid_gps{
grid-template-columns:minmax(0, 1.45fr) minmax(300px, .95fr);
}
body.page-admin .admin-col_map_main,
body.page-admin .admin-col_map_side{ min-width:0; }
body.page-admin .admin-col_gps_main,
body.page-admin .admin-col_gps_side{ min-width:0; }
body.page-admin .map-panel{
display:flex;
flex-direction:column;
min-height:620px;
}
body.page-admin .gps-panel{
display:flex;
flex-direction:column;
min-height:620px;
}
body.page-admin .map-toolbar{
display:flex;
gap:8px;
@@ -1230,6 +1281,78 @@ body.page-admin .map-route-storage-input{
body.page-admin .map-route-storage-input:focus{
border-color:rgba(0,255,145,.5);
}
body.page-admin .gps-copy{
font-size:10px;
color:rgba(205,255,235,.86);
letter-spacing:.4px;
line-height:1.6;
padding:10px 12px;
border-bottom:1px solid rgba(0,255,145,.05);
}
body.page-admin .gps-copy_compact{
border-bottom:none;
}
body.page-admin .gps-sky-stage{
padding:18px;
position:relative;
}
body.page-admin .gps-sky-canvas{
display:block;
width:100%;
max-width:560px;
aspect-ratio:1 / 1;
margin:0 auto;
border:1px solid rgba(0,255,145,.12);
background:radial-gradient(circle at 50% 50%, rgba(0,255,145,.04) 0%, rgba(4,16,26,.96) 70%);
cursor:pointer;
}
body.page-admin .gps-satellite-tooltip{
position:absolute;
z-index:20;
min-width:180px;
max-width:220px;
padding:10px 12px;
border:1px solid rgba(0,255,145,.18);
background:rgba(4,16,26,.96);
box-shadow:0 10px 28px rgba(0,0,0,.34), inset 0 0 14px rgba(0,255,145,.04);
transform:translate(-50%, -100%);
pointer-events:none;
}
body.page-admin .gps-satellite-tooltip-title{
margin-bottom:8px;
color:rgba(245,255,250,.98);
font-size:11px;
font-weight:700;
letter-spacing:.5px;
}
body.page-admin .gps-satellite-tooltip-row{
display:flex;
align-items:baseline;
justify-content:space-between;
gap:10px;
}
body.page-admin .gps-satellite-tooltip-row + .gps-satellite-tooltip-row{
margin-top:5px;
}
body.page-admin .gps-satellite-tooltip-row span{
color:rgba(170,255,220,.72);
font-size:8px;
letter-spacing:1px;
text-transform:uppercase;
}
body.page-admin .gps-satellite-tooltip-row strong{
color:rgba(245,255,250,.98);
font-size:10px;
letter-spacing:.4px;
}
body.page-admin .gps-satellite-empty{
padding:14px 10px;
border:1px solid rgba(0,255,145,.08);
background:rgba(0,255,145,.025);
color:rgba(175,255,220,.7);
font-size:10px;
letter-spacing:.4px;
}
body.page-admin .map-stage{
position:relative;
flex:1;
@@ -1402,7 +1525,9 @@ body.page-admin .leaflet-popup-tip{
body.page-admin .drive-calibration-toolbar{ flex-direction:column; align-items:stretch; }
body.page-admin .drive-calibration-grid{ grid-template-columns:1fr; }
body.page-admin .admin-section-grid_map{ grid-template-columns:1fr; }
body.page-admin .admin-section-grid_gps{ grid-template-columns:1fr; }
body.page-admin .map-panel{ min-height:0; }
body.page-admin .gps-panel{ min-height:0; }
body.page-admin .map-stage{ min-height:360px; }
body.page-admin .map-route-storage,
body.page-admin .map-route-storage_secondary{ grid-template-columns:1fr; }