+ )
+ }
+
+ const drawHint =
+ clickMode === 'awaiting-first'
+ ? 'Click the first corner of the bbox on the map…'
+ : clickMode === 'awaiting-second'
+ ? 'Click the opposite corner to complete the bbox…'
+ : bbox
+ ? `W ${bbox[0].toFixed(3)} S ${bbox[1].toFixed(3)} E ${bbox[2].toFixed(3)} N ${bbox[3].toFixed(3)}`
+ : 'No bbox set — draw one on the map or enter coordinates below.'
+
+ const bboxFields: { label: string; placeholder: string }[] = [
+ { label: 'West', placeholder: 'e.g. -125' },
+ { label: 'South', placeholder: 'e.g. 24' },
+ { label: 'East', placeholder: 'e.g. -65' },
+ { label: 'North', placeholder: 'e.g. 50' },
+ ]
+
+ return (
+
+ {/* Page description + action bar */}
+
+
+ One bounding box scopes every native adapter's geographic focus. Adapters with
+ "Use own config" on ignore this bbox and use the geographic settings on the{' '}
+
+ Data Feeds
+ {' '}
+ page.
+
+ {hasChanges && (
+
+
+
+
+ )}
+
+
+ {error &&
{error}
}
+ {success &&
{success}
}
+
+ {/* Master enable toggle */}
+
+
+
+ Use coverage bbox to scope all adapters
+
+
+ When disabled, every adapter uses its own geographic config regardless of the
+ bbox below.
+
+ Decimal degrees. W/E = longitude; S/N = latitude. Inputs stay in sync with
+ the map rectangle above.
+
+
+
+ {/* Per-adapter override toggles */}
+
+
+
+ Adapter Overrides
+
+
+ Toggle "Use own config" to have that adapter ignore the coverage bbox.
+ Its geographic settings (state, bbox, corridors, observers…) then become
+ active on the{' '}
+
+ Data Feeds
+ {' '}
+ page.
+
- up({ wzdx: { ...env.wzdx!, states: v } })}
- helper="2-letter state codes to include from the WZDx Feed Registry, e.g. ID, OR" />
+ {scopedByCoverage('wzdx') ? (
+
+ Bounding box and states are set by the{' '}
+ Coverage map.
+
+ )}
>)
case 'satpass': {
// Armed state keys off the NATIVE enable (environmental.satpass.enabled),
@@ -1493,19 +1591,26 @@ const save = async () => {
{/* Observers — list of {slug, name, lat, lon, alt_m}; seeds observer_locations */}
Observers (ground stations the predictor computes passes for)