forked from skastenholz/MMM-DVB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
node_helper.js
39 lines (37 loc) · 1.56 KB
/
node_helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var dvb = require('dvbjs');
var NodeHelper = require("node_helper");
module.exports = NodeHelper.create({
socketNotificationReceived: function(notification, payload) {
if (notification === 'DVB-REQUEST') {
var self = this;
dvb.findStop(payload.stopName).then((data) => {
if (Array.isArray(data) && data.length > 0) {
var stopID = data[0].id;
dvb.monitor(stopID, payload.timeOffset, this.numberOfRequestedResults(payload)).then((data) => {
var response = {
id: payload.id,
connections: self.connectionsToBeDisplayed(data, payload)
};
self.sendSocketNotification("DVB-RESPONSE", response);
});
}
});
}
},
numberOfRequestedResults: function(payload) {
if (payload.lines.length > 0 || payload.directions.length > 0) {
return 31; // request the maxium amount of results in order to filter them afterwards
} else {
return payload.resultNum;
}
},
connectionsToBeDisplayed: function(connections, payload) {
return connections.filter(function(connection) {
return (
payload.lines.length === 0 || payload.lines.indexOf(connection.line) >= 0
) && (
payload.directions.length === 0 || payload.directions.indexOf(connection.direction) >= 0
);
}).slice(0, payload.resultNum);
}
});