Label mit leerem data-get

Begonnen von ms_steini, 18 November 2019, 13:49:43

Vorheriges Thema - Nächstes Thema

ms_steini

Hallo zusammen,

ich habe meine Abfalltermine mit ical google-Kalender eingebunden. Es funktioniert auch soweit alles recht gut.

Wenn der letzte Termin für z.B. Grünbündel in der Vergangenheit liegt und kein weiterer Termin im Kalender eingetragen ist
verschiebt sich das Symbol nach unten da (data-get="Gruenbuendel_weekday") leer bzw. nicht existiert.

Das ist ersteinmel nicht so schlimm, da ich ja die künftigen Termine so schnell wie möglich nachtrage, aber bis dahin sieht es unschön aus.

data-substitution='["","leer"]' funktioniert leider nicht.



hat jemand eine Idee oder kann mir helfen das Problem zu lösen?

Besten DANK

OdfFhem

@ms_steini

Kannst Du denn mal ein list vom FHEM-Device sowie den HTML-Code für Deinen Ausschnitt posten?

ms_steini

aber klar doch:


Gruenbuendel_weekday und Gruenbuendel_date ist natürlich nicht dabei, da im google Kalender noch kein Termin eingetragen ist.



Internals:
   DEF        ical url https://calendar.google.com/calendar/ical/xxxxxxxxxxxxxxxxxxxxxxxxx.calendar.google.com/private-xxxxxxxxxxxxxxxxxxxxxxxxx/basic.ics 43200
   FUUID      xxxxxxxxxxxxxxxxxxxxxxxxx
   NAME       Abfall
   NOTIFYDEV  global
   NR         83
   NTFY_ORDER 50-Abfall
   STATE      triggered
   TYPE       Calendar
   READINGS:
     2019-11-18 14:04:58   calname         Abfallkalender
     2019-11-18 14:04:58   lastUpdate      2019-11-18 14:04:56
     2019-11-13 08:00:00   modeAlarm       
     2019-11-13 08:15:00   modeAlarmOrStart
     2019-11-12 18:17:34   modeAlarmed     
     2019-11-13 17:14:41   modeChanged     
     2019-11-18 14:04:58   modeEnd         2018120573cc610291508944dfadfdfb13e69e43b70cf07ce57cb1334d06eeaea2ff48fc;2019110676a2941181c92e32280f58b137e0356cb70cf07ce57cb1334d06eeaea2ff48fc;201901072910c43b7fcd3ca643530a62d5c7c29bb70cf07ce57cb1334d06eeaea2ff48fc;2019100447152415b564bcd0328897e97ffe5e2fb70cf07ce57cb1334d06eeaea2ff48fc;201909116a28831c22b500062a5937046dfc19a7b70cf07ce57cb1334d06eeaea2ff48fc;20181122629ddff98156acaecaf1134fa27f0cdcb70cf07ce57cb1334d06eeaea2ff48fc;20181210b8787df787a260c4402a250d0ab1bdefb70cf07ce57cb1334d06eeaea2ff48fc;20190821d2396cbcdbc5e98fc537c4ae7f025fd2b70cf07ce57cb1334d06eeaea2ff48fc;20190320be6b463071c897b29a57ebd767023e8ab70cf07ce57cb1334d06eeaea2ff48fc;20191113f1a68dd94da4d515f5579b40093cbc9fb70cf07ce57cb1334d06eeaea2ff48fc;2019060521b0d4279479b6b9a4c31efd9d248b00b70cf07ce57cb1334d06eeaea2ff48fc;20190808af3b8f6a90c8033db5f6a54930a4dfb7b70cf07ce57cb1334d06eeaea2ff48fc;201910238431728749ea503e937c8edac0b65042b70cf07ce57cb1334d06eeaea2ff48fc;201908144775ff00f3954f0e029d50dd716d9c3bb70cf07ce57cb1334d06eeaea2ff48fc;20191030e00cc0cd29fdc2634aabab3e64b313e3b70cf07ce57cb1334d06eeaea2ff48fc;201810242c919577ed6a2b207d2fc128527c6702b70cf07ce57cb1334d06eeaea2ff48fc;20190807f25cd02ab8abcc95c97bc23655850ed2b70cf07ce57cb1334d06eeaea2ff48fc;20190221f4f40e03685ba3c9afd58786223fb26fb70cf07ce57cb1334d06eeaea2ff48fc;201810311dc2cf578185e45fe8e021ecd2fddfb3b70cf07ce57cb1334d06eeaea2ff48fc;20190613d5f2d883eed93ce125de542b5aa59444b70cf07ce57cb1334d06eeaea2ff48fc;20190130e5fa211ba52e21c94e02af26151cb151b70cf07ce57cb1334d06eeaea2ff48fc;20190710ef544713ffac2bca0dedd4f2997fbed0b70cf07ce57cb1334d06eeaea2ff48fc;20190611b68385743bd9af019297ca4bd7dabee7b70cf07ce57cb1334d06eeaea2ff48fc;2019031321c9a8021ace4a1871254fd7ede40b8fb70cf07ce57cb1334d06eeaea2ff48fc;20190731bab58469e2d89e8187585233f5cdc8b8b70cf07ce57cb1334d06eeaea2ff48fc;201906246223172b313e1a8ded0b2793d6ad08deb70cf07ce57cb1334d06eeaea2ff48fc;20190722ea4e770d83a76d513d13f9a3df81c925b70cf07ce57cb1334d06eeaea2ff48fc;20190321778d5445deec2049dfcbc4ccc3c1359eb70cf07ce57cb1334d06eeaea2ff48fc;2019012171bcb78a5cd00eed224b96ec1ff1191eb70cf07ce57cb1334d06eeaea2ff48fc;201811126919b20812fc8d4eec73434ca62fda05b70cf07ce57cb1334d06eeaea2ff48fc;20190717452d48883b5619a710bb93e73b0ec797b70cf07ce57cb1334d06eeaea2ff48fc;2019012330b8fffa234fde3ca3cb89d58cb68494b70cf07ce57cb1334d06eeaea2ff48fc;201907110ce72db0b8d02e150d946d4370584c2cb70cf07ce57cb1334d06eeaea2ff48fc;201902120b3dd7848680684809c2ed702d8674d4b70cf07ce57cb1334d06eeaea2ff48fc;20190805027e28f32ae3a98b80d483dc55547c36b70cf07ce57cb1334d06eeaea2ff48fc;201908193a51791982fbe40f3447a4ae948983b3b70cf07ce57cb1334d06eeaea2ff48fc;2019010940b7432d2f7791f4754695e9554399eeb70cf07ce57cb1334d06eeaea2ff48fc;20190904b6ca1500966486f7e2232dc36be87b13b70cf07ce57cb1334d06eeaea2ff48fc;20181126086581f10b15edc9d28b87d4c4344701b70cf07ce57cb1334d06eeaea2ff48fc;201901119ce43b75f93c7ea5bfa4d6b76cc7d47eb70cf07ce57cb1334d06eeaea2ff48fc;201902042d5d9ea07040681bd664e4f26f23e8ffb70cf07ce57cb1334d06eeaea2ff48fc;201910280075abf9e81e3be4c00fd53b07d48043b70cf07ce57cb1334d06eeaea2ff48fc;20181222587946bebc5b9aadd152abf1b8594190b70cf07ce57cb1334d06eeaea2ff48fc;2019022009fa00300a4cad8a30073af17f4efaa5b70cf07ce57cb1334d06eeaea2ff48fc;201909021d4efc6f14a3ec5305e8f34609a00114b70cf07ce57cb1334d06eeaea2ff48fc;20181212a94a17688ea8c93fa3088e42bc575a6cb70cf07ce57cb1334d06eeaea2ff48fc;201909259c9ede48bfe49ecdac6807df44e026b4b70cf07ce57cb1334d06eeaea2ff48fc;201811078f76104b1bb7e8418da341e3f78de753b70cf07ce57cb1334d06eeaea2ff48fc;201909189b3aa5c9471a1965961152bc79378b1bb70cf07ce57cb1334d06eeaea2ff48fc;20181025fd415691cba7e670b95b44f5b2dd7a5cb70cf07ce57cb1334d06eeaea2ff48fc;20190527e15bc49ce0ae9761467bda917a67767ab70cf07ce57cb1334d06eeaea2ff48fc;20181114984e8101168f5dec01994b0a78b1d112b70cf07ce57cb1334d06eeaea2ff48fc;20190911f330f5d451136731bac171debc4141b3b70cf07ce57cb1334d06eeaea2ff48fc;2018102983da194dd0152f74fc513b18dc6a4127b70cf07ce57cb1334d06eeaea2ff48fc;201905169db58edc4a5b42db456d09cece624596b70cf07ce57cb1334d06eeaea2ff48fc;20190410f1734eccfb131d0d0f5a6f67ecafe000b70cf07ce57cb1334d06eeaea2ff48fc;20191016c7fefd4650636d9683bebbdf8a1253e1b70cf07ce57cb1334d06eeaea2ff48fc;20190513f78e17ea13b607fa827a9076f7f10de0b70cf07ce57cb1334d06eeaea2ff48fc;201909163eda0f0c3b07a9a0d86b941e36bb0232b70cf07ce57cb1334d06eeaea2ff48fc;201910146d78c1967c67190754a1cc26d8aec398b70cf07ce57cb1334d06eeaea2ff48fc;20190703e9a9d8a9179e0f2df7fedac721855bd2b70cf07ce57cb1334d06eeaea2ff48fc;201903186fa4c5a5064a4230d1592479c9982a75b70cf07ce57cb1334d06eeaea2ff48fc;20190213c5bf5ebbe4603a419b8c251ae85bfbd3b70cf07ce57cb1334d06eeaea2ff48fc;2019041693a12eac55fb673e31c6ee512ed82e78b70cf07ce57cb1334d06eeaea2ff48fc;201906140be4a4ee9c2723f908bda1c70dde6d49b70cf07ce57cb1334d06eeaea2ff48fc;2018122067c87767a6f3540023d7c895724ce50ab70cf07ce57cb1334d06eeaea2ff48fc;201908146483d5241e74f4009d345501a1bbf749b70cf07ce57cb1334d06eeaea2ff48fc;201905082c5d623346c21dd25c7aaeb630e20891b70cf07ce57cb1334d06eeaea2ff48fc;2019050244f79a2917c97cb537bc36238b025527b70cf07ce57cb1334d06eeaea2ff48fc;201901161c1e6a22e5f6d0f11cb3b7f196a66c58b70cf07ce57cb1334d06eeaea2ff48fc;2019040398b6e4f32b2be2f86face85317ba2122b70cf07ce57cb1334d06eeaea2ff48fc;20190905cc2121055e52a6b2cde2e2ab326702deb70cf07ce57cb1334d06eeaea2ff48fc;20190218f47eaac54253d97e9acaf1c5425e1ea8b70cf07ce57cb1334d06eeaea2ff48fc;20190828941bed1e53cbcd38d8012fc4cfe868a6b70cf07ce57cb1334d06eeaea2ff48fc;20190417d73be8a4f6aafe77aa71c95bd7b85042b70cf07ce57cb1334d06eeaea2ff48fc;20190425a95efdd25270b8c7a7da8c3f6676405cb70cf07ce57cb1334d06eeaea2ff48fc;201910020fcd8c810e236a29e5f3e600141011b5b70cf07ce57cb1334d06eeaea2ff48fc;20181015dfd4305d64092596d6347937018ec78fb70cf07ce57cb1334d06eeaea2ff48fc;2019062670479e638b483945201b127bdbd9a656b70cf07ce57cb1334d06eeaea2ff48fc;20190708941e1094e6574ad587230b1cccec3b68b70cf07ce57cb1334d06eeaea2ff48fc;20181219a579d6f6ac8c509958259b9e92f4ae48b70cf07ce57cb1334d06eeaea2ff48fc;20181227df9c70d364b0dd1f36797ac550ea9a69b70cf07ce57cb1334d06eeaea2ff48fc;201911110a4ae7ec7ca548df12de9dc82f86cabdb70cf07ce57cb1334d06eeaea2ff48fc;2019052973614901f5993902e0a24976cf455da0b70cf07ce57cb1334d06eeaea2ff48fc;2019100990ce5854d7cd8b97c8ad13436fc8efceb70cf07ce57cb1334d06eeaea2ff48fc;201810177cc626d02e7405ce12763021eab5b4d8b70cf07ce57cb1334d06eeaea2ff48fc;201907241e01113fc15a328b7c33ae662b0cd9edb70cf07ce57cb1334d06eeaea2ff48fc;20191106298ff55a13ded49f3fa4114270c27d60b70cf07ce57cb1334d06eeaea2ff48fc;20190619a4d1967db01a0d720d09aab933980296b70cf07ce57cb1334d06eeaea2ff48fc;201903074b33856edc407ec196e9dcec6a63c262b70cf07ce57cb1334d06eeaea2ff48fc;20191009b25d79e6c80a25287dc9ed671612bad9b70cf07ce57cb1334d06eeaea2ff48fc;201811281c2d996e0dbc4951c2b5a7228bd1bcd6b70cf07ce57cb1334d06eeaea2ff48fc;20190206c041bc30632d33ad7b07f241f9b1e309b70cf07ce57cb1334d06eeaea2ff48fc;20190413082b43184cf1a7cc9268727fbe753167b70cf07ce57cb1334d06eeaea2ff48fc;20181121e8984b33cf9ad53b4f7a78cda24cb550b70cf07ce57cb1334d06eeaea2ff48fc;20190717c9504dd3788008c5efe473d93ace0d9db70cf07ce57cb1334d06eeaea2ff48fc;201910316a28effa1e96453c764f92001b47302cb70cf07ce57cb1334d06eeaea2ff48fc;20190930981835dcc39ea11ede24c9ee85f42fafb70cf07ce57cb1334d06eeaea2ff48fc;2019022785b5ead439a534b11c7d4e0fcb55e695b70cf07ce57cb1334d06eeaea2ff48fc;20181107484de692119ed2dd64c590d27d8fee66b70cf07ce57cb1334d06eeaea2ff48fc;20190401e76b1b17608ee87b278dcecb4056b83bb70cf07ce57cb1334d06eeaea2ff48fc;20190124cd0a824264c6fe04fa22f32289c9a0ccb70cf07ce57cb1334d06eeaea2ff48fc;20190429cf13aed8b4b4c5abc78e2d0bda4c64a7b70cf07ce57cb1334d06eeaea2ff48fc;20190522d58450427e8e90f0cc19d2219b9070cab70cf07ce57cb1334d06eeaea2ff48fc;20190305f76214164ff4b6450bdb00386cc9aeb1b70cf07ce57cb1334d06eeaea2ff48fc;201905152195f3dd538364df733ae883035029efb70cf07ce57cb1334d06eeaea2ff48fc;2019032719ed08c7964080708d6a8954dc292475b70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-13 17:14:41   modeEnded       
     2019-11-13 08:15:00   modeStart       
     2019-11-13 08:15:00   modeStarted     
     2019-11-18 14:04:58   modeUpcoming    201911257e343a21e217e2607bb42731f46907bcb70cf07ce57cb1334d06eeaea2ff48fc;2019120960e3ade7d41261a9056a7a7760bc1fb5b70cf07ce57cb1334d06eeaea2ff48fc;201912187f4e70c0c454faa3b67d2ef0c2457f99b70cf07ce57cb1334d06eeaea2ff48fc;20191120c40bcb5064757be0ff961abe3153ebdab70cf07ce57cb1334d06eeaea2ff48fc;2019120465262356c29c240f41bfad426d71a964b70cf07ce57cb1334d06eeaea2ff48fc;20191211c06ce28c3167db9bd72144c0be59a5d0b70cf07ce57cb1334d06eeaea2ff48fc;201912212b560ba98162d73818c0eb67a7a3071fb70cf07ce57cb1334d06eeaea2ff48fc;20191127de2d5c5e34e3ebb6f14e7f820944b0f2b70cf07ce57cb1334d06eeaea2ff48fc;20191227e02ea3533ccaee9438f83c2435bc6c9ab70cf07ce57cb1334d06eeaea2ff48fc;201912248ec677d261b3dd7d0a74188d7438ed48b70cf07ce57cb1334d06eeaea2ff48fc;20191128dda83176e88a55cea9fb48792da34837b70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-18 14:04:58   nextUpdate      2019-11-19 02:04:56
     2019-11-18 14:04:58   nextWakeup      2019-11-19 02:04:56
     2019-11-18 14:04:58   state           triggered
