Skip to content

Commit 989d5ea

Browse files
committed
Extend alarm-clock module : weekday selection
1 parent caf6c0f commit 989d5ea

File tree

5 files changed

+165
-22
lines changed

5 files changed

+165
-22
lines changed

app/i18n/strings_en.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,16 @@
271271
"SLEEP_MODE_HOUR":"hour(s)",
272272
"STOP_MUSIC":"Stop Music",
273273
"TURN_OFF":"Turn off",
274-
"TIME_SELECT_ERROR":"Please select an alarm start time",
275-
"PLAYLIST_SELECT_ERROR":"Please select a Playlist"
274+
"TIME_SELECT_ERROR":"Please select an alarm start time",
275+
"PLAYLIST_SELECT_ERROR":"Please select a Playlist",
276+
"DAY_SELECT_ERROR":"Please select at least one day of week",
277+
"MONDAY":"Monday",
278+
"TUESDAY":"Tuesday",
279+
"WEDNESDAY":"Wednesday",
280+
"THURSDAY":"Thursday",
281+
"FRIDAY":"Friday",
282+
"SATURDAY":"Saturday",
283+
"SUNDAY":"Sunday"
276284
},
277285
"SYSTEM":{
278286
"SYSTEM_SETTINGS":"System Settings",

app/i18n/strings_fr.json

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"ADVANCED_AUDIO_TWEAKS":"Réglages audio avancés",
4646
"AUDIO_RESAMPLING":"Ré-échantillonage",
4747
"AUDIO_RESAMPLING_SETTINGS_SAVED":"Réglage du ré-échantillonnage enregistré",
48-
"AUDIO_RESAMPLING_DOC":"Contrôle les options de ré-échantillonnage. Pour la lecture de fichiers locaux uniquement (ne s'applique pas à Shairport ou services tiers comme ROON)",
48+
"AUDIO_RESAMPLING_DOC":"Contrôle les options de ré-échantillonnage. Pour la lecture de fichiers locaux uniquement (ne s'applique pas à Shairport ou services tiers comme ROON)",
4949
"TARGET_BITDEPTH":"Nombre de bits cible",
5050
"TARGET_SAMPLERATE":"Fréquence d’échantillonnage",
5151
"NATIVE":"Native",
@@ -81,7 +81,7 @@
8181
"PLAYBACK_MODE":"Mode de lecture",
8282
"PLAYBACK_MODE_DOC":"Vous pouvez choisir le comportement de lecture : Continue remplacera la liste courante par tous les morceaux de l'album ou de la playlist, Unitaire ajoutera seulement le morceau sélectionné",
8383
"PLAYBACK_MODE_CONTINUOUS":"Continue",
84-
"PLAYBACK_MODE_SINGLE":"Unitaire"
84+
"PLAYBACK_MODE_SINGLE":"Unitaire"
8585
},
8686

