-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathMMM-EFA-departures.js
More file actions
115 lines (102 loc) · 4.32 KB
/
MMM-EFA-departures.js
File metadata and controls
115 lines (102 loc) · 4.32 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* Magic Mirror
* Module: MMM-EFA-departures
*
* By gefangenimnetz / https://github.com/gefangenimnetz/MMM-EFA-departures
* MIT Licensed.
*
* v0.0.1
*/
Module.register("MMM-EFA-departures", {
defaults: {
efaUrl: "http://www.efa-bw.de/nvbw/XSLT_DM_REQUEST",
stopID: "7210149",
stopName: "Loading station name …",
lines: ['all'],
maxDepartures: 7,
reload: 1 * 60 * 1000,
toggleDepTime: true,
toggleDepTimePerReload: 6, //Every 10 seconds
fade: true,
fadePoint: 0.25 // Start on 1/4th of the list.
},
start: function () {
var self = this;
Log.info("Starting module: " + this.name);
this.sendSocketNotification("CONFIG", this.config);
setInterval(function() {
self.sendSocketNotification("CONFIG", self.config);
}, this.config.reload);
moment.updateLocale('de', {
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sek.',
m : '1 Min.',
mm : '%d Min.',
h : '1 Std.',
hh : '%d Std.',
d : '1 Tag',
dd : '%d Tagen',
M : '1 Mon.',
MM : '%s Mon.',
y : '1 Jahr',
yy : '%s Jahren'
}
});
},
getStyles: function () {
return ["MMM-EFA-departures.css"];
},
getScripts: function() {
return ["moment.js", "classie.js"];
},
socketNotificationReceived: function (notification, payload) {
if (notification === "TRAMS" + this.config.stopID) {
this.efa_data = payload;
this.config.stopName = payload.departureList[0].stopName;
this.updateDom();
}
},
getDom: function () {
var wrapper = document.createElement("div");
var header = document.createElement("header");
header.innerHTML = this.config.stopName;
wrapper.appendChild(header);
if(!this.efa_data) {
var text = document.createElement("div");
//text.innerHTML = this.translate("LOADING");
text.innerHTML = "LOADING";
wrapper.appendChild(text);
} else {
var departuresUL = document.createElement("ul");
departuresUL.className = 'small';
var departures = this.efa_data.departureList;
if (this.config.toggleDepTime){
window.clearInterval(this.toggleTimeInt);
this.toggleTimeInt = window.setInterval(function(){
classie.toggle(departuresUL, 'departures__departure--show-time');
}, (this.config.reload / this.config.toggleDepTimePerReload));
}
for (var d in departures) {
var departuresLI = document.createElement("li");
departuresLI.className = 'departures__departure';
var departureTime = new Date(departures[d].dateTime.year, departures[d].dateTime.month-1, departures[d].dateTime.day, departures[d].dateTime.hour, departures[d].dateTime.minute, 0);
departuresLI.innerHTML = '<span class="departures__departure__line xsmall">'+ departures[d].servingLine.number +'</span><span class="departures__departure__direction small">' + departures[d].servingLine.direction + '</span><span class="departures__departure__time-relative small bright">' + moment(departureTime).fromNow() + '</span><span class="departures__departure__time-clock small bright">' + moment(departureTime).format('HH:mm') + '</span>';
if (this.config.fade && this.config.fadePoint < 1) {
if (this.config.fadePoint < 0) {
this.config.fadePoint = 0;
}
var startingPoint = departures.length * this.config.fadePoint;
var steps = departures.length - startingPoint;
if (d >= startingPoint) {
var currentStep = d - startingPoint;
departuresLI.style.opacity = 1 - (1 / steps * currentStep);
}
}
departuresUL.appendChild(departuresLI);
}
wrapper.appendChild(departuresUL);
}
return wrapper;
}
});