Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. VIS1 - per css widget dialog beenden

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    VIS1 - per css widget dialog beenden

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active @OliverIO last edited by

      @oliverio sagte in VIS1 - per css widget dialog beenden:

      darin nicht das Widget

      e3ddf998-a35f-4631-9c7c-62281c2bc183-image.png

      1 Reply Last reply Reply Quote 0
      • bahnuhr
        bahnuhr Forum Testing Most Active @OliverIO last edited by

        @oliverio sagte in VIS1 - per css widget dialog beenden:

        Allerdings habe ich zwar den METRO Adapter gefunden aber darin nicht das Widget das du oben benannt hast

        tschuldigung

        oben stand:
        metro-the dialog / iframe

        richtig ist:
        metro - iframe Tile Dialog / iframe

        OliverIO 1 Reply Last reply Reply Quote 0
        • OliverIO
          OliverIO @bahnuhr last edited by OliverIO

          @bahnuhr

          hier kannst du mal probieren.
          setTimeout in Zeile 1 wartet 2 Sekunden um sicherzustellen, das das widget von vis auch schon erzeugt worden ist. wenn du viele widgets hast, musst du die zeit in zeile 8 vergrößern 2000 entspricht 2 sekunden
          in zeile 3 wird nach widgets gesucht, die zur css klasse "metro-autoclose" gehören und reagiert dann auf click touchstart ereignis.
          metro-autoclose musst du auch im widget im feld General/Common Class eintragen
          dd3bb160-d0b4-4cf1-b116-d3cbf0f52952-image.png
          zeile 4 setzt dann wieder einen timeout um dann in zeile 5 die funktion zum schließen des dialogs auszuführen.
          die zeit kannst du in zeile 2 mit der variable time einstellen. ich habe die mal hier mit 1000ms = 1 Sekunde sehr kurz eingestellt zum testen

          setTimeout(()=>{
              let time = 1000;
              $(".metro-autoclose .vis-widget-body").on('click touchstart', function () {
                  setTimeout(()=>{
                      $.metroDialog.close();
                  },time);
              });
          },2000);
          
          bahnuhr 2 Replies Last reply Reply Quote 1
          • bahnuhr
            bahnuhr Forum Testing Most Active @OliverIO last edited by

            @oliverio
            Super, vielen Dank.
            Funktioniert perfekt.

            Klasse.

            mfg
            Dieter

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active @OliverIO last edited by

              @oliverio
              Noch ne Frage, wenn ich darf.

              Kann man in dem Editor Skript auch ein Bindung auf einen DP verarbeiten ?

              Dies z.B. funktioniert nicht:
              let time = {javascript.0.System.Sonstige.VIS_Video_close}

              Die Klammern stören.

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @bahnuhr last edited by

                @bahnuhr
                ja das geht mit kleinen umwegen
                als erstes musst du dafür sorgen das der datenpunkt in vis abonniert ist.
                also am besten einfach ein number widget nehmen und dort die id eintragen

                wenn du das widget verstecken wills (kann auch hintern einem anderen widget liegen), kannst du das mit css machen

                hier die widget id eintragen

                #w00000 {
                      visibility:hidden;
                  }
                  
                

                oder zur wiederverwendung einen eigenen klassennamen nehmen
                und den dann bei general/css class eintragen (dort dann ohne punkt)

                .versteckt {
                      visibility:hidden;
                  }
                

                im skipt kannst du dann

                let time = {javascript.0.System.Sonstige.VIS_Video_close}

                mit

                let time = vis.states["javascript.0.System.Sonstige.VIS_Video_close.val"]
                

                ersetzen

                bahnuhr 1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @OliverIO last edited by bahnuhr

                  @oliverio
                  So Rückinfo von mir.
                  Klappt fast.

                  habe in VIS mir einen Slider eingebaut, der den num DP entsprechend ändert.

                  Das Skript sieht nun so aus:

                  setTimeout(()=>{
                      //let time = 10000;
                      let time = vis.states["javascript.0.System.Sonstige.VIS_Video_close.val"];
                      $(".metro-autoclose .vis-widget-body").on('click touchstart', function () {
                          setTimeout(()=>{
                              $.metroDialog.close();
                          },time);
                      });
                  },3000);
                  

                  Habe eben den DP auf 4000 geändert.
                  Dann VIS neu geladen und der dialog wurde nach 4 sek. geschlossen.
                  Dann den Slider geändert auf 8000.
                  Dialog geöffnet, aber wieder geschlossen nach 4 Sek.

                  Kann es sein, dass der Wert nur geändert / aktualisiert wird, wenn die VIS neu geladen wird.

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @bahnuhr last edited by

                    @bahnuhr sagte in VIS1 - per css widget dialog beenden:

                    vis.states["javascript.0.System.Sonstige.VIS_Video_close.val"];

                    das let time muss in eine andere zeile verschoben werden.
                    ich hab es oben platziert das du es einfacher findest.
                    damit ist der wert aber nur einmal bei start von vis gelesen worden.
                    durch das verschieben wird es nun kurz nach dem klick neu gelesen.
                    dann müsste es funktionieren

                    setTimeout(()=>{
                        $(".metro-autoclose .vis-widget-body").on('click touchstart', function () {
                            let time = vis.states["0_userdata.0.testFolder.b2.val"];
                            setTimeout(()=>{
                                $.metroDialog.close();
                            },time);
                        });
                    },2000);
                    
                    bahnuhr 3 Replies Last reply Reply Quote 1
                    • bahnuhr
                      bahnuhr Forum Testing Most Active @OliverIO last edited by

                      @oliverio
                      Rückinfo,
                      klappt nun alles wie gewünscht.

                      Vielen lieben Dank und einen schönen Abend.

                      1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active @OliverIO last edited by

                        @oliverio
                        Nochmal Rückinfo.

                        Es funktioniert doch nicht zuverlässig.
                        Rufe ich iob neu auf; dann kommt die default seite.
                        Wechsel zur Video view -> schließen funktioniert nicht.
                        Erst reload der video view -> dann klappt es.

                        Nun habe ich mehrere iob im Haus verteilt.
                        Wenn es bei dem einen tablet dann geht, gehen die anderen nicht.

                        Folglich: Es ist eine Möglichkeit, die aber (zumindest für mich) nicht zuverlässig funktioniert.

                        Hast du eine Idee was da falsch läuft.

                        mfg
                        Dieter

                        1 Reply Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active @OliverIO last edited by

                          @oliverio
                          Das mit dem editor Skript hat nicht zuverlässig funktioniert.

                          Habs jetzt wie folgt gelöst:
                          Per Klick wird DP auf true gesetzt und dann per Sichtbarkeit das widget eingeblendet.
                          Klappt.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          455
                          Online

                          32.3k
                          Users

                          80.9k
                          Topics

                          1.3m
                          Posts

                          3
                          16
                          772
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo