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