-
Notifications
You must be signed in to change notification settings - Fork 2
/
MMM-DailyPower.js
89 lines (79 loc) · 2.7 KB
/
MMM-DailyPower.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
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
Module.register('MMM-DailyPower', {
defaults: {
width: '75%',
margin: '0 auto',
translation: 'de',
verseColor: '#ccc',
verseSize: '28px',
referenceColor: '#ccc',
referenceSize: '32px',
showImage: true,
blackAndWhite: true,
},
start: function() {
const payload = {
translation: this.config.translation
};
this.sendSocketNotification('DAILY_POWER_LOAD_VERSE', payload);
setInterval(() => {
this.sendSocketNotification('DAILY_POWER_LOAD_VERSE', payload);
}, 1000 * 60 * 60);
},
getStyles: function() {
return [
this.file('styles.css')
];
},
getDom: function() {
const wrapper = document.createElement('div');
wrapper.style.width = this.config.width;
wrapper.style.margin = this.config.margin;
if (this.verse) {
if (this.config.showImage) {
wrapper.appendChild(this.createVerseImage());
}
wrapper.appendChild(this.createVerseCard());
} else {
wrapper.innerHTML = this.translate('LOADING');
}
return wrapper;
},
createVerseImage: function() {
const imageUrl = this.verse.image;
let image = document.createElement('img');
image.classList.add('daily-power-image');
if (this.config.blackAndWhite) {
image.classList.add('daily-power-blackAndWhite');
}
image.src = imageUrl;
return image;
},
createVerseCard: function() {
const card = document.createElement('div');
card.appendChild(this.createVerseContent());
card.appendChild(this.createVerseReference());
return card;
},
createVerseContent: function() {
const content = document.createElement('p');
content.classList.add('daily-power-p', 'daily-power-verse-content');
content.style.color = this.config.verseColor;
content.style.fontSize = this.config.verseSize;
content.innerHTML = this.verse.content;
return content;
},
createVerseReference: function() {
const reference = document.createElement('p');
reference.classList.add('daily-power-p', 'daily-power-verse-reference');
reference.style.color = this.config.referenceColor;
reference.style.fontSize = this.config.referenceSize;
reference.innerHTML = this.verse.reference;
return reference;
},
socketNotificationReceived: function(notification, payload) {
if (notification === 'DAILY_POWER_ON_VERSE_RECEIVED') {
this.verse = payload[0];
this.updateDom();
}
}
});