Skip to content

Commit a4d1394

Browse files
Add .number modifier to all numeric v-model bindings
Without .number, Vue's v-model on <input type="number"> produces strings, causing downstream math (wattsToDbm, buildSimulationPayload) to receive string operands instead of numbers. Fixes meshtastic#49. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent ccde9a2 commit a4d1394

File tree

5 files changed

+24
-24
lines changed

5 files changed

+24
-24
lines changed

src/components/Display.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<label for="min_dbm" class="form-label">Minimum dBm</label>
66
<input
77
id="min_dbm"
8-
v-model="display.min_dbm"
8+
v-model.number="display.min_dbm"
99
type="number"
1010
class="form-control form-control-sm"
1111
required
@@ -17,7 +17,7 @@
1717
<label for="max_dbm" class="form-label">Maximum dBm</label>
1818
<input
1919
id="max_dbm"
20-
v-model="display.max_dbm"
20+
v-model.number="display.max_dbm"
2121
type="number"
2222
class="form-control form-control-sm"
2323
required
@@ -43,7 +43,7 @@
4343
<label for="overlay_transparency" class="form-label">Transparency (%)</label>
4444
<input
4545
id="overlay_transparency"
46-
v-model="display.overlay_transparency"
46+
v-model.number="display.overlay_transparency"
4747
type="number"
4848
class="form-control form-control-sm"
4949
required
@@ -113,7 +113,7 @@
113113
<script setup lang="ts">
114114
import { useStore } from "../store.ts";
115115
const store = useStore();
116-
const {display} = store.splatParams;
116+
const { display } = store.splatParams;
117117
118118
function onOverlapModeChange() {
119119
store.updateOverlapLayer();

src/components/Environment.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<label for="clutter_height" class="form-label">Clutter Height (m)</label>
2727
<input
2828
id="clutter_height"
29-
v-model="environment.clutter_height"
29+
v-model.number="environment.clutter_height"
3030
type="number"
3131
class="form-control form-control-sm"
3232
required
@@ -39,7 +39,7 @@
3939
<label for="ground_dielectric" class="form-label">Ground Dielectric (V/m)</label>
4040
<input
4141
id="ground_dielectric"
42-
v-model="environment.ground_dielectric"
42+
v-model.number="environment.ground_dielectric"
4343
type="number"
4444
class="form-control form-control-sm"
4545
required
@@ -52,7 +52,7 @@
5252
<label for="ground_conductivity" class="form-label">Ground Conductivity (S/m)</label>
5353
<input
5454
id="ground_conductivity"
55-
v-model="environment.ground_conductivity"
55+
v-model.number="environment.ground_conductivity"
5656
type="number"
5757
class="form-control form-control-sm"
5858
required
@@ -65,7 +65,7 @@
6565
<label for="atmosphere_bending" class="form-label">Atmospheric Bending (N-units)</label>
6666
<input
6767
id="atmosphere_bending"
68-
v-model="environment.atmosphere_bending"
68+
v-model.number="environment.atmosphere_bending"
6969
type="number"
7070
class="form-control form-control-sm"
7171
required
@@ -80,5 +80,5 @@
8080

8181
<script setup lang="ts">
8282
import { useStore } from "../store.ts";
83-
const {environment} = useStore().splatParams;
83+
const { environment } = useStore().splatParams;
8484
</script>

src/components/Receiver.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<label for="rx_sensitivity" class="form-label">Sensitivity (dBm)</label>
66
<input
77
id="rx_sensitivity"
8-
v-model="receiver.rx_sensitivity"
8+
v-model.number="receiver.rx_sensitivity"
99
type="number"
1010
class="form-control form-control-sm"
1111
required
@@ -19,7 +19,7 @@
1919
<label for="rx_height" class="form-label">Height AGL (m)</label>
2020
<input
2121
id="rx_height"
22-
v-model="receiver.rx_height"
22+
v-model.number="receiver.rx_height"
2323
type="number"
2424
class="form-control form-control-sm"
2525
required
@@ -34,7 +34,7 @@
3434
<label for="rx_gain" class="form-label">Antenna Gain (dB)</label>
3535
<input
3636
id="rx_gain"
37-
v-model="receiver.rx_gain"
37+
v-model.number="receiver.rx_gain"
3838
type="number"
3939
class="form-control form-control-sm"
4040
required
@@ -48,7 +48,7 @@
4848
<label for="rx_loss" class="form-label">Cable Loss (dB)</label>
4949
<input
5050
id="rx_loss"
51-
v-model="receiver.rx_loss"
51+
v-model.number="receiver.rx_loss"
5252
type="number"
5353
class="form-control form-control-sm"
5454
required
@@ -64,5 +64,5 @@
6464

6565
<script setup lang="ts">
6666
import { useStore } from "../store.ts";
67-
const {receiver} = useStore().splatParams;
67+
const { receiver } = useStore().splatParams;
6868
</script>

src/components/Simulation.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<label for="situation_fraction" class="form-label">Situation Fraction (%)</label>
66
<input
77
id="situation_fraction"
8-
v-model="simulation.situation_fraction"
8+
v-model.number="simulation.situation_fraction"
99
type="number"
1010
class="form-control form-control-sm"
1111
required
@@ -19,7 +19,7 @@
1919
<label for="time_fraction" class="form-label">Time Fraction (%)</label>
2020
<input
2121
id="time_fraction"
22-
v-model="simulation.time_fraction"
22+
v-model.number="simulation.time_fraction"
2323
type="number"
2424
class="form-control form-control-sm"
2525
required
@@ -35,7 +35,7 @@
3535
<label for="simulation_extent" class="form-label">Max Range (km)</label>
3636
<input
3737
id="simulation_extent"
38-
v-model="simulation.simulation_extent"
38+
v-model.number="simulation.simulation_extent"
3939
type="number"
4040
class="form-control form-control-sm"
4141
required
@@ -51,5 +51,5 @@
5151

5252
<script setup lang="ts">
5353
import { useStore } from "../store.ts";
54-
const {simulation} = useStore().splatParams;
54+
const { simulation } = useStore().splatParams;
5555
</script>

src/components/Transmitter.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<label for="tx_lat" class="form-label">Latitude (degrees)</label>
4343
<input
4444
id="tx_lat"
45-
v-model="transmitter.tx_lat"
45+
v-model.number="transmitter.tx_lat"
4646
type="number"
4747
class="form-control form-control-sm"
4848
required
@@ -58,7 +58,7 @@
5858
<label for="tx_lon" class="form-label">Longitude (degrees)</label>
5959
<input
6060
id="tx_lon"
61-
v-model="transmitter.tx_lon"
61+
v-model.number="transmitter.tx_lon"
6262
type="number"
6363
class="form-control form-control-sm"
6464
required
@@ -149,7 +149,7 @@
149149
<label for="tx_power" class="form-label">Power (W)</label>
150150
<input
151151
id="tx_power"
152-
v-model="transmitter.tx_power"
152+
v-model.number="transmitter.tx_power"
153153
type="number"
154154
class="form-control form-control-sm"
155155
required
@@ -165,7 +165,7 @@
165165
<label for="frequency" class="form-label">Frequency (MHz)</label>
166166
<input
167167
id="tx_freq"
168-
v-model="transmitter.tx_freq"
168+
v-model.number="transmitter.tx_freq"
169169
type="number"
170170
class="form-control form-control-sm"
171171
required
@@ -184,7 +184,7 @@
184184
<label for="tx_height" class="form-label">Height AGL (m)</label>
185185
<input
186186
id="tx_height"
187-
v-model="transmitter.tx_height"
187+
v-model.number="transmitter.tx_height"
188188
type="number"
189189
class="form-control form-control-sm"
190190
required
@@ -200,7 +200,7 @@
200200
<label for="tx_gain" class="form-label">Antenna Gain (dB)</label>
201201
<input
202202
id="tx_gain"
203-
v-model="transmitter.tx_gain"
203+
v-model.number="transmitter.tx_gain"
204204
type="number"
205205
class="form-control form-control-sm"
206206
required

0 commit comments

Comments
 (0)