@@ -231,10 +231,47 @@ async function main(){
231231 proxy_controller = new ProxyController ( new Policy ( model ) )
232232 const l2f = new L2F ( sim_container , 10 , proxy_controller , seed )
233233
234+ l2f . state_update_callbacks . push ( ( states ) => {
235+ const vehicle_container = document . getElementById ( "vehicle-container" )
236+ if ( vehicle_container . children . length != states . length ) {
237+ const vehicle_template = document . getElementById ( "vehicle-template" )
238+ vehicle_container . innerHTML = ""
239+ states . forEach ( ( state , i ) => {
240+ const vehicle_pre = vehicle_template . content . cloneNode ( true )
241+ const vehicle = vehicle_pre . querySelector ( ".vehicle" )
242+ vehicle . querySelector ( ".vehicle-title" ) . textContent = `Vehicle ${ i } `
243+ // vehicle.querySelector(".vehicle-id").textContent = JSON.stringify(state.parameters.dynamics, null, 2)
244+ vehicle_container . appendChild ( vehicle )
245+ vehicle . title = JSON . stringify ( state . parameters . dynamics , null , 2 )
246+ // on hover
247+ vehicle . addEventListener ( "mouseenter" , ( event ) => {
248+ console . log ( `hovering over vehicle ${ i } ` )
249+ vehicle . classList . add ( "vehicle-hover" )
250+ event . stopPropagation ( )
251+ } )
252+ vehicle . addEventListener ( "mouseleave" , ( event ) => {
253+ vehicle . classList . remove ( "vehicle-hover" )
254+ event . stopPropagation ( )
255+ } )
256+ } )
257+ }
258+ states . forEach ( ( state , i ) => {
259+ const vehicle = vehicle_container . children [ i ]
260+ const fixed = ( x , n ) => {
261+ const y = x . toFixed ( n ) ;
262+ return y >= 0 ? `+${ y } ` : y ;
263+ }
264+ vehicle . querySelector ( ".vehicle-position" ) . textContent = state . state . position . map ( x => fixed ( x , 3 ) ) . join ( "," )
265+ vehicle . querySelector ( ".vehicle-action" ) . textContent = state . action . map ( x => fixed ( x , 2 ) ) . join ( "," )
266+ } )
267+
268+ } )
269+
234270 const parameter_manager = new ParameterManager ( l2f )
235271 const sim_controls = new SimControls ( l2f , proxy_controller , parameter_manager )
236272}
237- window . onload = main
273+
274+ document . addEventListener ( "DOMContentLoaded" , main )
238275
239276const drag_and_drop_overlay = document . getElementById ( 'drag-and-drop-overlay' ) ;
240277let drag_and_drop_counter = 0 ;
0 commit comments