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