Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Dynamische Erstellung von Widgets

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.1k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    939

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Dynamische Erstellung von Widgets

Geplant Angeheftet Gesperrt Verschoben Visualisierung
11 Beiträge 6 Kommentatoren 516 Aufrufe 6 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Karlheinz KnappK Karlheinz Knapp

    Ist es möglich, Widgets dynamisch mit JS zu erstellen und hat jemand eventuell Beispiele?

    OliverIOO Offline
    OliverIOO Offline
    OliverIO
    schrieb am zuletzt editiert von OliverIO
    #2

    @karlheinz-knapp

    da musst du deine anforderungen genauer beschreiben was du mit widgets meinst.
    wenn du vis1 widgets meinst, dann geht das so nicht.
    Das steht so im log

    vis.js:2602 Error in eval[value]: {x:0_userdata.0.test1;x.a}
    vis.js:2603 Error in eval[script]: var x = JSON.parse("{"a":true,"b":false}");return x.a;
    vis.js:2604 Error in eval[error]: SyntaxError: missing ) after argument list
    

    Meine Adapter und Widgets
    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
    Links im Profil

    Karlheinz KnappK 1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @karlheinz-knapp

      da musst du deine anforderungen genauer beschreiben was du mit widgets meinst.
      wenn du vis1 widgets meinst, dann geht das so nicht.
      Das steht so im log

      vis.js:2602 Error in eval[value]: {x:0_userdata.0.test1;x.a}
      vis.js:2603 Error in eval[script]: var x = JSON.parse("{"a":true,"b":false}");return x.a;
      vis.js:2604 Error in eval[error]: SyntaxError: missing ) after argument list
      
      Karlheinz KnappK Offline
      Karlheinz KnappK Offline
      Karlheinz Knapp
      schrieb am zuletzt editiert von Karlheinz Knapp
      #3

      @oliverio ich würde gerne bei der Proxmox instance je qemu VM und je node ein Widget in vis automatisiert erstellen.

      Kommt eine node oder VM hinzu wird diese automatisiert in die Visualisierung integriert.

      arteckA 1 Antwort Letzte Antwort
      0
      • Karlheinz KnappK Karlheinz Knapp

        @oliverio ich würde gerne bei der Proxmox instance je qemu VM und je node ein Widget in vis automatisiert erstellen.

        Kommt eine node oder VM hinzu wird diese automatisiert in die Visualisierung integriert.

        arteckA Offline
        arteckA Offline
        arteck
        Developer Most Active
        schrieb am zuletzt editiert von arteck
        #4

        @karlheinz-knapp sagte in Dynamische Erstellung von Widgets:

        @oliverio ich würde gerne bei der Proxmox instance je qemu VM und je node ein Widget in vis automatisiert erstellen.

        Kommt eine node oder VM hinzu wird diese automatisiert in die Visualisierung integriert.

        du kannst ein html widget nehmen und den per binding aus dem object befüllen..

        zigbee hab ich, zwave auch, nuc's genauso und HA auch

        Karlheinz KnappK 1 Antwort Letzte Antwort
        0
        • arteckA arteck

          @karlheinz-knapp sagte in Dynamische Erstellung von Widgets:

          @oliverio ich würde gerne bei der Proxmox instance je qemu VM und je node ein Widget in vis automatisiert erstellen.

          Kommt eine node oder VM hinzu wird diese automatisiert in die Visualisierung integriert.

          du kannst ein html widget nehmen und den per binding aus dem object befüllen..

          Karlheinz KnappK Offline
          Karlheinz KnappK Offline
          Karlheinz Knapp
          schrieb am zuletzt editiert von Karlheinz Knapp
          #5

          @arteck
          Hast Du mal hierzu ein paar zeilen Code damit ich auf den richtigen Weg komme ?

          Karlheinz KnappK 1 Antwort Letzte Antwort
          0
          • Karlheinz KnappK Karlheinz Knapp

            @arteck
            Hast Du mal hierzu ein paar zeilen Code damit ich auf den richtigen Weg komme ?

            Karlheinz KnappK Offline
            Karlheinz KnappK Offline
            Karlheinz Knapp
            schrieb am zuletzt editiert von Karlheinz Knapp
            #6

            @karlheinz-knapp
            Ich schreibe noch einmal genau, was ich vorhabe:

            Ich möchte dynamische Widgets erzeugen. Wenn in dem Pfad 10 Einträge sind, möchte ich 10 Widgets erstellen.
            Kommen noch weitere n Einträge hinzu, möchte ich dynamisch die n Einträge hinzufügen und die Positionierung sowie, das Binding mit JS setzen.

            Hierzu suche ich ein paar Zeilen Code, damit ich auf den richtigen Weg komme?

            David G.D R Meister MopperM OliverIOO 4 Antworten Letzte Antwort
            0
            • Karlheinz KnappK Karlheinz Knapp

              @karlheinz-knapp
              Ich schreibe noch einmal genau, was ich vorhabe:

              Ich möchte dynamische Widgets erzeugen. Wenn in dem Pfad 10 Einträge sind, möchte ich 10 Widgets erstellen.
              Kommen noch weitere n Einträge hinzu, möchte ich dynamisch die n Einträge hinzufügen und die Positionierung sowie, das Binding mit JS setzen.

              Hierzu suche ich ein paar Zeilen Code, damit ich auf den richtigen Weg komme?

              David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #7

              @karlheinz-knapp

              Das liegt daran, wie schön die sein sollen.
              Mit Blockly könnte man in einer Schleife alle Maschinen abfragen.

              So ähnlich (wenn ich es recht in Erinnerung habe ^^) mache ich es hier.

              Screenshot_20250302_180617_Fully Kiosk Browser.jpg

              Man könnte es mit was html Kenntnissen auch Tabellarjsch was anders aufarbeiten.

              EDIT
              Die Tabelle greift auf Daten von Linux Control zurück,lässt sich aber 1 zu 1 (sofern Daten bereitgestellt) auf proxmox abändern.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              1 Antwort Letzte Antwort
              0
              • Karlheinz KnappK Karlheinz Knapp

                @karlheinz-knapp
                Ich schreibe noch einmal genau, was ich vorhabe:

                Ich möchte dynamische Widgets erzeugen. Wenn in dem Pfad 10 Einträge sind, möchte ich 10 Widgets erstellen.
                Kommen noch weitere n Einträge hinzu, möchte ich dynamisch die n Einträge hinzufügen und die Positionierung sowie, das Binding mit JS setzen.

                Hierzu suche ich ein paar Zeilen Code, damit ich auf den richtigen Weg komme?

                R Offline
                R Offline
                Ralf 2
                schrieb am zuletzt editiert von
                #8

                @karlheinz-knapp
                Als Anregung:
                Für solche Dynamischen Widgets kann man von MaterialDesign die Iconlist nehmen.
                Ein Beispiel ist das Script adapter-status

                Für die Adapter-Liste wird dann zum Beispiel solch ein JSon erzeugt und angezeigt, das ist aber schon komplex auf zu bauen:

                [{
                        "text": "<div style=\"display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;\">\n                            <div style=\"flex: 1\"> Javascript</div>\n                            <div style=\"color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;\">v8.8.3</div>\n                        </div>",
                        "subText": "<div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">CPU</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">3.2 %</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM total</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">535.77 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM verwendet</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">503.48 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM reserviert</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">658.85 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">Betriebszeit</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">03T 04h 53m</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">Modus</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">daemon</div>\n                            </div>",
                        "image": "/javascript.admin/javascript.png",
                        "listType": "buttonState",
                        "objectId": "0_userdata.0.vis.AdapterStatus.restartTrigger",
                        "buttonStateValue": "system.adapter.javascript.0",
                        "statusBarColor": "green",
                        "showValueLabel": false,
                        "name": "Javascript",
                        "mode": "daemon",
                        "hasUpdates": "",
                        "cpu": 3.2,
                        "memHeapTotal": 535.77,
                        "memHeapUsed": 503.48,
                        "memRss": 658.85,
                        "uptime": 276752,
                        "status": 0,
                        "lockEnabled": true
                    }, {
                        "text": "<div style=\"display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;\">\n                            <div style=\"flex: 1\"> Javascript.1</div>\n                            <div style=\"color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;\">v8.8.3</div>\n                        </div>",
                        "subText": "<div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">CPU</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">2 %</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM total</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">351.66 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM verwendet</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">337.55 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">RAM reserviert</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">476.32 MB</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">Betriebszeit</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">03T 04h 50m</div>\n                            </div>\n                            <div style=\"display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;\">\n                                <div style=\"flex: 1;\">Modus</div>\n                                <div style=\"color: #888888; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;\">daemon</div>\n                            </div>",
                        "image": "/javascript.admin/javascript.png",
                        "listType": "buttonState",
                        "objectId": "0_userdata.0.vis.AdapterStatus.restartTrigger",
                        "buttonStateValue": "system.adapter.javascript.1",
                        "statusBarColor": "green",
                        "showValueLabel": false,
                        "name": "Javascript",
                        "mode": "daemon",
                        "hasUpdates": "",
                        "cpu": 2,
                        "memHeapTotal": 351.66,
                        "memHeapUsed": 337.55,
                        "memRss": 476.32,
                        "uptime": 276607,
                        "status": 0,
                        "lockEnabled": true
                    }, {
                        "text": "<div style=\"display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;\">\n                            <div style=\"flex: 1\"> Javascript.3</div>\n                            <div style=\"color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;\">v8.8.3</div>\n                        </div>",
                        "subText": "<div
                u.s.w.
                

                Gruß Ralf

                1 Antwort Letzte Antwort
                0
                • Karlheinz KnappK Karlheinz Knapp

                  @karlheinz-knapp
                  Ich schreibe noch einmal genau, was ich vorhabe:

                  Ich möchte dynamische Widgets erzeugen. Wenn in dem Pfad 10 Einträge sind, möchte ich 10 Widgets erstellen.
                  Kommen noch weitere n Einträge hinzu, möchte ich dynamisch die n Einträge hinzufügen und die Positionierung sowie, das Binding mit JS setzen.

                  Hierzu suche ich ein paar Zeilen Code, damit ich auf den richtigen Weg komme?

                  Meister MopperM Online
                  Meister MopperM Online
                  Meister Mopper
                  schrieb am zuletzt editiert von
                  #9

                  @karlheinz-knapp

                  Hattest du schon Berührungen mit KI/AI?

                  Aus meiner Erfahrung kommt man damit sehr schnell zu passablen Ergebnissen.

                  Proxmox und HA

                  1 Antwort Letzte Antwort
                  0
                  • Karlheinz KnappK Karlheinz Knapp

                    @karlheinz-knapp
                    Ich schreibe noch einmal genau, was ich vorhabe:

                    Ich möchte dynamische Widgets erzeugen. Wenn in dem Pfad 10 Einträge sind, möchte ich 10 Widgets erstellen.
                    Kommen noch weitere n Einträge hinzu, möchte ich dynamisch die n Einträge hinzufügen und die Positionierung sowie, das Binding mit JS setzen.

                    Hierzu suche ich ein paar Zeilen Code, damit ich auf den richtigen Weg komme?

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von OliverIO
                    #10

                    @karlheinz-knapp

                    Dynamisch bindings erzeugen (auf dem Client) geht leider wegen der Funktionsweise von vis nicht. Bei vis müssen bei Start alle datenpunkte bekannt sein, diese werden dann beim Server abonniert und dann laufend aktuell gehalten.

                    Du benötigst ein blockly,Skript,etc. auf dem Server welches deine aktuelle Anzahl der datenpunkte die du darstellen willst abfragt, den jeweiligen Wert abfragt, daraus dann html erstellt und in einen datenpunkt schreibt.
                    Dieses html kann dann mit dem html Widget dargestellt werden.
                    Immer wenn ein datenpunkt sich ändert wird das html erzeugt und auch dynamisch im Client aktualisiert.
                    Hinzukommende datenpunkte oder auch wegfallende datenpunkte müsste man zyklisch abfragen. Da gibt es glaube ich keine automatismen.
                    Aber ich glaube bei den triggern kann man pattern definieren, die auch zukünftige datenpunkte treffen.

                    Wäre so eine Lösung für dich denkbar?

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    David G.D 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @karlheinz-knapp

                      Dynamisch bindings erzeugen (auf dem Client) geht leider wegen der Funktionsweise von vis nicht. Bei vis müssen bei Start alle datenpunkte bekannt sein, diese werden dann beim Server abonniert und dann laufend aktuell gehalten.

                      Du benötigst ein blockly,Skript,etc. auf dem Server welches deine aktuelle Anzahl der datenpunkte die du darstellen willst abfragt, den jeweiligen Wert abfragt, daraus dann html erstellt und in einen datenpunkt schreibt.
                      Dieses html kann dann mit dem html Widget dargestellt werden.
                      Immer wenn ein datenpunkt sich ändert wird das html erzeugt und auch dynamisch im Client aktualisiert.
                      Hinzukommende datenpunkte oder auch wegfallende datenpunkte müsste man zyklisch abfragen. Da gibt es glaube ich keine automatismen.
                      Aber ich glaube bei den triggern kann man pattern definieren, die auch zukünftige datenpunkte treffen.

                      Wäre so eine Lösung für dich denkbar?

                      David G.D Online
                      David G.D Online
                      David G.
                      schrieb am zuletzt editiert von David G.
                      #11

                      Das hab ich grad nur schnell getestet. Ohne eine Schleife in js oder Blockly mit festen Werten.

                      Nur html ohne css etc (nutze lovelace, kann kein css), für VIS kann man noch css einbauen um es schon zu machen. Ggf auch noch responsive.

                      Screenshot_20250302_222412_Fully Kiosk Browser.jpg

                      P. S.
                      Bedenke, dass die DPs von gelöschten VMs manuell gelöscht werden müssen, sonst bleibt in deiner view alles erhalten.
                      Deshalb würde ich es "halbautomatisch" lösen, dass man im Script die IDs der VMs eingibt die man sehen möchte.

                      Zeigt eure Lovelace-Visualisierung klick
                      (Auch ideal um sich Anregungen zu holen)

                      Meine Tabellen für eure Visualisierung klick

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      710

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe