Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues widget: Nur Aktive "Lampen" anzeigen + ausschalten ermöglichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    Wo hast du den Stateswitch im Menü genau? Kannst du mal deine rooms_menu.html zeigen?

    Kommentar


      #47
      Hallo Smai,

      code anbei

      Code:
      /**
      * -----------------------------------------------------------------------------
      * @package     smartVISU
      * @author      Martin Gleiß
      * @copyright   2012 - 2015
      * @license     GPL <http://www.gnu.de>
          * ----------------------------------------------------------------------------- 
          */
      
      
      <ul data-role="listview" data-dividertheme="c"> 
      
              <li data-icon="false">
                  <a href="index.php?page=room_gaeste">
                      <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                      <div class="ui-li-aside">
                          {{ basic.stateswitch('', 'eg.gaeste.licht') }}
      
                      </div>
                  </a>
              </li>
      </ul>

      Kommentar


        #48
        Was genau funzt nicht? Dass das Icon nicht verschwindet?
        Schon mit {{ basic.stateswitch('', 'eg.gaeste.licht', '', '', '', '', ['hidden', '']) }} probiert?

        Kommentar


          #49
          es ist sehr seltsam.

          es funktioniert nur wenn ich noch vorher eine Zeile einfüge, ohne die hidden hidden Zeile funktioniert es nicht

          Code:
                  <li data-icon="false">
                      <a href="index.php?page=room_gaeste">
                          <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                          <div class="ui-li-aside">
          
                                       {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', ['hidden', 'hidden']) }}
                                       {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', ['hidden', 'light_ceiling_light.svg']) }}
                                       {{ basic.stateswitch('', 'eg.gaeste.stedo', 'icon', '', ['hidden', 'message_socket.svg']) }}
                          </div>
                      </a>
                  </li>

          Kommentar


            #50
            Das hidden ist kein Icon sondern eine "Farbe" und gehört damit nicht in den 5. sondern in den 7. Parameter.

            Kommentar


              #51
              das ändert aber nichts am Effekt.

              nachfolgend nur 2 Zeilen:
              Die Lampe lässt sich nicht schalten.
              Zudem wird sie als eingeschaltet im Seitenmenü angezeigt.

              ganz unten mit 3 Zeilen, funktioniert.

              Code:
                      <li data-icon="false">
                          <a href="index.php?page=room_gaeste">
                              <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                              <div class="ui-li-aside">
              
                                           {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', 'light_light.svg', '', ['hidden', 'icon1']) }}
                                           {{ basic.stateswitch('', 'eg.gaeste.stedo', 'icon', '', 'message_socket.svg', '', ['hidden', 'icon1']) }}
                              </div>
                          </a>
                      </li>
              Code:
                      <li data-icon="false">
                          <a href="index.php?page=room_gaeste">
                              <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                              <div class="ui-li-aside">
              
                                           {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', '', '', ['hidden', 'hidden']) }}
                                           {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', 'light_light.svg', '', ['hidden', 'icon1']) }}
                                           {{ basic.stateswitch('', 'eg.gaeste.stedo', 'icon', '', 'message_socket.svg', '', ['hidden', 'icon1']) }}
                              </div>
                          </a>
                      </li>

              Kommentar


                #52
                Ich habe die Ursache endlich gefunden:
                Du musst das ul-li-aside ausserhalb des <a> Tags schieben, so:
                Code:
                        <li data-icon="false">
                            <a href="index.php?page=room_gaeste">
                                <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                            [MARKIEREN]</a>[/MARKIEREN]
                            <div class="ui-li-aside">
                                         {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', 'light_light.svg', '', ['hidden', 'icon1']) }}
                                         {{ basic.stateswitch('', 'eg.gaeste.stedo', 'icon', '', 'message_socket.svg', '', ['hidden', 'icon1']) }}
                            </div>
                        </li>
                Wenn das ui-li-aside innerhalb des <a> Tags liegt und einen stateswitch enthält, treibt jQuery Mobile Unfug damit und zerhackt ihn.

                Ich versuche noch herauszufinden, ob ich am Stateswitch etwas ändern kann, um das zu vermeiden. Aber grundsätzlich ist es ein Bug von jQuery Mobile, da habe ich keinen direkten Einfluss.


                NACHTRAG:

                Dein Workaround funktioniert übrigens auch, wenn du ein simples leeres <a> Tag vor den Stateswitch setzt:
                Code:
                        <li data-icon="false">
                            <a href="index.php?page=room_gaeste">
                                <img class="icon icon0" src="{{ icon0 }}scene_visit_guests.svg"/><h3>Gästezimmer</h3>
                                <div class="ui-li-aside">
                                             <a></a>
                                             {{ basic.stateswitch('', 'eg.gaeste.licht', 'icon', '', 'light_light.svg', '', ['hidden', 'icon1']) }}
                                             {{ basic.stateswitch('', 'eg.gaeste.stedo', 'icon', '', 'message_socket.svg', '', ['hidden', 'icon1']) }}
                                </div>
                            </a>
                        </li>
                Da dies eigentlich keine Auswirkungen haben sollte, werde ich das evtl. direkt im Stateswitch einbauen.


                NAHTRAG 2:
                Gesagt - getan, der Workaround ist committed.
                Zuletzt geändert von smai; 17.10.2017, 14:59.

                Kommentar


                  #53
                  super arbeit. danke dir. funktioniert

                  Kommentar


                    #54
                    Hallo Zusammen,

                    ich hab noch eine Kleinigkeit. Idealerweise soll ein Icon angezeigt werden und ein Text, hier Test.
                    In der Praxis ergibt sich eine unschöner schwarzer Kreis.


                    Wenn ich den Text 'Test' einfach gegen '' ersetzte, ist die Anzeige ok.

                    Ist das Phänomen bekannt?
                    Gibts hier ein Workaround

                    danke und Grüße
                    Code:
                            <li data-icon="false">
                                <a href="index.php?page=room_diele">
                                    <img class="icon icon0" src="{{ icon0 }}scene_stairs.svg"/><h3>Diele/Treppe</h3>
                                    <div class="ui-li-aside">
                                        <a></a>
                                                 {{ basic.stateswitch('', 'freigabe.bwm_kg.flur', 'icon', '', 'message_presence_disabled.svg','Test', ['hidden','icon1']) }}
                                    </div>
                                </a>
                            </li>

                    Kommentar


                      #55
                      Stimmt, werde ich korrigieren.

                      Kommentar


                        #56

                        Kommentar


                          #57
                          super, danke dir!

                          Kommentar


                            #58
                            Hallo,
                            ich möchte das Thema noch einmal aufwärmen und fragen, ob es eine Möglichkeit gibt, dass ganze zu automatisieren?
                            Mit automatisieren meine ich, dass man nicht alle "zu überwachenden Items" mit einem stateswitch mit "hidden" selbst in der Visu erstellen muss, sondern, dass dies automatisch bspw. über eine Filter (alle Items mit "licht" im Pfad oder alle Items aus der gleichen Seite) erstellt wird.

                            Danke Euch.

                            Kommentar


                              #59
                              Grundsätzlich wird das mit der kommenden Version von shNG möglich sein, wenn die items klar strukturiert sind. Das neue smartvisu-Plugin wird eine Datei „masteritem.json“ in das konfigurierte Visu-Verzeichnis schreiben, die alle items und deren Datentypen enthält. Gebraucht wird die Datei für den erweiterten Template Checker und den Widget Constructor.

                              Lösungsansatz für ein entsprechendes Widget:
                              • es werden beliebig viele item-Zweige als Parameter angeboten, z.B. „haus1.eg.kueche.decke.licht.schalten.uzsu“.
                              • Um die Suche flexibel an die vorhandene item-Struktur anzupassen, legt der Anwender fest, in welchen Zweigen nach Merkmalen wie „Licht“ und „schalten“ gesucht werden soll. D.h. für eine Struktur „eg.licht.kueche.decke.schalten“ gibt er - linksbündig notiert - folgendes an:
                                Code:
                                {{ widget.noname('', 'licht', '', '', 'schalten') }}
                              • das Widget besteht überwiegend aus Twig-Befehlen. Es liest die masteritem.json in ein Array ein und arbeitet dieses in einer Schleife ab. Für jeden Treffer wird ein stateswitch angelegt. Beispiele für solche Schleifen finden sich u.a. in der Docu in widget.html und in widget_design.icons.html, sowie im multimedia.slideshow widget.
                              Jetzt brauchen wir nur noch einen Freiwilligen, der das programmiert

                              Gruß
                              Wolfram

                              Kommentar


                                #60
                                Als Grundlage für die Aufgabe habe ich die Funktion twig_items() erstellt und in der index.php angemeldet. Die Funktion wird im Widget mit
                                Code:
                                {% set itemlist = items() %}
                                aufgerufen und liefert ein Array aller items oder bei Fehler in itemlist[0] den String 'masteritem file not found'. Dies ist jetzt im develop verfügbar.

                                Gruß
                                Wolfram

                                P.S.: geändert von der Liste auf ein Array, da dies in twig leichter zu verarbeiten ist.
                                Zuletzt geändert von wvhn; 06.01.2021, 22:41.

                                Kommentar

                                Lädt...
                                X