forked from bluerobotics/BlueOS
/
Configure.vue
119 lines (114 loc) · 3.09 KB
/
Configure.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<template>
<div>
<v-container v-if="is_dev_mode" fluid>
<v-tabs
v-model="page_selected"
centered
show-arrows
>
<v-tabs-slider />
<v-tab
v-for="page in filtered_pages"
:key="`title-${page.title}`"
>
{{ page.title }}
</v-tab>
</v-tabs>
<v-tabs-items v-model="page_selected">
<v-tab-item
v-for="page in filtered_pages"
:key="`item-${page.title}`"
>
<component :is="page.component" />
</v-tab-item>
</v-tabs-items>
</v-container>
<div v-else>
<v-row class="mt-5">
<v-col
cols="12"
sm="7"
>
<v-card class="pa-5 ma-2">
<vehicle-viewer
noannotations
:autorotate="true"
/>
</v-card>
</v-col>
<v-col
cols="12"
sm="5"
>
<vehicle-info :autorotate="true" />
<param-sets />
</v-col>
</v-row>
<v-sheet class="d-flex">
<lights-info />
<gripper-info />
<leak-info />
<power-info />
</v-sheet>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import VehicleInfo from '@/components/vehiclesetup/overview/VehicleInfo.vue'
import VehicleViewer from '@/components/vehiclesetup/viewers/VehicleViewer.vue'
import autopilot from '@/store/autopilot_manager'
import settings from '@/store/settings'
import SpinningLogo from '../common/SpinningLogo.vue'
import ArdupilotMavlinkCompassSetup from './configuration/compass/ArdupilotMavlinkCompassSetup.vue'
import LightsConfigration from './configuration/lights.vue'
import GripperInfo from './overview/gripper.vue'
import LeakInfo from './overview/LeakInfo.vue'
import LightsInfo from './overview/LightsInfo.vue'
import ParamSets from './overview/ParamSets.vue'
import PowerInfo from './overview/PowerInfo.vue'
export interface Item {
title: string,
icon: string,
component: unknown,
filter?: () => boolean,
}
export default Vue.extend({
name: 'Configure',
components: {
VehicleViewer,
VehicleInfo,
GripperInfo,
PowerInfo,
LightsInfo,
LeakInfo,
ParamSets,
LightsConfigration,
ArdupilotMavlinkCompassSetup,
SpinningLogo,
},
data() {
return {
page_selected: null as string | null,
pages: [
{ title: 'Parameters', component: ParamSets },
{ title: 'Accelerometer', component: undefined },
{ title: 'Compass', component: ArdupilotMavlinkCompassSetup },
{ title: 'Baro', component: undefined },
{ title: 'Gripper', component: undefined },
{ title: 'Lights', component: LightsConfigration, filter: () => autopilot.vehicle_type === 'Submarine' },
{ title: 'Camera Mount', component: undefined },
] as Item[],
}
},
computed: {
filtered_pages() {
// eslint-disable-next-line no-extra-parens
return this.pages.filter((page) => (page.filter ? page.filter() : true))
},
is_dev_mode() {
return settings.is_dev_mode
},
},
})
</script>