Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
js als Tabelle darstellen
#1
Im folgenden Script möchte ich die Ausgabe von id:, icon: und suffix: gerne als Tabelle ausgeben. 

Code:
{
    module: 'MMM-ioBroker',
    position: 'top_right',
    header: "     ",   
    config: {
      host: '192.168.2.61',
      port: '8088',
      https: false,
      template: 'MMM-ioBroker.njk',
      devices: [
          { name: 'Küche',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Kueche',              icon: 'wi wi-thermometer',        suffix: ' °C'},
                              { id: 'fritzdect.0.DECT_099950214189.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                             

                          ]
          },
         
          { name: 'Bad',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Bad',                 icon: 'wi wi-thermometer',        suffix: ' °C' },
                              { id: 'fritzdect.0.DECT_099950216627.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                               
                           
                          ]
          },
         
          { name: 'Serverraum',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Serverraum',          icon: 'wi wi-thermometer',        suffix: ' °C' },
                              { id: 'fritzdect.0.DECT_099950273573.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                               
                             
                          ]
          },
         
          { name: 'Schlafzimmer',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Schlafzimmer',        icon: 'wi wi-thermometer',        suffix: ' °C'},
                              { id: 'fritzdect.0.DECT_099950279527.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                               
                             
                          ]
          },
         
         { name: 'Büro',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Buero',               icon: 'wi wi-thermometer',        suffix: ' °C' },
                              { id: 'fritzdect.0.DECT_139790667712.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                               
                             
                          ]
          },
         
         { name: 'Wohnzimmer',
            deviceStates: [
                              { id: '0_userdata.0.Heizung.Wohnzimmer',          icon: 'wi wi-thermometer',        suffix: ' °C' },
                              { id: 'fritzdect.0.DECT_099950308576.battery',    icon: 'fa fa-battery-half',       suffix: '%'}                               
                             
                          ]
          },
         
                   { name: 'Aussentemperatur',
            deviceStates: [
                              { id: 'tuya.0.bfa3627a6b9002903fte1v.1',          icon: 'wi wi-thermometer'},
                              { id: 'tuya.0.bfa3627a6b9002903fte1v.2',          icon: 'wi wi-humidity',        suffix: '%' }                                                             
                          ]
          },
         
                   { name: 'AirRobo',
            deviceStates: [
                              { id: 'tuya.0.bfdcea245e055d2c20sj1i.106',        icon: 'fa fa-battery-half',    suffix: '%' }                                                           
                          ]
          },
         
                   { name: 'Briefkasten',
            deviceStates: [
                              { id: 'tuya.0.bf538c2e67ace7ad3eky7f.4',          icon: 'fa fa-battery-half',    suffix: '%' }                                                           
                          ]
          },     
         
                             { name: 'Türspion',
            deviceStates: [
                              { id: 'alias.0.Tuerspion.145',          icon: 'fa fa-battery-half',    suffix: '%' }                                                           
                          ]
          }                 
         
        ]
    }
  },
Zitieren
#2
Hallo und willkommen im Forum!
name nicht, ich hätte erwartet, dass der als Beschriftung links in die erste Spalte soll?

Woran scheitert es denn? Du wirst zwei verschachtelte Schleifen brauchen, eine über devices und darin eine über deviceStates, in etwa so:
Code:
        const data = { ... }; // deine Daten wie gepostet
        let tableBody = `<tbody>`;
        data.config.devices.forEach(device => {
            tableBody += `<tr>`;
            device.deviceStates.forEach(status => {
                tableBody += `<td>${status.id}</td><td>${status.icon}</td><td>${status.suffix}</td>`;
            });
            tableBody += `</tr>`;
        });
        tableBody += `</tbody>`;

(ungetestet)
Sicher wirst Du auch einen Header für die Tabelle brauchen aber das wäre nur statisches HTML.
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren
#3
Hallo.

Vielen Dank für deine Antwort.

Leider funktioniert das nicht.
Eine Fehlermeldung erhalte ich nicht.
Ich für das .js in Magic Mirror aus.

Kann man in Dateien mit der Endung .js kein HTML verwenden?

LG
Chris
Zitieren
#4
Das war auch in keiner Weise vollständig, sondern nur als Denkanstoß gedacht.

Zitat: Kann man in Dateien mit der Endung .js kein HTML verwenden?
Nein, kein HTML, man kann nur mit HTML in String-Variablen arbeiten wie ich es in dem Beispiel gemacht habe.

Ich habe einen kurzen Blick auf MagicMirror geworfen, aber da muss man wahrscheinlich tiefer einsteigen, um zu verstehen wie man mit Hilfe von Javascript eine HTML-Seite anlegt. Kannst Du da etwas genauere Infos geben?
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren
#5
Magic Mirror ist das Grundsystem.

Darin kann man Module installieren.

Es gibt eine config.js

Dort stehen die Einstellungen der einzelnen Module, wie z.B. iobroker
Zitieren
#6
Ist das jetzt etwas was auf dem Client läuft oder auf dem Server? Ich habe da von nodejs gelesen.
Glaube denen, die die Wahrheit suchen, und zweifle an denen, die sie gefunden haben.
(Andrι Gide (1869-1951), frz. Schriftst., 1947 Nobelpreis)
Zitieren
#7
Hallo.

Es läuft auf einem RaspBerry Pi 3b+

Nodejs ist installiert
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste