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.
    • C Offline
      czabel
      last edited by

      MMRIZE, you’re a champion for creating this module. I would love some help, if you can spare some time.

      The first issue is that I have tried adding an eventTransformer to add a symbol to specific events, but it doesn’t do anything. The code comes from your post in another topic, my slightly modified version is here:

      				eventTransformer: (ev) => {
      					if (ev.title.search('Volleyball') > -1) 
      						ev.symbol = ['fa-solid fa-volleyball']
      					return ev
      				},
      

      My current guess is that I’m not specifying a correct symbol name, but that name is directly from FontAwesome, so I’m not sure.

      My other issue is that the first event on each day overlaps the date number - how can I fix this?
      f695ba9d-a634-41b3-8a50-d461ab75be31-image.png
      This may be a browser issue? I’m using Chrome on Win11, I don’t have a real display for my Pi at the moment so I’m running in Server mode to set things up.

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

        @czabel
        I need your config and custom.css to guess what happened.

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

          @czabel

          {
          	module: "MMM-CalendarExt3",
          	position: "bottom_bar",
          	config: {
          		eventTransformer: (ev) => {
          			if (ev.title.includes("Volleyball")) {
          				ev.symbol = ["fas fa-fw fa-volleyball"]
          			}
          			return ev
          		}
          	}
          },
          

          c5ef0ade-cc49-418e-888c-92b43f8a6ad6-image.png

          Due to most weird format of the default calendar symbol descriptor, you should write something like ["fas fa-volleyball"]

          About the height of the event cell, I think you have modified some CSS or eventHeight property in the config.

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

            @MMRIZE Thank you for the eventTransformer fix - is there some ruleset I can find for other icons, or just prefix everything with “fas”?

            As for the other, you are right that I have edited the eventHeight, in order to grow the size of the whole calendar. Is there a better way to do this? Perhaps I should be using only the maxEventLines to grow the size of things? Or I guess I could use the CSS to force a minimum height for each .cell. What would you say is the preferred or “correct” method?

            I now have two slightly different issues.
            First, using the custom CSS to fully color-in my partial day events seems to override the icon. I tried commenting out the top selector, but these events still have no icon. Is there a correct way to do this - to have all my events colored in but also have icons?

            Second, I have added a second calendar to see how that all works, but these new events are the same color, and the legend does not differentiate them. I am wondering if it is because my Google account owns both of these calendars, or if you have any other ideas as to why this won’t work? They are separate and distinct .ics URLs.

            Here’s my CX3 config code, with .ics URLs omitted:

            language: "en",
            	locale: "en-US",
            	logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
            	timeFormat: 24,
            	units: "imperial",
            
            	modules: [
            		{
            			module: "MMM-Carousel",
            			position: "bottom_bar",
            			config: {
            				mode: "slides",
            				transitionInterval: 0,
            				slideTransitionSpeed: 100,
            				homeSlide: 0,
            				showPageIndicators: true,
            				showPageControls: true,
            				ignoreModules: ["clock", "MMM-AccuWeatherForecastDeluxe"],
            				slides: {
            					main: ["MMM-CalendarExt3"],
            					"Slide 2": ["MMM-CalendarExt3Journal"],
            					"Slide 3": ["calendar"],
            				}
            			}
            		},
            		{
            			module: "clock",
            			position: "top_left",
            			config: {
            				displayType: "both",
            				secondsColor: "#FF0000"
            			}
            		},
            		{
            			module: "calendar",
            			position: "top_left",
            			config: {
            				broadcastPastEvents: true,
            				calendars: [
            					{
            						fetchInterval: 7 * 24 * 60 * 60 * 1000,
            						symbol: "calendar-check",
            						url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics"
            					},
            					{
            						name: "Dad",
            						useSymbol: false,
            						url: "SECRET.ics",
            						color: "orange"
            					},
            					{
            						name: "Son",
            						useSymbol: false,
            						url: "SECRET.ics",
            						color: "blue"
            					}
            				]
            			}
            		},
            		{
            			module: "MMM-CalendarExt3Journal",
            			position: "upper_third",
            			config: {
            				height: '30vh',
            				width: '80%',
            				staticWeek: true,
            				staticTime: true,
            				hourLength: 12,
            				beginHour: 8,
            				calendarSet: ['Dad', 'Son'],
            			}
            		},
            		{
            			module: "MMM-CalendarExt3",
            			position: "upper_third",
            			title: "",
            			config: {
            				height: '40vh',
            				mode: "week",
            				weekIndex: 0,
            				weeksInView: 5,
            				instanceId: "basicCalendar",
            				maxEventLines: 9,
            				fontSize: '20px',
            				firstDayOfWeek: 0,
            				calendarSet: ['Dad', 'Son'],
            				displayLegend: true,
            				useWeather: false,
            				displayLegend: true,
            				customHeader: true,
            				eventTransformer: (ev) => {
            					if (ev.title.includes("Volleyball")) {
            						ev.symbol = ["fas fa-fw fa-volleyball"]
            					}
            					return ev
            				},
            			}
            		},
            		{
            			module: "MMM-AccuWeatherForecastDeluxe",
            			position: "top_right",
            			classes: "default everyone",
            			config: {
            				apikey: "SECRET",
            				locationKey: "SECRET",
            				updateInterval: 60,
            				relativeColors: true,
            				hourlyForecastLayout: "table",
            				hourlyForecastInterval: 1,
            				maxHourliesToShow: 9,
            				showDailyForecast: false,
            				iconset: "5c",
            			}
            		},
            		{
            			module: "MMM-AccuWeatherForecastDeluxe",
            			position: "top_right",
            			classes: "default everyone",
            			config: {
            				listenerOnly: true,
            				locationKey: "SECRET",
            				relativeColors: true,
            				showCurrentConditions: false,
            				showExtraCurrentConditions: false,
            				showSummary: false,
            				showHourlyForecast: false,
            				showDailyForecast: true,
            				dailyForecastLayout: "table",
            				ignoreToday: true,
            				maxDailiesToShow: 5,
            				iconset: "5c",
            				label_high: "",
            				label_low: "",
            			}
            		},
            
            	]
            

            And this is the entirety of my 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);
            }
            
            .CX3 .cellContainer .cell:nth-child(1) .cw {
            	display: none;
            }
            

            Thank you for your time!

            I appreciate the help!

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

              @czabel said in MMM-CalendarExt3:

              Thank you for the eventTransformer fix - is there some ruleset I can find for other icons, or just prefix everything with “fas”?

              “fa-solid” will work too, instead of “fas”. I think you may did some typo mistake somewhere.


              As for the other, you are right that I have edited the eventHeight, in order to grow the size of the whole calendar. Is there a better way to do this? Perhaps I should be using only the maxEventLines to grow the size of things?

              Generally, eventHeight and maxEventLines could control the height of the view, Anyway you may need additional CSS modification to beautify the view.

              Original
              0be3a4be-cc30-4aea-8a11-e344ba29222a-image.png
              APPLIED

              {
              	module: "MMM-CalendarExt3",
              	position: "bottom_bar",
              	config: {
              		eventHeight: "30px",
              		fontSize: "22px",
              	}
              },
              

              6ec4901d-bab1-4e8f-8cd0-273c4ad2adcd-image.png

              I guess you may also incline fontSize. That property will be applied to all the elements . So all text would be bigger. but not the padding or margin or other attributes of the element. That’s why your view looked so weird. So you have to adjust other things with CSS to harmonize your view.

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

                @MMRIZE

                Great, thanks. I’ve changed it to use only the maxEventLines and it all looks fine.

                Do you have any insight as to how to change my CSS to get the icons to show up for every event? As I mentioned, my current setup makes my non-fullday events colored in, but this deletes the icon. The icon is still there for the real fullday events. I’d like to keep the icon, if at all possible. Thank you!

                M 2 Replies Last reply Reply Quote 0
                • A Offline
                  adamaid
                  last edited by

                  Hey everyone!

                  I’m using a Samsung Frame 32" 2022 to display my MagicMirror page.

                  I’m trying to avoid using a Raspberry Pi etc. so just serving MM as a web page from a local server, then using the “Internet” app on the TV UI to view the page.

                  This approach works fine for other modules (including MMM-CalendarExt2 and the default Calendar) but not for MMM-CalendarExt3. Instead of showing a calendar it just shows the header (i.e. “October”) and nothing else. I’ve verified that the calendar renders OK on other devices (e.g. iPhone).

                  Any ideas on what could be causing this? Unfortunately it isn’t easy to debug as there is no console available on the Internet TV app, and MMM-LogExt just prevents the page from loading at all on the TV.

                  Thanks!
                  Adam

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

                    @adamaid MMM-CalendarExt3 uses the very latest javascript idioms,
                    which most TV browsers have not been upgraded to support…

                    here is a table of what browser version supports what
                    https://caniuse.com/?search=ECMAScript

                    my Samsung 82 in used to run MM, but since a couple years ago it is downlevel

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

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

                      @czabel
                      I’m in holidays this week. I’ll show you next week.

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

                        @MMRIZE No rush at all, enjoy your holiday! I’ll keep fiddling, but I’ve never been good with CSS :D

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

                          Hello.

                          Have been using MMM-CalendarExt2 for some years now and changed to MMM-CalendarExt3 today.

                          The thing was that my birthday events that i have in my my calender, i would like to say a the age of the person. The Calendar module you can use displayRepeatingCountTitle and repeatingCountTitle to show the years from when you put the event in the calendar. For example i tried put my birthday on the year i was born and put repeat every year on same day and it did show number.

                          Was wondering if this funktion work in MMM-CalendarExt3?

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

                            @Rakutsi no… the stuff shown on the screen isn’t broadcast to the other modules…

                            but you could add an ext3 eventTransformer to add it back on (if you know bd, and some pattern in the event subject)

                            Sam

                            How to add modules

                            learning how to use browser developers window for css changes

                            R 1 Reply Last reply Reply Quote 0
                            • R Offline
                              Rakutsi @sdetweil
                              last edited by

                              @sdetweil thanks then i know.

                              well i dont know how to use the eventFilter for that, is there any example then i could try?
                              I am not the best at those kind of things. Mostly copy paste and trial and error.

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

                                @Rakutsi see the doc and the ext3 wiki (at the module github page)

                                Sam

                                How to add modules

                                learning how to use browser developers window for css changes

                                R 1 Reply Last reply Reply Quote 0
                                • R Offline
                                  Rakutsi @sdetweil
                                  last edited by Rakutsi

                                  @sdetweil

                                  this was the solution i came up with.

                                  eventTransformer: (event) => {
                                      const currentYear = new Date().getFullYear();
                                      const age = currentYear - event.firstYear;
                                  
                                      event.title = `${event.title} (${age} year)`;
                                  
                                      return event;
                                  },
                                  

                                  Chatgpt is my friend.

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

                                    @Rakutsi awesome!

                                    Sam

                                    How to add modules

                                    learning how to use browser developers window for css changes

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

                                      @czabel said in MMM-CalendarExt3:

                                      Do you have any insight as to how to change my CSS to get the icons to show up for every event? As I mentioned, my current setup makes my non-fullday events colored in, but this deletes the icon. The icon is still there for the real fullday events. I’d like to keep the icon, if at all possible. Thank you!

                                      Sorry for the late reply. I was on vacation.

                                      Append these codes to your custom.css

                                      /* custom.css */
                                      .CX3 .event.singleday .headline.useSymbol .symbol {
                                        color: var(--oppositeColor);
                                      }
                                      

                                      be250f93-007a-404b-959e-6789995f55aa-image.png

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

                                        @MMRIZE said in MMM-CalendarExt3:
                                        … Sorry for the late reply…

                                        No problem at all, I appreciate the time you spend helping on here.

                                        With that CSS adjustment, the events in the calendar look perfect now, thank you.

                                        But I have a new problem that seems to have just shown up: the volleyball icon that I’m using in the eventTransformer is now being applied to the Legend somehow:
                                        ext3_legendIcon.png
                                        You can see the events are great (volleyball has the icon, other events are the default)

                                        This is especially odd because in the base calendar config, I specify useSymbol: false for the “Dad” calendar, but this element is somehow getting the .useSymbol class.

                                        Oh, I just found in a search another user that has this issue, link here

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

                                          @czabel
                                          Well, that is not the bug, however you might be uncomfortable.
                                          It is designed to get the symbol from the first(internally structured) event of the calendar group.
                                          Because the default calendar module will broadcast only the events themselves, not the meta-information from the calendar to which the event belonged, So there is no easy way to distinguish the default symbol of the specific calendar.

                                          To be honest, getting the default symbol from config of ONLY the default calendar module might be easy, but this module is designed to take events from any other possible modules, so I cannot assume all the user will get the events from the default calendar module only.

                                          Not so easy. Has somebody any idea?

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

                                            @MMRIZE

                                            I probably don’t understand enough about how this system works to help much, but isn’t every calendar entry a separate event, which is why the eventTransformer works to change the individual icons? How is it that this icon spills over into the Legend entry, and not just the specific calendar entries?

                                            In any case, what about adding a new config option to hideLegendIcons that forcibly removes the CSS tag, or something like that?

                                            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