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

    Scheduled Pinned Locked Moved Utilities
    486 Posts 83 Posters 942.5k Views 83 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.
    • ? Offline
      A Former User @cskenney
      last edited by

      @cskenney
      scanInterval is just for scanning calendars, finding something changed, then loading them. So, your modified events would definitely be loaded on the module.
      But displaying is another issue. rotateInterval(when you are using multi-scenes) or updateInterval (When you are using single-scenes) could make refreshing the displaying.
      https://github.com/eouia/MMM-CalendarExt2/wiki/2e.-Configuration:Others

      C 1 Reply Last reply Reply Quote 0
      • C Offline
        cskenney @Guest
        last edited by cskenney

        @Sean I have the rotateInterval set to 0 and the updateInterval set to (5 minutes).

        I will post my code below but I will need to removed the URL to my calendars.

        		{	/*MMM-CalendardExt2*/
        			module: 'MMM-CalendarExt2',
        			config: {
        				rotateInterval: 0,	//rotate between scenes default = 60*1000; 0 disables
        				updateInterval: 5*60*1000,	//If not auto-rotated
        				firstDrawingDelay: 10*1000,	//delay to allow calendar parsing
        				locale: "en",
        				defaultSet: {
        						calendars: {
        							maxItems: 500,
        							scanInterval: 1000*60*5,
        							beforeDays: 5,
        							afterDays: 60,
        							maxIterations: 100,
        						},
        						view: {
        							timeFormat: "h:mm A",
        							transform: function(event) {
        								if (event.title.search("Panic") > -1) {
        								event.icon = "noto-softball";
        								event.className = "view_panic";
        								} else if (event.title.search("Arin") > -1) {
        								event.icon = "noto-softball";
        								} else if (event.title.search("Violin") > -1) {
        								event.icon = "emojione-monotone:violin";
        								}
        								return event;
        							},							
        						},
        						scene: {}
        				},
        				calendars: [
        					{
        						name: "Chris",
        						url: "https://calendar.google.com/calendar/ical...basic.ics",
        						className: "cal_chris",
        					},
        					{
        						name: "Kim",
        						url: "https://calendar.google.com/calendar/ical...basic.ics",
        						icon: "twemoji-medical-symbol",
        						className: "cal_kim",
        					},
        					{
        						name: "Lauren",
        						url: "https://calendar.google.com/calendar/ical...basic.ics",
        						className: "cal_lauren",
        					},
        					{
        						name: "Ryan",
        						url: "https://calendar.google.com/calendar/ical...basic.ics",
        						className: "cal_ryan",
        					},
        					{
        						name: "MHS Softball",
        						url: "https://calendar.google.com/calendar/ical/...basic.ics",
        						icon: "noto:softball",
        						className: "cal_mhs_softball",
        					},
        					{
        						name: "Softball Badgers",
        						url: "https://calendar.google.com/calendar/ical/...basic.ics",
        						icon: "noto-badger",
        						className: "cal_badgersoftball",
        					},
        					{
        						name: "BOPA",
        						url: "https://calendar.google.com/calendar/ical...basic.ics",
        						icon: "emojione-musical-score",
        						className: "cal_bopa",
        					},
        				],
        				views:[
        					{
        						name: "View_Daily",
        						mode: "daily",
        						position: "top_left",
        						calendars: ["Chris","Kim","Lauren","Ryan","MHS Softball","Softball Badgers","BOPA"],
        						hideOverflow: false,
        						filterPassedEvent: false,
        						slotCount: 2,
        						maxItems: 500,
        					},
        					{
        						name: "View_Upcoming",
        						mode: "upcoming",
        						slotTitle: "UPCOMING",
        						position: "top_center",
        						maxItems:10,
        						maxDays: 3,
        						hideOverflow: false,
        						filterPassedEvent: true,
        						calendars: ["Chris","Kim","Lauren","Ryan","MHS Softball","Softball Badgers","BOPA"],
        						className: "views_upcoming",
        					},
        					{
        						name: "View_5D_Overview",
        						title: "CALENDAR",
        						mode: "daily",
        						type: "row",
        						position: "bottom_bar",
        						maxItems: 500,
        						slotCount: 5,
        						hideOverflow: false,
        						filterPassedEvent: false,
        						calendars: ["Chris","Kim","Lauren","Ryan","MHS Softball","Softball Badgers","BOPA"],
        					},
        				],
        				scenes:[
        					{
        						name: "DEFAULT",
        						views: ["View_Daily","View_5D_Overview"],
        						className: "Scene_Default",
        					},
        				],
        			},
        		},//end of calendarext2 module
        	],
        
        };
        
        ? 1 Reply Last reply Reply Quote 0
        • BKeyportB Offline
          BKeyport Module Developer
          last edited by BKeyport

          hey, Sean -

          three minor issues and I got my install perfect:

          1. I’m trying to set up a wider slot for the calendar - I’ve got the region expanded and adjusted, but how do I get the item slots to match?:
            0_1576115348053_Capture.PNG
          .region.top.center {
            left: 40%;
            -moz-transform: translateX(-40%);
            -o-transform: translateX(-40%);
            -webkit-transform: translateX(-40%);
            -ms-transform: translateX(-40%);
            transform: translateX(-40%);
            min-width: 750px;
          }
          
          1. I’d like to get rid of the refresh fade. I find it annoying - how to do so?

          2. When I have the “Seahawks” calendar enabled, only the trash calendar loads initially, and after first refresh, the others come in. Can you help with why?

          {
          			module: 'MMM-CalendarExt2',
          				config: {
          					calendars : [
          						{
          							url: "https://calendar.google.com/calendar/ical/PRIVATE",
          							name: "Main Calendar", // Optional, Recommended
          							maxItems: 100,
          							scanInterval: 1000*60*1, // every minute, Appt Book, needs this speed
          							beforeDays: 0,
          							afterDays: 999,
          							maxIterations: 999,
          							forceLocalTZ: false,
          						},
          						{
          							url: "https://calendar.google.com/calendar/ical/PRIVATE2",
          							name: "Trash Calendar", // Optional, Recommended
          							maxItems: 100,
          							scanInterval: 24*60*60*1000, // Once a day
          							beforeDays: 0,
          							afterDays: 999,
          							maxIterations: 999,
          							forceLocalTZ: false,
          						},
          						{
          							url: "http://www.trumba.com/calendars/seattle-seahawks-schedule.ics",
          							name: "Seahawks Calendar", 
          							maxItems: 100,
          							scanInterval: 24*60*60*1000, // Once a day (Is once a week acceptable???) 
          							beforeDays: 0,
          							afterDays: 999,
          							maxIterations: 999,
          							forceLocalTZ: false,
          						},
          						
          					],
          					views: [
          						{
          							mode: "daily",
          							position: "top_center",
          							slotCount: 99,
          							timeFormat:"h:mm A",
          							hideOverflow: false,
          							name: "Daily View",
          							className: "remove_empty_slot",
          							calendars: ["Main Calendar","Trash Calendar","Seahawks Calendar"],
          							transform: function(event) {  
          								if (event.title.search("Recycle") > -1) {
          									event.icon = "mdi:recycle";
          								}
          								if (event.title.search("Yard Waste") > -1) {
          									event.icon = "entypo-leaf";
          								}
          								if (event.title.search("Seahawks") > -1) {
          									event.icon = "fa-solid:football-ball";
          								}
          								return event;
          							},
          //
          						},
          					],
          					scenes: [
          						{
          							name: "DEFAULT",
          						},
          					],
          				},
          		},
          

          Edit: I guess I have a fourth - I’d like to adjust anything to do with Seahawks (the transform above) to have the inverse color like an all day event. Possible?

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

          ? 1 Reply Last reply Reply Quote 0
          • ? Offline
            A Former User @cskenney
            last edited by

            @cskenney
            That will take 5 minutes to refresh displaying. However, That’s not synced to scanInterval(Those are individual for each other), so, at most 10 minutes could be taken to show modified events in unlucky case.

            C 1 Reply Last reply Reply Quote 0
            • ? Offline
              A Former User @BKeyport
              last edited by A Former User

              @BKeyport

              Overwrite these values in your css/custom.css

              1. Adjust default size: (If you want to modifying on specific view, choose a proper CSS Selectors)
                https://github.com/eouia/MMM-CalendarExt2/wiki/4.-Styling
              .CX2 { /* default values which are used frequently or dependently */
                --row-min-width: 100px;
                --row-max-width: 1000px;
                --column-min-width: 300px;
                --column-max-width: 400px;
                --font-size: 16px;
              }
              
              1. Adjust css animation duration; Or change animation-name to any other improper name.
              .CX2.hidden {
                opacity:0;
                animation-name: fadeOutOpacity;
                animation-iteration-count: 1;
                animation-timing-function: ease-in;
                animation-duration: 0.5s;
              }
              
              .CX2.shown {
                display:block;
                opacity: 1;
                animation-name: fadeInOpacity;
                animation-iteration-count: 1;
                animation-timing-function: ease-in;
                animation-duration: 0.5s;
              }
              
              1. That is because just parsing of other calendars is not finished before the first drawing of current loaded events. Just wait, in the next turn remains will be displayed.
                Or set enough time of firstDrawingDelay to wait for all the parsing be completed.
                https://github.com/eouia/MMM-CalendarExt2/wiki/2e.-Configuration:Others

              2. Give the className to your targetted events like what you do with icon. Define CSS styles with that className.
                https://github.com/eouia/MMM-CalendarExt2/wiki/4.-Styling

              BKeyportB 1 Reply Last reply Reply Quote 0
              • C Offline
                cskenney @Guest
                last edited by cskenney

                @Sean I understand that they are not synced. I can run a test where I set both values to 1 minute (each). I can then make a change in my calendar then come back to the MM 10 minutes later and nothing has changed.

                Last night I added an item to my calendar and waited for a couple of hours and it never appeared. Today it is added to the MM calendar. It is like it finally refreshed at midnight when it had to adjust the days.

                I am now left wondering if the scanInterval in the default section is actually only used at startup and at midnight.

                Edit: I added the scanInterval into the section for a specific calendar and it solved the problem. It looks like when the scanInterval is in the default section that it must not be applied to each calendar. The result is that each calendar is only scanned once per day (or so it seems).

                ? 1 Reply Last reply Reply Quote 0
                • ? Offline
                  A Former User @cskenney
                  last edited by A Former User

                  @cskenney
                  Not at all.

                  I tested this; I gave 20seconds for updateInterval and scanInterval
                  0_1576154471756_a1444.png

                  At start there was no event to show;
                  0_1576154518776_a111.png

                  In a minute, I added a test event on my google calendar;
                  0_1576154766453_0c53b8e6-39e7-4ef5-8464-05fc8fb8432b-image.png

                  log says There happend 1 event added at that time. (See Scanned and Selected)
                  0_1576154613722_a133.png

                  And the screen was changed.(See the time of the clock.)
                  0_1576154663232_a122.png

                  C 1 Reply Last reply Reply Quote 0
                  • C Offline
                    cskenney @Guest
                    last edited by

                    @Sean where is this log file located? I will take a look at it and see what I can find.

                    ? 1 Reply Last reply Reply Quote 0
                    • ? Offline
                      A Former User @cskenney
                      last edited by

                      @cskenney
                      If you want to see the log on real time;
                      first stop your pm2 (if you are using), then npm start dev on your MagicMirror directory.

                      C BKeyportB 2 Replies Last reply Reply Quote 0
                      • BKeyportB Offline
                        BKeyport Module Developer @Guest
                        last edited by

                        @Sean said in MMM-CalendarExt2:

                        1. That is because just parsing of other calendars is not finished before the first drawing of current loaded events. Just wait, in the next turn remains will be displayed.
                          Or set enough time of firstDrawingDelay to wait for all the parsing be completed.
                          https://github.com/eouia/MMM-CalendarExt2/wiki/2e.-Configuration:Others

                        is there a way to set priority of loading? If the trumba calendar referenced (Seahawks) is causing issues, I’d rather my main calendar loads first (Hold display until loaded), then the “trash” calendar, then the Trumba calendar. If not, feature request.

                        Thanks again, Love being able to make this exactly the way I want.

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

                        ? 1 Reply Last reply Reply Quote 0
                        • ? Offline
                          A Former User @BKeyport
                          last edited by

                          @BKeyport
                          It would be over spec I think. Because;

                          • This symptom would be improved by delayFirstDrawing to some degree. I think a few seconds would be enough to complete all parsing. If some calendar would take over 10 seconds, it would be the connection issue not parsing issue.
                          • This symptom would be issued on short time only when MM starts. Usually, after the first cycle of refreshing, this issue would be gone away.
                          • None the less assigning priority, there would be no guarantee for the specific calendar completing to parse first. The main reason for this delay lays in the network connection quality between your RPI and the calendar server.

                          Anyway thanks for the suggestion. I’ll research more.

                          1 Reply Last reply Reply Quote 0
                          • C Offline
                            cskenney @Guest
                            last edited by

                            @Sean I think I have it figured out now. If looks like putting the calendar scanInterval in the default section (look at the code I posted above) doesn’t apply it to all the calendars. Instead it looks like they are using a default value of 30 minutes. Does that make sense?

                            ? 3 Replies Last reply Reply Quote 0
                            • ? Offline
                              A Former User @cskenney
                              last edited by A Former User

                              @cskenney
                              Hmmm. without real ical data, I can’t say anything about your case. Configuration itself seems nothing wrong.
                              When I changed your updateInterval to 1000*30, it refreshes per 30 seconds.
                              If you don’t mind, send me your configuration with real ical URL. my email is eouia0819@gmail.com

                              1 Reply Last reply Reply Quote 0
                              • ? Offline
                                A Former User @cskenney
                                last edited by

                                @cskenney
                                Wait a sec. I think found something.

                                1 Reply Last reply Reply Quote 0
                                • ? Offline
                                  A Former User @cskenney
                                  last edited by

                                  @cskenney
                                  You have a mistyping in defaultSet. Not calendars, Fix it to calendar

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

                                    @Sean You can also do it through PM2 directly.

                                    In a second session run “pm2 logs” – it’ll live update the logs on that session’s screen.

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

                                    1 Reply Last reply Reply Quote 0
                                    • C Offline
                                      cskenney @Guest
                                      last edited by

                                      @Sean That did the trick. You used Calendars (with an S) for the main code section but the default section only used calendar (without the s). I didn’t notice the syntax difference. Thanks for the help.

                                      ? 1 Reply Last reply Reply Quote 0
                                      • ? Offline
                                        A Former User @cskenney
                                        last edited by A Former User

                                        @cskenney
                                        Because calendar of defaultSet would be applied to each calendar of calendars:[]. But anyway, my English is not so good so there could be confusing.

                                        C 1 Reply Last reply Reply Quote 0
                                        • C Offline
                                          cskenney @Guest
                                          last edited by

                                          @Sean No, it’s fine. I just didn’t notice the syntax difference when I created the default section.

                                          Thanks again for your help.

                                          1 Reply Last reply Reply Quote 0
                                          • LordyL Offline
                                            Lordy
                                            last edited by Lordy

                                            0_1576603720899_Screenshot_20191214-135355_2t.jpg
                                            The two things were only added after the installation of “MMM-Page-Selector”.
                                            Do you know how I remove the “module name (red)” and the “module counter blue”?
                                            It is somehow related to the module.
                                            I hope Sean, can you help me?

                                            ? 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
                                            • 13
                                            • 14
                                            • 15
                                            • 16
                                            • 17
                                            • 24
                                            • 25
                                            • 15 / 25
                                            • 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