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

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    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 last edited by

      Hallo,
      Widget: metro-the dialog / iframe

      Bei diesem Widget ist die Einstellung: Auto-zu nicht vorhanden.

      Kann man per css das widget z.B. nach 10 Sekunden schließen ?

      vielleicht hat ja jemand eine Idee ?

      mfg

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

        Ich muss nochmal genauer schreiben:

        Ziel ist es:
        Ich habe mehrere o.g. Widgets "metro-the dialog / iframe"
        Diese zeigen bei click in einem dialog cam streams an.
        Nun möchte ich, dass sich der dialog nach x Sekunden wieder automatisch schließt.
        (auto-zu ist bei diesem widget nicht vorhanden)

        Ein js-Script funktioniert:

           setState('vis.0.control.data',  'w04909'); 
            setState('vis.0.control.instance',  'FFFFFFFF');
            setState('vis.0.control.command', 'dialogOpen');
            setStateDelayed('vis.0.control.command', 'dialogClose', 5000);
        

        Aber wie bekomme ich mit, dass das widget angeklickt wurde und somit der dialog offen ist.

        Idee war, dies per css oder Script im Editor zu lösen.
        Aber da komme ich nicht weiter.
        @BananaJoe
        @liv-in-sky

        Habt ihr eine Idee?
        Ihr kennt euch da besser aus als ich.

        mfg
        Dieter

        BananaJoe OliverIO 2 Replies Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @bahnuhr last edited by BananaJoe

          @bahnuhr pfft ich nutze zwar Popups, die sind aber nur eine fest eingestellt Zeit zu sehen, ploppen also auf und gehen wieder zu.

          Und das mache ich mit "jqui - Container - Button - view in jqui Dialog"
          Der kennt ein "Auto schließen",
          Das Widget sitzt nicht sichtbar in der Menü-View und ist somit auf allen Views zu sehen,
          angesteuert wird es per

          5a288a72-9fff-4f2e-ab51-bb9b80c541cc-image.png

          w00319 ist dabei das jqui Widget das dann "geklickt" wird und aufpoppt für die eingestellte Zeit.

          Das habe ich aber so ganz am Anfang mal gebaut, also vor Jahren, ich musste gerade erst einmal schauen wie ich das gemacht hatte.

          Das vis-inventwo - Universal Switch - Widget kann das auch, eine View anzeigen wenn man da draufdrückt und wenn man will nach Zeit X wieder schließen.
          Ob man das wie das jqui auch per Skript triggern kann, habeich noch nicht getestet. Es hat aber einen "Objekt ID Datenpunkt", ich vermute da kann man einen True/False Datenpunkt setzen der den Zustand meldet (und ggf. darauf reagiert)

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

            @bahnuhr

            Bei der genauen Erklärung habe ich es nun verstanden.
            Bei vis1 ist jquery enthalten.
            über einen CSS Selector und query könnte man einen trigger auf das öffnen legen und dann nach einer gewissen Zeit per JavaScript den schließen Knopf drücken
            Allerdings habe ich zwar den METRO Adapter gefunden aber darin nicht das Widget das du oben benannt hast

            Kannst du da mal den GitHub link posten?

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

              @oliverio
              anbei widget:

              [{"tpl":"tplMetroTileFrameDialogNumber","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","hover":false,"transform":false,"bg_class":"","dialog_url":"http://192.168.243.32:1984/stream.html?src=Terrasse_1","dialog_width":"867px","dialog_height":"563px","dialog_title":"Terrasse_1","dialog_flat":true,"dialog_shadow":false,"dialog_draggable":true,"dialog_icon_class":"","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,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"dialog_modal":false,"g_badge":false,"dialog_scroll":"","g_icon":false,"icon_class":"icon-accessibility","badge_bg_class":"","brand_bg_class":"ribbed-steel"},"style":{"left":"235px","top":"285px","z-index":"2","width":"315px","height":"170px","border-radius":"15px","border-style":"solid","border-width":"2px","border-color":"rgb(170,170,170)"},"widgetSet":"metro"}]
              

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

              über einen CSS Selector und query könnte man einen trigger auf das öffnen legen und dann nach einer gewissen Zeit per JavaScript den schließen Knopf drücken

              hast du den Zweizeiler für mich ?

              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:

                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

                                    900
                                    Online

                                    32.1k
                                    Users

                                    80.6k
                                    Topics

                                    1.3m
                                    Posts

                                    3
                                    16
                                    662
                                    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