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-CalendarExt3

    Scheduled Pinned Locked Moved Utilities
    689 Posts 82 Posters 2.8m Views 86 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.
    • M Offline
      MMRIZE @BKeyport
      last edited by MMRIZE

      @BKeyport

      9017c76f-acef-485e-8f3c-6258307df0ec-image.png

      config (MMM-CalendarExt3)

      {
        module: "MMM-CalendarExt3",
        position: "bottom_bar",
        config: {
          maxEventLines: 1,
          ...
      

      config (MMM-ModuleMonkeyPatch)

      {
        module: "MMM-ModuleMonkeyPatch",
        config: {
          patches: [
            {
              module: "MMM-CalendarExt3",
              method: "getDom",
              patch: function (original, args) {
              let dom = original(args)
              let target = Array.from(dom.querySelectorAll('.event')) || []
                target.forEach((e) => {
                  const dt = new Date(+e.dataset.startDate)
                  const date = '.date_' + dt.getDate()
                  const month = '.month_' + (dt.getMonth() + 1)
                  const container = dom.querySelector(`.cell${date + month} .cellBody`)
                  if (container) {
                    e.classList.add('iconOnly')
                    container.appendChild(e)
                  }
                })
                return dom
              }
            }
          ]
        }
      },
      

      custom.css

      .CX3 .eventContainer {
        display: none;
      }
      
      .CX3 .cellBody {
        display: flex;
        flex-direction: row;
        justify-content: flex-start;
      }
      
      .CX3 .cellBody .event.iconOnly {
        display: inline-flex;
        flex-direction: row;
        height: var(--eventheight);
      }
      
      .CX3 .cellBody .event.iconOnly .symbol {
        justify-content: center;
      }
      
      .CX3 .event.iconOnly :not(.headline),
      .CX3 .event.iconOnly .headline :not(.symbol) {
        display: none;
      }
      
      .CX3 .cell {
        background-color: unset;
      }
      

      (This patching is not considering overflowing events.)

      1 Reply Last reply Reply Quote 0
      • R Offline
        roth_nj
        last edited by

        is there a way to set this up to have a rolling 4 or 5 weeks (depending on how its configured) instead of the traditional only one month view. that way you can continually see a few weeks in advance?

        please forgive me if this has already been asked/covered. I tried to go through this thread but with 38 pages and a lot of code bits, I didn’t see it.

        M B 2 Replies Last reply Reply Quote 0
        • M Offline
          MMRIZE @roth_nj
          last edited by

          @roth_nj
          You don’t have to read entire posts on this thread. Just read the README md first.
          And there is the feature description of what you want probably.

          1 Reply Last reply Reply Quote 0
          • R Offline
            roth_nj @hrmax23
            last edited by

            @hrmax23 said in MMM-CalendarExt3:

            @MMRIZE Is there a way to show a rolling 4/5 week in the month mode? Basically something like -1 week to +3 weeks rather than showing basically the current month until that month is over.

            Also, is there a trick to get the calendar to re-render completely on some interval? On my MM right now, it’s currently showing the current day in the 5th week (i.e. still showing April as the current month). If I restart MM, it will update to show May as current month, but doesn’t seem to do it automatically. I only have 1 scene so not using MMM-Scenes.

            @MMRIZE said in MMM-CalendarExt3:

            @roth_nj
            You don’t have to read entire posts on this thread. Just read the README md first.
            And there is the feature description of what you want probably.

            i did. again, im new to all of this. i am not a programmer at all in any sense. im an ME but did have to take a c++ course like 20 years ago. my brain just doesn’t see this stuff easily. i can read through the readme’s for various modules and get the basic functions but then i have been reading through all the trouble shooting threads about them to get a better understanding on how to actually do it.

            at this point im guessing something on the css level with transforming or preprocessing the data?

            1 Reply Last reply Reply Quote 0
            • BKeyportB Offline
              BKeyport Module Developer @MMRIZE
              last edited by BKeyport

              @MMRIZE the background highlighting issue is shown in my screenshot. If you look at October 11 in the shot, you’ll notice the highlight is smaller than the text.
              Same goes for the full day event shown on Nov 2, the highlight is blocking the “2” partially.

              That being said, I’m gonna work on expanding my module to do a big calendar instead. I’m not getting what I want even with monkeypatch, and it’s getting too confused.

              The "E" in "Javascript" stands for "Easy"

              M 1 Reply Last reply Reply Quote 0
              • B Offline
                bicolorbore586 @roth_nj
                last edited by bicolorbore586

                @roth_nj in the config of the module set the ‘mode’ to week. The add the config option ‘weeksInView’ and set that to 4 or 5
                Here’s an extract from mine:

                {
                			module: "MMM-CalendarExt3",
                			position: "lower_third",
                			config: {
                				mode: "week",
                				weekIndex: 0,
                				weeksInView: 5,
                		
                

                As MMRIZE says, it’s in the readme file (under config details). The re-render, as you say is also listed in there, as one of the intervals.

                R 1 Reply Last reply Reply Quote 0
                • R Offline
                  roth_nj @bicolorbore586
                  last edited by

                  @bicolorbore586 said in MMM-CalendarExt3:

                  @roth_nj in the config of the module set the ‘mode’ to week. The add the config option ‘weeksInView’ and set that to 4 or 5
                  Here’s an extract from mine:

                  {
                  			module: "MMM-CalendarExt3",
                  			position: "lower_third",
                  			config: {
                  				mode: "week",
                  				weekIndex: 0,
                  				weeksInView: 5,
                  		
                  

                  As MMRIZE says, it’s in the readme file (under config details). The re-render, as you say is also listed in there, as one of the intervals.

                  thanks… trust me, i read all that stuff a number of times. it just didn’t click that thats what i meant. im going to go bang my head against the wall now ha ha

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    aircliff
                    last edited by aircliff

                    Have another issue I just recently noticed. I have two different modules running, one in day view showing one week worth of calendar. The other is in month view. The day view is set with dayIndex of 0 so the current day is the first day. Day 7 on the view shows no events although they are shown for that day on the month view calendar. I could not find any similar posts with issues in this thread so hoping someone has seen and can provide some help. Here are screenshots for reference. It is always the last day in the day view, so for right now Tuesday the 24th is where the issue lies. I’ve changed weeksInView to 2 and it was always just the last day of the series.

                    Week View:
                    ad6951bd-e51a-4da0-b6f1-f86901dd2746-image.png

                    Month View:
                    3dc9d351-be9b-4776-8774-0a2ecaf1223b-image.png

                    M 2 Replies Last reply Reply Quote 0
                    • M Offline
                      MMRIZE @aircliff
                      last edited by

                      @aircliff
                      Maybe the bug. I’ll inspect it. :)

                      1 Reply Last reply Reply Quote 0
                      • M Offline
                        MMRIZE @aircliff
                        last edited by

                        @aircliff
                        I found where the bug lies on.

                        https://github.com/MMRIZE/MMM-CalendarExt3/blob/28c3aeabfbc5b0ebc28107831dcbacd125578d0a/MMM-CalendarExt3.js#L436

                        I’ll fix it tomorrow. :)

                        A 1 Reply Last reply Reply Quote 0
                        • A Offline
                          aircliff @MMRIZE
                          last edited by

                          @MMRIZE

                          Thank you. I actually played with it quite a bit last week and specifically that line and couldn’t get it to work for me. I would end up adding a second week or multiple extra days. Interested to see what you find as the fix.

                          M 1 Reply Last reply Reply Quote 0
                          • M Offline
                            MMRIZE @aircliff
                            last edited by

                            @aircliff
                            fixed. (1.6.1)
                            https://github.com/MMRIZE/MMM-CalendarExt3#history

                            A 1 Reply Last reply Reply Quote 0
                            • M Offline
                              MMRIZE @BKeyport
                              last edited by

                              @BKeyport said in MMM-CalendarExt3:

                              @MMRIZE the background highlighting issue is shown in my screenshot. If you look at October 11 in the shot, you’ll notice the highlight is smaller than the text.

                              give enough height to cell header

                              Same goes for the full day event shown on Nov 2, the highlight is blocking the “2” partially.

                              Your height of cellHeader is smaller than the fontsize used.
                              By default it is defined as --cellheaderheight

                              That being said, I’m gonna work on expanding my module to do a big calendar instead. I’m not getting what I want even with monkeypatch, and it’s getting too confused.

                              As I showed you, it is possible, but it doesn’t mean easy.
                              Anyway, this module is not designed to show events like that, however, I introduced to you how to override by monkey-patching, but if you are not satisfied, the only way would be to build a new module for that purpose.

                              1 Reply Last reply Reply Quote 0
                              • A Offline
                                aircliff @MMRIZE
                                last edited by

                                @MMRIZE

                                Worked like a champ. Thanks for the help.

                                1 Reply Last reply Reply Quote 0
                                • R Offline
                                  roth_nj
                                  last edited by

                                  Formatting question… not sure if it’s best for to ask here or some place else….

                                  I currently have the icons turned off, and 6 color coded calendars being displayed. Right now there is the small colored dot next to each and I have it color coded and the legend turned on and that’s all good….

                                  How would I go about formatting each entry so it has the “apple” look? Like a light shaded transparent box around each entry that pulled the tint from the calendar color. Also I would then off the colored dots

                                  M 1 Reply Last reply Reply Quote 0
                                  • M Offline
                                    MMRIZE @roth_nj
                                    last edited by

                                    @roth_nj
                                    I think it could be achieved by CSS modification. However, without details, I cannot guess what you exactly want. Do you have a sketch for it?
                                    (By default, this module is designed to imitate the Apple calendar app or Fantastical app. I’m sorry if you think it doesn’t look alike. )

                                    R 1 Reply Last reply Reply Quote 0
                                    • R Offline
                                      roth_nj @MMRIZE
                                      last edited by

                                      @MMRIZE said in MMM-CalendarExt3:

                                      @roth_nj
                                      I think it could be achieved by CSS modification. However, without details, I cannot guess what you exactly want. Do you have a sketch for it?
                                      (By default, this module is designed to imitate the Apple calendar app or Fantastical app. I’m sorry if you think it doesn’t look alike. )

                                      sorry if theres any misunderstanding. i think the module is great and works awesome. i have my pi hooked up to a 40" tv that i am going to frame and hang. so with the detail and how close just trying to tweak the visuals now that i have everything functioning well. one of the things i’ve noticed with my set up is the contrast between all the white text and black background. from what i’ve researched it is a drawback to using a TV instead of a computer monitor or smaller device. adjusting the contrast/brightness on the tv itself made the pictures look like crap. i think this will help a by separating the white text from the black background.

                                      what i meant is to have the type of transparent tinted box around (or behind) the calendar entry texts in the style of apples current design looks. heres a quick think i made in powerpoint.

                                      6c4d3d72-4850-481f-9ece-f995328a0620-image.png

                                      thank you again for all you help

                                      M 1 Reply Last reply Reply Quote 0
                                      • M Offline
                                        MMRIZE @roth_nj
                                        last edited by

                                        @roth_nj
                                        By default, without any modification; This module has 2 style metaphor for event. One is for fullday/multidays event and one is for normal event.
                                        4409b979-8fc2-493c-8239-e43490fcec40-image.png
                                        Fullday/multidays event looks a boxed, background-filled to be distinguished with a normal event.

                                        Anyway, if you want that a normal event has same looks with fullday events - boxed and filled.
                                        835e6541-3090-4784-9922-315692ef1ab8-image.png

                                        Add these lines to your custom.css

                                        .CX3 .event.singleday .headline:not(.useSymbol)::before,
                                        .CX3 .event.singleday .headline.useSymbol .symbol.noSymbol::before {
                                          display: none;
                                        }
                                        
                                        .CX3 .event.singleday {
                                          background-color: var(--calendarColor);
                                          mix-blend-mode: difference;
                                          border-radius: 4px;
                                          color: var(--oppositeColor);
                                        }
                                        
                                        .CX3 .event:not(.fullday) .headline .time {
                                          color: var(--oppositeColor);
                                        }
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • M Offline
                                          MMRIZE
                                          last edited by MMRIZE

                                          [UPDATE] 1.7.0

                                          • skip of event Object property (Example)
                                          • skipPassedEventToday of config
                                          • eventTime color in multiday event
                                          • more, morePopover feature.
                                          • Global object check. (For compatible with not browser environment)
                                          • Support iconify
                                          • auto-detect firstDayOfWeek and minimalDaysOfNewYear
                                          • weekends of config

                                          Usually I just describe outlines of update here, but in this update, I need to explain somethings with images, so I did it.

                                          I opened WIKI for some details.

                                          Using Iconify

                                          Even though fontawesome is the default icon framework of MM, there are many needs of iconify. And I prefer it to font-awesome. Now you can use iconify icons by config value useIconify: true

                                          // In your calendar module config
                                          defaultSymbolClassName: '', // <-- Important to identify iconify properly.
                                          calendars: [
                                            {
                                              color: "red",
                                              symbol: "flag:us-4x3",
                                              url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics?foo"
                                            },
                                            {
                                              color: "red",
                                              symbol: "fa fa-fw fa-flag", // <-- Important when you want to use font-awesome also together.
                                              url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics?bar"
                                            },
                                          ],
                                          

                                          image

                                          WARNING
                                          To use iconify, you should set defaultSymbolClassName: '', in your default calendar module. Usually, it is enough when you hide the original default calendar module to use with CX3. But if you want to use font-awesome icons together, you should add font-awesome classnames (e.g fa, fas, …) by yourself.

                                          displaying startTime and endTime in multi-day event.

                                          a Fullday event doesn’t need startTime and endTime. And there is not enough place to show endTime for a single-day event. But for multi-day events, There would be enough space to display the endTime of the last day of the period. And it would be convenient. The position where the endTime would be displayed will be near the event’s last day.

                                          image

                                          If you don’t want to show it, add this to your css/custom.css

                                          .CX3 .event.multiday:not(.continueToNextWeek) .headline .endTime {
                                            display: none;
                                          }
                                          

                                          more for overflowed events.

                                          By the limitation of maxEventLines (and due to the resolution of the MM screen), overflowed events on the day had to be ignored. It was inconvenient.

                                          Now, CX3 can show how many events are ignored in the day. You can pop over the whole events list of that day by clicking/touching the header of the cell or more marks(White rounded number). The popover contents could be scrollable by touch/drag (if possible)

                                          image image

                                          NOTICE Firefox, Opera Mobile, Samsung Browser cannot handle a new de facto starndard popover feature yet.

                                          skipPassedEventToday

                                          Even though it would be helpful to use the new more feature, Still overflowed events would be inconvenient. Generally, upcoming events would be more important than past events especially for today. So you can skip the past events of today by this option. The skipped events will be shown again when today passes.

                                          image

                                          skipPassedEventToday: false (default)

                                          image

                                          skipPassedEventToday: true

                                          Auto-detect calendar info by locale

                                          Before 1.7.0, the user must manually set firstDayOfWeek and minimalDaysOfNewYear in the config to calculate the start day of the week, week number, weekend info, etc.

                                          Now, this module will calculate that info automatically with locale without your manual config for firstDayOfWeek and minimalDaysOfNewYear (Leave them as blank or null)

                                          For example;

                                          • When you set the locale as en-US (in the module config or global config), the week starts from Sunday.
                                          • When you set the locale as en-GB, the week starts from Monday.
                                          • When you set the locale as fa-IR, the week starts from Saturday, and the weekend day will be only Friday.

                                          Of course, you can set them up manually by force for the exceptions.

                                          • Not supported natively in legacy browsers.
                                          • To show custom weekend days for your job shift instead of public weekends. (e.g. weekends: [1, 3, 5] for Mon, Wed, Fri resting)
                                          • to adopt a locale but with a different language. (e.g. The Americans living in Germany, so the calendar system itself should be followed by German rule but displayed in English.)
                                          locale: 'en-US', // Displaying things as US English, e.g. MM. DD. YYYY instead of European DD. MM. YYYY
                                          firstDayOfWeek: 1, // German ISO rule. The week starts on Monday, not Sunday, as `en-US`
                                          minimalDaysOfNewYear: 4, 
                                          

                                          weekends

                                          A new config value, weekends: [], is introduced. By default, you don’t have to set this by yourself because it is derived from the auto-detection of calendar info from the locale. This field will be fulfilled automatically unless you set it manually in config.
                                          Every day cell has weekend and weekend_1 or weekend_2 as its classname.

                                          For example, weekends: [6, 0] means Saturday and Sunday will be considered weekends. Saturday will have weekend weekend_1 and Sunday will have weekend weekend_2.

                                          Style cells with these class names instead of the fixed weekday_N. You don’t have to know which weekday is a weekend in a specific locale.

                                          And more…

                                          C 1 Reply Last reply Reply Quote 0
                                          • C Offline
                                            ChickenBeard @MMRIZE
                                            last edited by

                                            Is there a step missing when updating? I follow the install or update instructions in GitHub but it never seems to actually update.

                                            M 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
                                            • 2
                                            • 18
                                            • 19
                                            • 20
                                            • 21
                                            • 22
                                            • 34
                                            • 35
                                            • 20 / 35
                                            • 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