Attributes:
   DbLogExclude .*
   devStateIcon .*:time_calendar@#e56524
   group      Kalender
   icon       time_calendar@#2c8293
   room       Kalender




Internals:
   DEF        Abfall 21600
   FUUID      xxxxxxxxxxxxxxxxxxxxxxxxx
   KALENDER   Abfall
   NAME       AbfallTermine
   NOTIFYDEV  Abfall
   NR         85
   NTFY_ORDER 50-AbfallTermine
   STATE      Leichtverpackungen in 2 Tag(en)
   TYPE       ABFALL
   OLDREADINGS:
   READINGS:
     2019-11-18 14:04:58   Bioabfall_date  25.11.2019
     2019-11-18 14:04:58   Bioabfall_days  7
     2019-11-18 14:04:58   Bioabfall_description
     2019-11-18 14:04:58   Bioabfall_location Korschenbroich
     2019-11-18 14:04:58   Bioabfall_text  Bioabfall
     2019-11-18 14:04:58   Bioabfall_uid   201911257e343a21e217e2607bb42731f46907bcb70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-18 14:04:58   Bioabfall_weekday Montag
     2019-11-18 14:04:58   Leichtverpackungen_date 20.11.2019
     2019-11-18 14:04:58   Leichtverpackungen_days 2
     2019-11-18 14:04:58   Leichtverpackungen_description
     2019-11-18 14:04:58   Leichtverpackungen_location Korschenbroich
     2019-11-18 14:04:58   Leichtverpackungen_text Leichtverpackungen
     2019-11-18 14:04:58   Leichtverpackungen_uid 20191120c40bcb5064757be0ff961abe3153ebdab70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-18 14:04:58   Leichtverpackungen_weekday Mittwoch
     2019-11-18 14:04:58   Papier_date     28.11.2019
     2019-11-18 14:04:58   Papier_days     10
     2019-11-18 14:04:58   Papier_description
     2019-11-18 14:04:58   Papier_location Korschenbroich
     2019-11-18 14:04:58   Papier_text     Papier
     2019-11-18 14:04:58   Papier_uid      20191128dda83176e88a55cea9fb48792da34837b70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-18 14:04:58   Papier_weekday  Donnerstag
     2019-11-18 14:04:58   Restabfall_date 27.11.2019
     2019-11-18 14:04:58   Restabfall_days 9
     2019-11-18 14:04:58   Restabfall_description
     2019-11-18 14:04:58   Restabfall_location Korschenbroich
     2019-11-18 14:04:58   Restabfall_text Restabfall
     2019-11-18 14:04:58   Restabfall_uid  20191127de2d5c5e34e3ebb6f14e7f820944b0f2b70cf07ce57cb1334d06eeaea2ff48fc
     2019-11-18 14:04:58   Restabfall_weekday Mittwoch
     2019-11-18 14:04:58   next            Leichtverpackungen_2
     2019-11-18 14:04:58   next_date       20.11.2019
     2019-11-18 14:04:58   next_days       2
     2019-11-18 14:04:58   next_description
     2019-11-18 14:04:58   next_location   Korschenbroich
     2019-11-18 14:04:58   next_text       Leichtverpackungen
     2019-11-18 14:04:58   next_weekday    Mittwoch
     2019-11-18 14:04:58   state           2
