Skip to content

Commit 36a9208

Browse files
frontend: widget: index: Use new control interface
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
1 parent cc936a1 commit 36a9208

1 file changed

Lines changed: 76 additions & 2 deletions

File tree

  • ping-viewer-next-frontend/src/pages/addons/widget/[type]

ping-viewer-next-frontend/src/pages/addons/widget/[type]/index.vue

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@
2222
</div>
2323

2424
<div v-else-if="widgetComponent && deviceData" class="widget-container h-full w-full">
25-
<component :is="widgetComponent" v-bind="widgetProps" class="h-full w-full bg-transparent" ref="widgetRef" />
25+
<component :is="widgetComponent" v-bind="widgetProps" class="h-full w-full bg-transparent" ref="widgetRef"
26+
@settings-change="handleWidgetSettingsChange" />
2627
<SonarMask :width="dimensions.width" :height="dimensions.height" :type="widgetType" :polar_mode="polarMode" :isRecording="isRecording"
2728
class="widget-mask" @button-click="handleMaskButtonClick" />
2829
<Ping360WidgetControls v-if="widgetType === 'ping360'" :is-recording="isRecording"
30+
:range="ping360Range" :gain="ping360Gain" :sector="ping360Sector"
2931
@button-click="handleMaskButtonClick" />
3032
<Ping1DWidgetControls v-if="widgetType === 'ping1d'" :is-recording="isRecording"
31-
:is-auto-gain="isAutoGain" @button-click="handleMaskButtonClick" />
33+
:is-auto-gain="isAutoGain" :range="ping1DRange" :gain="ping1DGain"
34+
@button-click="handleMaskButtonClick" />
3235
</div>
3336
</div>
3437
</template>
@@ -63,6 +66,15 @@ export default defineComponent({
6366
const dimensions = ref({ width: 0, height: 0 });
6467
const yawAngle = ref(0);
6568
const isRecording = ref(false);
69+
const ping360WidgetSettings = ref({
70+
range: null,
71+
gain: null,
72+
sector: null,
73+
});
74+
const ping1DWidgetSettings = ref({
75+
range: null,
76+
gain: null,
77+
});
6678
6779
let resizeObserver = null;
6880
let datalakeUnsubscribe = null;
@@ -564,6 +576,62 @@ export default defineComponent({
564576
return settings?.mode_auto === 1;
565577
});
566578
579+
const handleWidgetSettingsChange = (settings) => {
580+
if (widgetType.value === 'ping360') {
581+
ping360WidgetSettings.value = {
582+
...ping360WidgetSettings.value,
583+
...settings,
584+
};
585+
return;
586+
}
587+
588+
if (widgetType.value === 'ping1d') {
589+
ping1DWidgetSettings.value = {
590+
...ping1DWidgetSettings.value,
591+
...settings,
592+
};
593+
}
594+
};
595+
596+
const ping1DRange = computed(() => {
597+
if (ping1DWidgetSettings.value.range != null) return ping1DWidgetSettings.value.range;
598+
const settings = deviceInstance.value?.data?.ping1DSettings?.value;
599+
return settings?.scan_length ?? null;
600+
});
601+
602+
const ping1DGain = computed(() => {
603+
if (ping1DWidgetSettings.value.gain != null) return ping1DWidgetSettings.value.gain;
604+
const settings = deviceInstance.value?.data?.ping1DSettings?.value;
605+
return settings?.gain_setting ?? null;
606+
});
607+
608+
const ping360Range = computed(() => {
609+
if (ping360WidgetSettings.value.range != null) return ping360WidgetSettings.value.range;
610+
const settings = deviceInstance.value?.data?.ping360Settings?.value;
611+
if (!settings || !deviceInstance.value?.ping360) return null;
612+
return deviceInstance.value.ping360.calculateRange(settings);
613+
});
614+
615+
const ping360Gain = computed(() => {
616+
if (ping360WidgetSettings.value.gain != null) return ping360WidgetSettings.value.gain;
617+
const settings = deviceInstance.value?.data?.ping360Settings?.value;
618+
return settings?.gain_setting ?? null;
619+
});
620+
621+
const ping360Sector = computed(() => {
622+
if (ping360WidgetSettings.value.sector != null) return ping360WidgetSettings.value.sector;
623+
const settings = deviceInstance.value?.data?.ping360Settings?.value;
624+
if (!settings) return null;
625+
626+
const isFullCircle = (settings.stop_angle + 1) % 400 === settings.start_angle % 400;
627+
if (isFullCircle) return 360;
628+
629+
const startDeg = settings.start_angle === 399 ? 360 : Math.round((settings.start_angle * 360) / 400);
630+
const stopDeg = settings.stop_angle === 399 ? 360 : Math.round((settings.stop_angle * 360) / 400);
631+
const sector = (((stopDeg - startDeg) % 360) + 360) % 360;
632+
return sector === 0 ? 360 : sector;
633+
});
634+
567635
const polarMode = computed(() => {
568636
if (deviceInstance.value && widgetType.value === 'ping360') {
569637
if (deviceInstance.value.data.polarMode) {
@@ -781,6 +849,12 @@ export default defineComponent({
781849
polarMode,
782850
isRecording,
783851
isAutoGain,
852+
handleWidgetSettingsChange,
853+
ping1DRange,
854+
ping1DGain,
855+
ping360Range,
856+
ping360Gain,
857+
ping360Sector,
784858
};
785859
},
786860
});

0 commit comments

Comments
 (0)