GPS im Admin und offline verbesserungen
This commit is contained in:
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user