Read the statement by Michael Teeuw here.
Config option with array of multiple values?
-
@sdetweil said in Config option with array of multiple values?:
maybe what you wanted was
if ( that.config.validSenders.includes(mailObj.sender[0].address) && (daysAgo >= 0 && daysAgo <= that.config.daysToDisplay) ) {
this is two outer compares (with one inner)
I just tried this and it works. Not sure why the extra set of parentheses are needed but I’m not going to argue. 8^)
Thanks!
-
@UncleRoger array.filter() returns an array with the items that the matching function returned true
so there is only one. no need for the index. it returned the entire object, item in the listsender is the name of the parameter passed to the matching function, the element of the array
-
@UncleRoger >I really kinda wish I had a spare RPi laying
MagicMirror will run on windows. you don’t need a pi
-
@sdetweil
I got it working with the .filter function:let selSender = that.config.validSenders.filter(mySender => { if (mySender.addr.toLowerCase() == mailObj.sender[0].address.toLowerCase()) return true else return false });
but now I’m having a problem trying to use the returned array. In this code the adding the color element to the subject works fine (that’s there for testing), as does the setting the style.color, but if I uncomment the if statement, it crashes:
subject = subject + selSender[0].color; // if (selSender[0].color != undefined) { subjectWrapper.style.color = selSender[0].color; // } else {
Is there a reason it doesn’t like that in the IF statement? Note: I also tried it as just “if (selSender[0].color) {” and assigning the value of selSender[0].color to another variable and using that other variable in the IF statement. In at least one test case there is a value in color.
-
@UncleRoger said in Config option with array of multiple values?:
subject = subject + selSender[0].color;
// if (selSender[0].color != undefined) {
subjectWrapper.style.color = selSender[0].color;
// } else {Is there a reason it doesn’t like that in the IF statement? Note: I also tried it as just “if (selSender[0].color) {” and assigning the value of selSender[0].color to another variable and using that other variable in the IF statement. In at least one test case there is a value in color.
Okay, so it looks like Javascript wants “!==”, not “!=”. Ugh.
Anyway, I got it working using a “switch (true)” block.
Thanks for all the help!
-
@UncleRoger yes the compares
!= !== !===
are different
one compare s the data type too
2 is a number
“2” is a string -
Hello @UncleRoger - are you planning to publish your module? And can I may ask you what this module will do?
-
@MZ-BER said in Config option with array of multiple values?:
Hello @UncleRoger - are you planning to publish your module? And can I may ask you what this module will do?
Yes, I am planning to publish it, once I’ve tested it reasonably well. Mostly, it seems to work thus far. I’m doing more testing and working on documentation.
The module checks an e-mail address and then shows the subject of any e-mails on the MM. Basically, I wanted a way for my wife and I to post messages for the whole family to see. This is an idea I’ve had for a long time (going back to the days of pagers) and is kinda obsolete – we use text messages and instagram messages a lot these days – but I still wanted to make this happen.
Probably next week I’ll be posting a message “how do I put a module in github for everyone to use?” as I’m totally new to all of this. 8^)
-
@sdetweil said in Config option with array of multiple values?:
yes the compares
!=
!==
!===are different
Heh. Back in my day, we got one equality operator and one inequality operator and we were dang thankful for that. Now git off my lawn! 8^)
Seriously, though, thanks for all your help!
-
@UncleRoger I agree. I came in before these fancy new languages. before web.