Skip to content
Snippets Groups Projects
Commit 2971c148 authored by Kasalehlia's avatar Kasalehlia
Browse files

rewrote bus module

parent ee8f27da
No related branches found
No related tags found
No related merge requests found
...@@ -11,9 +11,12 @@ var ENTRIES = 6; ...@@ -11,9 +11,12 @@ var ENTRIES = 6;
/// VARS /// VARS
var CACHED = null; var CACHED = null;
var TEMPLATE = ''; var TEMPLATES = {};
fs.readFile('modules/bus/template.mustache', 'utf-8', function (err, data) { fs.readFile('modules/bus/outer.mustache', 'utf-8', function (err, data) {
TEMPLATE = data; TEMPLATES.outer = data;
});
fs.readFile('modules/bus/inner.mustache', 'utf-8', function (err, data) {
TEMPLATES.inner = data;
}); });
/// FUNS /// FUNS
...@@ -24,7 +27,7 @@ function pad(n, width, z) { ...@@ -24,7 +27,7 @@ function pad(n, width, z) {
} }
function fetchData(stop, cb) { function fetchData(stop, cb) {
var url = "http://62.154.206.87/efaws2/default/XML_DM_REQUEST?sessionID=0&requestID=0&language=de&useRealtime=1&coordOutputFormat=WGS84[DD.ddddd]&locationServerActive=1&mode=direct&dmLineSelectionAll=1&depType=STOPEVENTS&useAllStops=1&command=null&type_dm=stop&name_dm="+CITY+' '+stop+"&itdTime=2315&itdDate=20151116&mId=efa_rc2" var url = "http://62.154.206.87/efaws2/default/XML_DM_REQUEST?sessionID=0&requestID=0&language=de&useRealtime=1&coordOutputFormat=WGS84[DD.ddddd]&locationServerActive=1&mode=direct&dmLineSelectionAll=1&depType=STOPEVENTS&useAllStops=1&command=null&type_dm=stop&name_dm="+CITY+' '+stop+"&mId=efa_rc2"
httpreq.get(url, {binary: true}, function (err, res) { httpreq.get(url, {binary: true}, function (err, res) {
try { try {
cb(XML.parse(iconv.decode(res.body, 'latin1'))); cb(XML.parse(iconv.decode(res.body, 'latin1')));
...@@ -69,12 +72,13 @@ function update(io) { ...@@ -69,12 +72,13 @@ function update(io) {
var done = 0; var done = 0;
var context = []; var context = [];
var innerGetData = function (stop, i) { var innerGetData = function (stop, i) {
var ns = normalizeStop(stop);
getData(stop, ENTRIES, function (deps) { getData(stop, ENTRIES, function (deps) {
context[i] = {stop: stop, deps: deps}; try {
if (++done >= STOPS.length) { context[i] = {stop: stop, normalizedStop: ns, deps: deps};
io.emit('bus', Mustache.render(TEMPLATE, context)); io.emit('bus.'+ns, Mustache.render(TEMPLATES.inner, context[i]));
CACHED = context; CACHED = context;
} } catch (e) {console.log(e);}
// calculate when to update next // calculate when to update next
var d = new Date(); var d = new Date();
var hour = d.getHours(); var hour = d.getHours();
...@@ -91,9 +95,17 @@ function update(io) { ...@@ -91,9 +95,17 @@ function update(io) {
}); });
} }
function normalizeStop(stop) {
return stop.replace(/[^a-zA-Z0-9_]/g,'');
}
module.exports = function (io) { module.exports = function (io) {
update(io); update(io);
io.on('connect', function (sock) { io.on('connect', function (sock) {
sock.emit('bus', Mustache.render(TEMPLATE, CACHED)); sock.emit('bus', Mustache.render(TEMPLATES.outer, CACHED));
for (var i in CACHED) {
sock.emit('bus.'+CACHED[i].normalizedStop,
Mustache.render(TEMPLATES.inner, CACHED[i]));
}
}); });
} }
<tr>
<th class="title" colspan="4">
<h3><img src="/modules/bus/bsv.svg"> {{stop}}</h3>
</th>
</tr>
<tr>
<th>Time</th>
<th>Line</th>
<th>Pltf</th>
<th>Direction</th>
</tr>
{{#deps}}
<tr>
<td class="time">
<span>{{hour}}:{{minute}}</span>
(<font class="until"></font>)
</td>
<td>{{{renderedLine}}}</td>
<td>{{platform}}</td>
<td>{{dir}}</td>
</tr>
{{/deps}}
...@@ -8,27 +8,6 @@ ...@@ -8,27 +8,6 @@
<col> <col>
</colgroup> </colgroup>
{{#.}} {{#.}}
<tr> <tbody data-infodisplay-outlet="{{normalizedStop}}"></tbody>
<th class="title" colspan="4">
<h3><img src="/modules/bus/bsv.svg"> {{stop}}</h3>
</th>
</tr>
<tr>
<th>Time</th>
<th>Line</th>
<th>Pltf</th>
<th>Direction</th>
</tr>
{{#deps}}
<tr>
<td class="time">
<span>{{hour}}:{{minute}}</span>
(<font class="until"></font>)
</td>
<td>{{{renderedLine}}}</td>
<td>{{platform}}</td>
<td>{{dir}}</td>
</tr>
{{/deps}}
{{/.}} {{/.}}
</table> </table>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment