FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Kalendermodule => Thema gestartet von: Virsacer am 23 März 2020, 22:28:21

Titel: [Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Virsacer am 23 März 2020, 22:28:21
Hallo,
mir ist ein kleiner Fehler aufgefallen:

Ich habe in meinem Google-Kalender einen Termin, der wiederholt wird.
Wenn ich da jetzt ein Enddatum eintrage, wird der Termin am letzen Tag vom Kalender-Modul unterschlagen.

Exportiert (und vereinfacht) sieht der Kalender so aus:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:PHP
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200101
DTEND;VALUE=DATE:20200102
RRULE:FREQ=WEEKLY;WKST=MO;UNTIL=20200323;BYDAY=FR,MO,TH,TU,WE
UID:Test
SUMMARY:Test
END:VEVENT
END:VCALENDAR


Der Termin taucht am letzen Tag (im Beispiel 23.3.) noch im Google-Kalender auf, aber im Kalender-Modul ist "modeStart" leer.

Wenn der Termin nicht als ganztägig eingetragen ist, funktioniert es problemlos...
Ich vermute mal, dass es am Vergleich des Startzeitpunktes liegt, aber ich hab die betroffene Stelle jetzt nicht im Code ausfindig machen können...
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 26 März 2020, 10:54:21
Guck ich mir bei Gelegenheit an. Bitte um Geduld.
Boris
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 26 März 2020, 18:17:34
Hallo,

ich habe Deine Datei genommen und UNTIL=20200326 gesetzt. Der 23.03. war ein Montag, heute ist Donnerstag, beide Wochentage sind in der BYDAY-Auflistung.

Ich sehe den Termin in modeStart und er wird auch bei get ... events angezeigt.

Übersehe ich ein Problem?

Viele Grüße
Boris
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Virsacer am 26 März 2020, 19:31:32
Ich habs grade nochmal überprüft und dabei folgendes festgestellt:

Ich habe bei mir "cutoffOlderThan" gesetzt.
Wenn ich das Attribut rausschmeiße funktioniert es korrekt :)

Und mit dieser Info hab ich jetzt auch die Problemstelle gefunden:
--- 57_Calendar.pm Thu Mar 26 19:27:42 2020
+++ 57_Calendar.pm Thu Mar 26 19:26:27 2020
@@ -2945,6 +2945,7 @@
             my @rrparts= split(";", $rrule);
             my %r= map { split("=", $_); } @rrparts;
             if(exists($r{"UNTIL"})) {
+              $r{"UNTIL"}.="T235959" if($r{"UNTIL"} !~ "T");
               next if($v->tm($r{"UNTIL"}) < $cutoffLowerBound)
               #main::Debug "UNTIL exists with " . $v->tm($r{"UNTIL"}) . " <=> $cutoffLowerBound";
             }
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 26 März 2020, 19:38:06
Danke.

Die verallgemeinerte Fragestellung ist, wie der Zeitpunkt 20200326 in Vergleichen zu behandeln ist. Da mache ich mich ran, wenn ich konzentrierter bin als heute.
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 28 März 2020, 08:44:42
Hallo Virsacer,

ich habe den Code in Zusammenhang mit cutoffOlderThan und cutoffLaterThan so angepasst, dass er mit zwei Funktionen before und after arbeitet, und bei before eine Angabe, die nur aus Datum ohne Zeit besteht, als Ende des Tages interpretiert.

Im Vergleichstest alt/neu bin ich allerdings gerade steckengeblieben. Ich kann nämlich das ursprüngliche Problem nicht nachvollziehen.

Anpassung im Kalender:

RRULE:FREQ=WEEKLY;WKST=MO;UNTIL=20200328;BYDAY=FR,SA,MO,TH,TU,WE

Definition:

define C Calendar ical file ICS/109456.ics
attr C cutoffOlderThan 0


Kannst Du mir bitte einen Kalender und eine Definition schicken, mit der ich das Problem heute nachvollziehen kann?

Vielen Dank im Voraus dafür.

Viele Grüße
Boris
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Virsacer am 28 März 2020, 08:55:18
Danke schonmal für deine Mühe :)

Also bei mir siehts so aus:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:PHP
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART;VALUE=DATE:20200101
DTEND;VALUE=DATE:20200102
RRULE:FREQ=WEEKLY;WKST=MO;UNTIL=20200328;BYDAY=FR,MO,SA,SU,TH,TU,WE
UID:Test
SUMMARY:Test
END:VEVENT
END:VCALENDAR

define Calendar_Test Calendar ical file DEBUG/Test.ics
attr Calendar_Test cutoffOlderThan 30
attr Calendar_Test hideOlderThan 10
attr Calendar_Test icon time_calendar
attr Calendar_Test room defaultRoom
attr Calendar_Test verbose 5
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 28 März 2020, 09:01:39
Danke!

Ich Schussel habe vergessen, den Kalender zu aktualisieren, nachdem ich das Attribut gesetzt hatte.  :-[

Bitte finde anbei die überarbeitete Version mit der Bitte um Test. Ich habe nur die Passagen rund um die cutoff-Attribute angepasst und alle anderen Zeitvergleiche nicht verändert.
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Virsacer am 28 März 2020, 15:06:17
Also bei meinen Fall funktioniert es jetzt :)
Habe auch geprüft, wenn der Termin nicht ganztägig ist - das geht auch (selbst wenn er um Mitternacht startet) 8)
Titel: Antw:[Bug] 57_Calendar.pm - Ganztägig wiederholte Termine mit Enddatum
Beitrag von: Dr. Boris Neubert am 28 März 2020, 17:05:22
eingecheckt