Compare commits
2 commits
da1b181666
...
d73ecc2b20
| Author | SHA1 | Date | |
|---|---|---|---|
| d73ecc2b20 | |||
| 5a4f9e2e20 |
1 changed files with 58 additions and 25 deletions
|
|
@ -22,7 +22,7 @@ class SkyView {
|
|||
this.heatmapLayer = null;
|
||||
|
||||
// UI state
|
||||
this.currentView = 'map';
|
||||
this.currentView = 'map-view';
|
||||
this.showTrails = false;
|
||||
this.showRange = false;
|
||||
this.showSources = true;
|
||||
|
|
@ -70,16 +70,26 @@ class SkyView {
|
|||
switchView(viewId) {
|
||||
// Update buttons
|
||||
document.querySelectorAll('.view-btn').forEach(btn => btn.classList.remove('active'));
|
||||
document.getElementById(`${viewId}-btn`).classList.add('active');
|
||||
const activeBtn = document.getElementById(`${viewId}-btn`);
|
||||
if (activeBtn) {
|
||||
activeBtn.classList.add('active');
|
||||
}
|
||||
|
||||
// Update views
|
||||
// Update views (viewId already includes the full view ID like "map-view")
|
||||
document.querySelectorAll('.view').forEach(view => view.classList.remove('active'));
|
||||
document.getElementById(`${viewId}-view`).classList.add('active');
|
||||
const activeView = document.getElementById(viewId);
|
||||
if (activeView) {
|
||||
activeView.classList.add('active');
|
||||
} else {
|
||||
console.warn(`View element not found: ${viewId}`);
|
||||
return;
|
||||
}
|
||||
|
||||
this.currentView = viewId;
|
||||
|
||||
// Handle view-specific initialization
|
||||
switch (viewId) {
|
||||
// Handle view-specific initialization (extract base name for switch)
|
||||
const baseName = viewId.replace('-view', '');
|
||||
switch (baseName) {
|
||||
case 'coverage':
|
||||
this.initializeCoverageMap();
|
||||
break;
|
||||
|
|
@ -208,7 +218,7 @@ class SkyView {
|
|||
this.updateStatistics();
|
||||
this.updateHeaderInfo();
|
||||
|
||||
if (this.currentView === 'radar3d') {
|
||||
if (this.currentView === 'radar3d-view') {
|
||||
this.update3DRadar();
|
||||
}
|
||||
}
|
||||
|
|
@ -333,27 +343,50 @@ class SkyView {
|
|||
}
|
||||
|
||||
updateSourceMarkers() {
|
||||
// Clear existing source markers
|
||||
this.sourceMarkers.forEach(marker => this.map.removeLayer(marker));
|
||||
this.sourceMarkers.clear();
|
||||
// Remove markers for sources that no longer exist
|
||||
const currentSourceIds = new Set(this.sourcesData.keys());
|
||||
for (const [id, marker] of this.sourceMarkers) {
|
||||
if (!currentSourceIds.has(id)) {
|
||||
this.map.removeLayer(marker);
|
||||
this.sourceMarkers.delete(id);
|
||||
}
|
||||
}
|
||||
|
||||
// Add source markers
|
||||
// Update or create markers for current sources
|
||||
for (const [id, source] of this.sourcesData) {
|
||||
if (source.latitude && source.longitude) {
|
||||
const marker = L.circleMarker([source.latitude, source.longitude], {
|
||||
radius: source.active ? 10 : 6,
|
||||
fillColor: source.active ? '#00d4ff' : '#666666',
|
||||
color: '#ffffff',
|
||||
weight: 2,
|
||||
fillOpacity: 0.8,
|
||||
className: 'source-marker'
|
||||
}).addTo(this.map);
|
||||
|
||||
marker.bindPopup(this.createSourcePopupContent(source), {
|
||||
maxWidth: 300
|
||||
});
|
||||
|
||||
this.sourceMarkers.set(id, marker);
|
||||
if (this.sourceMarkers.has(id)) {
|
||||
// Update existing marker
|
||||
const marker = this.sourceMarkers.get(id);
|
||||
|
||||
// Update marker style if status changed
|
||||
marker.setStyle({
|
||||
radius: source.active ? 10 : 6,
|
||||
fillColor: source.active ? '#00d4ff' : '#666666',
|
||||
fillOpacity: 0.8
|
||||
});
|
||||
|
||||
// Update popup content if it's open
|
||||
if (marker.isPopupOpen()) {
|
||||
marker.setPopupContent(this.createSourcePopupContent(source));
|
||||
}
|
||||
} else {
|
||||
// Create new marker
|
||||
const marker = L.circleMarker([source.latitude, source.longitude], {
|
||||
radius: source.active ? 10 : 6,
|
||||
fillColor: source.active ? '#00d4ff' : '#666666',
|
||||
color: '#ffffff',
|
||||
weight: 2,
|
||||
fillOpacity: 0.8,
|
||||
className: 'source-marker'
|
||||
}).addTo(this.map);
|
||||
|
||||
marker.bindPopup(this.createSourcePopupContent(source), {
|
||||
maxWidth: 300
|
||||
});
|
||||
|
||||
this.sourceMarkers.set(id, marker);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue