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.

    MMM-MealViewer

    Scheduled Pinned Locked Moved Utilities
    10 Posts 5 Posters 855 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.
    • KristjanESPERANTOK Offline
      KristjanESPERANTO Module Developer @dadAndEl
      last edited by

      @dadAndEl The link to the repo doesn’t work 🤔

      1 Reply Last reply Reply Quote 0
      • mumblebajM Offline
        mumblebaj Module Developer @Guest
        last edited by

        @dadAndEl Check that it is not set to private as I could not see it as well now.

        Check out my modules at: https://github.com/mumblebaj?tab=repositories
        Check my blog-post: https://mumblebaj.xyz/
        Check my MM Container: https://hub.docker.com/repository/docker/mumblebaj/magicmirror/general

        1 Reply Last reply Reply Quote 0
        • D Offline
          dadAndEl
          last edited by dadAndEl

          Let’s try this again… new repo link should work.

          A MagicMirror module for displaying school breakfast and lunch menus from MealViewer. Supports multiple school menus and various configuration options. You can check to see if your school uses MealViewer here.

          Single instance:
          single-instance.png

          Multiple instance:
          multiple-instance.png

          Module:
          https://github.com/ElliAndDad/MMM-MealViewer

          1 Reply Last reply Reply Quote 2
          • E Offline
            ewingfox
            last edited by

            Hello @dadandel !

            I love this (and more importantly, my WIFE and kiddos love this module - GREAT WORK!

            My wife does meal planning, shopping and tasks me with meal prep for the upcoming week on the weekends, so she really wants to see the next week’s school lunches on Friday evening when she’s in the fridge and going through what we have, and what meals my kiddo wants to eat at school and which meals they want to pack a lunch for.

            Currently, the getDateRange function (which is super robust, excellent work) is strictly ‘look back’. I did quite a bit of testing (thank you for baking in all the testing and logging logic!!!) and my testing shows that you can maintain all of the robustness and add the ‘look ahead’ my wife is looking for by updating the function just a bit like:

            getDateRange: function (startDay, endDay, testMode = false, testDate = null) {
                let today;
            
                if (testMode && testDate) {
                    const [year, month, day] = testDate.split('-').map(Number);
                    today = new Date(year, month - 1, day);
                    console.log(`Using test date (local timezone): ${today.toLocaleString()}`);
                } else {
                    today = new Date();
                }
            
                const currentDay = today.getDay();
                console.log(`Current day of week: ${currentDay}`);
            
                // ------------------------------------------------------------
                // Calculate the date for the week's start (most recent startDay)
                // ------------------------------------------------------------
                const startDate = new Date(today);
                const daysToSubtract = ((currentDay - startDay + 7) % 7);
                startDate.setDate(today.getDate() - daysToSubtract);
            
                console.log(`Days to subtract: ${daysToSubtract}`);
                console.log(`Initial start date: ${startDate.toLocaleString()}`);
            
                // ------------------------------------------------------------
                // Calculate the end date (inclusive range)
                // ------------------------------------------------------------
                const endDate = new Date(startDate);
                const daysInRange = (endDay - startDay + 7) % 7 + 1;
                endDate.setDate(startDate.getDate() + daysInRange - 1);
            
                // ------------------------------------------------------------
                // LOOK-AHEAD LOGIC
                // If today is on or after the trigger day (Friday for Mon–Fri),
                // shift the entire range forward by one week
                // ------------------------------------------------------------
                const lookAheadTriggerDay = (startDay + 4) % 7;
            
                if (currentDay >= lookAheadTriggerDay) {
                    console.log("Look-ahead condition met — shifting range to next week");
                    startDate.setDate(startDate.getDate() + 7);
                    endDate.setDate(endDate.getDate() + 7);
                }
            
                console.log(`Final start date: ${startDate.toLocaleString()}`);
                console.log(`Final end date: ${endDate.toLocaleString()}`);
            
                // ------------------------------------------------------------
                // Format output
                // ------------------------------------------------------------
                const formatDate = (date) => {
                    const year = date.getFullYear();
                    const month = String(date.getMonth() + 1).padStart(2, '0');
                    const day = String(date.getDate()).padStart(2, '0');
                    return `${month}-${day}-${year}`;
                };
            
                return {
                    start: formatDate(startDate),
                    end: formatDate(endDate)
                };
            },
            

            90efbaf8-4cdc-4f3a-8df4-719742cba468-image.png

            S E 2 Replies Last reply Reply Quote 1
            • S Offline
              sdetweil @ewingfox
              last edited by

              @ewingfox in this open source world the way to approach this is to submit your update as a pull request to the original module

              Then the author doesn’t have to spend time inventing the changes, only reviewing your work

              So, on GitHub
              Fork the module, now you have a linked copy
              git clone your copy, same as you did the original (only one in a place at a time)
              Update your copy
              git add your changes
              git commit your changes to your local copy of the repo
              git push. To upload your copy to GitHub, updating your fork
              Use GitHub to submit/contribute your changes to the original module,

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              E 1 Reply Last reply Reply Quote 2
              • E Offline
                ewingfox @sdetweil
                last edited by

                @sdetweil as usual - you are very correct lol - this was sheer laziness on my part!

                <instinctively ducks to see if my DevOps lead is hurling a pot in my direction, remembers that she’s 7,600 miles away, ducks again anyway>

                1 Reply Last reply Reply Quote 0
                • E Offline
                  ewingfox @ewingfox
                  last edited by

                  @sdetweil - At work, all of my criteria and commentary lives in jira and my PR’s are pretty lean [read: RTSIDXCMT-11142, accept my d**n PR if you want that bug fix] .

                  I’d appreciate any feedback on manners/standards for submitting PR to open source projects so I can better align with norms!

                  https://github.com/ElliAndDad/MMM-MealViewer/pull/4

                  Thank you for being such an active mod/admin/mentor!

                  Take care,

                  E

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

                    @ewingfox one of the banes of open source is every author has their own style. So a PR here is different than a PR there.

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    1 Reply Last reply Reply Quote 0
                    • 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