Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Json in DP - als Dropdown in VIS

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Json in DP - als Dropdown in VIS

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

      Hallo,

      ich habe folgendes json in einem DP:

      [
        "07.06.2022 um 20:43:06.jpg",
        "07.06.2022 um 20:42:50.jpg",
        "07.06.2022 um 20:41:05.jpg",
        "07.06.2022 um 18:06:32.jpg",
        "06.06.2022 um 19:23:25.jpg",
        "06.06.2022 um 19:14:28.jpg",
        "06.06.2022 um 15:52:54.jpg",
        "06.06.2022 um 15:38:36.jpg",
        "06.06.2022 um 14:58:27.jpg",
        "test4.jpg",
        "test3.jpg",
        "test2.jpg"
      ]
      

      Nun möchte die einzelnen Werte per dropdown in einem widget auswählen können.
      Und dann idealerweise die Auswahl in einem anderen DP schreiben (das würde ich aber auch per script machen)

      Gibt es so ein widget ?

      mfg
      Dieter

      OliverIO F 2 Replies Last reply Reply Quote 0
      • OliverIO
        OliverIO @bahnuhr last edited by

        @bahnuhr
        ich kenne keines.
        du könntest dir aber selber eines bauen mit
        https://forum.iobroker.net/topic/31521/test-widget-json-template?_=1654678902234

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

          @oliverio sagte in Json in DP - als Dropdown in VIS:

          @bahnuhr
          ich kenne keines.
          du könntest dir aber selber eines bauen mit
          https://forum.iobroker.net/topic/31521/test-widget-json-template?_=1654678902234

          Ja, das hab ich mir schon einmal angeschaut.
          War mir aber auf den ersten Blick zu hoch.
          Ich schaue es mir nochmal an.

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

            @bahnuhr

            hier mal ein testtemplate um den datenpunkt als dropdown auszugeben
            im widget unter json_oid einfach den datenpunkt angeben mit dem json drin.

            unter json_template den folgenden text einfügen

            <select name="mydropdown" size="1">
            <% for (var i = 0; i<data.length;i++) { %>
              <option><%- data[i] %></option>
            <% } %>
            </select>
            

            sieht dann aufgeklappt so aus

            459eda67-3cef-4acc-a396-ebb4cd2ff0e9-image.png

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

              @oliverio

              Super, cool.
              Ich probier dies aus.
              Danke.

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

                @oliverio

                noch ne Frage:
                Wenn man da nun was auswählt; wo wird die Auswahl dann gespeichert ?
                Und kann man noch HIntergrund- und Schriftfarbe und Schriftgröße ändern ?

                Ansonsten klappt dropdown und Auswahl.

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

                  @bahnuhr
                  ersteinmal ist die auswahl so gespeichert, wie es der browser immer macht.
                  abfragen kann man den wert in javascript.
                  wo willst du ihn den haben?

                  stylen kann man das html dann mit css, welches man über die üblichen methoden in das template mit einfügen kann (also etweder das style-attribut

                  <select name="mydropdown" size="1" style="color:red;">
                  <% for (var i = 0; i<data.length;i++) { %>
                    <option><%- data[i] %></option>
                  <% } %>
                  </select>
                  

                  oder mit eingebettetem css-abschnit
                  hier sollte man allerdings vorsichtig sein, da die css-anweisungen global für die ganze seite gelten und daher mit entsprechenden eindeutigen namen ordentlich abgegrenzt werden sollten, damit es keine seiteneffekte auf andere elemente gibt

                  <style>
                  #mydropdown {
                      color:green;
                  }
                  </style>
                  <select id="mydropdown" name="mydropdown" size="1" >
                  <% for (var i = 0; i<data.length;i++) { %>
                    <option><%- data[i] %></option>
                  <% } %>
                  </select>
                  
                  bahnuhr 1 Reply Last reply Reply Quote 0
                  • bahnuhr
                    bahnuhr Forum Testing Most Active @OliverIO last edited by

                    @oliverio sagte in Json in DP - als Dropdown in VIS:

                    abfragen kann man den wert in javascript.
                    wo willst du ihn den haben?

                    ist mir jetzt nicht klar wo ich die Auswahl sehen kann.
                    Am besten wäre es wenn der ausgewählte Punkte in einem anderen DP gespeichert wird.

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

                      @bahnuhr

                      oben noch den datenpunktnamen eintragen wohin geschrieben werden soll

                      <script>
                          var dp_write="0_userdata.0.test2";
                          function writeDP(el) {
                              if (el.selectedOptions[0].text) vis.setValue(dp_write,el.selectedOptions[0].text);
                          }
                      </script>
                      <style>
                      #mydropdown {
                          color:green;
                      }
                      </style>
                      <select id="mydropdown" name="mydropdown" size="1" onchange="javascript:writeDP(this)" >
                      <% for (var i = 0; i<data.length;i++) { %>
                        <option><%- data[i] %></option>
                      <% } %>
                      </select>
                      

                      zur Erläuterung.
                      Wir definieren eine eigene Funktion writeDP, die für uns das schreiben des Datenpunkts übernimmt.

                      Zusätzlich definieren wir für das Select-Element den trigger onChange, der immer dann aufgerufen wird, wenn sich die Auswahl in der Liste ändert.

                      Sobald das Ereignis eintritt wird die Funktion writeDP aufgerufen und als Parameter wird eine Referenz auf das HTMLElement (Hier select) übergeben.

                      Im Selectelement ist im Property selectedOptions eine Liste aller ausgewählter Elemente gespeichert. Wir nehmen hier immer das erste und entnehmen dort den angezeigten Text über das Property text

                      el.selectedOptions[0].text
                      

                      https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedOptions
                      https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement

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

                        @oliverio

                        Mensch bist du fit in diesem Thema.
                        Danke vielmals.
                        Werde ich ausprobieren.

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

                          @oliverio
                          Danke klappt super.

                          Jetzt hab ich noch ne Besonderheit.
                          Durch dein script "writeDP(el)" wird ja der andere DP geändert.

                          Jetzt wird der andere DP aber durch andere JS auch geändert.
                          Soll heißen: Der Wert des anderen DP ändert sich nicht nur durch dein Widget sondern durch andere Scripte

                          Frage:
                          Kann man einbauen:
                          Wenn sich der Wert des "anderen DP" durch ein anderes Script ändert, dass dann der Focus bei dem Widget ebenfalls wieder auf den gleichen Wert zeigt.
                          Oder ist das zu viel des Guten.

                          War das verständlich ?

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

                            @bahnuhr

                            ja hab ich verstanden. muss da etwas überlegen.
                            hab gerade was ausprobiert was leider nicht so funktioniert.
                            problem ist, das das abonnieren (also der vorgang, das man über die änderungen informiert wird) von datenpunkten unter der haube von vis nicht ganz so simple ist, daher wollte ich über ein hilfswidget dort die änderung mit browser mitteln abfangen. leider löst die änderung aber nicht das richtige event aus.
                            muss mal nochmal in ruhe schauen. kann aber noch ein paar tage dauern, da ich nächste woche nicht da bin um was auszuprobieren

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

                              @oliverio

                              Danke trotzdem schon einmal, dass du dir Gedanken machst.
                              Nur keine Eile.

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

                                @oliverio

                                Ne andere Idee.
                                Könnte man per JS den aktivierten Wert des Widget ändern.

                                </style>
                                <select id="mydropdown" name="mydropdown" size="1" onchange="javascript:writeDP(this)" >
                                <% for (var i = 0; i<data.length;i++) { %>
                                  <option><%- data[i] %></option>
                                <% } %>
                                </select>
                                

                                Also in diesem Abschnitt den Wert "data[i]" per JS setzen.

                                Dann müsste ich nur die Scripte ändern.

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

                                  @OliverIO

                                  Konntest du schon Überlegungen anstellen ?

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

                                    @bahnuhr
                                    Erst nächste Woche, sind übers lange Wochenende weg gefahren

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

                                      @oliverio sagte in Json in DP - als Dropdown in VIS:

                                      @bahnuhr
                                      Erst nächste Woche, sind übers lange Wochenende weg gefahren

                                      Danke für die Info.
                                      Schönes Wo.ende.

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • F
                                        fabian.krauss @bahnuhr last edited by

                                        @bahnuhr

                                        Hi ich bin mir nicht sicher ob diese Widgets genau das können was du suchst, aber ich weiß das man bei dem Material design widgets viel mit JSON machen kann. Schau es dir mal an 🙂 https://github.com/Scrounger/ioBroker.vis-materialdesign

                                        Ich hatte z.B. mal per Skript eine JSON automatisch bauen lassen und in die State List geworfen:
                                        c5996103-0be9-401d-a9e5-ca385c127a77-image.png

                                        Vielleicht ist ja Input, Autoselect oder Select was für dich.

                                        bahnuhr 1 Reply Last reply Reply Quote 1
                                        • bahnuhr
                                          bahnuhr Forum Testing Most Active @fabian.krauss last edited by

                                          @fabian-krauss

                                          Danke für die Info.
                                          Schau ich mir an.

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

                                            @fabian-krauss

                                            Kannst du mir da helfen. habe die mal installiert.
                                            Aber im Moment weiß ich nicht wie ich da vorgehen soll.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            913
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            vis
                                            5
                                            44
                                            2569
                                            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