Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
a73483e
vehicle-setup: disable calibrate button if vehicle has no position av…
Williangalvani Feb 19, 2025
9de7708
core: frontend: vehicle-setup: GenericViewer.vue: fix typo
ES-Alexander Apr 14, 2025
2ae6e25
core: frontend: vehicle-setup: camera: improve descriptions
ES-Alexander Apr 14, 2025
49059cb
core: frontend: vehicle-setup: lights: improve descriptions
ES-Alexander Apr 24, 2025
8a0384c
core: frontend: vehicle-setup: compass: improve descriptions
ES-Alexander Apr 24, 2025
6361517
frontend: vehiclesetup: GenericViewer: Add props for camera control a…
patrickelectric May 1, 2025
2a5cfdf
frontend: vehiclesetup: configuration: accelerometer: FullAcceleromet…
patrickelectric May 1, 2025
8c1ab18
frontend: vehiclesetup: configuration: accelerometer: FullAcceleromet…
patrickelectric May 1, 2025
399c18a
core: frontend: components: vehiclesetup: GenericViewer: Fix 'Invalid…
patrickelectric May 19, 2025
426be49
Frontend: ParamSets: fetch current board when mounted
Williangalvani May 29, 2025
7411354
core: frontend: src: update ArduPilot barometer types
ES-Alexander Jun 26, 2025
b12b12d
Frontend: PwmSetup: fix highlight logic to handle re-mapping of thrus…
Williangalvani Jul 29, 2025
00ec6c8
Frontend: PwmSetup: fix motor test so it displays remapped ouputs on …
Williangalvani Jul 29, 2025
a4a2a2e
frontend: add AutopilotSensorsStore and refactor sensor calibration c…
nicoschmdt Aug 5, 2025
ed0ee1a
frontend: components: vehiclesetup: fix typo
nicoschmdt Aug 5, 2025
6bf0ff9
core: frontend: create modelHelper.ts
Williangalvani Apr 30, 2024
0be9122
core: frontend: create OrientationPicker
Williangalvani Apr 30, 2024
5de8f86
VehicleSetup: create and use FrameSelector
Williangalvani May 20, 2025
58054d0
vehicleviewer,genericviewer: allow overriding model path
Williangalvani May 26, 2025
4a29175
frontend: make paths consistent
Williangalvani Jul 3, 2025
33d7533
core: frontend: modelHelper.ts: fix weird indentation
ES-Alexander Aug 18, 2025
6002106
core: frontend: modelHelper.ts: check global override first
ES-Alexander Aug 18, 2025
40b3eef
frontend: GenericViewer: checkOverrides when mounting
Williangalvani Aug 18, 2025
a095eb0
frontend: autopilot: add getters for vehicle model
Williangalvani Jul 4, 2025
2080a97
frontend: vehiclesetup: remove default blueboat model from Digital Twin
nicoschmdt Sep 20, 2025
2297c31
frontend: vehiclesetup: fix dashboard vehicle viewer clipping
nicoschmdt Nov 4, 2025
b313586
frontend: vehicle-setup: ask for confirmation on reset all parameters…
nicoschmdt Oct 30, 2025
11d6cb0
frontend:model-viewer/Wizard: Gracefully handle missing WebGL support
joaomariolago Dec 8, 2025
339d032
core: frontend: components: SettingsMenu: Add confirmation dialog for…
patrickelectric Dec 10, 2025
c4ca2a6
core: frontend: components: Add global warning component
patrickelectric Dec 10, 2025
ec6b361
frontend: vehiclesetup: fix ParameterLoader dialog opening twice
nicoschmdt Jan 23, 2026
e589010
frontend: vehiclesetup: Fix general style
patrickelectric Feb 11, 2026
7f542de
frontend: vehiclesetup: failsafes: add gap between failsafe cards
nicoschmdt Feb 13, 2026
eabef24
frontend: vehiclesetup: failsafes: move low battery card directly aft…
nicoschmdt Feb 13, 2026
7f526ab
frontend: vehiclesetup: remove hardcoded color
nicoschmdt Feb 13, 2026
61bd2a1
frontend: vehiclesetup: fix FailsafesConfiguration typo
nicoschmdt Feb 13, 2026
d61e6ce
frontend: vehiclesetup: failsafes: add visual indication when a fails…
nicoschmdt Feb 13, 2026
2785d32
frontend: LeakInfo: Remove empty style block
patrickelectric Feb 10, 2026
c3d2d28
frontend: PowerInfo: Remove empty style block
patrickelectric Feb 10, 2026
83309ea
frontend: AutoCoordinateDetector: Remove empty style block
patrickelectric Feb 10, 2026
791c0cf
frontend: CompassLearn: Remove empty style block
patrickelectric Feb 10, 2026
b9c8419
frontend: LargeVehicleCompassCalibrator: Remove empty style block
patrickelectric Feb 10, 2026
1a732e3
frontend: FullAccelerometerCalibration: Remove empty style block
patrickelectric Feb 10, 2026
63f7a32
frontend: QuickAccelerometerCalibration: Remove empty style block
patrickelectric Feb 10, 2026
c3d7865
frontend: GenericViewer: Remove unnecessary units on zero values
patrickelectric Feb 10, 2026
c9e7f05
frontend: CompassParams: Merge duplicate selectors
patrickelectric Feb 10, 2026
36a98d0
Frontend: refactor ServoFunctionEditorDialog to support multiple sub-…
Williangalvani Dec 8, 2025
6a164e7
frontend: add custom SERVO_FUNCTION widgets
Williangalvani Dec 8, 2025
4f4ff76
frontend: add relay configuration to vehicle setup
Williangalvani Dec 12, 2025
b46c29a
InlineParameterEditor: keep input in sync with param after first edit
Williangalvani Mar 10, 2026
b194a4e
Frontend: create LevelHorizonCalibration
Williangalvani Mar 3, 2026
378f107
frontend: fix InlineParameterEditor not displaying zero values
Williangalvani Mar 24, 2026
1cd67ce
frontend: add Power configuration tab to vehicle setup
Williangalvani Mar 24, 2026
c77c6e7
frontend: fix bluerov1 model
Williangalvani May 26, 2025
aa4bf69
frontend: public: assets: vehicles: models: Fix all models to follow …
patrickelectric May 1, 2025
2a5b7cb
frontend: vite.config: don't include hashes on draco files
Williangalvani Aug 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified core/frontend/public/assets/vehicles/models/rover/unknown.glb
Binary file not shown.
Binary file modified core/frontend/public/assets/vehicles/models/sub/BLUEROV1.glb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified core/frontend/public/assets/vehicles/models/sub/VECTORED.glb
Binary file not shown.
Binary file not shown.
Binary file modified core/frontend/public/assets/vehicles/models/sub/bluerov.glb
Binary file not shown.
Binary file added core/frontend/src/assets/3d/generic_sensor.glb
Binary file not shown.
Binary file added core/frontend/src/assets/3d/navigator.glb
Binary file not shown.
24 changes: 23 additions & 1 deletion core/frontend/src/components/app/SettingsMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<v-btn
v-tooltip="'Restores BlueOS services to default configurations'"
class="ma-2"
@click="reset_settings"
@click="confirm_reset_settings"
>
<v-icon left>
mdi-cog-refresh
Expand Down Expand Up @@ -135,6 +135,12 @@
</v-card>
</v-card>
</v-dialog>
<WarningDialog
v-model="show_reset_warning"
:message="resetWarningMessage"
confirm-label="Yes, reset settings"
@confirm="onConfirmResetSettings"
/>
<v-dialog
width="380"
:value="show_reset_dialog"
Expand All @@ -153,6 +159,7 @@
import Vue from 'vue'

