Skip to content

Commit de860af

Browse files
joaomariolagopatrickelectric
authored andcommitted
DefaultParamLoader: Beautify params table
1 parent 35d52b7 commit de860af

File tree

3 files changed

+109
-29
lines changed

3 files changed

+109
-29
lines changed

core/frontend/src/components/parameter-editor/ParameterLoader.vue

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@
6767
class="large-text-cell"
6868
v-on="on"
6969
>
70-
{{ prettyNameFromParameter(item.current) }}
70+
{{ printParamWithUnit(item.current) }}
7171
</div>
7272
</template>
7373
<span>
74-
{{ prettyNameFromParameter(item.current) }}
74+
{{ printParamWithUnit(item.current) }}
7575
</span>
7676
</v-tooltip>
7777
</v-col>
@@ -82,11 +82,11 @@
8282
class="large-text-cell"
8383
v-on="on"
8484
>
85-
{{ prettyNameFromParameter(item.new) }}
85+
{{ printParamWithUnit(item.new) }}
8686
</div>
8787
</template>
8888
<span>
89-
{{ prettyNameFromParameter(item.new) }}
89+
{{ printParamWithUnit(item.new) }}
9090
</span>
9191
</v-tooltip>
9292
</v-col>
@@ -148,7 +148,7 @@ import { Dictionary } from 'vue-router'
148148
149149
import mavlink2rest from '@/libs/MAVLink2Rest'
150150
import autopilot_data from '@/store/autopilot'
151-
import Parameter, { printParam } from '@/types/autopilot/parameter'
151+
import { printParamWithUnit } from '@/types/autopilot/parameter'
152152
153153
export default Vue.extend({
154154
name: 'ParameterLoader',
@@ -299,12 +299,7 @@ export default Vue.extend({
299299
}
300300
})
301301
},
302-
prettyNameFromParameter(parameter: Parameter) {
303-
const paramValueText = printParam(parameter)
304-
const paramUnitsText = parameter?.units ? `[${parameter.units}]` : ''
305-
306-
return paramValueText + paramUnitsText
307-
},
302+
printParamWithUnit,
308303
},
309304
})
310305
</script>

core/frontend/src/components/wizard/DefaultParamLoader.vue

Lines changed: 96 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,58 @@
2929
<p v-else-if="(Object.keys(filtered_param_sets).length === 0)">
3030
No parameters available for this setup.
3131
</p>
32-
<v-virtual-scroll
33-
v-if="value_items.length > 0"
34-
class="flex-grow"
35-
:items="value_items"
36-
height="200"
37-
item-height="20"
38-
style="min-width: 50%;"
32+
<v-card
33+
v-if="Object.keys(value).length !== 0"
3934
>
40-
<template #default="{ item }">
41-
<v-list-item>
42-
<v-list-item-content>
43-
<v-list-item-title>{{ item.key }} {{ item.value }}</v-list-item-title>
44-
</v-list-item-content>
45-
</v-list-item>
46-
</template>
47-
</v-virtual-scroll>
35+
<v-card-text>
36+
<v-row class="virtual-table-row">
37+
<v-col class="virtual-table-cell name-cell">
38+
<strong>Name</strong>
39+
</v-col>
40+
<v-col class="virtual-table-cell">
41+
<strong>Value</strong>
42+
</v-col>
43+
</v-row>
44+
</v-card-text>
45+
<v-virtual-scroll
46+
:items="parametersFromSet(value)"
47+
height="250"
48+
item-height="30"
49+
class="virtual-table"
50+
>
51+
<template #default="{ item }">
52+
<v-row class="virtual-table-row">
53+
<v-col class="virtual-table-cell name-cell">
54+
<v-tooltip bottom>
55+
<template #activator="{ on }">
56+
<div v-on="on">
57+
{{ item.name }}
58+
</div>
59+
</template>
60+
<span>
61+
{{ item.current?.description ?? 'No description provided' }}
62+
</span>
63+
</v-tooltip>
64+
</v-col>
65+
<v-col class="virtual-table-cell">
66+
<v-tooltip bottom>
67+
<template #activator="{ on }">
68+
<div
69+
class="large-text-cell"
70+
v-on="on"
71+
>
72+
{{ printParamWithUnit(item.current) }}
73+
</div>
74+
</template>
75+
<span>
76+
{{ printParamWithUnit(item.current) }}
77+
</span>
78+
</v-tooltip>
79+
</v-col>
80+
</v-row>
81+
</template>
82+
</v-virtual-scroll>
83+
</v-card>
4884
</div>
4985
</template>
5086

@@ -53,8 +89,10 @@ import { SemVer } from 'semver'
5389
import Vue, { PropType } from 'vue'
5490
import { Dictionary } from 'vue-router'
5591
92+
import autopilot_data from '@/store/autopilot'
5693
import autopilot from '@/store/autopilot_manager'
5794
import { Firmware, Vehicle } from '@/types/autopilot'
95+
import { printParamWithUnit } from '@/types/autopilot/parameter'
5896
import { VForm } from '@/types/vuetify'
5997
import { callPeriodically, stopCallingPeriodically } from '@/utils/helper_functions'
6098
@@ -121,9 +159,6 @@ export default Vue.extend({
121159
board(): string | undefined {
122160
return autopilot.current_board?.name
123161
},
124-
value_items(): { key: string, value: number }[] {
125-
return Object.entries(this.value ?? {}).map(([key, value]) => ({ key, value }))
126-
},
127162
invalid_board(): boolean {
128163
return !this.board
129164
},
@@ -208,6 +243,49 @@ export default Vue.extend({
208243
this.selected_param_set = paramSet
209244
this.$emit('input', paramSet)
210245
},
246+
parametersFromSet(paramset: Dictionary<number>) {
247+
return Object.entries(paramset).map(([name]) => {
248+
const currentParameter = autopilot_data.parameter(name)
249+
250+
return {
251+
name,
252+
current: currentParameter,
253+
}
254+
})
255+
},
256+
printParamWithUnit,
211257
},
212258
})
213259
</script>
260+
<style scoped>
261+
.virtual-table-row {
262+
display: flex;
263+
margin: 0;
264+
margin-bottom: 15px;
265+
border-bottom: 1px solid #eee;
266+
flex-wrap: nowrap;
267+
}
268+
269+
.virtual-table-cell {
270+
flex: 1;
271+
padding: 5px;
272+
height: 30px;
273+
min-width: 150px;
274+
}
275+
.virtual-table-cell .v-input {
276+
margin-top: -6px;
277+
}
278+
.virtual-table-cell .large-text-cell {
279+
white-space: nowrap;
280+
overflow: hidden;
281+
text-overflow: ellipsis;
282+
}
283+
284+
.name-cell {
285+
min-width: 200px;
286+
}
287+
288+
.virtual-table {
289+
overflow-x: hidden;
290+
}
291+
</style>

core/frontend/src/types/autopilot/parameter.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,10 @@ export function printParam(param?: Parameter): string {
9898
return 'N/A'
9999
}
100100
}
101+
102+
export function printParamWithUnit(parameter?: Parameter): string {
103+
const paramValueText = printParam(parameter)
104+
const paramUnitsText = parameter?.units ? ` [${parameter.units}]` : ''
105+
106+
return paramValueText + paramUnitsText
107+
}

0 commit comments

Comments
 (0)