mirror of
https://github.com/smittix/intercept.git
synced 2026-04-24 06:40:00 -07:00
- Extract inline CSS to static/css/modes/ (acars, aprs, tscm) - Create HTML partials for all 9 modes in templates/partials/modes/ - Reduce index.html from 11,862 to 10,281 lines (~15% reduction) - Use Jinja2 includes for cleaner template organization Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
122 lines
7.7 KiB
HTML
122 lines
7.7 KiB
HTML
<!-- AIRCRAFT MODE (ADS-B) -->
|
|
<div id="aircraftMode" class="mode-content">
|
|
<div class="section">
|
|
<h3>ADS-B Receiver</h3>
|
|
<div class="form-group">
|
|
<label>Frequency</label>
|
|
<input type="text" id="adsbFrequency" value="1090" readonly style="opacity: 0.7;">
|
|
<div class="info-text">Fixed at 1090 MHz</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Gain (dB)</label>
|
|
<input type="text" id="adsbGain" value="40" placeholder="40">
|
|
</div>
|
|
<div class="checkbox-group">
|
|
<label>
|
|
<input type="checkbox" id="adsbEnableMap" checked onchange="toggleAircraftRadar()">
|
|
Show Radar Display
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Display Settings</h3>
|
|
<div class="form-group">
|
|
<label>Range (nm)</label>
|
|
<select id="adsbRange">
|
|
<option value="50">50 nm</option>
|
|
<option value="100" selected>100 nm</option>
|
|
<option value="200">200 nm</option>
|
|
<option value="500">500 nm</option>
|
|
</select>
|
|
</div>
|
|
<div class="checkbox-group">
|
|
<label>
|
|
<input type="checkbox" id="adsbShowLabels" checked>
|
|
Show Callsigns
|
|
</label>
|
|
<label>
|
|
<input type="checkbox" id="adsbShowAltitude" checked>
|
|
Show Altitude
|
|
</label>
|
|
<label>
|
|
<input type="checkbox" id="adsbShowTrails">
|
|
Show Flight Trails
|
|
</label>
|
|
<label>
|
|
<input type="checkbox" id="adsbEnableClustering" onchange="toggleAircraftClustering()">
|
|
Cluster Markers
|
|
</label>
|
|
<label>
|
|
<input type="checkbox" id="adsbShowRangeRings" checked onchange="drawRangeRings()">
|
|
Show Range Rings
|
|
</label>
|
|
</div>
|
|
<div class="form-group" style="margin-top: 10px;">
|
|
<label style="display: flex; align-items: center; gap: 8px;">
|
|
Observer Location
|
|
<span id="adsbGpsIndicator" class="gps-indicator" style="display: none;" title="GPS connected via gpsd">
|
|
<span class="gps-dot"></span> GPS
|
|
</span>
|
|
</label>
|
|
<div style="display: flex; gap: 5px;">
|
|
<input type="text" id="adsbObsLat" value="51.5074" placeholder="Latitude" style="flex: 1;" onchange="updateObserverLocation()">
|
|
<input type="text" id="adsbObsLon" value="-0.1278" placeholder="Longitude" style="flex: 1;" onchange="updateObserverLocation()">
|
|
</div>
|
|
<button class="preset-btn" id="adsbGeolocateBtn" onclick="getAdsbGeolocation()" style="width: 100%; margin-top: 5px;">
|
|
📍 Use Browser Location
|
|
</button>
|
|
</div>
|
|
<div class="form-group" style="margin-top: 10px;">
|
|
<label>Aircraft Filter</label>
|
|
<select id="adsbAircraftFilter" onchange="applyAircraftFilter()">
|
|
<option value="all">All Aircraft</option>
|
|
<option value="military">Military Only</option>
|
|
<option value="civil">Civil Only</option>
|
|
<option value="emergency">Emergency Only</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group" style="margin-top: 10px;">
|
|
<label style="display: flex; align-items: center; gap: 8px; cursor: pointer;">
|
|
<input type="checkbox" id="adsbAlertToggle" checked onchange="adsbAlertsEnabled = this.checked">
|
|
🔔 Audio Alerts (Military/Emergency)
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="section">
|
|
<h3>Reception Statistics</h3>
|
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: 11px;">
|
|
<div style="background: rgba(0,212,255,0.1); padding: 8px; border-radius: 4px; text-align: center;">
|
|
<div style="color: var(--text-secondary); font-size: 9px; text-transform: uppercase;">Max Range</div>
|
|
<div id="adsbMaxRange" style="color: var(--accent-cyan); font-size: 14px; font-weight: bold;">0.0 nm</div>
|
|
</div>
|
|
<div style="background: rgba(0,212,255,0.1); padding: 8px; border-radius: 4px; text-align: center;">
|
|
<div style="color: var(--text-secondary); font-size: 9px; text-transform: uppercase;">Total Seen</div>
|
|
<div id="adsbTotalSeen" style="color: var(--accent-cyan); font-size: 14px; font-weight: bold;">0</div>
|
|
</div>
|
|
<div style="background: rgba(0,212,255,0.1); padding: 8px; border-radius: 4px; text-align: center;">
|
|
<div style="color: var(--text-secondary); font-size: 9px; text-transform: uppercase;">Msg Rate</div>
|
|
<div id="adsbMsgRate" style="color: var(--accent-cyan); font-size: 14px; font-weight: bold;">0.0/s</div>
|
|
</div>
|
|
<div style="background: rgba(0,212,255,0.1); padding: 8px; border-radius: 4px; text-align: center;">
|
|
<div style="color: var(--text-secondary); font-size: 9px; text-transform: uppercase;">Busiest Hour</div>
|
|
<div id="adsbBusiestHour" style="color: var(--accent-cyan); font-size: 14px; font-weight: bold;">--</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="info-text" style="margin-top: 8px; display: grid; grid-template-columns: auto auto; gap: 4px 8px; align-items: center;" id="adsbToolStatus">
|
|
<span>dump1090:</span><span class="tool-status" id="dump1090Status">Checking...</span>
|
|
<span>rtl_adsb:</span><span class="tool-status" id="rtlAdsbStatus">Checking...</span>
|
|
</div>
|
|
|
|
<button class="run-btn" id="startAdsbBtn" onclick="startAdsbScan()">
|
|
Start Tracking
|
|
</button>
|
|
<button class="stop-btn" id="stopAdsbBtn" onclick="stopAdsbScan()" style="display: none;">
|
|
Stop Tracking
|
|
</button>
|
|
|
|
</div>
|