• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.

Calendar not updating

Scheduled Pinned Locked Moved Unsolved Troubleshooting
95 Posts 4 Posters 44.4k Views 6 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
    matt216
    last edited by Jan 12, 2024, 2:05 PM

    @sdetweil I wonder if I could run a nightly cron job to purge the calendar module or something similar…? Not sure how the calendar fetcher works.
    It still feels like the calendar will load an ics link ok the first time, but is not displaying events created since that first load.
    Nightly purge and re-connect would be acceptable, I think. Any advice there?

    S 1 Reply Last reply Jan 12, 2024, 2:11 PM Reply Quote 0
    • S Away
      sdetweil @matt216
      last edited by Jan 12, 2024, 2:11 PM

      @matt216 there is no way to programmatically trigger a calendar refresh. you have to restart mm

      but you could do this w pm2

      pm2 restart MagicMirror
      

      (or it’s number)

      in the current state does the broadcasting message indicate a change in number of events?

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      M 1 Reply Last reply Jan 12, 2024, 3:07 PM Reply Quote 0
      • M Offline
        matt216 @sdetweil
        last edited by Jan 12, 2024, 3:07 PM

        @sdetweil yes, the broadcasting event number increases by 1 when I add my new event, but the event does not show on the display.

        S 1 Reply Last reply Jan 12, 2024, 3:09 PM Reply Quote 0
        • S Away
          sdetweil @matt216
          last edited by sdetweil Jan 12, 2024, 3:18 PM Jan 12, 2024, 3:09 PM

          @matt216 can u show me the cal config again… as far as I can tell, the ONLY reason its not displayed is that the count (maximumEntries) clips off the total number of events

          actually there are more conditions… in calendar.js
          but they are all configurable

          			for (const e in calendar) {
          				const event = JSON.parse(JSON.stringify(calendar[e])); // clone object
          
          				if (this.config.hidePrivate && event.class === "PRIVATE") {
          					// do not add the current event, skip it
          					continue;
          				}
          				if (limitNumberOfEntries) { (//called with true) 
          					if (event.endDate < maxPastDaysCompare) {
          						continue;
          					}
          					if (this.config.hideOngoing && event.startDate < now) {
          						continue;
          					}
          					if (this.config.hideDuplicates && this.listContainsEvent(events, event)) {
          						continue;
          					}
          					if (--remainingEntries < 0) {
          						break;
          					}
          				}
          

          and after filtering them out , apply the number of days limit and max entries limit

          		// Limit the number of days displayed
          		// If limitDays is set > 0, limit display to that number of days
          		if (this.config.limitDays > 0) {
          			let newEvents = [];
          			let lastDate = today.clone().subtract(1, "days").format("YYYYMMDD");
          			let days = 0;
          			for (const ev of events) {
          				let eventDate = moment(ev.startDate, "x").format("YYYYMMDD");
          				// if date of event is later than lastdate
          				// check if we already are showing max unique days
          				if (eventDate > lastDate) {
          					// if the only entry in the first day is a full day event that day is not counted as unique
          					if (!this.config.limitDaysNeverSkip && newEvents.length === 1 && days === 1 && newEvents[0].fullDayEvent) {
          						days--;
          					}
          					days++;
          					if (days > this.config.limitDays) {
          						continue;
          					} else {
          						lastDate = eventDate;
          					}
          				}
          				newEvents.push(ev);
          			}
          			events = newEvents;
          		}
          
          		return events.slice(0, this.config.maximumEntries);
          

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          M 1 Reply Last reply Jan 12, 2024, 3:33 PM Reply Quote 0
          • M Offline
            matt216 @sdetweil
            last edited by Jan 12, 2024, 3:33 PM

            @sdetweil

            {
            			module: "calendar",
            			header: "--- Calendar testing ---",
            			position: "top_left",
            			config: {
            				fetchInterval: 120000,
            				timeFormat: 'absolute',
            				maximumEntries: 5,
            				broadcastPastEvents: false,
            				calendars: [
            					{
            						url: 'https://my.cal.url/dav.php/calendars/family/default?export',
            						auth: 	{
            							user: 'family',
            							pass: 'pass',
            							method: 'basic'
            							}
            					}
            					]
            				}
            		},
            
            

            With the maximumEntries I currently have events showing several days in the future. When I am adding events to test this, I add the event to start just a few hours in the future so that it should show within the 5 events.

            S 1 Reply Last reply Jan 12, 2024, 3:36 PM Reply Quote 0
            • S Away
              sdetweil @matt216
              last edited by Jan 12, 2024, 3:36 PM

              @matt216 lets make that maximumEvents: 20

              for this test

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              M 1 Reply Last reply Jan 12, 2024, 3:49 PM Reply Quote 0
              • M Offline
                matt216 @sdetweil
                last edited by Jan 12, 2024, 3:49 PM

                @sdetweil Updated to 20. This now shows calendar entries all the way to early May but the test event that starts at 20:00 this evening does not show. There are actually lots of events over the next few days that are not showing.

                S 1 Reply Last reply Jan 12, 2024, 4:03 PM Reply Quote 0
                • S Away
                  sdetweil @matt216
                  last edited by sdetweil Jan 12, 2024, 4:07 PM Jan 12, 2024, 4:03 PM

                  @matt216 ok, lets add some debugging , then we can see what is received in the UI module and what is processed for display (after filtering)

                  ~/MagicMirror/modules/default/calendar/calendar.js

                  about line 219

                  		const events = this.createEventList(true);
                  		Log.log("events to process="+JSON.stringify(events))  // add this line 
                  		const wrapper = document.createElement("table");
                  

                  and around line 582

                  		for (const calendarUrl in this.calendarData) {
                  			const calendar = this.calendarData[calendarUrl];
                  			Log.log("before filter events="+JSON.stringify(calendar))  // add this line
                  			let remainingEntries = this.maximumEntriesForUrl(calendarUrl);
                  

                  then in the browser developers window (ctrl-shift-i to open) select the console tab,
                  add cal to the filter field

                  you will see these two blocks

                  before filter events=[{"title":"Henry swim at Y","startDate":"1705156800000","endDate":"1705159200000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false},{"title":"Henry swim at Y","startDate":"1705761600000","endDate":"1705764000000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false},{"title":"Henry swim at Y","startDate":"1706366400000","endDate":"1706368800000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false},{"title":"Henry swim at Y","startDate":"1706971200000","endDate":"1706973600000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false},{"title":"Henry swim at 
                  

                  and then

                  events to process=[{"title":"Henry swim at Y","startDate":"1705156800000","endDate":"1705159200000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false,"url":"http://localhost:8090/modules/default/calendar/JUSTONE.ICS","today":false,"dayBeforeYesterday":false,"yesterday":false,"tomorrow":true,"dayAfterTomorrow":false},{"title":"Henry swim at Y","startDate":"1705761600000","endDate":"1705764000000","fullDayEvent":false,"recurringEvent":true,"class":"","firstYear":2024,"location":false,"geo":false,"description":false,"url":"http://localhost:8090/modules/default/calendar/JUSTONE.IC
                  

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  S M 2 Replies Last reply Jan 12, 2024, 4:12 PM Reply Quote 0
                  • S Away
                    sdetweil @sdetweil
                    last edited by sdetweil Jan 12, 2024, 4:24 PM Jan 12, 2024, 4:12 PM

                    @matt216 the before filter is what was sent from the parser
                    the events to process is what will be shown, limited to maximumEntries in length

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    M 1 Reply Last reply Jan 12, 2024, 4:25 PM Reply Quote 0
                    • M Offline
                      matt216 @sdetweil
                      last edited by Jan 12, 2024, 4:25 PM

                      @sdetweil Thanks Sam. Will have a go and report back.

                      S 1 Reply Last reply Jan 12, 2024, 4:31 PM Reply Quote 0
                      • 1
                      • 2
                      • 6
                      • 7
                      • 8
                      • 9
                      • 10
                      • 8 / 10
                      8 / 10
                      • First post
                        72/95
                        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