Attributes:
   DbLogExclude .*
   calendarname_praefix 0
   date_style date
   delimiter_reading |
   delimiter_text_reading und
   devStateIcon .*:muellwagen@#e56524
   icon       time_clock
   room       Kalender
   stateFormat next_text in next_days Tag(en)
   weekday_mapping Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag


<div class="inline">
   <div class="large" style="margin-top:5px"
data-device="AbfallTermine"
data-type="symbol"
data-get="Gruenbuendel_days"
data-icons='["fa-tree warn fa-spin","fa-tree warn"]'
data-colors='["#32A054","#32A054"]'
data-get-on='["0","2"]'
data-background-icon="fa-circle-thin">
   </div>
   <div style=" padding:2px;
background-color:#AA6900;
color:#eeeeee;
font-size:11px;
font-weight:bold;
position:absolute;
margin-top:-13px;
margin-left:-2px;
text-align:center;
width:70px;">Grünbündel</div>

 
   <div style="margin-top:8px"
        data-type="label"
data-device="AbfallTermine"
data-get="Gruenbuendel_weekday"
        data-substitution='["","leer"]'
class="e-text e-color">
   </div>
   <div style="margin-top:-1px"
        data-type="label"
data-device="AbfallTermine"
data-get="Gruenbuendel_date"
       
