Skip to content

Commit 4913d36

Browse files
committed
login page back btn, smoother map updates, convert log data farenheit -> celsius
1 parent dbe2a6b commit 4913d36

3 files changed

Lines changed: 63 additions & 20 deletions

File tree

src/lib/ros2CommandCentre.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1518,6 +1518,9 @@ export class ROS2CommandCentreClient {
15181518
return;
15191519
}
15201520
try {
1521+
// Convert temperature from Fahrenheit to Celsius
1522+
const temperatureCelsius = (this._imuRawData.temperature - 32) * 5 / 9;
1523+
15211524
const payload = {
15221525
pathId: this._latestPathId,
15231526
latitude: this._gpsData.latitude,
@@ -1526,7 +1529,7 @@ export class ROS2CommandCentreClient {
15261529
roll: this._imuRawData.roll,
15271530
pitch: this._imuRawData.pitch,
15281531
yaw: this._imuRawData.yaw,
1529-
temperature: this._imuRawData.temperature,
1532+
temperature: temperatureCelsius,
15301533
voltage: this._imuRawData.voltage
15311534
};
15321535
const res = await fetch(`/api/rovers/${this._roverId}/logs`, {

src/routes/login/+page.svelte

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,25 @@
122122
<p>Access your rover management dashboard</p>
123123
</div>
124124
</div>
125+
126+
<!-- Back Button -->
127+
<a
128+
href="/"
129+
class="mt-6 inline-flex items-center justify-center gap-2 text-gray-600 transition-colors hover:text-blue-600 w-full"
130+
>
131+
<svg
132+
xmlns="http://www.w3.org/2000/svg"
133+
viewBox="0 0 16 16"
134+
fill="currentColor"
135+
class="h-5 w-5"
136+
>
137+
<path
138+
fill-rule="evenodd"
139+
d="M14 8a.75.75 0 0 1-.75.75H4.56l3.22 3.22a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 1.06L4.56 7.25h8.69A.75.75 0 0 1 14 8Z"
140+
clip-rule="evenodd"
141+
/>
142+
</svg>
143+
<span class="font-medium">Back to Home</span>
144+
</a>
125145
</div>
126146
</div>

src/routes/rovers/[id]/[pathId]/+page.svelte

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -284,27 +284,47 @@
284284
}
285285
}, 1000);
286286
287-
// Poll GPS data and update map
288-
if (gpsUpdateInterval) {
289-
clearInterval(gpsUpdateInterval);
290-
}
291-
gpsUpdateInterval = setInterval(() => {
292-
const gps = commandCenterClient?.gpsData;
293-
// console.log(`[Page] Checking GPS for rover ${roverId}, client roverId:`, commandCenterClient?.roverId, 'GPS:', gps);
294-
if (gps) {
295-
// console.log('GPS data available:', gps.latitude, gps.longitude);
296-
if (roverMarker && map && L) {
297-
roverGpsPosition = { lat: gps.latitude, lng: gps.longitude };
298-
roverMarker.setLatLng([gps.latitude, gps.longitude]);
299-
map.setView([gps.latitude, gps.longitude], map.getZoom());
300-
// console.log('✓ Updated rover position on map:', gps.latitude, gps.longitude);
301-
} else {
302-
console.warn('Map or marker not ready:', { roverMarker: !!roverMarker, map: !!map, L: !!L });
287+
// Poll GPS data and update map every 3 seconds
288+
if (gpsUpdateInterval) {
289+
clearInterval(gpsUpdateInterval);
290+
}
291+
gpsUpdateInterval = setInterval(() => {
292+
const gps = commandCenterClient?.gpsData;
293+
294+
// Validate GPS data before updating
295+
if (gps && gps.latitude && gps.longitude &&
296+
!isNaN(gps.latitude) && !isNaN(gps.longitude) &&
297+
Math.abs(gps.latitude) <= 90 && Math.abs(gps.longitude) <= 180) {
298+
299+
// Only update if map and marker are ready
300+
if (roverMarker && map && L) {
301+
// Update stored position
302+
roverGpsPosition = { lat: gps.latitude, lng: gps.longitude };
303+
304+
// Smoothly update marker position
305+
roverMarker.setLatLng([gps.latitude, gps.longitude]);
306+
307+
// Only pan the map if the rover has moved significantly (> 0.0001 degrees ~11m)
308+
const center = map.getCenter();
309+
const distance = Math.sqrt(
310+
Math.pow(center.lat - gps.latitude, 2) +
311+
Math.pow(center.lng - gps.longitude, 2)
312+
);
313+
314+
if (distance > 0.0001) {
315+
// Use panTo for smooth movement instead of setView
316+
map.panTo([gps.latitude, gps.longitude], {
317+
animate: true,
318+
duration: 0.5,
319+
noMoveStart: true
320+
});
303321
}
322+
} else {
323+
console.warn('Map or marker not ready:', { roverMarker: !!roverMarker, map: !!map, L: !!L });
304324
}
305-
}, 1000);
306-
307-
const status = commandCenterClient.status;
325+
}
326+
// If GPS data is invalid or missing, keep using previous position (no update)
327+
}, 3000); const status = commandCenterClient.status;
308328
connectionStatus = status.isConnected ? 'Connected' : 'Disconnected';
309329
sensorData.isConnected = status.isConnected;
310330

0 commit comments

Comments
 (0)