@@ -251,10 +251,16 @@ function generate_route_table(type, route_ref) {
251251 tr . appendChild ( th ) ;
252252 tbody . appendChild ( tr ) ;
253253 }
254+ {
255+ const tr = document . createElement ( 'tr' ) ;
256+ const td = document . createElement ( 'td' ) ;
257+ tr . appendChild ( td ) ;
258+ tbody . appendChild ( tr ) ;
259+ }
254260 return tbody ;
255261}
256262
257- function populate_route_table ( relevant_vehicles , tbody ) {
263+ function populate_route_table ( relevant_vehicles , tbody , table_cell ) {
258264 relevant_vehicles . sort ( ( a , b ) => proper_inv_number_for_sorting ( a . inv_number ) - proper_inv_number_for_sorting ( b . inv_number ) ) ;
259265 const tr = document . createElement ( 'tr' ) ;
260266 const td = document . createElement ( 'td' ) ;
@@ -263,20 +269,21 @@ function populate_route_table(relevant_vehicles, tbody) {
263269 const btn = document . createElement ( 'button' ) ;
264270 btn . classList . add ( 'vehicle-btn' , 'btn' , 'btn-outline-dark' , 'btn-sm' ) ;
265271 btn . addEventListener ( 'click' , ( e ) => {
266- zoom_to_vehicle ( vehicle . type , vehicle . inv_number ) ;
272+ zoom_to_vehicle ( vehicle . cgm_id ) ;
267273 } ) ;
268274 const vehicle_inv_number = typeof vehicle . inv_number == 'string' ? vehicle . inv_number . split ( '/' ) [ 0 ] : vehicle . inv_number ;
269- const depot = get_vehicle_depot ( vehicle . type , vehicle_inv_number ) ;
275+ const depot = get_vehicle_depot ( vehicle ) ;
270276 if ( ! depot ) console . log ( depot , vehicle . type , vehicle . inv_number ) ;
271277 btn . setAttribute ( 'data-depot-id' , depot . id ) ;
272278 btn . setAttribute ( 'data-inv-number' , vehicle . full_inv_number ?? vehicle . inv_number ) ;
279+ btn . setAttribute ( 'data-cgm-id' , vehicle . cgm_id ) ;
273280 if ( vehicle . is_unexpected ) {
274281 btn . classList . add ( 'btn-warning' ) ;
275282 btn . classList . remove ( 'btn-outline-dark' ) ;
276283 btn . setAttribute ( 'data-is-unexpected' , 'true' ) ;
277284 tbody . setAttribute ( 'data-unexpected' , 'true' ) ;
278285 }
279- const model = get_vehicle_model ( vehicle . type , vehicle_inv_number ) ;
286+ const model = get_vehicle_model ( vehicle ) ;
280287 if ( model . extras && model . extras . includes ( 'double_decker' ) ) {
281288 btn . dataset . doubleDecker = 'true' ;
282289 tbody . setAttribute ( 'data-double-decker' , 'true' ) ;
@@ -287,25 +294,26 @@ function populate_route_table(relevant_vehicles, tbody) {
287294 btns . push ( btn ) ;
288295 }
289296 btns . sort ( ( a , b ) => a . dataset . car - b . dataset . car ) ;
290- btns . forEach ( btn => td . appendChild ( btn ) ) ;
291- tr . appendChild ( td ) ;
292- tbody . appendChild ( tr ) ;
297+ table_cell . replaceChildren ( ...btns ) ;
298+ // btns.forEach(btn => td.appendChild(btn));
299+ // tr.appendChild(td);
300+ // tbody.appendChild(tr);
293301}
294302
295303export function is_screen_width_lg_or_less ( ) {
296304 return window . innerWidth <= 992 ;
297305}
298306
299- export function zoom_to_vehicle ( type , inv_number ) {
300- const vehicle = cache . find ( v => v . type === type && v . inv_number === inv_number ) ;
307+ export function zoom_to_vehicle ( cgm_id ) {
308+ const vehicle = cache . find ( v => v . cgm_id === cgm_id ) ;
301309 const marker = vehicle . marker ;
302310 const vehicles_panel = document . querySelector ( '#vehicles-panel' ) ;
303311 if ( is_screen_width_lg_or_less ( ) ) {
304312 vehicles_panel . classList . add ( 'd-none' ) ;
305313 }
306314 map . flyTo ( vehicle . coords , 17 , { animate : false } ) ;
307315 marker . fireEvent ( 'click' ) ;
308- register_vehicle_view ( type , inv_number ) ;
316+ register_vehicle_view ( vehicle . type , vehicle . inv_number ) ;
309317}
310318
311319function update_route_tables ( route_tables ) {
@@ -315,20 +323,18 @@ function update_route_tables(route_tables) {
315323 route_ref = null ;
316324 }
317325
318- const old_tbody = document . querySelector ( `#${ type } _${ route_ref } ` ) ;
326+ const tbody = document . querySelector ( `#${ type } _${ route_ref } ` ) ;
327+ const vehicles_cell = tbody . querySelector ( 'tr > td' ) ;
319328 try {
320329 const cgm_route_id = routes . find ( route => route . type === type && route . route_ref === route_ref ) . cgm_id ;
321330 const relevant_vehicles = cache . filter ( vehicle => vehicle . type === type && vehicle . cgm_route_id === cgm_route_id && vehicle . hidden !== true ) ;
322331 for ( const v of relevant_vehicles ) {
323- v . is_unexpected = ! is_vehicle_expected_on_line ( type , route_ref , v . inv_number ) ;
332+ v . is_unexpected = ! is_vehicle_expected_on_line ( v ) ;
324333 }
325- const new_tbody = old_tbody . cloneNode ( ) ;
326- new_tbody . appendChild ( old_tbody . children [ 0 ] ) ;
327- populate_route_table ( relevant_vehicles , new_tbody )
328- old_tbody . replaceWith ( new_tbody ) ;
334+ populate_route_table ( relevant_vehicles , tbody , vehicles_cell )
329335 }
330- catch ( err ) {
331- console . error ( err )
336+ catch ( err ) {
337+ console . error ( err ) ;
332338 console . log ( type , route_ref , `#${ type } _${ route_ref } ` , table ) ;
333339 }
334340 }
0 commit comments