diff --git a/steps/index.html b/steps/index.html index 72f30db..7d74705 100644 --- a/steps/index.html +++ b/steps/index.html @@ -153,6 +153,10 @@ (P) + diff --git a/steps/src/dom.js b/steps/src/dom.js index 376cd75..321032e 100644 --- a/steps/src/dom.js +++ b/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 fullscreenExitIcon = document.getElementById("fullscreen-exit-icon"); export const menuScrim = document.getElementById("menu-scrim"); +export const toggleConfirmedOnly = document.getElementById("toggle-confirmed-only"); + //----------------------UPDATE FRAME Function----------------------// // Updates the UI to reflect the current radar frame and synchronizes video playback. diff --git a/steps/src/drawUtils.js b/steps/src/drawUtils.js index c1bb8df..f6934de 100644 --- a/steps/src/drawUtils.js +++ b/steps/src/drawUtils.js @@ -13,6 +13,7 @@ import { toggleFrameNorm, toggleVelocity, toggleStationaryColor, + toggleConfirmedOnly, } from "./dom.js"; // Defines a set of SNR (Signal-to-Noise Ratio) colors. @@ -277,8 +278,15 @@ export function drawTrajectories(p, plotScales) { const localTtcColors = ttcColors(p); for (const track of appState.vizData.tracks) { + // if (toggleConfirmedOnly.checked && track.isConfirmed === false) { + // continue; + // } 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; } @@ -405,6 +413,9 @@ export function drawTrackMarkers(p, plotScales) { for (const track of appState.vizData.tracks) { // --- START: Add the Same Safeguard Here --- // 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)) { // We don't need to log a warning here again, as drawTrajectories already did. // We can just safely skip this malformed track. @@ -668,7 +679,7 @@ export function drawCovarianceEllipse( export function drawEgoVehicle(p, plotScales) { const isDark = document.documentElement.classList.contains("dark"); const carColor = isDark ? p.color(150, 150, 220) : p.color(151, 151, 220); - + p.push(); p.fill(carColor); p.noStroke(); @@ -676,10 +687,10 @@ export function drawEgoVehicle(p, plotScales) { const carWidthMeters = 1.5; const carLengthMeters = 3.5; - + const carWidthPixels = carWidthMeters * plotScales.plotScaleX; const carLengthPixels = carLengthMeters * plotScales.plotScaleY; p.rect(0, -10, carWidthPixels, carLengthPixels, 5); p.pop(); -} \ No newline at end of file +} diff --git a/steps/src/main.js b/steps/src/main.js index da46a8f..1ff9bc3 100644 --- a/steps/src/main.js +++ b/steps/src/main.js @@ -93,6 +93,7 @@ import { fullscreenEnterIcon, fullscreenExitIcon, menuScrim, + toggleConfirmedOnly } from "./dom.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 toggleMenuBtn.addEventListener("click", () => toggleMenu(true));