Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions core/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"date-fns": "^2.23.0",
"file-saver": "^2.0.5",
"fuse.js": "^6.6.2",
"gsap": "^3.12.3",
"http-status-codes": "^2.2.0",
"image-js": "^0.35.3",
"is-ip": "^5.0.0",
Expand Down
52 changes: 52 additions & 0 deletions core/frontend/src/components/common/ParameterSwitch.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<template>
<div>
<v-switch v-model="switchValue" :label="label" />
</div>
</template>
<script lang="ts">
import { PropType } from 'vue'

import mavlink2rest from '@/libs/MAVLink2Rest'
import autopilot_data from '@/store/autopilot'
import Parameter from '@/types/autopilot/parameter'

export default {
name: 'ParameterSwitch',
props: {
parameter: {
type: Object as PropType<Parameter | undefined>,
required: true,
},
offValue: {
type: Number,
default: 0,
},
onValue: {
type: Number,
default: 1,
},
label: {
type: String,
default: '',
},
},
computed: {
switchValue: {
get(): boolean {
return this.parameter?.value === this.onValue
},
set(newValue: boolean) {
if (this.parameter === undefined) {
return
}
mavlink2rest.setParam(
this.parameter.name,
newValue ? this.onValue : this.offValue,
autopilot_data.system_id,
this.parameter.paramType.type,
)
},
},
},
}
</script>
51 changes: 51 additions & 0 deletions core/frontend/src/components/common/StatusTextWatcher.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<template>
<v-textarea auto-grow :value="all_messages" readonly />
</template>

<script lang="ts">
import mavlink2rest from '@/libs/MAVLink2Rest'
import Listener from '@/libs/MAVLink2Rest/Listener'

export default {
name: 'StatusTextWatcher',
props: {
filter: {
type: RegExp,
default: '',
},
},
data() {
return {
messages: [] as string[],
listener: undefined as undefined | Listener,
filterRegex: /.*/,
}
},
computed: {
all_messages(): string {
return this.messages.join('\n')
},
},
watch: {
filter(newFilter) {
this.filterRegex = new RegExp(newFilter)
},
},
mounted() {
this.listener = mavlink2rest.startListening('STATUSTEXT').setCallback((receivedMessage) => {
const text = receivedMessage.message.text.join('')
if (this.messages?.[this.messages.length - 1] === text) {
return
}
if (new RegExp(this.filter).test(text)) {
this.$emit('message', text)
}
this.messages.push(text)
})
},
beforeDestroy() {
this.listener?.discard()
},
}

</script>
39 changes: 39 additions & 0 deletions core/frontend/src/components/common/rebootRequiredOverlay.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<template>
<v-overlay
v-if="reboot_required"
:absolute="true"
:opacity="0.7"
>
<div class="d-flex flex-column justify-center align-center">
<p class="text-center">
An autopilot Reboot is required.
</p>
<v-btn
class="ml-auto mr-auto"
color="primary"
@click="rebootVehicle()"
>
Reboot Autopilot
</v-btn>
</div>
</v-overlay>
</template>

<script lang="ts">
import * as AutopilotManager from '@/components/autopilot/AutopilotManagerUpdater'
import autopilot_data from '@/store/autopilot'

export default {
name: 'RebootRequiredOverlay',
computed: {
reboot_required(): boolean {
return autopilot_data.reboot_required
},
},
methods: {
rebootVehicle() {
AutopilotManager.restart()
},
},
}
</script>
6 changes: 5 additions & 1 deletion core/frontend/src/components/vehiclesetup/Configure.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import Vue from 'vue'

import autopilot from '@/store/autopilot_manager'

import SpinningLogo from '../common/SpinningLogo.vue'
import ArdupilotMavlinkCompassSetup from './configuration/compass/ArdupilotMavlinkCompassSetup.vue'
import LightsConfigration from './configuration/lights.vue'
import ParamSets from './overview/ParamSets.vue'

Expand All @@ -44,14 +46,16 @@ export default Vue.extend({
components: {
ParamSets,
LightsConfigration,
ArdupilotMavlinkCompassSetup,
SpinningLogo,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we using it ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, it shows up while the parameters are not fully loaded

},
data() {
return {
page_selected: null as string | null,
pages: [
{ title: 'Parameters', component: ParamSets },
{ title: 'Accelerometer', component: undefined },
{ title: 'Compass', component: undefined },
{ title: 'Compass', component: ArdupilotMavlinkCompassSetup },
{ title: 'Baro', component: undefined },
{ title: 'Gripper', component: undefined },
{ title: 'Lights', component: LightsConfigration, filter: () => autopilot.vehicle_type === 'Submarine' },
Expand Down
Loading
Loading