class="e-text e-color">
   </div>
</div>

yersinia

viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

OdfFhem

#4
@ms_steini

Das FTUI-Widget "classchanger" scheint zu helfen ...

<div data-type="classchanger" data-device="Test" data-get="Gruenbuendel_weekday" data-get-on="[aA-Za-z]*" data-off-class="hide" class="container bg-green">
  <div data-type="label" data-device="Test"
                         data-get="Gruenbuendel_weekday"
                         style="margin-top:8px"
                         class="e-text e-color">
  </div>
</div>
<div data-type="classchanger" data-device="Test" data-get="Gruenbuendel_weekday"  data-get-on="[A-Za-z]*" data-on-class="hide" class="container bg-red">
  <div style="margin-top:8px"
       class="e-text e-color">
    Kein Termin
  </div>
</div>



Ich bin mir aber nicht sicher, ob ich in Deinem Fall nicht eher ein userreading anlegen würde; ausgelöst durch z.B. next_weekday - immer in der Hoffnung, dass es allzeit irgendeinen nächsten Termin geben wird.

ms_steini

oh vielen DANK, das sieht schon sehr gut aus

allerding benötige ich noch für das Datum einen entsprechenden "data-get-on='[]'"------ [aA-Za-z]* funktioniert bei Datum nicht