import SpinningLogo from '@/components/common/SpinningLogo.vue'
import WarningDialog from '@/components/common/WarningDialog.vue'
import filebrowser from '@/libs/filebrowser'
import Notifier from '@/libs/notifier'
import bag from '@/store/bag'
Expand All @@ -168,6 +175,7 @@ export default Vue.extend({
name: 'SettingsMenu',
components: {
SpinningLogo,
WarningDialog,
},
data() {
return {
Expand All @@ -177,6 +185,7 @@ export default Vue.extend({
mavlink_log_folder_size: null as null | string,
show_dialog: false,
show_reset_dialog: false,
show_reset_warning: false,
operation_in_progress: false,
operation_description: '',
operation_error: undefined as undefined | string,
Expand All @@ -186,6 +195,12 @@ export default Vue.extend({
has_operation_error(): boolean {
return this.operation_error !== undefined
},
resetWarningMessage(): string {
return (
'Resetting will restore BlueOS services to their default configurations.\n'
+ 'This action cannot be undone. Proceed?'
)
},
},
async mounted() {
await this.get_log_folder_size()
Expand Down Expand Up @@ -243,6 +258,13 @@ export default Vue.extend({
})
this.operation_in_progress = false
},
confirm_reset_settings(): void {
this.show_reset_warning = true
},
onConfirmResetSettings(): void {
this.show_reset_warning = false
this.reset_settings()
},
async reset_settings(): Promise<void> {
this.prepare_operation('Resetting settings...')

Expand Down
142 changes: 142 additions & 0 deletions core/frontend/src/components/common/WarningDialog.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
<template>
<v-dialog
:value="value"
:width="width"
:persistent="persistent"
@input="emitInput"
@click:outside="handleOutsideClick"
@keydown.esc="handleEsc"
>
<v-sheet
color="warning"
outlined
>
<v-card variant="outlined">
<v-card-title class="align-center">
<span class="warning-title">
<span
class="warning-emoji"
aria-label="warning"
role="img"
>⚠️</span>
{{ title }}
</span>
</v-card-title>
<v-card-text :class="['warning-text', textClass]">
{{ message }}
</v-card-text>
<v-card-actions>
<v-btn :color="cancelColor" @click="close">
{{ cancelLabel }}
</v-btn>
<v-spacer />
<v-btn :color="confirmColor" @click="confirmAndMaybeClose">
{{ confirmLabel }}
</v-btn>
</v-card-actions>
</v-card>
</v-sheet>
</v-dialog>
</template>

<script lang="ts">
import Vue, { PropType } from 'vue'

export default Vue.extend({
name: 'WarningDialog',
props: {
value: {
type: Boolean,
required: true,
},
title: {
type: String,
default: 'WARNING',
},
message: {
type: String,
required: true,
},
confirmLabel: {
type: String,
required: true,
},
cancelLabel: {
type: String,
default: 'Cancel',
},
confirmColor: {
type: String as PropType<string>,
default: 'warning',
},
cancelColor: {
type: String as PropType<string>,
default: 'primary',
},
width: {
type: [String, Number] as PropType<string | number>,
default: 'fit-content',
},
persistent: {
type: Boolean,
default: false,
},
closeOnOutside: {
type: Boolean,
default: true,
},
closeOnEsc: {
type: Boolean,
default: true,
},
closeOnConfirm: {
type: Boolean,
default: true,
},
textClass: {
type: String,
default: '',
},
},
methods: {
emitInput(state: boolean) {
this.$emit('input', state)
},
close() {
this.emitInput(false)
},
handleOutsideClick() {
if (this.closeOnOutside && !this.persistent) {
this.close()
}
},
handleEsc() {
if (this.closeOnEsc && !this.persistent) {
this.close()
}
},
confirmAndMaybeClose() {
this.$emit('confirm')
if (this.closeOnConfirm) {
this.close()
}
},
},
})
</script>

<style scoped>
.warning-title {
display: inline-flex;
align-items: center;
gap: 0.35rem;
}

.warning-emoji {
font-size: 1.2rem;
}

.warning-text {
max-width: 30rem;
}
</style>
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,16 @@ export default Vue.extend({
},
param_value() {
this.updateSelectedFlags()
if (this.last_sent_value === undefined) {
this.internal_new_value = this.param_value
this.internal_new_value_as_string = String(this.internal_new_value)
if (
this.last_sent_value !== undefined
&& this.internal_new_value !== this.last_sent_value
&& this.param_value === this.last_sent_value
&& this.param_value === this.last_sent_value
) {
return
}
this.internal_new_value = this.param_value
this.internal_new_value_as_string = String(this.internal_new_value)
},
},
mounted() {
Expand Down Expand Up @@ -307,7 +313,7 @@ export default Vue.extend({
.map((value) => parseFloat(value))
.includes(this.internal_new_value)
}
if (this.param?.value) {
if (this.param != null) {
this.internal_new_value_as_string = this.internal_new_value.toString()
}

Expand Down
71 changes: 71 additions & 0 deletions core/frontend/src/components/parameter-editor/LeakSetup.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<template>
<v-card class="mt-4 mb-4">
<v-card-text>
<v-row align="center">
<v-col cols="12">
<span class="text-h6">Leak {{ leak_number }}</span>
</v-col>
</v-row>

<v-row align="center">
<v-col v-if="type_parameter" cols="4">
<inline-parameter-editor
:param="type_parameter"
label="Sensor type"
auto-set
/>
</v-col>
<v-col v-if="logic_parameter" cols="4">
<inline-parameter-editor
:param="logic_parameter"
label="Logic when dry"
auto-set
/>
</v-col>
<v-col v-if="failsafe_parameter" cols="4">
<inline-parameter-editor
:param="failsafe_parameter"
label="Failsafe action"
auto-set
/>
</v-col>
</v-row>
</v-card-text>
</v-card>
</template>

<script lang="ts">
import Vue from 'vue'

import autopilot_data from '@/store/autopilot'
import Parameter from '@/types/autopilot/parameter'

import InlineParameterEditor from './InlineParameterEditor.vue'

export default Vue.extend({
name: 'LeakSetup',
components: {
InlineParameterEditor,
},
props: {
leakParameter: {
type: Object as () => Parameter,
required: true,
},
},
computed: {
leak_number(): number {
return parseInt(this.leakParameter.name.match(/LEAK(\d+)_TYPE/)?.[1] ?? '0', 10)
},
type_parameter(): Parameter | undefined {
return autopilot_data.parameter(`LEAK${this.leak_number}_TYPE`)
},
logic_parameter(): Parameter | undefined {
return autopilot_data.parameter(`LEAK${this.leak_number}_LOGIC`)
},
failsafe_parameter(): Parameter | undefined {
return autopilot_data.parameter('FS_LEAK_ENABLE')
},
},
})
</script>
Loading
Loading