8787
"NETWORK": {
@@ -181,7 +181,7 @@
181181
"ALBUMS":"Albums",
182182
"ALBUM":"Album",
183183
"GENRE":"Genre",
184-
"GENRES":"Genres",
184+
"GENRES":"Genres",
185185
"TRACKS":"Pistes",
186186
"TRACK":"Piste",
187187
"WITH":"avec",
@@ -232,7 +232,7 @@
232232
"COMPILATION_METADATA_DOC":"Configure les métadonnées utilisées pour décrire albumart dans les compilations ou multi-artistes. Utilise la virgule comme séparateur.",
233233
"COMPILATION_METADATA":"Champs métadonnées pour les compilations",
234234
"ALBUMART_CACHE_CLEARED":"Cache des images des albums réinitialisé avec succès",
235-
"ALBUMART_CACHE_CLEAR_ERROR":"Une erreur est survenue en effaçant le cache, réessayer ultérieurement",
235+
"ALBUMART_CACHE_CLEAR_ERROR":"Une erreur est survenue en effaçant le cache, réessayer ultérieurement",
236236
"ALBUMART_RESET_CACHE":"Réinitialiser le cache des images des albums",
237237
"ALBUMART_RESET_CACHE_DOC":"Volumio met en cache les images des albums pour améliorer la performance, cependant cela empêche les nouveaux albums d'apparaître. En réinitialisant le cache, le système peut afficher les nouveaux ajouts d'albums ",
238238
"METADATA_IMAGE":"Montrer les images inclues dans les fichiers",
@@ -265,7 +265,15 @@
265265
"STOP_MUSIC":"Arrêter la musique dans",
266266
"TURN_OFF":"Éteindre dans",
267267
"TIME_SELECT_ERROR":"Sélectionner l'heure de l'alarme",
268-
"PLAYLIST_SELECT_ERROR":"Sélectionner une Playlist"
268+
"PLAYLIST_SELECT_ERROR":"Sélectionner une Playlist",
269+
"DAY_SELECT_ERROR":"Sélectionner au moins un jour de la semaine",
270+
"MONDAY":"Lundi",
271+
"TUESDAY":"Mardi",
272+
"WEDNESDAY":"Mercredi",
273+
"THURSDAY":"Jeudi",
274+
"FRIDAY":"Vendredi",
275+
"SATURDAY":"Samedi",
276+
"SUNDAY":"Dimanche"
269277
},
270278
"SYSTEM":{
271279
"SYSTEM_SETTINGS":"Réglages du Système",
@@ -305,7 +313,7 @@
305313
"INSTALL_TO_DISK_SIZE":"TAILLE",
306314
"INSTALL_TO_DISK_MESSAGE_WARNING":" ATTENTION: Prenez soin de sélectionner le bon disque de destination, toutes les données vont être effacées.",
307315
"INSTALLING_TO_DISK_SUCCESS_TITLE":"Système installé avec succès",
308-
"INSTALLING_TO_DISK_SUCCESS_MESSAGE":"Pour pouvoir utiliser le nouveau système, enlevez les médias amovibles et redémarrez l'appareil.",
316+
"INSTALLING_TO_DISK_SUCCESS_MESSAGE":"Pour pouvoir utiliser le nouveau système, enlevez les médias amovibles et redémarrez l'appareil.",
309317
"CREDITS_OPEN_SOURCE_LICENSES":"Crédits et licences Open Source",
310318
"VIDEO_OUT_OPTIONS": "Options sortie vidéo",
311319
"HDMI_UI_DOC":"Affiche l'interface via la sortie vidéo HDMI. ATTENTION: Cela peut dégrader les performances du système",
@@ -325,7 +333,7 @@
325333
"SIMPLE_SETTINGS_SET":"Mode réglage simplifié",
326334
"SIMPLE_SETTINGS_SET_EXTENDED":"Accès seulement aux réglages de base",
327335
"KEEP_PRESSED_TO_TURN_OFF_IN":"Maintenir appuyé pour éteindre",
328-
"TURN_OFF_IN":"Eteindre"
336+
"TURN_OFF_IN":"Eteindre"
329337
},
330338
"WEBRADIO":{
331339
"MY_WEB_RADIOS":"Mes radios Internet",
@@ -374,5 +382,5 @@
374382
"UPDATE":"Mise à jour",
375383
"CHECKING_FOR_UPDATES":"Recherche de mise à jour",
376384
"CHECKING_FOR_UPDATES_WAIT":"Merci de patienter"
377-
}
385+
}
378386
}

app/plugins/miscellanea/alarm-clock/UIConfig.json

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,14 @@
1414
"data": [
1515
"enabled",
1616
"hour",
17-
"minute"
17+
"minute",
18+
"monday",
19+
"tuesday",
20+
"wednesday",
21+
"thursday",
22+
"friday",
23+
"saturday",
24+
"sunday"
1825
]
1926
},
2027
"content": [
@@ -391,9 +398,78 @@
391398
"field": "enabled",
392399
"value": true
393400
}
394-
401+
},
402+
{
403+
"id": "monday",
404+
"element": "switch",
405+
"label": "TRANSALTE.ALARM.MONDAY",
406+
"value": true,
407+
"visibleIf": {
408+
"field": "enabled",
409+
"value": true
410+
}
411+
},
412+
{
413+
"id": "tuesday",
414+
"element": "switch",
415+
"label": "TRANSALTE.ALARM.TUESDAY",
416+
"value": true,
417+
"visibleIf": {
418+
"field": "enabled",
419+
"value": true
420+
}
421+
},
422+
{
423+
"id": "wednesday",
424+
"element": "switch",
425+
"label": "TRANSALTE.ALARM.WEDNESDAY",
426+
"value": true,
427+
"visibleIf": {
428+
"field": "enabled",
429+
"value": true
430+
}
431+
},
432+
{
433+
"id": "thursday",
434+
"element": "switch",
435+
"label": "TRANSALTE.ALARM.THURSDAY",
436+
"value": true,
437+
"visibleIf": {
438+
"field": "enabled",
439+
"value": true
440+
}
441+
},
442+
{
443+
"id": "friday",
444+
"element": "switch",
445+
"label": "TRANSALTE.ALARM.FRIDAY",
446+
"value": true,
447+
"visibleIf": {
448+
"field": "enabled",
449+
"value": true
450+
}
451+
},
452+
{
453+
"id": "saturday",
454+
"element": "switch",
455+
"label": "TRANSALTE.ALARM.SATURDAY",
456+
"value": true,
457+
"visibleIf": {
458+
"field": "enabled",
459+
"value": true
460+
}
461+
},
462+
{
463+
"id": "sunday",
464+
"element": "switch",
465+
"label": "TRANSALTE.ALARM.SUNDAY",
466+
"value": true,
467+
"visibleIf": {
468+
"field": "enabled",
469+
"value": true
470+
}
395471
}
396472
]
397473
}
398474
]
399-
}
475+
}

