Also hier gleich mal vorweg meine Widgets:
! [{"tpl":"tplDwdAdapter","data":{"visibility-cond":"==","visibility-val":"false","oid-begin":"dwd.0.warning.begin","oid-end":"dwd.0.warning.end","oid-headline":"dwd.0.warning.headline","oid":"dwd.0.warning.description","oid-severity":"dwd.0.warning.severity","visibility-oid":"javascript.0.vis.wetterwarnung.bestaetigung1","name":"Popup - Wetterwarnung 1","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false},"style":{"left":"235px","top":"635px","color":"","width":"895px","height":"128px","background-color":"","padding":"","margin-top":"","font-size":"medium","z-index":"10","border-radius":"25px","border-style":"none","padding-top":""},"widgetSet":"dwd"},{"tpl":"tplMetroTileToggle","data":{"oid":"javascript.0.vis.wetterwarnung.bestaetigung1","visibility-cond":"==","visibility-val":"false","hover":false,"transform":false,"bg_class_false":"","bg_class_true":"","icon_class_false":"","icon_class_true":"","icon_badge_false":"","icon_badge_true":"","badge_bg_class_false":"","badge_bg_class_true":"","brand_bg_class_false":"","brand_bg_class_true":"","badge_top":"0","badge_left":"0","gestures-offsetX":0,"gestures-offsetY":0,"visibility-oid":"javascript.0.vis.wetterwarnung.bestaetigung1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"name":"Popup - Bestätigung Wetterwarnung 1"},"style":{"left":"235px","top":"635px","padding":"0px","width":"895px","height":"128px","z-index":"11","opacity":"0"},"widgetSet":"metro"}] !
Zwei Widgets. Das DWD Widget für die Warnung selbst, das Tile Toggle Widget zum manuellen bestätigen der Warnung oben drüber.
Mit dem Script wird es jetzt ein bisschen komplizierter. 😞 Da ich mir bis zu drei Wetterwarnungen anzeigen lasse, ebenso wie eine Meldung "Keine Wetterwarnungen vorhanden", ist in dem Script auch noch eine Variable enthalten, die mir Sagt ob überhaupt eine Wetterwarnung vorhanden ist.
Hier mal das Script mit kurzen Kommentaren:
! // Datenpunkte anlegen createState('vis.wetterwarnung.vorhanden', false, {name: 'Liegt mindestens eine Wetterwarnung vor?'}); // Variable für "Ist eine Wetterwarnung vorhanden?" createState('vis.wetterwarnung.bestaetigung1', false, {name: 'Bestätigung der Wetterwarnung1'}); // Variablen für die Bestätigung und damit die Sichtbarkeit der einzelnen Warnungen createState('vis.wetterwarnung.bestaetigung2', false, {name: 'Bestätigung der Wetterwarnung2'}); createState('vis.wetterwarnung.bestaetigung3', false, {name: 'Bestätigung der Wetterwarnung3'}); ! // Datenpunkt-IDs var idVorhanden = "vis.wetterwarnung.vorhanden"; var idBestaetigung1 = "vis.wetterwarnung.bestaetigung1"; var idWarnung1 = "dwd.0.warning.severity"; var idBestaetigung2 = "vis.wetterwarnung.bestaetigung2"; var idWarnung2 = "dwd.0.warning2.severity"; var idBestaetigung3 = "vis.wetterwarnung.bestaetigung3"; var idWarnung3 = "dwd.0.warning3.severity"; ! // Variablendeklaration und Initialisierung bei Scriptstart var stateVorhanden = getState(idVorhanden).val; var stateBestaetigung1 = getState(idBestaetigung1).val; var stateWarnung1 = getState(idWarnung1).val; var stateBestaetigung2 = getState(idBestaetigung2).val; var stateWarnung2 = getState(idWarnung1).val; var stateBestaetigung3 = getState(idBestaetigung3).val; var stateWarnung3 = getState(idWarnung1).val; ! // Funktion zum Ermitteln ob Wetterwarnungen vorliegen function setvorhanden() { if (stateWarnung1 !== 0 || stateWarnung2 !== 0 || stateWarnung3 !== 0) { // Wenn severity bei einer Warnung ungleich 0, dann liegt mindestens eine Warnung vor. setState(idVorhanden, true); } else { setState(idVorhanden, false); } } ! // Funktionsaufruf bei Scriptstart setvorhanden(); ! // Funktionsaufruf bei Änderung der Stati on(idWarnung1, function(dp) { // Wenn severity sich ändert... stateWarnung1 = dp.newState.val; // Neuen severity Wert in den state schreiben... setState(idBestaetigung1, false); // Bestätigung auf "nicht bestätigt setzten" setvorhanden(); // Funktion zum Vorhandensein aufrufen um auch den Status für das Vorhandensein einer Warnung zu aktualisieren }); on(idWarnung2, function(dp) { stateWarnung2 = dp.newState.val; setState(idBestaetigung2, false); setvorhanden(); }); on(idWarnung3, function(dp) { stateWarnung3 = dp.newState.val; setState(idBestaetigung3, false); setvorhanden(); }); !
Wo ich das hier aber gerade so nochmal durchdenke und teste fällt mir auf, dass in meinem Script noch ein Denkfehler ist. So wird aktuell der Status für die Bestätigung auch auf false gesetzt wenn eine Warnung aufgehoben wird (also z.B. severity von 1 auf 0 gesetzt wird).
Das fällt bei mir in vis aber nicht auf, da in diesem Fall meine Widgets sowieso durchsichtig sind… 🙂 Werde das nochmal ein bisschen umkonfigurieren müssen...
MfG,
André