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. vis html wird im editor angezeigt aber auf der Seite nicht

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

vis html wird im editor angezeigt aber auf der Seite nicht

Geplant Angeheftet Gesperrt Verschoben Visualisierung
6 Beiträge 2 Kommentatoren 39 Aufrufe 2 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.
  • K Offline
    K Offline
    Kellerassel75
    schrieb am zuletzt editiert von
    #1

    Hallo.
    Ich habe ein html Widget erstellt. Im Editor ist es sichtbar aber wenn ich es im neuen Fenster öffne ist es nicht zu sehen!
    Wo ist das Problem?

    <div id="fuelTable"></div>
    
    <script type="text/javascript">
    
    let jsonStr = vis.states["tankerkoenig.0.stations.jsonTable.val"];
    
    if (jsonStr) {
        try {
            let data = JSON.parse(jsonStr);
            renderTable(data);
        } catch(e) {
            console.log("JSON Error:", e);
        }
    }
    
    function renderTable(data) {
    
        const minE5 = Math.min.apply(null, data.map(x => x.e5));
        const minE10 = Math.min.apply(null, data.map(x => x.e10));
        const minDiesel = Math.min.apply(null, data.map(x => x.diesel));
    
        let html = "";
        html += '<table id="sortableTable" style="width:100%; border-collapse: collapse; font-size:14px;">';
        html += '<thead>';
        html += '<tr style="background:#ccc; cursor:pointer;">';
        html += '<th onclick="sortTable(0)">Station</th>';
        html += '<th onclick="sortTable(1)">E5</th>';
        html += '<th onclick="sortTable(2)">Δ E5</th>';
        html += '<th onclick="sortTable(3)">E10</th>';
        html += '<th onclick="sortTable(4)">Δ E10</th>';
        html += '<th onclick="sortTable(5)">Diesel</th>';
        html += '<th onclick="sortTable(6)">Δ Diesel</th>';
        html += '</tr>';
        html += '</thead><tbody>';
    
        function diffColor(v) {
            if (v < 0) return "green";
            if (v > 0) return "red";
            return "black";
        }
    
        function bestColor(p, minP) {
            return (p === minP) ? "yellow" : "transparent";
        }
    
        data.forEach(function(item){
            html += "<tr>";
    
            html += "<td>" + item.station + "</td>";
    
            html += "<td style='background:" + bestColor(item.e5, minE5) + ";'>" +
                    item.e5.toFixed(3) + "</td>";
    
            html += "<td style='color:" + diffColor(item.differenceE5) + ";'>" +
                    item.differenceE5 + "</td>";
    
            html += "<td style='background:" + bestColor(item.e10, minE10) + ";'>" +
                    item.e10.toFixed(3) + "</td>";
    
            html += "<td style='color:" + diffColor(item.differenceE10) + ";'>" +
                    item.differenceE10 + "</td>";
    
            html += "<td style='background:" + bestColor(item.diesel, minDiesel) + ";'>" +
                    item.diesel.toFixed(3) + "</td>";
    
            html += "<td style='color:" + diffColor(item.differenceDiesel) + ";'>" +
                    item.differenceDiesel + "</td>";
    
            html += "</tr>";
        });
    
        html += "</tbody></table>";
    
        document.getElementById("fuelTable").innerHTML = html;
    }
    
    
    // ---- Sortieren ----
    let sortDirection = true;
    
    function sortTable(col) {
        const table = document.getElementById("sortableTable");
        let rows = Array.prototype.slice.call(table.rows, 1);
    
        rows.sort(function(a, b) {
            let x = a.cells[col].innerText;
            let y = b.cells[col].innerText;
    
            let nx = parseFloat(x);
            let ny = parseFloat(y);
    
            if (!isNaN(nx) && !isNaN(ny)) {
                return sortDirection ? (nx - ny) : (ny - nx);
            }
            return sortDirection ? x.localeCompare(y) : y.localeCompare(x);
        });
    
        sortDirection = !sortDirection;
        rows.forEach(r => table.appendChild(r));
    }
    
    </script>
    
    

    Vielen Dank!
    Falko

    OliverIOO 1 Antwort Letzte Antwort
    0
    • K Kellerassel75

      Hallo.
      Ich habe ein html Widget erstellt. Im Editor ist es sichtbar aber wenn ich es im neuen Fenster öffne ist es nicht zu sehen!
      Wo ist das Problem?

      <div id="fuelTable"></div>
      
      <script type="text/javascript">
      
      let jsonStr = vis.states["tankerkoenig.0.stations.jsonTable.val"];
      
      if (jsonStr) {
          try {
              let data = JSON.parse(jsonStr);
              renderTable(data);
          } catch(e) {
              console.log("JSON Error:", e);
          }
      }
      
      function renderTable(data) {
      
          const minE5 = Math.min.apply(null, data.map(x => x.e5));
          const minE10 = Math.min.apply(null, data.map(x => x.e10));
          const minDiesel = Math.min.apply(null, data.map(x => x.diesel));
      
          let html = "";
          html += '<table id="sortableTable" style="width:100%; border-collapse: collapse; font-size:14px;">';
          html += '<thead>';
          html += '<tr style="background:#ccc; cursor:pointer;">';
          html += '<th onclick="sortTable(0)">Station</th>';
          html += '<th onclick="sortTable(1)">E5</th>';
          html += '<th onclick="sortTable(2)">Δ E5</th>';
          html += '<th onclick="sortTable(3)">E10</th>';
          html += '<th onclick="sortTable(4)">Δ E10</th>';
          html += '<th onclick="sortTable(5)">Diesel</th>';
          html += '<th onclick="sortTable(6)">Δ Diesel</th>';
          html += '</tr>';
          html += '</thead><tbody>';
      
          function diffColor(v) {
              if (v < 0) return "green";
              if (v > 0) return "red";
              return "black";
          }
      
          function bestColor(p, minP) {
              return (p === minP) ? "yellow" : "transparent";
          }
      
          data.forEach(function(item){
              html += "<tr>";
      
              html += "<td>" + item.station + "</td>";
      
              html += "<td style='background:" + bestColor(item.e5, minE5) + ";'>" +
                      item.e5.toFixed(3) + "</td>";
      
              html += "<td style='color:" + diffColor(item.differenceE5) + ";'>" +
                      item.differenceE5 + "</td>";
      
              html += "<td style='background:" + bestColor(item.e10, minE10) + ";'>" +
                      item.e10.toFixed(3) + "</td>";
      
              html += "<td style='color:" + diffColor(item.differenceE10) + ";'>" +
                      item.differenceE10 + "</td>";
      
              html += "<td style='background:" + bestColor(item.diesel, minDiesel) + ";'>" +
                      item.diesel.toFixed(3) + "</td>";
      
              html += "<td style='color:" + diffColor(item.differenceDiesel) + ";'>" +
                      item.differenceDiesel + "</td>";
      
              html += "</tr>";
          });
      
          html += "</tbody></table>";
      
          document.getElementById("fuelTable").innerHTML = html;
      }
      
      
      // ---- Sortieren ----
      let sortDirection = true;
      
      function sortTable(col) {
          const table = document.getElementById("sortableTable");
          let rows = Array.prototype.slice.call(table.rows, 1);
      
          rows.sort(function(a, b) {
              let x = a.cells[col].innerText;
              let y = b.cells[col].innerText;
      
              let nx = parseFloat(x);
              let ny = parseFloat(y);
      
              if (!isNaN(nx) && !isNaN(ny)) {
                  return sortDirection ? (nx - ny) : (ny - nx);
              }
              return sortDirection ? x.localeCompare(y) : y.localeCompare(x);
          });
      
          sortDirection = !sortDirection;
          rows.forEach(r => table.appendChild(r));
      }
      
      </script>
      
      

      Vielen Dank!
      Falko

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

      @Kellerassel75

      prüfe mal bitte die browser konsole mit F12
      Ich denke der Datenpunkt ist zum Zeitpunkt an dem das javascript ausgeführt wird noch nicht in vis verfügbar. Daher endet das Skript in Zeile 7
      zum überprüfen könntest du vor die folgende zeile das befehlswort debugger eintragen.
      wenn du dann bei geöffneter konsole F5 drückst, wird die Seite neu geladen und du kannst zeilenweise ausführen und prüfen was passiert.

      debugger;
      let jsonStr = vis.states["tankerkoenig.0.stations.jsonTable.val"];
      

      ggfs könnte ich dir das widget jsontemplate aus dem adapter jsontemplate empfehlen.
      dort kannst du deinen datenpunkt eintragen.
      mittels dem template system ejs
      kannst du dann dein html erstellen und die daten eintragen lassen
      der adapter mit version 4.2.0 befindet sich auch im stable repository.

      https://github.com/oweitman/ioBroker.vis-jsontemplate
      und Supportthread
      https://forum.iobroker.net/topic/31521/test-widget-json-template

      Dein Skript kannst du da aber auch nicht 1:1 übernehmen

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

      1 Antwort Letzte Antwort
      0
      • K Offline
        K Offline
        Kellerassel75
        schrieb am zuletzt editiert von
        #3

        OK.
        Debugger: Zeile 3 dann 5 dann 77
        sonst nix!

        OliverIOO 1 Antwort Letzte Antwort
        0
        • K Kellerassel75

          OK.
          Debugger: Zeile 3 dann 5 dann 77
          sonst nix!

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

          @Kellerassel75

          wie zu erwarten.
          in jsonStr steht nix drin. deswegen ruft das if in Zeile 4
          die Funktion renderTable nicht auf.

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

          1 Antwort Letzte Antwort
          0
          • K Offline
            K Offline
            Kellerassel75
            schrieb am zuletzt editiert von
            #5

            Super geht!
            Ich habe vis-jsontemplate mit eingefügt (mit Datenpunkt) und auf einmal geht mein html Widget!
            Warum auch immer?
            Falko

            OliverIOO 1 Antwort Letzte Antwort
            0
            • K Kellerassel75

              Super geht!
              Ich habe vis-jsontemplate mit eingefügt (mit Datenpunkt) und auf einmal geht mein html Widget!
              Warum auch immer?
              Falko

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

              @kellerassel75

              Ja das kann sein. Das Widget sorgt dafür das der datenpunkt abonniert wird und ruft dann erst das Template auf.

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

              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

              856

              Online

              32.6k

              Benutzer

              82.1k

              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