MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Help choosing more than one item from an array

    Scheduled Pinned Locked Moved Troubleshooting
    18 Posts 4 Posters 7.5k Views 4 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • justjim1220J Offline
      justjim1220 Module Developer @strawberry 3.141
      last edited by

      @strawberry-3-141

      just to be sure you understand…

      He’s not looking for it to show all the lifeforms at the same time, but different ones in intervals set by the user.

      Like with Cats, Bats, Bears… Say at an hourly interval show each one individually.

      I’m looking at this as well, I brought up the idea with @Mykle1. I see what you are getting at, and I’ve been looking at the same thing, just not sure how to call them up individually at intervals…

      "Life's Too Short To Dance With Ugly People"
      Jim Hallock - 1995

      1 Reply Last reply Reply Quote 0
      • justjim1220J Offline
        justjim1220 Module Developer @strawberry 3.141
        last edited by

        @strawberry-3-141

        Oh, and I think it needs to be placed without spaces…

        [“Cats”,“Bats”,“Bears”]

        Not sure if that makes a difference with what you are pointing out, but I think it does.

        "Life's Too Short To Dance With Ugly People"
        Jim Hallock - 1995

        1 Reply Last reply Reply Quote 0
        • justjim1220J Offline
          justjim1220 Module Developer @strawberry 3.141
          last edited by

          @strawberry-3-141

          This Is what I’ve been working on so far…

          getLiforms: function () {
          		var url = "http://eol.org/api/pages/1.0.json?batch=false&id=";
          
          		var requestUrls = [];
          		var LifeformsArray = this.config.Lifeforms.split(",");
          
          		LifeformssArray.forEach(function(lifeform) {
          			var requestUrl = url + lifeform;
          			requestUrls.push(requestUrl);
          		}
          

          Am I even close to the right track???

          "Life's Too Short To Dance With Ugly People"
          Jim Hallock - 1995

          strawberry 3.141S 1 Reply Last reply Reply Quote 0
          • justjim1220J Offline
            justjim1220 Module Developer @strawberry 3.141
            last edited by

            @strawberry-3-141

            Yours looks better!
            :smiling_face_with_sunglasses:

            "Life's Too Short To Dance With Ugly People"
            Jim Hallock - 1995

            1 Reply Last reply Reply Quote 0
            • strawberry 3.141S Offline
              strawberry 3.141 Project Sponsor Module Developer @justjim1220
              last edited by

              @justjim1220 It looks like you are trying to do multiple request, as mykles description sounds like one request with a comma seperated list.

              Please create a github issue if you need help, so I can keep track

              justjim1220J Mykle1M 2 Replies Last reply Reply Quote 1
              • justjim1220J Offline
                justjim1220 Module Developer @strawberry 3.141
                last edited by

                @strawberry-3-141

                Yeah, I got that while trying to write what I had going. Your example looks more correct.

                So, now I’m looking at your example but not exactly sure where to insert it into the code to get it to work.

                in the config.js, I am looking at the lifeforms array as such:

                lifeForms: "Striped Bass,Praying Mantis,Tigers,Hummingbirds,Venus Flytrap,Fox,Bald Eagle",
                

                then I added this to the defaults in the MMM-EOL.js:

                lifeForms: ["", "", ""],
                

                then I added your example to the start function:

                        var lifeFormIds = this.config.lifeForms.split(',');
                        var lifeFormIds =[];
                        for (let lifeForm of lifeForms) {
                            if (this.config.lifeFormArray[lifeForm]) {
                                lifeFormIds.push(this.config.lifeFormArray[lifeForm]);
                            }
                        }
                
                        //  Set locale.
                        this.url = "http://eol.org/api/pages/1.0.json?batch=false&id=" + this.config.lifeFormIds.join(',') + 
                

                I know this is definitely NOT right. This is where I am getting confused…
                Having 2 separate < var lifeFormIds > declared doesn’t look right.
                And, placing the ‘join’ part after the URL doesn’t look right either…

                "Life's Too Short To Dance With Ugly People"
                Jim Hallock - 1995

                1 Reply Last reply Reply Quote 0
                • S Offline
                  sdetweil
                  last edited by sdetweil

                  ok, your source ‘lifeFormArray’ is a hash… good for looking up randomly

                  now to get the user specified list into something usable, split is the way as already posted

                  // if user specified something
                  if(this.config.lifeForms.length >0 )
                  {
                       // split will return an array with only one entry if no comma found
                       this.config.user_keys=this.config.lifeForms.split(',');
                  }
                  else
                       // add an entry to a special lifeFormArray entry for missing config info
                       this.config.user_keys.push("none");
                  

                  now, you want random, or walk the array of user_keys?

                  function getRandomInt(max) {
                    return Math.floor(Math.random() * Math.floor(max));
                  } 
                  
                  // get one of the user specified data keys, using random
                  var key=this.config.user_keys[this.getRandomInt(this.config.user_keys.length)];
                  
                  // append that id value to the url.
                  this.url = "http://eol.org/api/pages/1.0.json?batch=false&id=" +this.lifeFormArray.key;
                  

                  its unclear if u wanted all or just one…

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  justjim1220J 1 Reply Last reply Reply Quote 1
                  • justjim1220J Offline
                    justjim1220 Module Developer @sdetweil
                    last edited by

                    @sdetweil

                    Random would be great!

                    I’ll give it a try, Thanks!

                    "Life's Too Short To Dance With Ugly People"
                    Jim Hallock - 1995

                    S 1 Reply Last reply Reply Quote 0
                    • S Offline
                      sdetweil @justjim1220
                      last edited by

                      @justjim1220 make sure to add an entry to the lifeFormArray that matches the string you define for ‘none’ (no user entry supplied)

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      justjim1220J 2 Replies Last reply Reply Quote 1
                      • justjim1220J Offline
                        justjim1220 Module Developer @sdetweil
                        last edited by

                        @sdetweil

                        So, would the entry be like this: “Cats”, “Bats”, “Bears”,

                        or like This: “Cats,Bats,Bears”,

                        ?

                        "Life's Too Short To Dance With Ugly People"
                        Jim Hallock - 1995

                        S 1 Reply Last reply Reply Quote 0
                        • justjim1220J Offline
                          justjim1220 Module Developer @sdetweil
                          last edited by

                          @sdetweil

                          Well, at the moment it is throwing the following error:

                          0_1537569574704_Screenshot (63).png

                          I’ll look at it some more here in a little bit…

                          Thanks for your input!

                          "Life's Too Short To Dance With Ugly People"
                          Jim Hallock - 1995

                          S 1 Reply Last reply Reply Quote 0
                          • Mykle1M Offline
                            Mykle1 Project Sponsor Module Developer @strawberry 3.141
                            last edited by

                            @strawberry-3-141
                            @sdetweil

                            I am extremely grateful to both of you for your assistance and guidance. I thank you both. :thumbsup:

                            @justjim1220

                            Jim, as it seems you’ve taken over this topic, I will leave it to you.

                            Create a working config
                            How to add modules

                            justjim1220J 1 Reply Last reply Reply Quote 0
                            • justjim1220J Offline
                              justjim1220 Module Developer @Mykle1
                              last edited by

                              @mykle1

                              I don’t know about taking it over, LOL.
                              Just trying to help!

                              "Life's Too Short To Dance With Ugly People"
                              Jim Hallock - 1995

                              1 Reply Last reply Reply Quote 0
                              • Mykle1M Offline
                                Mykle1 Project Sponsor Module Developer @strawberry 3.141
                                last edited by

                                @strawberry-3-141 said in Help choosing more than one item from an array:

                                what you describe above is actually not an array, it’s an object (hash). Arrays are always defined with [] not {}.

                                Object. Array. What’s the difference? (That’s a joke. Laugh) :-D

                                Create a working config
                                How to add modules

                                1 Reply Last reply Reply Quote 0
                                • S Offline
                                  sdetweil @justjim1220
                                  last edited by

                                  @justjim1220 that error looks like from the constructed url failing

                                  Sam

                                  How to add modules

                                  learning how to use browser developers window for css changes

                                  1 Reply Last reply Reply Quote 0
                                  • S Offline
                                    sdetweil @justjim1220
                                    last edited by

                                    @justjim1220 the second. Don’t depend on users to do multiple entries

                                    Sam

                                    How to add modules

                                    learning how to use browser developers window for css changes

                                    1 Reply Last reply Reply Quote 0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    • 1 / 1
                                    • First post
                                      Last post
                                    Enjoying MagicMirror? Please consider a donation!
                                    MagicMirror created by Michael Teeuw.
                                    Forum managed by Sam, technical setup by Karsten.
                                    This forum is using NodeBB as its core | Contributors
                                    Contact | Privacy Policy