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