From 1dd714d5d3236c2b53b02c161c78ecf44ac0a217 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Fri, 30 Jul 2021 19:44:31 +0000 Subject: [PATCH] [map] Update old stop hashes to new format (trams too) --- map.js | 75 +++++++++++++++++++++++++++++++------ 1 files changed, 63 insertions(+), 12 deletions(-) diff --git a/map.js b/map.js index 330093a..2cf2272 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; @@ -680,8 +720,10 @@ var span = displayVehicle(feature.get('type')); additional = document.createElement('p'); - if(span.title) { - setText(additional, span.title); + if(span.dataset.typeShort) { + setText(additional, span.dataset.typeShort); + additional.title = span.dataset.typeAdditional; + span.removeAttribute('title'); } else { setText(additional, feature.getId()); } @@ -690,7 +732,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 @@ -764,6 +809,10 @@ if(tabular_data) { div.appendChild(table); + } + + if(post) { + div.appendChild(post); } showOnMapFunction(); @@ -897,7 +946,9 @@ return false; }, _updateOld: function() { - if(window.location.hash.match(/^#![bt][0-9]{3}$/)) { + if(window.location.hash.match(/^#!s[bt][0-9]{1,3}$/)) { + this.go('s' + window.location.hash.charAt(3) + window.location.hash.substr(4).padStart(4, '0')); + } else if(window.location.hash.match(/^#![bt][0-9]{3}$/)) { this.go('v' + window.location.hash.substr(2)); } else if(window.location.hash.match(/^#![RHrh][A-Za-z][0-9]{3}$/)) { this.go('vt'+ window.location.hash.substr(4)); -- Gitblit v1.9.1