Neues Modul: 57_GCALVIEW Google Kalender Viewer (+Abfall Kalender)

Begonnen von mumpitzstuff, 04 Oktober 2017, 00:02:11

Vorheriges Thema - Nächstes Thema

shamal2008

#165
Hallo,

hier ist meine Definition, die Test mit data-substition sind nicht mehr drin, da hat die Chefin interveniert  ::) Im Moment helfe ich mir damit, dass ich die Einträge im Google Calendar direkt mit einem Ort ersetze...

Ein optisches Problem hab ich auch noch: Das letzte Reading (also der Ort) nützt nicht die gesamte Breite, die zur Verfügung steht, sondern lässt rechts noch Platz, jetzt helfe ich mir halt mit Truncate.. :)



<li data-row="6" data-col="1" data-sizex="10" data-sizey="2">
<header><div data-type="label" class="mint bigger bold">MaLa's Familienkalender</header>
<div class="col-8">
<header> <div data-type="label" class="cell mint">Tag</header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_weekday" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_weekday" class="large"></div>
</div>

<div class="col-12">
<header> <div data-type="label" class="cell mint">Datum </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_bdate" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_bdate" class="large"></div>
</div>

<div class="col-15">
<header> <div data-type="label" class="cell mint">Uhrzeit </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_timeshort" class="large"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_timeshort" class="large"></div>
</div>

<div class="col-30">
<header> <div data-type="label" class="cell mint">Betreff </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_summary" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_summary" class="large left-align truncate"></div>
</div>

<div class="col-30">
<header> <div data-type="label" class="cell mint">Ort </header>
<div data-type="label" data-device="FamilyCal" data-get="t_001_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_002_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_003_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_004_location" class="large left-align truncate"></div>
<div data-type="label" data-device="FamilyCal" data-get="t_005_location" class="large left-align truncate"></div>
</div>


Wie gesagt, wenn keine location da ist, werden die Zeilen einfach nicht angedruckt, sondern die nachfolgenen "rutschen" einfach rauf in den vorigen Eintrag.

Chris1284 hat es scheinbar im Modul CalView schon gefixed, vielleicht kannst ja "spicken" :).

lg und DANKE aus Wien,
Thomas
FHEM auf RasPiI 3+, MapleCUL 868+433MhZ, MAX! via CUL, LD686 LED-Controller, GHoma Plugins,, Shelly, ConbeeII + IKEA + Xiaomi, div. Infodienste & Google Assistant via FHEM;

mumpitzstuff

Das zu implementieren ist einfach, aber es ist meiner Meinung nach unsauber. Was spräche dagegen es mal mit dem zu versuchen?

data-substitution="s/^\z/ /"
oder
data-substitution="s/\A\z/ /"

Ich habe aber keine Ahnung ob das funktioniert.

Falls nicht baue ich einen Schalter ein, um das Feature an oder auszuschalten.

shamal2008

Hallo Mumpitzstuff,

Danke für deine Antwort, beides probiert - leider ohne Ergebnis. Vermutlich hatte ich die Zeichenkombination auch schon mal durch (hab einige probiert. Er verschiebt immer noch. Bild ist anbei - die dritte Zeile (Esterhazygasse 26) gehört eigentlich zum Bachata-Termin in der 4. Zeile...

Danke, wenn du da so einen Schalter einbaust  :D

PS: gibt es eigentlich eine Möglichkeit, die vergangenen Termin von HEUTE (also im Bild z.B. den Mittagstermin) "nicht mehr" anzuzeigen, das attr Calenderincludestarted nimmt ja nur auf den Tag Rücksicht, oder habe ich da was überlesen?

nochmal Danke und lg aus Wien,
Thomas
FHEM auf RasPiI 3+, MapleCUL 868+433MhZ, MAX! via CUL, LD686 LED-Controller, GHoma Plugins,, Shelly, ConbeeII + IKEA + Xiaomi, div. Infodienste & Google Assistant via FHEM;

mumpitzstuff

Bei calenderIncludeStarted darf nichts gesetzt sein, dann werden bereits gestartete Termine von allen Kalendern ausgeblendet. Wenn dort ein Kalender drin steht, dann werden auch die bereits gestarteten Termine des Kalenders mit angezeigt.

mumpitzstuff

Hier mal eine Testversion. Falls eins der Werte für ein Reading auf "" gesetzt ist, dann wird es durch " " ersetzt. Ich hoffe das bringt den gewünschten Effekt. Bitte schreib mir ob es bei dir funktioniert.

1.) Datei ersetzen und Rechte bei Bedarf anpassen.
2.) shutdown restart ausführen

