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 | 67 ++++++++++++++++++++++++++++-----
1 files changed, 57 insertions(+), 10 deletions(-)
diff --git a/map.js b/map.js
index 330093a..456edaa 100644
--- a/map.js
+++ b/map.js
@@ -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