From d87cf076349d354b829bfe896ef11247b1182dd9 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 04 May 2019 12:46:08 +0000
Subject: [PATCH] Use number of matched query chars when ordering stop search results

---
 index.js |   50 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/index.js b/index.js
index 3a07ed9..924e93c 100644
--- a/index.js
+++ b/index.js
@@ -17,6 +17,7 @@
 
 var times_xhr;
 var times_timer;
+var times_stop_type = document.getElementById('times-stop-type');
 var times_stop_name = document.getElementById('times-stop-name');
 var times_alerts = document.getElementById('times-alerts');
 var times_table = document.getElementById('times-table');
@@ -54,9 +55,9 @@
 
 function fail_ajax(data) {
 	// abort() is not a failure
-	if(data.readyState == 0 && data.statusText == 'abort') return;
+	if(data.readyState === 0) return;
 	
-	if(data.status == 0) {
+	if(data.status === 0) {
 		fail(lang.error_request_failed_connectivity, data);
 	} else if (data.statusText) {
 		fail(lang.error_request_failed_status.replace('$status', data.statusText), data);
@@ -98,34 +99,57 @@
 	window.location.hash = '#!' + language + stopId;
 	refresh_button.removeAttribute('disabled');
 	
+	var alternative_stop = null;
+	var candidate;
+	for(var i = 0; i < stop_name_autocomplete.options.length; i++) {
+		candidate = stop_name_autocomplete.options[i].value;
+		if(candidate.substr(0, 1) != prefix && candidate.substr(1) == stop) {
+			alternative_stop = candidate;
+			break;
+		}
+	}
+	
 	times_xhr = $.get(
 		url + '/services/passageInfo/stopPassages/stop'
 			+ '?stop=' + encodeURIComponent(stop)
 			+ '&mode=departure'
 	).done(function(data) {
-		setText(times_stop_name, data.stopName);
-		setText(page_title, lang.page_title_stop_name.replace('$stop', data.stopName));
+		setText(times_stop_type, lang.types['s' + prefix]);
+		setText(times_stop_name, normalizeName(data.stopName));
+		setText(page_title, lang.page_title_stop_name.replace('$stop', normalizeName(data.stopName)));
 		deleteChildren(times_alerts);
 		deleteChildren(times_table);
 		//deleteChildren(times_lines);
 		
-		for(var i = 0, il = data.generalAlerts.length; i < il; i++) {
+		if(alternative_stop !== null) {
+			var a = addParaWithText(times_alerts, '');
+			a = addElementWithText(a, 'a', (prefix == 'b' ? lang.departures_for_trams : lang.departures_for_buses));
+			a.href = '';
+			a.onclick = function(e) {
+				e.preventDefault();
+				loadTimes(alternative_stop);
+			};
+			
+		}
+		
+		var i, il;
+		for(i = 0, il = data.generalAlerts.length; i < il; i++) {
 			addParaWithText(times_alerts, data.generalAlerts[i].title);
 		}
 		
 		var all_departures = data.old.concat(data.actual);
 		var tr, dir_cell, vehicle, status, status_cell, delay, delay_cell;
-		for(var i = 0, il = all_departures.length; i < il; i++) {
-			var tr = document.createElement('tr');
+		for(i = 0, il = all_departures.length; i < il; i++) {
+			tr = document.createElement('tr');
 			addCellWithText(tr, all_departures[i].patternText);
-			var dir_cell = addCellWithText(tr, all_departures[i].direction);
-			var vehicle = parseVehicle(prefix + all_departures[i].vehicleId);
+			dir_cell = addCellWithText(tr, all_departures[i].direction);
+			vehicle = parseVehicle(prefix + all_departures[i].vehicleId);
 			dir_cell.appendChild(displayVehicle(vehicle));
 			addCellWithText(tr, (vehicle ? vehicle.num : '')).className = 'vehicleData';
-			var status = parseStatus(all_departures[i]);
-			var status_cell = addCellWithText(tr, status);
-			var delay = parseDelay(all_departures[i]);
-			var delay_cell = addCellWithText(tr, delay);
+			status = parseStatus(all_departures[i]);
+			status_cell = addCellWithText(tr, status);
+			delay = parseDelay(all_departures[i]);
+			delay_cell = addCellWithText(tr, delay);
 			
 			if(i < data.old.length) {
 				tr.className = 'active';

--
Gitblit v1.9.1