Invers

Ich suche nach der Möglichkeit, die nächsten 10 Tage des Kalenders anzuzeigen, egal, ob was drinnen steht, oder nicht. Geht so etwas?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

mumpitzstuff

#171
Mit dem Attribut calendarDays kannst du die Anzahl der Tage festlegen. Ist es das was du suchst?

Oder suchst du nach einer Readingsgroup die dir 10 Tage fest anzeigt und dann die Termine an den entsprechenden Stellen einblendet. Also unter Umständen mit leeren Zeilen.

Invers

Habe ich festgelegt. Da werden aber keine leeren Termine ausgegeben.
Eine RG habe ich auch, die kann aber natürlich nur Termine anzeigen, die der Kalender liefert.
Also, wenn  z.B. 3 Tage angezeigt werden und am 2. Tag nichts ist, habe ich nur 2 Tage in der Ansicht.
Um das zu verhindern, wollte ich halt alle (bei mir 10) Tage des Googlekalenders anzeigen, egal, ob leer, oder ob nicht.
Falls du eine RG hast, die das kann, wäre ich für den Code dankbar.
Meine sieht so aus:
defmod Termine readingsGroup <Datum>,< >,<Zeit>,<hr>\
GKalender:t_001_bdate,t_001_weekday,t_001_summary\
GKalender:t_002_bdate,t_002_weekday,t_002_summary\
GKalender:t_003_bdate,t_003_weekday,t_003_summary\
GKalender:t_004_bdate,t_004_weekday,t_004_summary\
GKalender:t_005_bdate,t_005_weekday,t_005_summary\
GKalender:t_006_bdate,t_006_weekday,t_006_summary\
GKalender:t_007_bdate,t_007_weekday,t_007_summary\
GKalender:t_008_bdate,t_008_weekday,t_008_summary\
GKalender:t_009_bdate,t_009_weekday,t_009_summary\
GKalender:t_010_bdate,t_010_weekday,t_010_summary
attr Termine group Termine
attr Termine nonames 1
attr Termine room Kalender
attr Termine style style="border:none;;box-shadow:none"
attr Termine valueStyle {\
if($VALUE eq    "So") { 'style="color:red;;"' }\
elsif($VALUE eq "Sa") { 'style="color:gold;;"' }\
elsif($VALUE eq "F")  { 'style="color:lightgreen"' }\
}

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

mumpitzstuff

#173
Habe ich nicht. Aber ich habe jetzt verstanden was du meinst und kann mir Gedanken dazu machen.

Hab jetzt noch mal geschaut und es sieht eher schlecht aus. Vermutlich wird es sehr schwer das mit Boardmitteln hinzukriegen. Die Readingsgroup nimmt die Readings als Trigger und dann kann man die Zwischenwerte nicht erzeugen, um die Tage ohne Kalendereinträge anzuzeigen.

Invers

OK, nicht so schlimm. Mach dir nicht zu viele Gedanken darüber. Ich finde einen anderen Weg. Ich kann ja zur Not auch was im Google eintragen, z.B. "---". Dann steht was da und ich kann auswerten/anzeigen.
Ich hatte gedacht, einen Parameter übersehen zu haben.
Also vielen Dank für die Mühe.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

shamal2008

Hallo Achim,

Danke für deine Version - habe es ausprobiert- kurz: funktioniert nicht. Liegt aber scheinbar nur bedingt an deinem Code. Ich habe mir mal nach Vergleich der beiden Versionen erlaubt, (in den Zeilen 638-646) das '  ' durch '-' zu ersetzen, dann funktioniert es. Offensichtlich mag FHEM die Leerzeichen genauso wenig, wie "NULL" Werte  :).

Wenn das für alle anderen im Forum akzeptabel ist, wäre das natürlich ein gangbarer Weg.

Bin kein Perl Programmierer, leider - sonst könnte ich dir vermutlich mehr Hinweise geben  ;D

lg aus Wien,
Thomas 

