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 | 77 ++++++++++++++++++++++++++++++++------
1 files changed, 64 insertions(+), 13 deletions(-)
diff --git a/map.js b/map.js
index ab69a94..2cf2272 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);
}
});
@@ -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