-
+
◯
Normal
1
-
+
▦
CRT
2
-
+
🌙
NVG
3
-
+
🌡️
FLIR
4
-
+
✦
Anime
5
-
+
◐
Noir
6
diff --git a/src/ui/views/DisplayControlsView.vue b/src/ui/views/DisplayControlsView.vue
index b04e4a344..3252edeab 100644
--- a/src/ui/views/DisplayControlsView.vue
+++ b/src/ui/views/DisplayControlsView.vue
@@ -1,8 +1,11 @@
- EXIT CLEAN VIEW
+ EXIT CLEAN VIEW
diff --git a/src/ui/views/panels/DisplayPanel.vue b/src/ui/views/panels/DisplayPanel.vue
index b7676f746..f6e76e870 100644
--- a/src/ui/views/panels/DisplayPanel.vue
+++ b/src/ui/views/panels/DisplayPanel.vue
@@ -5,13 +5,18 @@ import { t } from '../../../i18n/index.js';
import { vPanelState } from '../../rail/panelState.js';
import PanelCollapseButton from '../../rail/PanelCollapseButton.vue';
import { vRangeValue } from '../../rail/rangeValue.js';
+import UiSegmented from '../../kit/UiSegmented.vue';
import { useDisplayStore } from '../../stores/display.js';
// The Display panel. VisualSettings presents the HUD, Sonar, Scope,
// Celestial, detection, bloom and sharpen, AircraftDisplay the 3D group, the
// draw tool its controls and the file import its list, and each publishes
// them; until they do, the panel shows its initial markup.
-const { view, models3d, draw, geoImport } = storeToRefs(useDisplayStore());
+const display = useDisplayStore();
+const { view, models3d, draw, geoImport } = storeToRefs(display);
+// A control's change goes to the Display controls' owner (DisplayBindings).
+const act = (name, ...args) => display.act(name, ...args);
+const integer = (event) => parseInt(event.target.value, 10);
const pct = (value) => `${value}%`;
const hud = computed(() => view.value?.hud ?? null);
const sonar = computed(() => view.value?.sonar ?? null);
@@ -34,10 +39,16 @@ const segment = (current) => (value) => ({
class: { active: current.value === value },
'aria-checked': String(current.value === value),
});
-const modelsSegment = segment(modelsMode);
+const modelsOptions = [
+ { value: 'proximity', label: t('Proximity'), attrs: { id: 'models3d-mode-proximity', 'data-mode': 'proximity' } },
+ { value: 'all', label: t('All'), attrs: { id: 'models3d-mode-all', 'data-mode': 'all' } },
+];
const drawShape = computed(() => draw.value?.shape ?? 'area');
const drawSegment = segment(drawShape);
-const allocationSegment = segment(allocation);
+const allocationOptions = [
+ { value: 'ELASTIC', label: t('Elastic'), attrs: { id: 'detection-allocation-elastic', 'data-allocation': 'ELASTIC' } },
+ { value: 'WEIGHTED', label: t('Weighted'), attrs: { id: 'detection-allocation-weighted', 'data-allocation': 'WEIGHTED' } },
+];
const geoRows = computed(() => geoImport.value?.rows ?? []);
const geoListed = computed(() => geoRows.value.length > 0);
@@ -52,13 +63,13 @@ const geoListed = computed(() => geoRows.value.length > 0);
@@ -137,27 +145,24 @@ const geoListed = computed(() => geoRows.value.length > 0);
button ships lit and the mode row ships open — the same markup-carries-the-default
convention as #scope-toggle. ui.js re-syncs both from durable layer state, which
is what flips them back for a share link or a stored session carrying 3D off. -->
-
+
✈
3D
Models
-
- Proximity
- All
-
+
@@ -197,32 +202,32 @@ const geoListed = computed(() => geoRows.value.length > 0);
{{ geoImport?.hint ?? '' }}