Zitat von: mumpitzstuff am 07 Februar 2018, 21:48:01
Hier mal eine Testversion. Falls eins der Werte für ein Reading auf "" gesetzt ist, dann wird es durch " " ersetzt. Ich hoffe das bringt den gewünschten Effekt. Bitte schreib mir ob es bei dir funktioniert.

1.) Datei ersetzen und Rechte bei Bedarf anpassen.
2.) shutdown restart ausführen
FHEM auf RasPiI 3+, MapleCUL 868+433MhZ, MAX! via CUL, LD686 LED-Controller, GHoma Plugins,, Shelly, ConbeeII + IKEA + Xiaomi, div. Infodienste & Google Assistant via FHEM;

mumpitzstuff

Deshalb funktioniert vielleicht auch mein erstes Beispiel nicht. Kannst du mal folgendes probieren?

data-substitution="s/^\z/-/"

oder das andere Beispiel von unten mit einem - anstatt dem Leerzeichen.

Ansonsten kann ich bei mir im Code &nbsp; probieren. Das wäre der HTML Code für ein Leerzeichen.

shamal2008

Hallo,

negativ, funktioniert nicht. Sowohl mit deinem "Original", als auch mit der letzten Version getestet, er verschiebt immer noch.

Wie gesagt, für mich wäre es absolut ok, wenn das Leerzeichen mit einem '-' ersetzt wird. Da kann sich ja wohl kein System beschweren :).

Ich nehm derzeit die Version mit den Minuszeichen.

Danke für dein Engagement!,

lg aus Wien,
Thomas
FHEM auf RasPiI 3+, MapleCUL 868+433MhZ, MAX! via CUL, LD686 LED-Controller, GHoma Plugins,, Shelly, ConbeeII + IKEA + Xiaomi, div. Infodienste & Google Assistant via FHEM;

mumpitzstuff

Ein - ist halt sichtbar und deshalb nicht so gut. Könntest du mir bitte den Gefallen tun und probieren ob &nbsp; ebenfalls funktionieren würde?

shamal2008

Servus,

habe es gerade ausprobiert - so funktioniert es - im Reading steht zwar dann im "Klartext" '&nbsp' drin, aber im Label im FTUI wird es richtig angezeigt - anbei die Änderung, die ich gemacht habe - weiß nicht, ob das so richtig ist, aber wie gesagt, ich bin kein Perl Programmierer ;)  - bin froh, wenn ich mich in den HTML-Tags nicht verheddere... das letzte Mal habe ich vor 35 Jahren C programmiert..


      my $startDate = @$_[0];
      my $startTime = @$_[1];
      my $endDate = ('' ne @$_[2] ? @$_[2] : @$_[0]);
      my $endTime = ('' ne @$_[3] ? @$_[3] : @$_[1]);
      my $url = ('' ne @$_[4] ? @$_[4] : '&nbsp');
      my $summary = ('' ne @$_[6] ? @$_[6] : '&nbsp');
      my $location = ('' ne @$_[7] ? @$_[7] : '&nbsp');
      my $description = ('' ne @$_[8] ? @$_[8] : '&nbsp');
      my $calendar = ('' ne @$_[9] ? @$_[9] : '&nbsp');
      my $author = ('' ne @$_[10] ? @$_[10] : '&nbsp');
      my $sourceColor = ('' ne @$_[11] ? @$_[11] : '&nbsp');
      my ($startYear, $startMonth, $startDay) = split("-", $startDate);
      my ($endYear, $endMonth, $endDay) = split("-", $endDate);
      my $eventDate = fhemTimeLocal(0, 0, 0, $startDay, $startMonth - 1, $startYear - 1900);
      my $daysleft = floor(($eventDate - time) / 60 / 60 / 24 + 1);
      my $daysleftLong;
      my $startDateStr = $startDay.'.'.$startMonth.'.'.$startYear;
      my $endDateStr = $endDay.'.'.$endMonth.'.'.$endYear;
      my $timeShort;
      my $weekdayStr;


Danke auf jeden Fall für das coole Modul und deine Unterstützung!
;) lg aus Wien,
Thomas
FHEM auf RasPiI 3+, MapleCUL 868+433MhZ, MAX! via CUL, LD686 LED-Controller, GHoma Plugins,, Shelly, ConbeeII + IKEA + Xiaomi, div. Infodienste & Google Assistant via FHEM;