Let the OpenSky health probe run over a chosen bounding box without touching the saved default, so its credit cost (which scales with area) can be checked cheaply. - Backend: the plugin health endpoint (panel Check) and the OpenSky health endpoint (Web App Test connection) accept an optional ?bbox=, validated with validBBox and applied to a transient probe instance; both BFF and API forward it. Saved config is untouched. - API panel: a "Probe area" picker beside each bbox-capable plugin's Check button — saved default, all countries (grouped by continent), or Custom. Adds a compact pv-input-sm style. - Web App: a "Test area" picker beside Test connection, using the full country list (new countryGroups() helper) plus Custom. This is where the probe is authenticated and the credit cost is shown. Builds pass across both Go modules and both frontends. Panel picker verified live (186 options, defaults to saved default). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
45 lines
1.8 KiB
HTML
45 lines
1.8 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<script>
|
|
// Apply saved theme + font size before first paint (light is the brand default).
|
|
(function () {
|
|
var GROUND = { light: '#EEF0F3', dark: '#0B1730' }
|
|
var FONT = { sm: 15, md: 16, lg: 18 }
|
|
var html = document.documentElement
|
|
var mode = 'light', prefs = {}
|
|
try {
|
|
mode = localStorage.getItem('pv_theme') || 'light'
|
|
} catch (e) {}
|
|
try {
|
|
prefs = JSON.parse(localStorage.getItem('pv_prefs') || '{}') || {}
|
|
} catch (e) {}
|
|
var t = mode
|
|
if (mode === 'system') {
|
|
t = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
|
}
|
|
html.setAttribute('data-theme', t)
|
|
html.style.backgroundColor = GROUND[t] || GROUND.light
|
|
html.style.fontSize = (FONT[prefs.fontSize] || 16) + 'px'
|
|
if (prefs.reduceMotion) html.classList.add('reduce-motion')
|
|
})()
|
|
</script>
|
|
<title>PilotVault — Control Panel</title>
|
|
<script type="module" crossorigin src="./assets/index-BfiNicZk.js"></script>
|
|
<link rel="stylesheet" crossorigin href="./assets/index-CcgvhCJr.css">
|
|
</head>
|
|
<body>
|
|
<div id="app"></div>
|
|
</body>
|
|
</html>
|