From 8fb34ce3cd498b75689345888174fa341bd9c0dc Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 25 Dec 2016 20:31:28 +0000
Subject: [PATCH] Display tram type (accessibility icon + tooltip)
---
index.js | 119 +++++++++++++++++++++++++++++++++++++++
index.css | 6 ++
2 files changed, 123 insertions(+), 2 deletions(-)
diff --git a/index.css b/index.css
index dfc40fa..a3525ce 100644
--- a/index.css
+++ b/index.css
@@ -34,6 +34,12 @@
font-size: inherit;
}
+.vehicleInfo {
+ float: right;
+ margin: -5px 0;
+ font-size: 21px;
+}
+
nav.loading {
background-image: -webkit-linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);
background-image: -o-linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);
diff --git a/index.js b/index.js
index af4dacb..f01a51d 100644
--- a/index.js
+++ b/index.js
@@ -78,6 +78,119 @@
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 (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 = 2;
+ } 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, '\u25CB');
+ 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) {
while(element.lastChild) element.removeChild(element.lastChild);
}
@@ -170,7 +283,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 +296,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]);
--
Gitblit v1.9.1