Skip to content

Commit a3bcd59

Browse files
committed
properly handle out of service vehicles
1 parent 6cf4a71 commit a3bcd59

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

src/js/app.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function init_websocket(attempts=1) {
4040
const already_processed = new Set();
4141
for(const vehicle of data) {
4242
if(!vehicle.route_ref && vehicle.cgm_route_id) {
43-
vehicle.route_ref = routes.find(r => r.cgm_id == vehicle.cgm_route_id)?.route_ref;
43+
vehicle.route_ref = routes.find(r => r.cgm_id == vehicle.cgm_route_id)?.route_ref || null;
4444
}
4545
if(!vehicle.type && vehicle.cgm_route_id) {
4646
vehicle.type = routes.find(r => r.cgm_id == vehicle.cgm_route_id)?.type;
@@ -161,7 +161,7 @@ function init_routes_tables() {
161161
routes = r.filter(route => route.type != 'metro');
162162
for(const type of ['bus', 'trolley', 'tram']) {
163163
const last_index = routes.findLastIndex(route => route.type == type);
164-
routes.splice(last_index+1, 0, {type: type, route_ref: 'outOfService'});
164+
routes.splice(last_index+1, 0, {type: type, route_ref: null, cgm_id: null});
165165
}
166166
const table = document.querySelector('table#vehicles_table');
167167
for(const route of routes) {
@@ -258,6 +258,7 @@ window.onload = async () => {
258258

259259
function generate_route_table(type, route_ref) {
260260
const tbody = document.createElement('tbody');
261+
route_ref = route_ref ?? 'null';
261262
tbody.setAttribute('id', `${type}_${route_ref}`);
262263
tbody.setAttribute('data-type', type);
263264
{
@@ -329,14 +330,14 @@ window.zoom_to_vehicle = zoom_to_vehicle;
329330
function update_route_tables(route_tables) {
330331
for(const table of route_tables) {
331332
let [type, route_ref] = table.split('/');
332-
if(route_ref === 'undefined') {
333-
route_ref = 'outOfService';
333+
if(route_ref === 'null' || !route_ref) {
334+
route_ref = null;
334335
}
335336

336337
const old_tbody = document.querySelector(`#${type}_${route_ref}`);
337338
try {
338-
const cgm_route_id = routes.find(route => route.type == type && route.route_ref == route_ref).cgm_id;
339-
const relevant_vehicles = cache.filter(vehicle => vehicle.cgm_route_id == cgm_route_id && vehicle.route_ref && vehicle.hidden !== true);
339+
const cgm_route_id = routes.find(route => route.type === type && route.route_ref === route_ref).cgm_id;
340+
const relevant_vehicles = cache.filter(vehicle => vehicle.type === type && vehicle.cgm_route_id === cgm_route_id && vehicle.hidden !== true);
340341
for(const v of relevant_vehicles) {
341342
v.is_unexpected = !is_vehicle_expected_on_line(type, route_ref, v.inv_number);
342343
}
@@ -347,7 +348,7 @@ function update_route_tables(route_tables) {
347348
}
348349
catch (err){
349350
console.error(err)
350-
console.log(old_tbody, route_ref,`#${type}_${route_ref}`);
351+
console.log(type, route_ref,`#${type}_${route_ref}`, table);
351352
}
352353
}
353354
}
@@ -365,7 +366,7 @@ function hide_inactive_vehicles() {
365366
vehicle.marker = null;
366367
}
367368
vehicle.hidden = true;
368-
update_tables.add(`${vehicle.type}/${vehicle.route_ref}`);
369+
update_tables.add(`${vehicle.type}/${vehicle.route_ref ?? 'null'}`);
369370
});
370371
update_route_tables(update_tables);
371372
}

src/js/cache.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export function add_to_cache(vehicle, tables_to_update, cache) {
102102
tables_to_update.add(`${vehicle.type}/${vehicle.route_ref}`);
103103
}
104104
else {
105-
tables_to_update.add(`${vehicle.type}/outOfService`);
105+
tables_to_update.add(`${vehicle.type}/null`);
106106
}
107107

108108
if(!cache_entry) {

src/js/map_vehicles.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ export function show_markers_in_view(map, vehicles_layer, cache) {
7676
}
7777

7878
function generate_tooltip_text({ inv_number, type, car, route_ref }) {
79+
if(route_ref === 'null') {
80+
route_ref = null;
81+
}
7982
const classes = get_route_classes(type, route_ref).join(' ');
8083
return `${proper_inv_number(inv_number)} <span class="${classes}">${BG_TYPES_HTML[route_ref && route_ref.startsWith('N') ? 'night' : type]} ${route_ref ?? 'Няма маршрут'}</span>${car ? ' / ' + car : ''}`;
8184
}

src/js/utils.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,11 @@ export function get_route_classes(type, route_ref) {
8383
}
8484

8585
export function set_route_classes(el, type, route_ref) {
86+
if(route_ref === 'null') {
87+
route_ref = null;
88+
}
8689
el.classList.add(...get_route_classes(type, route_ref), 'text-center');
87-
el.innerHTML = `${BG_TYPES_HTML[route_ref.startsWith('N') ? 'night' : type]} ${route_ref}`;
90+
el.innerHTML = `${BG_TYPES_HTML[route_ref && route_ref.startsWith('N') ? 'night' : type]} ${route_ref ?? 'Няма маршрут'}`;
8891
}
8992

9093
export function register_vehicle_view(type, inv_number, is_marker=false) {

0 commit comments

Comments
 (0)