From f50bae766a5086ae5f9caf4668d2ec34fdb4d70c Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Tue, 03 Jan 2017 21:20:18 +0000 Subject: [PATCH] Include stop name in page title --- index.js | 136 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 130 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index e522ba4..0a132bd 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,9 @@ var ttss_base = '/proxy.php'; var ttss_refresh = 20000; // 20 seconds +var page_title_pattern = 'TTSS Krak\u00F3w - $ - Real-time tram departures'; +var page_title = document.getElementsByTagName('title')[0]; + var stop_id; var stop_name = document.getElementById('stop-name'); var stop_name_form = stop_name.form; @@ -30,7 +33,7 @@ var alert_text = document.getElementById('alert-text'); var alert_close = document.getElementById('alert-close'); -var progress = document.getElementById('progress'); +var nav = document.getElementsByTagName('nav')[0]; var parseStatusBoarding = '>>>'; function parseStatus(status) { @@ -76,6 +79,123 @@ var planned = parseTime(now, status.plannedTime); return ((actual.getTime() - planned.getTime()) / 1000 / 60) + ' min'; +} + +function parseVehicle(vehicleId) { + if(!vehicleId) return; + if(vehicleId.substr(0, 15) != '635218529567218') { + console.log('Unknown vehicle, vehicleId=' + vehicleId); + return; + } + + var id = parseInt(vehicleId.substr(15)) - 736; + var prefix; + var type; + var low; // low floor: 0 = no, 1 - semi, 2 - full + + if(101 <= id && id <= 173) { + prefix = 'HW'; + type = 'E1'; + low = 0; + + if((108 <= id && id <= 113) || id == 127 || id == 131 || id == 132 || id == 134 || (137 <= id && id <= 139) || (148 <= id && id <= 150) || (153 <= id && id <= 166) || id == 161) { + prefix = 'RW'; + } + } else if(201 <= id && id <= 293) { + prefix = 'RZ'; + type = '105Na'; + low = 0; + + if(246 <= id) { + prefix = 'HZ'; + } + if(id == 290) { + type = '105Nb'; + } + } else if(301 <= id && id <= 328) { + prefix = 'RF'; + type = 'GT8S'; + low = 0; + + if(id == 313) { + type = 'GT8C' + low = 1; + } + } else if(401 <= id && id <= 440) { + prefix = 'HL'; + type = 'EU8N'; + low = 1; + } else if(451 <= id && id <= 462) { + prefix = 'HK'; + type = 'N8S-NF'; + low = 0; + + if((451 <= id && id <= 453) || id == 462) { + type = 'N8C-NF'; + low = 1; + } + } else if(601 <= id && id <= 650) { + prefix = 'RP'; + type = 'NGT6 (3)'; + low = 2; + + if(id <= 613) { + type = 'NGT6 (1)'; + } else if (id <= 626) { + type = 'NGT6 (2)'; + } + } else if(801 <= id && id <= 824) { + prefix = 'RY'; + type = 'NGT8'; + low = 2; + } else if(id == 899) { + prefix = 'RY'; + type = '126N'; + low = 2; + } else if(901 <= id && id <= 936) { + prefix = 'RG'; + type = '2014N'; + low = 2; + + if(915 <= id) { + prefix = 'HG'; + } + } else if(id === 999) { + prefix = 'HX'; + type = '405N-Kr'; + low = 1; + } else { + console.log('Unknown vehicle, vehicleId=' + vehicleId + ', id=' + id); + return; + } + + return { + vehicleId: vehicleId, + prefix: prefix, + id: id, + num: prefix + id, + type: type, + low: low + }; +} + +function displayVehicle(vehicleInfo) { + if(!vehicleInfo) return document.createTextNode(''); + + var span = document.createElement('span'); + span.className = 'vehicleInfo'; + span.title = vehicleInfo.num + ' ' + vehicleInfo.type; + if(vehicleInfo.low == 0) { + setText(span, '\u2010\u00A0'); + span.title += ' (high floor)'; + } else if(vehicleInfo.low == 1) { + setText(span, '*\u267F'); + span.title += ' (partially low floor)'; + } else if(vehicleInfo.low == 2) { + setText(span, '\u267F'); + span.title += ' (low floor)'; + } + return span; } function deleteChildren(element) { @@ -130,11 +250,11 @@ } function loading_start() { - progress.style.display = 'block'; + nav.className += ' loading'; } function loading_end() { - progress.style.display = 'none'; + nav.className = nav.className.replace(' loading', ''); } function loadTimes(stopId = null, clearRoute = false) { @@ -153,6 +273,7 @@ + '&mode=departure' ).done(function(data) { setText(times_stop_name, data.stopName); + setText(page_title, page_title_pattern.replace('$', data.stopName)); deleteChildren(times_alerts); deleteChildren(times_table); deleteChildren(times_lines); @@ -170,7 +291,8 @@ for(var i = 0, il = data.old.length; i < il; i++) { var tr = document.createElement('tr'); addCellWithText(tr, data.old[i].patternText); - addCellWithText(tr, data.old[i].direction); + var dir_cell = addCellWithText(tr, data.old[i].direction); + dir_cell.appendChild(displayVehicle(parseVehicle(data.old[i].vehicleId))); var status = parseStatus(data.old[i]); addCellWithText(tr, status); addCellWithText(tr, ''); @@ -182,7 +304,8 @@ for(var i = 0, il = data.actual.length; i < il; i++) { var tr = document.createElement('tr'); addCellWithText(tr, data.actual[i].patternText); - addCellWithText(tr, data.actual[i].direction); + var dir_cell = addCellWithText(tr, data.actual[i].direction); + dir_cell.appendChild(displayVehicle(parseVehicle(data.actual[i].vehicleId))); var status = parseStatus(data.actual[i]); var status_cell = addCellWithText(tr, status); var delay = parseDelay(data.actual[i]); @@ -300,7 +423,7 @@ $.ajaxSetup({ dataType: 'json', - timeout: 3000, + timeout: 10000, }); stop_name.addEventListener('input', function(e) { @@ -313,6 +436,7 @@ ).done(function(data) { deleteChildren(stop_name_autocomplete); for(var i = 1, il = data.length; i < il; i++) { + if(data[i].id > 6000) continue; var opt = document.createElement('option'); opt.value = data[i].id; setText(opt, decodeEntities(data[i].name)); -- Gitblit v1.9.1