mirror of
https://github.com/smittix/intercept.git
synced 2026-07-23 16:38:11 -07:00
@@ -862,9 +862,6 @@ body {
|
|||||||
min-height: 300px;
|
min-height: 300px;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background: #08121c;
|
|
||||||
contain: layout paint;
|
|
||||||
overflow-anchor: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
@@ -883,19 +880,17 @@ body {
|
|||||||
|
|
||||||
.display-container {
|
.display-container {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 0;
|
top: 0;
|
||||||
isolation: isolate;
|
left: 0;
|
||||||
contain: layout paint;
|
right: 0;
|
||||||
overflow-anchor: none;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#radarMap {
|
#radarMap {
|
||||||
position: absolute;
|
position: relative;
|
||||||
inset: 0;
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
background: #08121c;
|
|
||||||
contain: layout paint;
|
|
||||||
overflow-anchor: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-crosshair-overlay {
|
.map-crosshair-overlay {
|
||||||
@@ -909,16 +904,6 @@ body {
|
|||||||
--crosshair-x-end: 50%;
|
--crosshair-x-end: 50%;
|
||||||
--crosshair-y-end: 50%;
|
--crosshair-y-end: 50%;
|
||||||
--crosshair-duration: 1500ms;
|
--crosshair-duration: 1500ms;
|
||||||
contain: layout paint;
|
|
||||||
overflow-anchor: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#radarMap .leaflet-pane,
|
|
||||||
#radarMap .leaflet-map-pane,
|
|
||||||
#radarMap .leaflet-tile-pane,
|
|
||||||
#radarMap .leaflet-overlay-pane,
|
|
||||||
#radarMap .leaflet-tile {
|
|
||||||
overflow-anchor: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-crosshair-line {
|
.map-crosshair-line {
|
||||||
|
|||||||
@@ -453,8 +453,6 @@
|
|||||||
let panelSelectionFallbackTimer = null;
|
let panelSelectionFallbackTimer = null;
|
||||||
let panelSelectionStageTimer = null;
|
let panelSelectionStageTimer = null;
|
||||||
let mapCrosshairRequestId = 0;
|
let mapCrosshairRequestId = 0;
|
||||||
let radarMapResizeObserver = null;
|
|
||||||
let radarMapSizeSyncFrame = null;
|
|
||||||
// Watchlist - persisted to localStorage
|
// Watchlist - persisted to localStorage
|
||||||
let watchlist = JSON.parse(localStorage.getItem('adsb_watchlist') || '[]');
|
let watchlist = JSON.parse(localStorage.getItem('adsb_watchlist') || '[]');
|
||||||
|
|
||||||
@@ -1732,14 +1730,6 @@ ACARS: ${r.statistics.acarsMessages} messages`;
|
|||||||
window.addEventListener('pagehide', function() {
|
window.addEventListener('pagehide', function() {
|
||||||
if (eventSource) { eventSource.close(); eventSource = null; }
|
if (eventSource) { eventSource.close(); eventSource = null; }
|
||||||
if (gpsEventSource) { gpsEventSource.close(); gpsEventSource = null; }
|
if (gpsEventSource) { gpsEventSource.close(); gpsEventSource = null; }
|
||||||
if (radarMapResizeObserver) {
|
|
||||||
radarMapResizeObserver.disconnect();
|
|
||||||
radarMapResizeObserver = null;
|
|
||||||
}
|
|
||||||
if (radarMapSizeSyncFrame) {
|
|
||||||
cancelAnimationFrame(radarMapSizeSyncFrame);
|
|
||||||
radarMapSizeSyncFrame = null;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
@@ -2144,29 +2134,6 @@ sudo make install</code>
|
|||||||
return layer;
|
return layer;
|
||||||
}
|
}
|
||||||
|
|
||||||
function scheduleRadarMapSizeSync(drawRings = false) {
|
|
||||||
if (!radarMap) return;
|
|
||||||
if (radarMapSizeSyncFrame) {
|
|
||||||
cancelAnimationFrame(radarMapSizeSyncFrame);
|
|
||||||
}
|
|
||||||
radarMapSizeSyncFrame = requestAnimationFrame(() => {
|
|
||||||
radarMapSizeSyncFrame = null;
|
|
||||||
if (!radarMap) return;
|
|
||||||
radarMap.invalidateSize({ pan: false, debounceMoveend: true });
|
|
||||||
if (drawRings) {
|
|
||||||
drawRangeRings();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function attachRadarMapResizeObserver(container) {
|
|
||||||
if (!container || radarMapResizeObserver || typeof ResizeObserver === 'undefined') return;
|
|
||||||
radarMapResizeObserver = new ResizeObserver(() => {
|
|
||||||
scheduleRadarMapSizeSync(true);
|
|
||||||
});
|
|
||||||
radarMapResizeObserver.observe(container);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function initMap() {
|
async function initMap() {
|
||||||
// Guard against double initialization (e.g. bfcache restore)
|
// Guard against double initialization (e.g. bfcache restore)
|
||||||
const container = document.getElementById('radarMap');
|
const container = document.getElementById('radarMap');
|
||||||
@@ -2186,10 +2153,18 @@ sudo make install</code>
|
|||||||
// when internet map providers are slow or unreachable.
|
// when internet map providers are slow or unreachable.
|
||||||
const fallbackTiles = createFallbackGridLayer().addTo(radarMap);
|
const fallbackTiles = createFallbackGridLayer().addTo(radarMap);
|
||||||
|
|
||||||
radarMap.whenReady(() => {
|
// Draw range rings after map is ready
|
||||||
scheduleRadarMapSizeSync(true);
|
setTimeout(() => drawRangeRings(), 100);
|
||||||
});
|
|
||||||
attachRadarMapResizeObserver(container);
|
// Fix map size on mobile after initialization
|
||||||
|
setTimeout(() => {
|
||||||
|
if (radarMap) radarMap.invalidateSize();
|
||||||
|
}, 200);
|
||||||
|
|
||||||
|
// Additional invalidateSize to ensure all tiles load
|
||||||
|
setTimeout(() => {
|
||||||
|
if (radarMap) radarMap.invalidateSize();
|
||||||
|
}, 500);
|
||||||
|
|
||||||
// Upgrade tiles via Settings in the background (non-blocking)
|
// Upgrade tiles via Settings in the background (non-blocking)
|
||||||
if (typeof Settings !== 'undefined') {
|
if (typeof Settings !== 'undefined') {
|
||||||
@@ -2209,12 +2184,14 @@ sudo make install</code>
|
|||||||
|
|
||||||
// Handle window resize for map (especially important on mobile)
|
// Handle window resize for map (especially important on mobile)
|
||||||
window.addEventListener('resize', function() {
|
window.addEventListener('resize', function() {
|
||||||
scheduleRadarMapSizeSync(true);
|
if (radarMap) radarMap.invalidateSize();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Handle orientation changes for mobile devices
|
// Handle orientation changes for mobile devices
|
||||||
window.addEventListener('orientationchange', function() {
|
window.addEventListener('orientationchange', function() {
|
||||||
scheduleRadarMapSizeSync(true);
|
setTimeout(() => {
|
||||||
|
if (radarMap) radarMap.invalidateSize();
|
||||||
|
}, 200);
|
||||||
});
|
});
|
||||||
|
|
||||||
// ============================================
|
// ============================================
|
||||||
|
|||||||
Reference in New Issue
Block a user