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 854 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.
    • D Offline
      dadAndEl
      last edited by dadAndEl

      This post is deleted!
      KristjanESPERANTOK 2 Replies Last reply Reply Quote 2
      • KristjanESPERANTOK Offline
        KristjanESPERANTO Module Developer @dadAndEl
        last edited by

        @dadAndEl Nice! Don’t forget to add it to the module list: https://github.com/MagicMirrorOrg/MagicMirror/wiki/3rd-party-modules 🙂

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