From cea60249417edf3cb891ca64cbfd7945e6373828 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 13 Nov 2020 22:12:11 +0000 Subject: [PATCH] [map] Add previous/next trip indicators --- map.js | 65 ++++++++++++++++++++++++++++---- lang_en.js | 3 + lang_pl.js | 3 + map.css | 19 +++++++++ 4 files changed, 81 insertions(+), 9 deletions(-) diff --git a/lang_en.js b/lang_en.js index 79c8b42..8b94490 100644 --- a/lang_en.js +++ b/lang_en.js @@ -67,6 +67,9 @@ departures_for_stop: 'Click for stop departures (and not only this stop point).', departures_for_trams: 'Switch to tram departures.', departures_for_buses: 'Switch to bus departures.', + trip_previous: '\u00AB previous', + trip_current: 'current', + trip_next: 'next \u00BB', tram_type_pattern: '$num $type ($floor)', high_floor: 'high floor', diff --git a/lang_pl.js b/lang_pl.js index a51190f..08ca6b1 100644 --- a/lang_pl.js +++ b/lang_pl.js @@ -67,6 +67,9 @@ departures_for_stop: 'Kliknij, by zobaczyć odjazdy dla całego przystanku (a nie tylko peronu).', departures_for_trams: 'Przełącz na odjazdy tramwajów.', departures_for_buses: 'Przełącz na odjazdy autobusów.', + trip_previous: '\u00AB poprzedni', + trip_current: 'aktualny', + trip_next: 'następny \u00BB', tram_type_pattern: '$num $type ($floor)', high_floor: 'wysokopodłogowy', diff --git a/map.css b/map.css index aa9b4de..c7ea862 100644 --- a/map.css +++ b/map.css @@ -144,6 +144,25 @@ float: right; } +.post-nav { + display: flex; + flex-wrap: wrap; +} +.post-nav > * { + flex-basis: 0; + flex-grow: 1; +} + +.left { + text-align: left; +} +.center { + text-align: center; +} +.right { + text-align: right; +} + .icon, .icon-loc, .icon-pin, .icon-zoom { display: inline-block; height: 1em; diff --git a/map.js b/map.js index 330093a..bef6783 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, 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