From d80109132d362199e6d9e370d5f54bd0d6554126 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Thu, 29 Jul 2021 22:40:29 +0000 Subject: [PATCH] [map] Allow zero-prefixed stop identifiers (fix for bus stops) --- map.js | 69 +++++++++++++++++++++++++++++----- 1 files changed, 58 insertions(+), 11 deletions(-) diff --git a/map.js b/map.js index ab69a94..456edaa 100644 --- a/map.js +++ b/map.js @@ -189,7 +189,7 @@ ttss_types.forEach(function(ttss_type) { vehicles[ttss_type].source.forEachFeature(function(feature) { - if(feature.get('vehicle_type') && feature.get('vehicle_type').num.indexOf(query) > -1) { + if(feature.get('type') && feature.get('type').num.indexOf(query) > -1) { features.push(feature); } }); @@ -494,7 +494,7 @@ stop = stops[i]; var feature = new ol.Feature(stop); - feature.setId(stop.id); + feature.setId(stop.id.replace(/^0+/, '')); feature.setGeometry(getGeometryFeature(feature)); if(feature.get('parent') === null) { @@ -545,7 +545,7 @@ return path_xhr; } -function vehicleTable(feature, table) { +function vehicleTable(feature, table, post, trip) { if(feature_xhr) feature_xhr.abort(); if(feature_timer) clearTimeout(feature_timer); @@ -554,9 +554,13 @@ var featureSource = featureDiscriminator.substr(1, 1); var featureStatus = feature.get('status'); + var isTripCurrent = !trip || feature.get('trip') == trip; + feature_xhr = $.get( - api_url + '/trip/?type=' + featureSource + '&id=' + feature.get('trip') - ).done(function(data) { + api_url + '/trip/?type=' + featureSource + '&id=' + (trip ? trip : feature.get('trip')) + ).done(function(results) { + var data = results['data']; + deleteChildren(table); var tr; @@ -568,10 +572,12 @@ stopsToMark.push(data[i].stop); - if(data[i].seq < feature.get('seq')) { - tr.className = 'active'; - } else if(data[i].seq == feature.get('seq') && featureStatus < 2) { - tr.className = 'success'; + if(isTripCurrent) { + if(data[i].seq < feature.get('seq')) { + tr.className = 'active'; + } else if(data[i].seq == feature.get('seq') && featureStatus < 2) { + tr.className = 'success'; + } } table.appendChild(tr); } @@ -584,9 +590,42 @@ tr.className = 'active'; } + deleteChildren(post); + + if(results['prev']) { + tr = addElementWithText(post, 'a', lang.trip_previous); + tr.className = 'left'; + tr.onclick = function() { + vehicleTable(feature, table, post, results['prev']); + }; + } else { + tr = document.createElement('span'); + post.appendChild(tr); + } + if(!isTripCurrent) { + tr = addElementWithText(post, 'a', lang.trip_current); + tr.className = 'center'; + tr.onclick = function() { + vehicleTable(feature, table, post); + }; + } else { + tr = document.createElement('span'); + post.appendChild(tr); + } + if(results['next']) { + tr = addElementWithText(post, 'a', lang.trip_next); + tr.className = 'right'; + tr.onclick = function() { + vehicleTable(feature, table, post, results['next']); + }; + } else { + tr = document.createElement('span'); + post.appendChild(tr); + } + markStops(stopsToMark, featureSource, true); - feature_timer = setTimeout(function() { vehicleTable(feature, table); }, api_refresh); + feature_timer = setTimeout(function() { vehicleTable(feature, table, post, trip); }, api_refresh); }).fail(fail_ajax_popup); return feature_xhr; } @@ -661,6 +700,7 @@ var tbody = document.createElement('tbody'); table.appendChild(thead); table.appendChild(tbody); + var post; var tabular_data = true; @@ -690,7 +730,10 @@ addElementWithText(thead, 'th', lang.header_time); addElementWithText(thead, 'th', lang.header_stop); - vehicleTable(feature, tbody); + post = document.createElement('div'); + post.className = 'post-nav'; + + vehicleTable(feature, tbody, post); //vehiclePath(feature); } // Stop or stop point @@ -766,6 +809,10 @@ div.appendChild(table); } + if(post) { + div.appendChild(post); + } + showOnMapFunction(); panel.show(div, function() { -- Gitblit v1.9.1