From 7886d019dc9da733167d56e826622fe8f34ac092 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 13 Nov 2020 21:42:59 +0000 Subject: [PATCH] [map] Add previous/next trip indicators --- map.js | 65 ++++++++++++++++++++++++++++---- 1 files changed, 56 insertions(+), 9 deletions(-) diff --git a/map.js b/map.js index 330093a..223edd5 100644 --- a/map.js +++ b/map.js @@ -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); }, 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