Ankündigung

Einklappen
Keine Ankündigung bisher.

Featurewunsch: dynamische Liste aus der man selektieren kann

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

    Featurewunsch: dynamische Liste aus der man selektieren kann

    Hi!

    Ich hatte es in diesem Beitrag https://knx-user-forum.de/322960-post9.html schon mal geschrieben: Für einige Anwendungen, wie eben die beschriebene Playlisten-Selektion, wünsche ich mir ein "irgendwas.selection_list", was

    - eine GAD hat zum empfangen der Listeneinträge
    - eine GAD die anfangs gelesen werden könnte, um den bereits "vorselektierten" Listeneintrag zu visualisieren und dann schreibend die (neue) Selektion zurückgibt

    erstere GAD müsste ein Format/Trennzeichen vereinbaren und aus "ID=Value"-Paaren bestehn, letztere könnte denke ich am praktischsten direkt die ID zurückgeben (die auch Text sein könnte!?).

    Damit ließen sich Zustände, komplexere Szenen und evtl. sogar Uhrzeit-Einstellungen (jeweils Listen 0-23 und 0-59) realisieren.

    Ich hätte es schon selbst gemacht, aber ich blick durch das HTML/CSS/JSON/JS/AJAX/PHP wirklich nicht tief genug durch und weiß nicht, wer da wen wie verarbeitet. Gerne löte ich eine Art Demo-Logic oder so für das smarthome.py Backend zusammen.

    Vielen Dank!

    Grüße
    Robert

    #2
    Gerne will ich es auch mit Hilfe versuchen.

    Popup - jQuery Mobile Demos

    Da gibt es die Möglichkeit das in jQueryMobile zu nageln. Aber wie kriege ich dynamisch die Liste "<li>...</li>" hin und vor allem - wie wieder zurück? Irgendwo PHP etc.

    Vielleicht hat jemand "Lust"/Muße, anhand dieses Beispiels mal das tutorienartig durchzuexerxieren? Also "erstmal widget bauen mit dem jquery, und dann da und da eine PHP"?

    Dann könnte man evtl. mit Fleiß auch die schönen Texteingabefelder und Nummernscroller (Textinput - jQuery Mobile Demos) nutzbar machen.

    Ich denk dabei: Dank smarthome.py müssen wir keine Klimmzüge machen, um Textfelder > 14 Byte zu verarbeiten. Dann "müssen" wir das doch auch nutzen!

    Grüße
    Robert

    Kommentar


      #3
      Featurewunsch: dynamische Liste aus der man selektieren kann

      Ich denke, die List sollte eher mit JavaScript als mit PHP gebaut werden.
      Mit freundlichen Grüßen
      Niko Will

      Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
      - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

      Kommentar


        #4
        Ich habe keinen Plan...

        Kommentar


          #5
          ja, so ganz trivial ist es auch nicht.

          apps/app_tv_movie zeigt wie man listen dynamisch bauen kann.

          Die Frage ist eher, wo genau kommen die Daten für die Liste her? Wer liefert wie die Listeneinträge?

          Ideen?

          Gruss
          Join smartVISU on facebook. Web: smartvisu.de.
          Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

          Kommentar


            #6
            Hi Martin,

            die Daten für die Liste kommen aus der erste GAD. Das Item wäre im smarthome.py-Backend als "normaler" String angelegt. Beispiel wäre dann ein String vom Format "ID1=Erster Eintrag Text|ID2=Zweiter Eintrag Text|ID3=Dritter Eintrag Text". Dabei sollte der Text selbst immer Text sein, während die IDs evtl. auch als Zahlen interpretiert werden können, so dass das zweite GAD evtl. auch als num-Item im Backend angelegt sein könnte.

            Idee/Beispiele:
            Playlisten-Auswahl:
            Code:
            "/home/robert/playlist1.m3u=Roberts Lieblingssender|/home/Robert/internetradio.m3u=Internetradio"
            angezeigt würde
            • Roberts Lieblingssender
            • Internetradio
            und beim Auswählen würde das zwei GAD geschrieben mit
            Code:
            "/home/robert/playlist1.m3u"
            oder
            Code:
            "/home/robert/internetradio.m3u"
            oder

            Code:
            "1=Szene Schlafen|2=Szene Essen|3=Vergnügung"
            was dann mit etwas Intelligenz sofort auf ein num-Item abgebildet werden könnte.

            Die String sollten dann zusätzlich escaped werden (am besten Standardmäßig per urllib2 in Python, als '=', ' ' etc alles ersetzen)

            in /widgets/Basic.html
            Code:
            /**
             * A list with selectable items
             * 
             * @param       unique id for this widget
             * @param       a gad/item for the list 
             * @param       a gad/item for the selected item 
             * @param       the text to be displayed on top of the list
             */
            {% macro list(id, gad_list, gad_item, txt ) %}
              <ul  id="{{ uid(page, id) }}" data-widget="basic.list" data-item="{{ gad_list }}, {{ gad_item }}"
                  data-role="listview" data-inset="true" style="min-width:210px;" data-dividertheme="c" data-mini="true">  
                          <li data-role="divider" data-theme="c">{{ txt }}</li>
                          <li data-icon="false"><a href="#">View details</a></li>
                          <li data-icon="false"><a href="#">Edit</a></li>
                          <li data-icon="false"><a href="#">Disable</a></li>
                          <li data-icon="false"><a href="#">Delete</a></li>
                      </ul>
            {% endmacro %}
            in /widgets/widget.js
            Code:
            // ----- basic.list ------------------------------------------------------------
            $(document).delegate('a[data-widget="basic.list"]', { 
             'update': function(event, response) {
              // hier muss der Liste mit clear und dann append ausgefüllt werden
                },
             'click': function(event) {
                    var items = $('#' + uid).attr('data-item').explode();
             
                    io.write(items[1], 'Test');
             }
            });
            wird angezeigt, ist aber sicher nicht mal 20% der Arbeit...

            Ja, ich weiß - nicht in die Ordner schreiben - aber ich weiß nicht wie ich die widget.js in meinem Ordner erweitern soll? Einfach komplett dort speichern?

            Grüße
            Robert

            Kommentar


              #7
              Zitat von Robert Beitrag anzeigen
              Ja, ich weiß - nicht in die Ordner schreiben - aber ich weiß nicht wie ich die widget.js in meinem Ordner erweitern soll? Einfach komplett dort speichern?
              Nein, lege eine leere "visu.js" an, und dort nur die neuen Sachen reinschreiben die du neu machst.

              Gruss
              Join smartVISU on facebook. Web: smartvisu.de.
              Dir gefällt smartVISU? Bitte spenden für die Weiterentwicklung.

              Kommentar


                #8
                hoffnungsvolle Nachfrage: wird an dieser Baustelle evtl. zur 2.6 gebaut?

                (irgendwann hieß es mal es gebe Verhandlungen...)

                Mittlerweile sind doch so einige Anwendungsfälle vorhanden, in denen man eine Liste gebrauchen könnte. Und das Selektieren...

                Kommentar


                  #9
                  Featurewunsch: dynamische Liste aus der man selektieren kann

                  Wäre da auch dran interessiert. Brauch das für die Implementierung der UZSU in die smartVISU und sh.py.
                  Mit freundlichen Grüßen
                  Niko Will

                  Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                  - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                  Kommentar

                  Lädt...
                  X