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.2k

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

  • 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 Offline
    Karlheinz KnappK Offline
    Karlheinz Knapp
    schrieb am zuletzt editiert von
    #1

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

    OliverIOO 1 Antwort Letzte Antwort
    0
    • 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 Online
                  R Online
                  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 Offline
                    Meister MopperM Offline
                    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

                        520

                        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