Read the statement by Michael Teeuw here.
Is there a way to show specific compliments on specific dates?
-
yeah @romain. sounds for me as if this solution is very easy at all. you dont blow up the code with two more else if-statements.
But with a separate function you could pimp up the module.
Think about annual festivals like:- eastern --> Happy Eastern
- christmas --> Merry Christmas
- birthdays --> Happy Birthday
etc.
Perhaps you can overcome the laziness :grin:
-
@pauabaer Na, perhaps you can make it youself ;)
It’s not that hard, just read about array and function in javascript.
The idea is :
-You creat a function.
-You creat a variable in the config part. the variable should be an array. The easiest thing would be to make it an array of dictionnaries. So you can put a date and a message in each ones.
-Inside the function you stock the value of moment().format(‘MMM D’) in a variable
-Then you make a for that iterate on each element of the array an compare the value of moment().format(‘MMM D’) that you just got to the date part of each dictionary.
-If there is a match, you return the associate message. if not, you just return an empty string.
-In the getDom function you call that function instead of the randomComplimentAnd you should be fine.
And hey, if you succeed you’ll could be proud to say you did a module yourself (sort of) ! -
@romain sounds logic. but i dont have any knowledge about javascript. so i have to start from scratch. i dont know…i think for now your workaround sounds best :D
-
@pauabaer as you dont have coding experience I guess you have neither experience with git. By modifying the files you will not be able to easily update the magicmirror.
-
@strawberry-3-141 you are right. i have read about this and i am aware of that fact. means a default function would be better. so i hope @romain can overcome the laziness :sunglasses:
ps @romain i hope you know how i meant this. you do what you want to do. because i dont have any coding experience i can only speak out some wishes/ features to make this project (for more people) a bit more “magically”.
-
@pauabaer sure, however, I have other projects to work on so I rather focus on them. I don’t have that much knowledge in javascipt either. (I do have some knowledge in other language though). When I do stuff it’s a lot a trial and error until that work (even for the tiny bit of code I made in this post required some research from me. Not a lot of it… but some. I never used the moments() function before)
This is your opportunity to gain knowledge. -
@romain I live in Germany, at the time I posted it was already the 27th here :) It still does not work, even though now it is the 27th pretty much everywhere in the world. Do you have any idea what might be the reason when you look at the code I posted?
-
@CyanKali I live in french so it should be pretty much the same date. Try debugging.
add the following line just before the if
console.log('The date is : "' + moment().format('MMM D , h:mm a')+'"')
Then run the mirror in dev mode . (go into the MagicMirror folder and runDISPLAY=:0 npm start dev
) choose the tab “console”. And wait to see the message “the date is blablabla” apear and copy past the message here so we know what your magic mirror think the date is. Maybe it think your on the united state or something
If that the case I don’t know how to tell moments to check the date from another country. you might want to change the function then.Search “how to get the date from a specific country in jacascript” on google and you might find the right function to do it.
The only thing you have to know is that the " == " mean “equal”. The if mean that if the left part of the operation is equal to the right part, then you do the line bellow.
So you need to replace the moment thing by another function.Maybe someone in this forum now how to tell moment the timezone it have to use
-
@romain I figured it out! The console showed me it was April 29 today (which is the right date), but it was written as “Apr. 29”, so with a dot behind the month. I tried writing it like this in the code and now it works!
So it has to be:if (moment().format('MMM D') == 'Apr. 29')
and then it works :)
And now I know how to run my mirror in dev mode, which will be useful in the future ;) Thank you! -
@CyanKali Great =D . I guess that for some reason your moment.js doesn’t print the same thing as mine x) (which is kinda weird but fine)