From 2b645413fc163863d000bddde5bc27a836321422 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 13 Apr 2019 23:06:48 +0000
Subject: [PATCH] Get rid of jQuery dependency - use XHR and Promise

---
 map.js |   73 +++++++++---------------------------
 1 files changed, 19 insertions(+), 54 deletions(-)

diff --git a/map.js b/map.js
index a92594a..e8550d4 100644
--- a/map.js
+++ b/map.js
@@ -151,7 +151,7 @@
 
 function fail_ajax_generic(data, fnc) {
 	// abort() is not a failure
-	if(data.readyState == 0 && data.statusText == 'abort') return;
+	if(data.readyState == 0) return;
 	
 	if(data.status == 0) {
 		fnc(lang.error_request_failed_connectivity, data);
@@ -247,7 +247,7 @@
 function unstyleSelectedFeatures() {
 	stop_selected_source.clear();
 	route_source.clear();
-	if(feature_clicked && ttss_types.indexOf(feature_clicked.getId().substr(0, 1)) >= 0) {
+	if(feature_clicked && ttss_types.includes(feature_clicked.getId().substr(0, 1))) {
 		styleVehicle(feature_clicked);
 	}
 }
@@ -315,7 +315,7 @@
 		var stop = stops[i];
 		
 		if(stop.category == 'other') continue;
-		if(stops_ignored.indexOf(stop.shortName) >= 0) continue;
+		if(stops_ignored.includes(stop.shortName)) continue;
 		
 		stop.geometry = getGeometry(stop);
 		var stop_feature = new ol.Feature(stop);
@@ -375,6 +375,7 @@
 		}));
 		route_layer.setVisible(true);
 	});
+	return path_xhr;
 }
 
 function vehicleTable(feature, table) {
@@ -423,6 +424,7 @@
 		
 		feature_timer = setTimeout(function() { vehicleTable(feature, table); }, ttss_refresh);
 	}).fail(fail_ajax_popup);
+	return feature_xhr;
 }
 
 function stopTable(stopType, stopId, table, ttss_type) {
@@ -476,6 +478,7 @@
 		
 		feature_timer = setTimeout(function() { stopTable(stopType, stopId, table, ttss_type); }, ttss_refresh);
 	}).fail(fail_ajax_popup);
+	return feature_xhr;
 }
 
 function featureClicked(feature) {
@@ -504,19 +507,20 @@
 	var tabular_data = true;
 	
 	var type = feature.getId().substr(0, 1);
+	var full_type = feature.getId().match(/^[a-z]+/)[0];
+	var typeName = lang.types[full_type];
+	if(typeof typeName === 'undefined') {
+		typeName = '';
+	}
+	
 	// Location
 	if(type == 'l') {
 		tabular_data = false;
+		name = typeName;
 		typeName = '';
-		name = lang.type_location;
 	}
 	// Vehicle
-	else if(ttss_types.indexOf(type) >= 0) {
-		typeName = lang.type_bus;
-		if(type == 't') {
-			typeName = lang.type_tram;
-		}
-		
+	else if(ttss_types.includes(type)) {
 		var span = displayVehicle(feature.get('vehicle_type'));
 		
 		additional = document.createElement('p');
@@ -536,15 +540,13 @@
 		styleVehicle(feature, true);
 	}
 	// Stop or stop point
-	else if(['s', 'p'].indexOf(type) >= 0) {
+	else if(['s', 'p'].includes(type)) {
 		var ttss_type = feature.getId().substr(1, 1);
 		if(type == 's') {
-			typeName = lang.type_stop_tram;
 			var second_type = lang.departures_for_buses;
 			var mapping = stops_mapping['sb'];
 			
 			if(ttss_type == 'b') {
-				typeName = lang.type_stop_bus;
 				second_type = lang.departures_for_trams;
 				mapping = stops_mapping['st'];
 			}
@@ -562,12 +564,6 @@
 				);
 			}
 		} else {
-			typeName = lang.type_stoppoint_tram;
-			
-			if(ttss_type == 'b') {
-				typeName = lang.type_stoppoint_bus;
-			}
-			
 			stopTable('stopPoint', feature.get('stopPoint'), tbody, ttss_type);
 			
 			additional = document.createElement('p');
@@ -656,31 +652,10 @@
 				featureClicked(feature);
 			}}(feature));
 			
-			var type = feature.getId().substr(0, 1);
-			var typeName = '';
-			if(type == 'l') {
+			var full_type = feature.getId().match(/^[a-z]+/)[0];
+			var typeName = lang.types[full_type];
+			if(typeof typeName === 'undefined') {
 				typeName = '';
-				name = lang.type_location;
-			} else if(ttss_types.indexOf(type) >= 0) {
-				typeName = lang.type_bus;
-				if(type == 't') {
-					typeName = lang.type_tram;
-				}
-				if(feature.get('vehicle_type').num) {
-					typeName += ' ' + feature.get('vehicle_type').num;
-				}
-			} else if(type == 's') {
-				typeName = lang.type_stop_tram;
-				if(feature.getId().startsWith('sb')) {
-					typeName = lang.type_stop_bus;
-				}
-			} else if (type == 'p') {
-				typeName = lang.type_stoppoint_tram;
-				if(feature.getId().startsWith('pb')) {
-					typeName = lang.type_stoppoint_bus;
-				}
-			} else {
-				continue;
 			}
 			
 			addElementWithText(a, 'span', typeName).className = 'small';
@@ -797,16 +772,6 @@
 }
 
 function init() {
-	if(!window.jQuery) {
-		fail(lang.jquery_not_loaded);
-		return;
-	}
-	
-	$.ajaxSetup({
-		dataType: 'json',
-		timeout: 10000,
-	});
-	
 	panel = new Panel(document.getElementById('panel'));
 	
 	route_source = new ol.source.Vector({
@@ -975,7 +940,7 @@
 	stops_type.forEach(function(type) {
 		future_requests.push(updateStops(type.substr(0,1), type.substr(1,1)));
 	});
-	$.when(future_requests).done(hash);
+	Deferred.all(future_requests).done(hash);
 	
 	window.addEventListener('hashchange', hash);
 	

--
Gitblit v1.9.1