app/plugins/miscellanea/alarm-clock/config.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22
"enabled":{"value":true,"type":"boolean"},
33
"hour":{"value":"8","type":"number"},
44
"minute":{"value":"0","type":"number"},
5+
"monday":{"value":true,"type":"boolean"},
6+
"tuesday":{"value":true,"type":"boolean"},
7+
"wednesday":{"value":true,"type":"boolean"},
8+
"thursday":{"value":true,"type":"boolean"},
9+
"friday":{"value":true,"type":"boolean"},
10+
"saturday":{"value":true,"type":"boolean"},
11+
"sunday":{"value":true,"type":"boolean"},
512
"sleep_enabled":{"type":"boolean","value":false},
613
"sleep_hour":{"value":"0","type":"number"},
714
"sleep_minute":{"value":"0","type":"number"},

app/plugins/miscellanea/alarm-clock/index.js

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,27 @@ AlarmClock.prototype.getUIConfig = function()
8080
//minute
8181
uiconf.sections[0].content[2].value.value=config.get('minute');
8282

83+
//monday
84+
uiconf.sections[0].content[3].value.value=config.get('monday');
85+
86+
//tuesday
87+
uiconf.sections[0].content[4].value.value=config.get('tuesday');
88+
89+
//wednesday
90+
uiconf.sections[0].content[5].value.value=config.get('wednesday');
91+
92+
//thursday
93+
uiconf.sections[0].content[6].value.value=config.get('thursday');
94+
95+
//friday
96+
uiconf.sections[0].content[7].value.value=config.get('friday');
97+
98+
//saturday
99+
uiconf.sections[0].content[8].value.value=config.get('saturday');
100+
101+
//sunday
102+
uiconf.sections[0].content[9].value.value=config.get('sunday');
103+
83104
return uiconf;
84105
};
85106

@@ -128,19 +149,39 @@ AlarmClock.prototype.applyConf = function(conf) {
128149

129150
var schedule = require('node-schedule');
130151
var rule = new schedule.RecurrenceRule();
152+
rule.dayOfWeek = [];
153+
if (item.monday) {
154+
rule.dayOfWeek.push(1);
155+
}
156+
if (item.tuesday) {
157+
rule.dayOfWeek.push(2);
158+
}
159+
if (item.wednesday) {
160+
rule.dayOfWeek.push(3);
161+
}
162+
if (item.thursday) {
163+
rule.dayOfWeek.push(4);
164+
}
165+
if (item.friday) {
166+
rule.dayOfWeek.push(5);
167+
}
168+
if (item.saturday) {
169+
rule.dayOfWeek.push(6);
170+
}
171+
if (item.sunday) {
172+
rule.dayOfWeek.push(7);
173+
}
131174
rule.minute = d.getMinutes();
132175
rule.hour = d.getHours();
133176

134177
if (item.enabled) {
135-
136-
var func = self.fireAlarm.bind(self);
137-
var j = schedule.scheduleJob(rule, function(){
138-
func(item);
139-
});
140-
141-
self.logger.info("Alarm: Scheduling " + j.name + " at " +rule.hour + ":" + rule.minute) ;
142-
self.jobs.push(j);
143-
}
178+
var func = self.fireAlarm.bind(self);
179+
var j = schedule.scheduleJob(rule, function(){
180+
func(item);
181+
});
182+
self.logger.info("Alarm: Scheduling " + j.name + " at " +rule.hour + ":" + rule.minute) ;
183+
self.jobs.push(j);
184+
}
144185
}
145186
}
146187

@@ -212,6 +253,9 @@ AlarmClock.prototype.saveAlarm=function(data) {
212253
} else if (!data[i].playlist) {
213254
var error = true;
214255
self.commandRouter.pushToastMessage('error', self.commandRouter.getI18nString('ALARM.ALARM_CLOCK_TITLE'), self.commandRouter.getI18nString('ALARM.PLAYLIST_SELECT_ERROR'));
256+
} else if (!data[i].monday && !data[i].tuesday && !data[i].wednesday && !data[i].thursday && !data[i].friday && !data[i].saturday && !data[i].sunday) {
257+
var error = true;
258+
self.commandRouter.pushToastMessage('error', self.commandRouter.getI18nString('ALARM.ALARM_CLOCK_TITLE'), self.commandRouter.getI18nString('ALARM.DAY_SELECT_ERROR'));
215259
}
216260
}
217261

0 commit comments

Comments
 (0)