<div data-type="classchanger" data-device="AbfallTermine" data-get="Gruenbuendel_date"  data-get-on="[A-Za-z]*" data-on-class="hide" class="">

ms_steini

habs schon gefunden

^\s*(3[01]|[12][0-9]|0?[1-9])\.(1[012]|0?[1-9])\.((?:19|20)\d{2})\s*$

<div data-type="classchanger" data-device="AbfallTermine" data-get="Gruenbuendel_date"  data-get-on="^\s*(3[01]|[12][0-9]|0?[1-9])\.(1[012]|0?[1-9])\.((?:19|20)\d{2})\s*$" data-on-class="hide" class="">


oder gibt es eine elegantere Lösung ?

OdfFhem

@ms_steini

Angenommen, Du hast keinen Termin für Grünabfall und willst in dem Fall dann auch für Grünabfall keine Darstellung ...
... dann würde ein Widget vom Typ classchanger reichen.

Willst Du die Darstellung nicht komplett ausschalten, dann wäre ein alternativer Ausdruck für Datum  z.B. "[0-9.]*" oder "[0-9\.]".

ms_steini

@OdfFhem

ich habs jetzt so gelöst, genau so wie ich es haben möchte

        <div data-type="classchanger" data-device="AbfallTermine" data-get="Bioabfall_date" data-get-on="[0-9.]*" data-off-class="hide" class="">
            <div style="margin-top:-1px"
                    data-type="label"
                    data-device="AbfallTermine"
                    data-get="Bioabfall_date"
                    class="e-text e-color">
            </div>
        </div>
        <div data-type="classchanger" data-device="AbfallTermine" data-get="Bioabfall_date"  data-get-on="[0-9.]*" data-on-class="hide" class="">
            <div style=""
                    class="e-text e-color">
                    Termin
            </div>
        </div>



SUPER, vielein Dank nochmal!