Ankündigung

Einklappen
Keine Ankündigung bisher.

KWL Widget

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

    #16
    Cannon
    Wenn das Widget fertig ist, wäre es klasse, wenn Du es auf smartvisu-newstuff zur Verfügung stellen könntest, am besten im Bereich "devices" und mit der entsprechenden items.yaml.

    Gruß
    Wolfram

    Kommentar


      #17
      Zitat von wvhn Cannon Beitrag anzeigen
      Wenn das Widget fertig ist, wäre es klasse, wenn Du es auf smartvisu-newstuff zur Verfügung stellen könntest, am besten im Bereich "devices" und mit der entsprechenden items.yaml.
      Die Items sind nicht fest verdrahtet. Man bindet das, wie ein normales Widget ein. Ich würde vorschlagen, dass ich die Basisanzeigen mache, dann eine erste Version veröffentliche und dann noch weiter mache. Sonst wird man ja nie fertig. In der ersten Version wird man sich alles anzeigen lassen können und in der kommenden dann auch Einstellungen vornehmen können.

      Kommentar


        #18
        Jetzt brauche ich noch mal Hilfe, um die letzten Details umzusetzen. Ich kriege einen if-Vergleich nicht so recht hin:

        Code:
        {% if bypass_open %}
        bypass_open wird über die Parameter des Makros im Widget übergeben. Die Übergabe erfolgt dann entsprechend als Item.In diesem Fall ist das Item true/false. Aber ich bin nicht sicher, ob der Vergleich so richtig ist. Denn es funktioniert nicht richtig. Alternativen mit "== true" funktionieren auch nicht.

        Kommentar


          #19
          Ich glaub das geht so nicht.. du musst vl das basic.print mit dem javascript zusatz nutzen..
          twig wird nur beim erstellen der seite genutzt, alles was danach passiert bekommt es nicht mit..

          Edit: https://docu.smartvisu.de/2.9/index....et_basic.print hier unter advanced..

          Kommentar


            #20
            Zitat von Bonze Beitrag anzeigen
            glaub das geht so nicht.. du musst vl das basic.print mit dem javascript zusatz nutzen..
            twig wird nur beim erstellen der seite genutzt, alles was danach passiert bekommt es nicht mit..
            Ich habe das auch schon befürchtet... Im Prinzip geht es darum den Hintergrund zu ändern, dass ist nämlich das Bild mit dem Haus usw. Das funktioniert leider nicht mit basic.print.

            HTML-Code:
            {% if bypass_open %}
                <img id='{{id}}-kwl-base' src="{{kwl_pic_dir}}/kwl_bypass.png" alt="Ventilation Unit">
            {% else %}
                <img id='{{id}}-kwl-base' src="{{kwl_pic_dir}}/kwl_normal.png" alt="Ventilation Unit">
            {% endif %}
            Noch eine andere Idee?

            Sonst für den späteren Teil des Widgets brauche ich allerdings basic.print, da kann ich mir anschauen, ob ich das da verwenden kann.

            Kommentar


              #21
              Bonze hat recht. Das geht so nicht. Twig rendert den statischen Teil der Visu-Seiten. Da kannst Du keine Abhängigkeiten von dynamischen Daten realisieren.

              Der Hinweis auf basic.print ist ebenfalls richtig. Dort kannst Du ein Script definieren, das der ID {{id}}-kwl-base dynamisch das entsprechende icon zuweist. Schau Dir in der Doku die Beispiele im Abschnitt “Advanced Scripting“ an.

              Der Selector ist
              Code:
              $('#{{id}}-kwl-base')
              und statt 'css' musst Du 'attr' verwenden.

              Gruß
              Wolfram

              Kommentar


                #22
                Entschuldige bitt, aber irgendwie kriege ich das nicht hin. Ich werde aus der Doku nicht schlau. So geht das aber nicht:

                Code:
                 <img id='{{id}}-kwl-base' src=""/>
                {{ basic.print('', kwl_pic_dir~'/kwl_normal.png', 'script', $('{{id}}-kwl-base').attr("src", VAR)') }}

                Kommentar


                  #23
                  Ich hab auch nicht die Zeit, alles bis zum letzten Detail selbst zu entwerfen und durchzutesten. Deshalb kann ich nur Hilfe zur Selbsthilfe leisten.
                  "bypass_open" ist Dein item. Also muss das auch das item in basic.print sein.
                  Code:
                  <img id='{{id}}-kwl-base' src=""/>
                  {{ basic.print('', 'bypass_open', 'script', '$("#{{id}}-kwl-base").attr("src", " Ausdruck ") ') }}
                  Statt des Worts Ausdruck musst Du jetzt noch den konditionalen Ausdruck einsetzen, der wenn VAR = true (1) ist, das eine Bild einsetzt und sonst das andere. VAR ist der Wert des items.

                  Aus der Doku zeigt das Beispiel ganz gut, wie das geht:
                  Code:
                  {{ basic.print('', 'bath.trigger', 'script', '$("#bathval").css("color", (VAR1 < 400 && VAR1 > 300) ? "#33FF33" : (VAR1 < 200) ? "#FF6600" : "#FFFFFF")') }}
                  Zuletzt geändert von wvhn; 08.03.2022, 10:55.

                  Kommentar


                    #24
                    Es wird dann ein Leerer Bild rahmen im Html teil eingefügt und die src änderst du zur Laufzeit..
                    HTML-Code:
                    <img id='{{id}}-kwl-base' src="" alt="Ventilation Unit Bild"/>
                    {{ basic.print('', 'bypass_open', 'script', '$("{{id}}-kwl-base").attr("src", (VAR1 = True) ? "urlbild1" : (VAR1 = False) ? "Urlbidl2" )) ') }}
                    so in der art, is aber ungetestet..

                    Kommentar


                      #25
                      Zitat von wvhn wvhn Beitrag anzeigen
                      Ich hab auch nicht die Zeit, alles bis zum letzten Detail selbst zu entwerfen und durchzutesten. Deshalb kann ich nur Hilfe zur Selbsthilfe leisten.
                      Das verstehe ich natürlich. Danke für die Hilfe!

                      Zitat von Bonze Beitrag anzeigen
                      Es wird dann ein Leerer Bild rahmen im Html teil eingefügt und die src änderst du zur Laufzeit..
                      Das Prinzip ist mir jetzt klar, Danke dafür!

                      Ich habe das jetzt mal probiert und ein paar Korrekturen vorgenommen, dennoch in etlichen Varianten getestet. Es werden aber immer nur "---" angezeigt und der alternative Text anstatt des Bildes. Das heißt der Austausch findet nicht statt.

                      Die Konditionsabfrage könnte man ja auch erst mal kürzen. So sollte es ja sein. So kenne ich das aus anderen Sprachen.

                      Kondition ? bei wahr : bei falsch

                      HTML-Code:
                      {% set kwl_base_dir = 'pages/moselstrasse/widgets' %}
                      <img id='{{id}}kwl_base' src="" alt="Ventilation Unit"/>
                      {{ basic.print('', bypass_open, 'script', '$("{{id}}kwl_base").attr("src", (VAR1 = True) ? "{{kwl_pic_dir}}/kwl_bypass.png" : "{{kwl_pic_dir}}/kwl_normal.png" )') }}
                      @wvhn: Du hast da immer noch eine Route # vor. Ist das richtig so?

                      bypass_open ist übrigens nicht das Item, sondern nur ein Parameter, der das Item enthält. Die Hochkommas müssten also wegfallen. So wie hier:

                      HTML-Code:
                      {{ basic.print(id~'kwl_outdoor_temp', outdoor_temp, '%d °C', 'Math.round(VAR)') }}
                      Verwirrung stiftet der Unterschied zwischen Anführungszeichen und Hochkommas und der Einsatz der Variablen. Aber selbst wenn ich es direkt eingebe (ohne Variablen bei den Bildern), geht es nicht.

                      Müsste es nicht auch VAR heißen, anstatt VAR1, wenn nur ein Parameter angegeben wurde?
                      Zuletzt geändert von Cannon; 08.03.2022, 19:14.

                      Kommentar


                        #26
                        Das Hashtag ist wichtig, um den Selector als ID zu kennzeichnen.
                        Code:
                        (VAR1 = True)
                        ist falsch, weil ein = fehlt und "True" SV-intern als "1" geführt wird.
                        Code:
                        (VAR == 1)
                        sollte passen. Ansonsten stimmt die Syntax.

                        Kommentar


                          #27
                          Zitat von Cannon Cannon Beitrag anzeigen
                          Verwirrung stiftet der Unterschied zwischen Anführungszeichen und Hochkommas
                          Dies dient der 'Schachtelung' von Ausdrücken in Ausdrücken --> alert('alert("text")').

                          Zitat von Cannon Cannon Beitrag anzeigen
                          HTML-Code:
                          {{ basic.print(id~'kwl_outdoor_temp', outdoor_temp, '%d °C', 'Math.round(VAR)') }}
                          Kommt mir irgendwie bekannt vor. Viel Erfolg!

                          /tom

                          Kommentar


                            #28
                            Zitat von wvhn Beitrag anzeigen
                            Code:

                            (VAR == 1)
                            sollte passen. Ansonsten stimmt die Syntax.
                            Ich hatte das auch vermutet und habe dazu mal bei Javascript gelesen. Aber da war das if nur mit einem Gleichheitszeichen, deshalb hatte ich das gelassen. Am Ende müsste dann zwar nur der Vergleich nicht stimmen, aber immerhin was angezeigt werden. Funktioniert aber nicht.

                            Zitat von Tom Bombadil Beitrag anzeigen
                            Dies dient der 'Schachtelung' von Ausdrücken in Ausdrücken --> alert('alert("text")').
                            Das heißt ich kann das schachteln, wierum ich will? Beispiele:

                            Code:
                            <img id='{{id}}kwl_base' src="" alt="Ventilation Unit"/>
                            
                            <img id="{{id}}kwl_base" src="" alt="Ventilation Unit"/>
                            
                            alert('alert("text")')
                            
                            alert("alert('text')")
                            Wäre alles richtig?
                            Zitat von Tom Bombadil Beitrag anzeigen
                            Kommt mir irgendwie bekannt vor. Viel Erfolg!
                            Ja ist auch von dir übernommen. Das neue Widget läuft auch, bis auf den Umstand hier mit diesem dynamischen Bild.
                            Zuletzt geändert von Cannon; 08.03.2022, 20:49.

                            Kommentar


                              #29
                              Ich habe das Problem jetzt noch weiter eingegrenzt:

                              HTML-Code:
                              {{ basic.print('', bypass_open, 'script', '$("#kwl_base").attr("src", "pages/moselstrasse/pics/kwl/kwl_bypass.png")') }}
                              So geht es. Die Variablen werden einfach an keiner Stelle umgesetzt und ohne die ist das kaum vernünftig lösbar. Man sieht das auch im Inspektor, dass die Variablen mit dem {{}} nicht umgewandelt werden.

                              P.S.: Ich habs stark vereinfacht, um andere Fehler auszuschließen.

                              Kommentar


                                #30
                                Das ist immer ziemlich tricky mit den geschweiften Klammern. Anstelle
                                Code:
                                "{{kwl_pic_dir}}/kwl_bypass.png"
                                musst Du wahrscheinlich
                                Code:
                                kwl_pic_dir~“/kwl_bypass.png"
                                schreiben.

                                Kommentar

                                Lädt...
                                X