diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1e48ea9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 SkyView Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index 42715a2..645e56c 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ A high-performance, multi-source ADS-B aircraft tracking application that connec - **Beast Binary Format**: Native support for dump1090 Beast format (port 30005) - **Multiple Receivers**: Connect to unlimited dump1090 sources simultaneously - **Intelligent Merging**: Smart data fusion with signal strength-based source selection -- **Real-time Processing**: High-performance concurrent message processing +- **High-throughput Processing**: High-performance concurrent message processing ### Advanced Web Interface - **Interactive Maps**: Leaflet.js-based mapping with aircraft tracking -- **Real-time Updates**: WebSocket-powered live data streaming +- **Low-latency Updates**: WebSocket-powered live data streaming - **Mobile Responsive**: Optimized for desktop, tablet, and mobile devices - **Multi-view Dashboard**: Map, Table, Statistics, Coverage, and 3D Radar views @@ -21,13 +21,14 @@ A high-performance, multi-source ADS-B aircraft tracking application that connec - **Range Circles**: Configurable range rings for each receiver - **Flight Trails**: Historical aircraft movement tracking - **3D Radar View**: Three.js-powered 3D visualization (optional) -- **Statistics Dashboard**: Real-time charts and metrics +- **Statistics Dashboard**: Live charts and metrics - **Smart Origin**: Auto-calculated map center based on receiver locations - **Map Controls**: Center on aircraft, reset to origin, toggle overlays ### Aircraft Data - **Complete Mode S Decoding**: Position, velocity, altitude, heading - **Aircraft Identification**: Callsign, category, country, registration +- **ICAO Country Database**: Comprehensive embedded database with 70+ allocations covering 40+ countries - **Multi-source Tracking**: Signal strength from each receiver - **Historical Data**: Position history and trail visualization @@ -118,7 +119,7 @@ Access the web interface at `http://localhost:8080` ### Views Available: - **Map View**: Interactive aircraft tracking with receiver locations - **Table View**: Sortable aircraft data with multi-source information -- **Statistics**: Real-time metrics and historical charts +- **Statistics**: Live metrics and historical charts - **Coverage**: Signal strength analysis and heatmaps - **3D Radar**: Three-dimensional aircraft visualization @@ -160,7 +161,7 @@ docker run -p 8080:8080 -v $(pwd)/config.json:/app/config.json skyview - `GET /api/heatmap/{sourceId}` - Signal heatmap ### WebSocket -- `ws://localhost:8080/ws` - Real-time updates +- `ws://localhost:8080/ws` - Low-latency updates ## ๐ ๏ธ Development diff --git a/assets/static/css/style.css b/assets/static/css/style.css index 0f2e125..26ce441 100644 --- a/assets/static/css/style.css +++ b/assets/static/css/style.css @@ -193,6 +193,48 @@ body { background: #404040; } +.display-options { + position: absolute; + top: 10px; + left: 10px; + z-index: 1000; + background: rgba(45, 45, 45, 0.95); + border: 1px solid #404040; + border-radius: 8px; + padding: 1rem; + min-width: 200px; +} + +.display-options h4 { + margin-bottom: 0.5rem; + color: #ffffff; + font-size: 0.9rem; +} + +.option-group { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.option-group label { + display: flex; + align-items: center; + cursor: pointer; + font-size: 0.8rem; + color: #cccccc; +} + +.option-group input[type="checkbox"] { + margin-right: 0.5rem; + accent-color: #00d4ff; + transform: scale(1.1); +} + +.option-group label:hover { + color: #ffffff; +} + .legend { position: absolute; bottom: 10px; @@ -228,6 +270,7 @@ body { .legend-icon.commercial { background: #00ff88; } .legend-icon.cargo { background: #ff8c00; } +.legend-icon.helicopter { background: #00d4ff; } .legend-icon.military { background: #ff4444; } .legend-icon.ga { background: #ffff00; } .legend-icon.ground { background: #888888; } @@ -362,20 +405,39 @@ body { z-index: 1000; } +/* Leaflet popup override - ensure our styles take precedence */ +.leaflet-popup-content-wrapper { + background: #2d2d2d !important; + color: #ffffff !important; + border-radius: 8px; +} + +.leaflet-popup-content { + margin: 12px !important; + color: #ffffff !important; +} + +.leaflet-popup-tip { + background: #2d2d2d !important; +} + .aircraft-popup { min-width: 300px; max-width: 400px; + color: #ffffff !important; } .popup-header { border-bottom: 1px solid #404040; padding-bottom: 0.5rem; margin-bottom: 0.75rem; + color: #ffffff !important; } .flight-info { font-size: 1.1rem; font-weight: bold; + color: #ffffff !important; } .icao-flag { @@ -384,21 +446,27 @@ body { } .flight-id { - color: #00a8ff; + color: #00a8ff !important; font-family: monospace; } .callsign { - color: #00ff88; + color: #00ff88 !important; } .popup-details { font-size: 0.9rem; + color: #ffffff !important; } .detail-row { margin-bottom: 0.5rem; padding: 0.25rem 0; + color: #ffffff !important; +} + +.detail-row strong { + color: #ffffff !important; } .detail-grid { @@ -415,13 +483,27 @@ body { .detail-item .label { font-size: 0.8rem; - color: #888; + color: #888 !important; margin-bottom: 0.1rem; } .detail-item .value { font-weight: bold; - color: #ffffff; + color: #ffffff !important; +} + +/* Ensure all values are visible with strong contrast */ +.aircraft-popup .value, +.aircraft-popup .detail-row, +.aircraft-popup .detail-item .value { + color: #ffffff !important; + text-shadow: 1px 1px 2px rgba(0,0,0,0.5); +} + +/* Style for N/A or empty values - still visible but slightly dimmed */ +.detail-item .value.no-data { + color: #aaaaaa !important; + font-style: italic; } @media (max-width: 768px) { diff --git a/assets/static/icons/cargo.svg b/assets/static/icons/cargo.svg new file mode 100644 index 0000000..b3605b1 --- /dev/null +++ b/assets/static/icons/cargo.svg @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/assets/static/icons/commercial.svg b/assets/static/icons/commercial.svg new file mode 100644 index 0000000..f1f1b28 --- /dev/null +++ b/assets/static/icons/commercial.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/assets/static/icons/ga.svg b/assets/static/icons/ga.svg new file mode 100644 index 0000000..cfba161 --- /dev/null +++ b/assets/static/icons/ga.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/assets/static/icons/ground.svg b/assets/static/icons/ground.svg new file mode 100644 index 0000000..ee5af8e --- /dev/null +++ b/assets/static/icons/ground.svg @@ -0,0 +1,10 @@ + + \ No newline at end of file diff --git a/assets/static/icons/helicopter.svg b/assets/static/icons/helicopter.svg new file mode 100644 index 0000000..5197bea --- /dev/null +++ b/assets/static/icons/helicopter.svg @@ -0,0 +1,12 @@ + + \ No newline at end of file diff --git a/assets/static/icons/military.svg b/assets/static/icons/military.svg new file mode 100644 index 0000000..c4e58a7 --- /dev/null +++ b/assets/static/icons/military.svg @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/assets/static/index.html b/assets/static/index.html index 036a832..9849126 100644 --- a/assets/static/index.html +++ b/assets/static/index.html @@ -77,32 +77,59 @@ - + + + + +