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. Skripten / Logik
  4. JavaScript
  5. HTML Tabelle für alle Schedules in den Scripten

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

HTML Tabelle für alle Schedules in den Scripten

Geplant Angeheftet Gesperrt Verschoben JavaScript
template
52 Beiträge 4 Kommentatoren 3.3k Aufrufe 3 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.
  • LatziL Latzi

    @liv-in-sky
    ich hab Blockly dabei, könnte das Schwierigkeiten machen?

    liv-in-skyL Offline
    liv-in-skyL Offline
    liv-in-sky
    schrieb am zuletzt editiert von
    #42

    @latzi

    teste mal bitte dieses script - ob das wenigstens durchläuft - ohne log-fehler

    ok - dein schedule macht da ärger - in dem script hier ist sollte es übergangen werden - es ist eh kein name für das sript in den daten

     //@liv-in-sky 2021  21.2.-14:31
    
    // DAS WIDGET IN DER VIS
    // das Standard html-Widget wird genutzt in der VIS - dazu den DP javascript.x.Tabellen@Liv.TestTabelleVIS.HTMLTableVis als binding angeben d.h.
    // im html-teil des widgets wird dier daten punkt in geschweiften klammern angegeben z.B. {javascript.0.Tabellen@Liv.TestTabelleVIS.HTMLTableVis}
    
    // @ts-ignore
    let braucheEinVISWidget=true;                                 // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
    let  dpVIS="JavascriptSchedule"                               // WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  Ist der Name zum datenpunkt anlegen
    let braucheEinJSON=true;                                      // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
    let  dpJSON="JavascriptScheduleJSON"                          // WICHTIG wenn braucheEinJSON auf true gesetzt !!   Ist der Name zum datenpunkt anlegen
    let mySchedule="  18 */2 * * * ";                             // 
    
    //ZUSÄTZLICH VARIABLEN
    let onlineFarbe="#C9AF4A";
    
    let sortierenEIN=true;
    
    //---------------------------------------
    
    //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 3 - es MÜSSEN in allen Arrays die GLEICHE Anzahl für die Werte sein
    let val=             ["dummy1","dummy2","dummy3"];              // GLEICHE ANZAHL !! HIER SIND DIE  WERTE, DIE IN DER SCHLEIFE GEFILTERET WERDEN -  jeder val[x] muss unten in der schleife gesetzt werden !!
    let Feld1lAlign=     ["left","center","left"];                  // GLEICHE ANZAHL !! AUSRICHTUNG IN DER SPALTE
    let htmlSpalte1Weite=["180px","auto","300px"];                    // GLEICHE ANZAHL !! BREITE DER SPALTE, wenn nicht auto
    let htmlFeld=        ["SCRIPT","PATTERN","PFAD"];               // GLEICHE ANZAHL !! NAME/ÜBERSCHRIFT DER SPALTE
    let schalterInSpaltenUeberschrift=[true,true,true];             // WENN BUTTONS INSTALLIERT WERDEN
    let symbolSchalter=               ["na","⇄","⇄"];   // SYMBOLE DER BUTTONS
    //-----------------------------------
    
    //Symbole für Tabelle z.b.: ⚪  ⚫ ⭕  🔴 🔵 ⏱ 💀 👍 👎 📑 💲 👀 🔹 ✅ ❌ ⚠️ mehr: https://emojiterra.com/de/ oder https://unicode-table.com/de/html-entities/
    
    //hier werden die styles für die tabelle definiert
    //ÜBERSCHRIFT ÜBER TABELLE
    const htmlUberschrift=true;                             // mit Überschrift über der tabelle
    const htmlSignature=false;                               // anstatt der Überscghrift eine signature: - kleiner - anliegend
    const htmlFeldUeber='JAVASCRIPT SCHEDULES';                // für Überschrift und Signature falls htmlUberschrift und htmlSignature ist true
    const htmlFarbUber="white";                              // Farbe der Überschrift
    const htmlSchriftWeite="normal";                         // bold, normal - Fettschrift für Überschrift
    const htmlUEberFontGroesse="18px";                       // schriftgröße überschrift
    //SEITENLEISTE
    const ichWillSeitenLeiste=true;                          // links einblenden einer Seitenleiste
    const nameSeitenLeiste="JAVASCRIPT SCHEDULES"
    const breiteSeitenleiste=25;
    const schriftGroesseSeitenleiste=18;
    const abstandSeitentextVonOben=6;
    const htmlFarbSeiteSchrift="black";
    const htmlBackgroundFarbeSeitenliste="transparent";
    //MEHRERE TABELLEN NEBENEINANDER
    let mehrfachTabelle=1;                                   // bis zu 3 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3 !!!
    const trennungsLinie="2";                                // extra trennungslinie bei mehrfachtabellen - evtl auf 0 stellen, wnn htmlRahmenLinien auf none sind
    const farbetrennungsLinie="#C9AF4A";                       // bei mehreren Tabellen nebeneinander wird ein Strich zw. den Tabellen gezogen
    const htmlFarbTableColorUber="black"                     // Spalten-Überschrift in der tabelle - für die einzelnen Spalten //"#BDBDBD"; 
    const htmlFarbZweiteTabelle="black";                     // Farbe der Spalten-Überschrift bei jeder 2.ten Tabelle        
    //ÜBERSCHRIFT SPALTEN - OBERSTE ZEILE IN TAB
    const UeberSchriftHoehe="40";                            // Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe
    const LinieUnterUeberschrift="4";                        // Liniehoehe nur unter Spaltenüberschrift  
    const farbeLinieUnterUeberschrift="E8343A";               // LinienFarbe unter Spaltenüberschrift
    const groesseUeberschrift=14; 
    const UeberschriftStyle="normal"                         // möglich "bold"
    const UeberschriftSpalten=true;                          // ein- oder ausblenden der spatlen-überschriften
    //GANZE TABELLE
    const abstandZelle="2";                                  // legt den abstand in den zellen zum rahmen fest
    const zeilenAbstand=3;                                   // legt den abstand zwischen den zeilen fest
    const farbeUngeradeZeilen="#000000";                     // Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2 - bei "transparent" gewinnt htmlFarbTableColorGradient1
    const farbeGeradeZeilen="#151515";                       // Farbe für gerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2   - bei "transparent" gewinnt htmlFarbTableColorGradient2
    const weite="auto";                                      // Weite der Tabelle - verhindert das dynamische breiter werden, wenn werte unterschiedliche werte haben
    const zentriert=true;                                    // ganze tabelle zentriert im html Widget
    const backgroundAll="#000000";                           // Hintergrund für die ganze Seite - für direkten aufruf oder iqontrol sichtber - keine auswirkung auf vis-widget
    const htmlSchriftart="Ubuntu-Regular"                    // "Jura-DemiBold"   //"RobotoCondensed-Bold"   //"Helvetica"; .....
    const htmlSchriftgroesse="16px";                         // schriftgröße in den zellen
    const rahmenBreite="1px";                                //mit 0 ist äußerer rahmen weg
    //FELDER UND RAHMEN
    const htmlFarbFelderschrift="#8A8A88";                   // SchriftFarbe der Felder
    const htmlFarbFelderschrift2="#8A8A88";                  // SchriftFarbe der Felder für jede 2te Tabelle
    const htmlGragient=[150,15,50];                          // einstellung des gradienten
    const htmlFarbTableColorGradient1="#A29595";         // Gradient - Hintergrund der Tabelle - Verlauffarbe
    const htmlFarbTableColorGradient2="#E8343A";              // Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
    const htmlFarbTableBorderColor="grey";                   // Farbe des Rahmen - ist dieser gleich den gradienten, sind die rahmen unsichtbar
    let htmlRahmenLinien="cols";                             // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
    
    // falls eine extra html datei gebraucht wird
    const path = "/htmlexample.html";                        //FIlenamen definieren
    const home ='vis.0'                                      //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
    let   braucheEinFile=false;                              // bei true wird ein file geschrieben
    
    // AB HIER NICHTS  ÄNDERN -------------------------------------------------------------------------------------------------
    // AB HIER NICHTS  ÄNDERN -------------------------------------------------------------------------------------------------
    // AB HIER NICHTS  ÄNDERN ---------------------------------erst wieder ab Zeile 134----------------------------------------
    
    let borderHelpBottum;
    let borderHelpRight;
    let htmlcenterHelp;
    let htmlcenterHelp2;
    
    if(String(htmlRahmenLinien)=="rows") {borderHelpBottum=1;borderHelpRight=0;}
    if(String(htmlRahmenLinien)=="cols") {borderHelpBottum=0;borderHelpRight=1;}
    if(String(htmlRahmenLinien)=="none") {borderHelpBottum=0;borderHelpRight=0;}
    if(String(htmlRahmenLinien)=="all")  {borderHelpBottum=1;borderHelpRight=1;}
    zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
    zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
    
    
    const htmlZentriert='<center>'
    const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html;  http-equiv=\"refresh\" content=\"30\"; charset=utf-8\">"+
                       "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                       " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                      // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                       " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                       " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                       "td:nth-child(1) {width: "+htmlSpalte1Weite[0]+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite[1]+"}"+
                       " </style></head><body> <div>";
    //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
    const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\""+rahmenBreite+"\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+zeilenAbstand+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                        "; font-family:"+htmlSchriftart+";background-image: linear-gradient("+htmlGragient[0]+"deg,"+htmlFarbTableColorGradient2+" "+htmlGragient[1]+"%,"+htmlFarbTableColorGradient1+" "+htmlGragient[2]+"%);\">";
    let htmlTabUeber4="<tr style=\" height:"+UeberSchriftHoehe+"px; color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \">";
    const htmlTabUeber3="</tr>";
    
    
    const buttonScript =   '<script> function setOnOtherValue(myval) {	var Self = this;	Self.servConn.getStates(myval, (error, states) => {  console.log(states); self.servConn.setState(myval, !states[myval].val);}  )}'
                         +'</script>'
    
    
    //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 3
    let htmlTabUeber2=""
    for (let ue=0;ue<htmlSpalte1Weite.length;ue++) { if (!schalterInSpaltenUeberschrift[ue] ) { 
                                                          htmlTabUeber2=htmlTabUeber2.concat("<td width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+" style=\"color:"+htmlFarbTableColorUber+"\">"+htmlFeld[ue]+"</td>")} 
                                                          else {let valButton="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte"+ue
                                                          htmlTabUeber2=htmlTabUeber2.concat("<td  width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+">"+""+" <button style\=\" border-radius: 4px; border:1px solid\; background-color\:transparent\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnOtherValue\(\'"+valButton+"\')\">"+htmlFeld[ue]+"</button></td>")  //symbolSchalter[ue]  
                                                          }
    }
    
    let  htmlTabUeber2_1=""
    for (let ue=0;ue<htmlSpalte1Weite.length;ue++) { htmlTabUeber2_1=htmlTabUeber2_1.concat("<td width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+" style=\"color:"+htmlFarbZweiteTabelle+"\">"+htmlFeld[ue]+"</td>")}
    
    //------------------------------------------------------
    if ( !(val.length == Feld1lAlign.length && htmlSpalte1Weite.length == htmlFeld.length && val.length == htmlFeld.length) || (mehrfachTabelle<1 || mehrfachTabelle>3) ) 
         { log("Anzahle der Definitions Arrays sind ungleich ODER mehrfachTabelle ist falsch - Script wurde gestoppt !!!","error");
             // @ts-ignore
             stopScript();}
    let mitAlphabet=false;
    let langeGesamt=0; 
    let htmlTabUeber="";
    let htmlOut="";
    let mix;
    var counter;
    let makeJsonWidget;
    let myObject=[];
    let welcheSortierung=0;
    var runSchon=false
    needDP();
    
    
    async function writeHTML(){
    
    let seitenLeistenTest="";
    let htmlTabUeber1=htmlTabUeber4
    myObject=[]
    let helperLeerzeile=""
    let makeJsonWidget=[];
    htmlOut="";
    counter=-1;
    
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
    //---------alle val[x] werte müssen von euch bestimmt werden - val[0],val[1],val[2] !!!-------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    
    var ArrayL=[]
    const list = getSchedules(true);
    await list.forEach(schedule =>  { ArrayL.push(schedule)    });  /*console.log(JSON.stringify(schedule));;*/
    // setTimeout(function () { 
      //  log(JSON.stringify(ArrayL))
    for (let uu=0;uu<ArrayL.length;uu++){
       if(ArrayL[uu].hasOwnProperty("scriptName")) {
       let valZwischen=ArrayL[uu].scriptName; //log(val[0]) ;
       val[0]=valZwischen.replace(/.+\.(.+)$/g,"$1");
       val[1]=ArrayL[uu].pattern
       val[2]=valZwischen.replace(/script.js.(.+)\..+$/g,"$1");
     
      
       
       myObject.push({                     "value0" : val[0],            //  "INSTANCE"
                                           "value1" : val[1],            //  "SINCE"
                                           "value2" : val[2]
                                                           })
                   
              makeJsonWidget.push({        [htmlFeld[0]] : val[0],  //  "INSTANCE"
                                           [htmlFeld[1]] : val[1],
                                           [htmlFeld[2]] : val[2]
                                                           })  
    }}
    
                                        // Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!
    
       if(sortierenEIN ) switch (welcheSortierung) {
           case 0: sortMe("alpha","value0");break;  
           case 1: sortMe("alpha","value1");break;   
           case 2: sortMe("alpha","value2");break;}
    
            
    
       for(let zz=0;zz<myObject.length;zz++){
    
     // Unterüberschften ------------------------------------------------------       
            if (mitAlphabet && welcheSortierung==0){
              if( myObject[zz].value0[0]!=helperLeerzeile){ tabelleAusbessern();
                                                            counter=-1;  for(let ic=0;ic<mehrfachTabelle;ic++ ) { for (let tt=0 ;tt<val.length;tt++) 
                                                                                                                      { tt==0 && ic==0 ? val[tt]=(myObject[zz].value0[0]).toUpperCase() : val[tt]="&ensp;"
                                                                                                                      }   
                                                                                                                  counter++;tabelleBind();langeGesamt++; }
              helperLeerzeile=myObject[zz].value0[0] } ; sortierenEIN=false;}
     // Unterüberschften Ende---------------------------------------------------  
    
    
        val[0]=myObject[zz].value0;
        val[1]=myObject[zz].value1;
        val[2]=myObject[zz].value2;
    
    
         counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
         tabelleBind();                                   // HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  
         langeGesamt++;                                   // WICHTIG Seitenleiste
       }
    seitenLeistenTest="</br>"+langeGesamt
    //-------------------------------------------------------------------------------------------------------------------------------------------------
    //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
    //-------------------------------------------------------------------------------------------------------------------------------------------------
     let einmalAbstand=`</br>
    `
     for (let f=0;f<abstandSeitentextVonOben;f++){
         seitenLeistenTest=seitenLeistenTest+`<br>
    `}
     for (let i=0;i<nameSeitenLeiste.length;i++){
         seitenLeistenTest=seitenLeistenTest+nameSeitenLeiste[i]+`<br>
    ` }
       htmlTabUeber="";
     if (ichWillSeitenLeiste) htmlTabUeber1=htmlTabUeber1+"<td  style=\" background-color: "+htmlBackgroundFarbeSeitenliste+"; margin-top: 200px; color: "+htmlFarbSeiteSchrift+ ";font-size:"+schriftGroesseSeitenleiste+"px; vertical-align:top; text-align:center \" width=\""+breiteSeitenleiste+"\" rowspan=\""+(langeGesamt+1)+"\">"+seitenLeistenTest+"</td>"
      switch (mehrfachTabelle) { 
       case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
       case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
       case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2_1+htmlTabUeber3; break;
       case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
      };   
      if (!UeberschriftSpalten) {htmlTabUeber=""}
      
          tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
          if (braucheEinJSON ) {setStateDelayed("javascript." + instance + ".Tabellen@Liv."+dpVIS+".JSONVis",JSON.stringify(makeJsonWidget),1000 )}
    //   }, 10050);   
       runSchon=false;    
    } // function ende
    
    //MAIN:
     
    schedule(mySchedule,  function () { 
     if(!runSchon) writeHTML(); 
     if (braucheEinFile && !runSchon) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
    }); 
    setTimeout(function () { if(!runSchon) writeHTML();  }, 50);  
    
     function tabelleBind(){
      
       switch (mehrfachTabelle) { 
    
       case 1: if(counter%2==0)   {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                   for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                }  htmlOut=htmlOut.concat("</tr>");   break;
    
                                   } else   {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                             for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                          }  htmlOut=htmlOut.concat("</tr>");   break;
                                   }
       
       case 2: if(counter%4==0){  if(counter%2==0)  {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                                     for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                  {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                  }  
                                                                               
                                    } else { for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");
                                                                          }  htmlOut=htmlOut.concat("</tr>");  } break;
                               } else {
                                 if(counter%2==0)  {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                                    for(let u=0;u<val.length;u++){  if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                 {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                 }  
                                    } else {        for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");
                                                                                 }  htmlOut=htmlOut.concat("</tr>");  }  break;}
    
       case 3: if(counter%2==0)  {  if(counter%3==0 ) {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                                       for(let u=0;u<val.length;u++){if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                    {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                                            }  
                                   } else { if(counter%3==1)  {for(let u=0;u<val.length;u++){  if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");} else
                                                                                                                  {htmlOut=htmlOut.concat("<td  align="+Feld1lAlign[u]+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "; color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>")}
                                                                                                            }  
                                                              } else  { for(let u=0;u<val.length;u++){  htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                                                     }  htmlOut=htmlOut.concat("</tr>");  } }  break;
                                 } 
                                 else {
                                    if(counter%3==0 )  {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                                       for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                                         {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                                            }  
                                                                                                            
                                 } else{ if(counter%3==1 )  { for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");} else
                                                                                                                {htmlOut=htmlOut.concat("<td  align="+Feld1lAlign[u]+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "; color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>")}
                                                                                                            }  
                                                             } else {        for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                                                          }  htmlOut=htmlOut.concat("</tr>"); } } break;
                                 }                                        
    
    
                                    
            } //switch ende
    
    }
    
     function tabelleAusbessern() {         // bessert mei mehrfachtabellen die nicht vollen zeilenn aus - bevor die unterüberschriften kommen
    
    switch (mehrfachTabelle) {
            
           case 1:    break;
           case 2:    let helpMehrfach="</td>";
                      for(let w=0;w<val.length;w++){helpMehrfach=helpMehrfach.concat("<td>&ensp;</td>")};helpMehrfach=helpMehrfach.concat("</tr>")
                      if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach);
                      break;
           case 3:   let helpMehrfach2="</td>";
                     for(let w=0;w<val.length;w++){helpMehrfach2=helpMehrfach2.concat("<td>&ensp;</td>")};helpMehrfach2=helpMehrfach2.concat("</tr>")
                     if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                     if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach2);
                     let helpMehrfach3="</td>";
                     let helpMehrfach31="";for(let w=0;w<val.length;w++){helpMehrfach31=helpMehrfach31.concat("<td>&ensp;</td>")}
                     for(let w=0;w<val.length;w++){if(w<val.length-1) {helpMehrfach3=helpMehrfach3.concat("<td>&ensp;</td>")} else
                                                             {helpMehrfach3=helpMehrfach3.concat("<td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td>"+helpMehrfach31)}
                                                       };helpMehrfach3=helpMehrfach3.concat("</tr>")        
                     if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach3);  break; }}
    
     function tabelleFinish() {
    
    switch (mehrfachTabelle) {
            
           case 1:    break;
           case 2:    let helpMehrfach="</td>";
                      for(let w=0;w<val.length;w++){helpMehrfach=helpMehrfach.concat("<td>&ensp;</td>")};helpMehrfach=helpMehrfach.concat("</tr>")
                      if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach);
                      break;
           case 3:   let helpMehrfach2="</td>";
                     for(let w=0;w<val.length;w++){helpMehrfach2=helpMehrfach2.concat("<td>&ensp;</td>")};helpMehrfach2=helpMehrfach2.concat("</tr>")
                     if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                     if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach2);
                     let helpMehrfach3="</td>";
                     let helpMehrfach31="";for(let w=0;w<val.length;w++){helpMehrfach31=helpMehrfach31.concat("<td>&ensp;</td>")}
                     for(let w=0;w<val.length;w++){if(w<val.length-1) {helpMehrfach3=helpMehrfach3.concat("<td>&ensp;</td>")} else
                                                             {helpMehrfach3=helpMehrfach3.concat("<td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td>"+helpMehrfach31)}
                                                       };helpMehrfach3=helpMehrfach3.concat("</tr>")        
                     if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach3);  break; }
         
             var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlUEberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</p>"; 
           var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: center;\" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</div>";
            
            if (!htmlSignature) htmlUnter="";
              //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
               var htmlOutVIS="";
             //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                if (htmlUberschrift) 
                    { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript ;
    
                  } else {
                   zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript;
    
                     }
                     
    
      // log("bin raus aus tabelleBind");
               if (braucheEinVISWidget)  setStateDelayed("javascript." + instance + ".Tabellen@Liv."+dpVIS+".HTMLTableVis", htmlOutVIS ,1000);
    
     var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</div>"
    
     if (!htmlSignature) htmlUnter="";
      var htmlEnd="</table>"+htmlUnter+"</div></body>";
     //mit oder ohne überschrift - zentriert oder links
    htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
     //log(htmlOut);
    
    
    }
    
    async function needDP(){
       for(let s=0;s<schalterInSpaltenUeberschrift.length;s++){ if(schalterInSpaltenUeberschrift[s]){
       if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte"+s))) {
           await createStateAsync("Tabellen@Liv."+dpVIS+".Spalte"+s, false,{type: "boolean", name: "Schalter_Spalte"+s, role: "value", read: true, write: true, } ); } 
         }}
    
       if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".HTMLTableVis"))) {
           await createStateAsync("Tabellen@Liv."+dpVIS+".HTMLTableVis", "empty",{type: "string", name: "HTML_Standard_Widget_mit_Binding", role: "value", read: true, write: true, } ); } 
        if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".JSONVis"))) {
           await createStateAsync("Tabellen@Liv."+dpVIS+".JSONVis", "",{type: "string", name: "JSON Format", role: "value", read: true, write: true, } ); }   
       
    
       let arrTriggerSchalter=[]
       $("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte*").each(function(id, i) {  
              arrTriggerSchalter.push(id) 
       });
     //  log(arrTriggerSchalter.toString())
     
       on({id: arrTriggerSchalter, ack: false, change: "any"}, function (obj) { 
         //  log(obj.id)
         obj.id=="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte1"  ? welcheSortierung=1 : welcheSortierung=2;
         if (obj.id=="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte0") welcheSortierung=0;
      if(!runSchon) writeHTML();
        if (braucheEinFile && !runSchon) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
    
         
       });
    
    }
    
    
    //SORTIEREN
    function sortMe(myType,value){
    
    if(myType=="alpha" ){
       if( typeof myObject[0][value] != "boolean" ){ 
        myObject.sort(function (alpha, beta) {
                if ((alpha[value].toString().toUpperCase()).trim() > (beta[value].toString().toUpperCase()).trim())
                   return 1;
                if ((beta[value].toString().toUpperCase()).trim()> (alpha[value].toUpperCase().toString()).trim())
                   return -1;
                return 0;
               });
       }  else { 
          myObject.sort(function(x, y) {
         
           return (x[value] === y[value])? 0 : x[value]? -1 : 1;
           
         
       });
       }
     
    
    }     else { 
               
          myObject.sort(function (alpha, beta) {
    
           return  beta[value] -alpha[value]; 
          
    
       });}
    
    //    log(JSON.stringify(myObject))
       
    }
     
    
    
    
    
    
    

    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

    LatziL 1 Antwort Letzte Antwort
    0
    • liv-in-skyL liv-in-sky

      @latzi

      teste mal bitte dieses script - ob das wenigstens durchläuft - ohne log-fehler

      ok - dein schedule macht da ärger - in dem script hier ist sollte es übergangen werden - es ist eh kein name für das sript in den daten

       //@liv-in-sky 2021  21.2.-14:31
      
      // DAS WIDGET IN DER VIS
      // das Standard html-Widget wird genutzt in der VIS - dazu den DP javascript.x.Tabellen@Liv.TestTabelleVIS.HTMLTableVis als binding angeben d.h.
      // im html-teil des widgets wird dier daten punkt in geschweiften klammern angegeben z.B. {javascript.0.Tabellen@Liv.TestTabelleVIS.HTMLTableVis}
      
      // @ts-ignore
      let braucheEinVISWidget=true;                                 // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
      let  dpVIS="JavascriptSchedule"                               // WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  Ist der Name zum datenpunkt anlegen
      let braucheEinJSON=true;                                      // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
      let  dpJSON="JavascriptScheduleJSON"                          // WICHTIG wenn braucheEinJSON auf true gesetzt !!   Ist der Name zum datenpunkt anlegen
      let mySchedule="  18 */2 * * * ";                             // 
      
      //ZUSÄTZLICH VARIABLEN
      let onlineFarbe="#C9AF4A";
      
      let sortierenEIN=true;
      
      //---------------------------------------
      
      //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 3 - es MÜSSEN in allen Arrays die GLEICHE Anzahl für die Werte sein
      let val=             ["dummy1","dummy2","dummy3"];              // GLEICHE ANZAHL !! HIER SIND DIE  WERTE, DIE IN DER SCHLEIFE GEFILTERET WERDEN -  jeder val[x] muss unten in der schleife gesetzt werden !!
      let Feld1lAlign=     ["left","center","left"];                  // GLEICHE ANZAHL !! AUSRICHTUNG IN DER SPALTE
      let htmlSpalte1Weite=["180px","auto","300px"];                    // GLEICHE ANZAHL !! BREITE DER SPALTE, wenn nicht auto
      let htmlFeld=        ["SCRIPT","PATTERN","PFAD"];               // GLEICHE ANZAHL !! NAME/ÜBERSCHRIFT DER SPALTE
      let schalterInSpaltenUeberschrift=[true,true,true];             // WENN BUTTONS INSTALLIERT WERDEN
      let symbolSchalter=               ["na","&#8644;","&#8644;"];   // SYMBOLE DER BUTTONS
      //-----------------------------------
      
      //Symbole für Tabelle z.b.: ⚪  ⚫ ⭕  🔴 🔵 ⏱ 💀 👍 👎 📑 💲 👀 🔹 ✅ ❌ ⚠️ mehr: https://emojiterra.com/de/ oder https://unicode-table.com/de/html-entities/
      
      //hier werden die styles für die tabelle definiert
      //ÜBERSCHRIFT ÜBER TABELLE
      const htmlUberschrift=true;                             // mit Überschrift über der tabelle
      const htmlSignature=false;                               // anstatt der Überscghrift eine signature: - kleiner - anliegend
      const htmlFeldUeber='JAVASCRIPT SCHEDULES';                // für Überschrift und Signature falls htmlUberschrift und htmlSignature ist true
      const htmlFarbUber="white";                              // Farbe der Überschrift
      const htmlSchriftWeite="normal";                         // bold, normal - Fettschrift für Überschrift
      const htmlUEberFontGroesse="18px";                       // schriftgröße überschrift
      //SEITENLEISTE
      const ichWillSeitenLeiste=true;                          // links einblenden einer Seitenleiste
      const nameSeitenLeiste="JAVASCRIPT SCHEDULES"
      const breiteSeitenleiste=25;
      const schriftGroesseSeitenleiste=18;
      const abstandSeitentextVonOben=6;
      const htmlFarbSeiteSchrift="black";
      const htmlBackgroundFarbeSeitenliste="transparent";
      //MEHRERE TABELLEN NEBENEINANDER
      let mehrfachTabelle=1;                                   // bis zu 3 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3 !!!
      const trennungsLinie="2";                                // extra trennungslinie bei mehrfachtabellen - evtl auf 0 stellen, wnn htmlRahmenLinien auf none sind
      const farbetrennungsLinie="#C9AF4A";                       // bei mehreren Tabellen nebeneinander wird ein Strich zw. den Tabellen gezogen
      const htmlFarbTableColorUber="black"                     // Spalten-Überschrift in der tabelle - für die einzelnen Spalten //"#BDBDBD"; 
      const htmlFarbZweiteTabelle="black";                     // Farbe der Spalten-Überschrift bei jeder 2.ten Tabelle        
      //ÜBERSCHRIFT SPALTEN - OBERSTE ZEILE IN TAB
      const UeberSchriftHoehe="40";                            // Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe
      const LinieUnterUeberschrift="4";                        // Liniehoehe nur unter Spaltenüberschrift  
      const farbeLinieUnterUeberschrift="E8343A";               // LinienFarbe unter Spaltenüberschrift
      const groesseUeberschrift=14; 
      const UeberschriftStyle="normal"                         // möglich "bold"
      const UeberschriftSpalten=true;                          // ein- oder ausblenden der spatlen-überschriften
      //GANZE TABELLE
      const abstandZelle="2";                                  // legt den abstand in den zellen zum rahmen fest
      const zeilenAbstand=3;                                   // legt den abstand zwischen den zeilen fest
      const farbeUngeradeZeilen="#000000";                     // Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2 - bei "transparent" gewinnt htmlFarbTableColorGradient1
      const farbeGeradeZeilen="#151515";                       // Farbe für gerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2   - bei "transparent" gewinnt htmlFarbTableColorGradient2
      const weite="auto";                                      // Weite der Tabelle - verhindert das dynamische breiter werden, wenn werte unterschiedliche werte haben
      const zentriert=true;                                    // ganze tabelle zentriert im html Widget
      const backgroundAll="#000000";                           // Hintergrund für die ganze Seite - für direkten aufruf oder iqontrol sichtber - keine auswirkung auf vis-widget
      const htmlSchriftart="Ubuntu-Regular"                    // "Jura-DemiBold"   //"RobotoCondensed-Bold"   //"Helvetica"; .....
      const htmlSchriftgroesse="16px";                         // schriftgröße in den zellen
      const rahmenBreite="1px";                                //mit 0 ist äußerer rahmen weg
      //FELDER UND RAHMEN
      const htmlFarbFelderschrift="#8A8A88";                   // SchriftFarbe der Felder
      const htmlFarbFelderschrift2="#8A8A88";                  // SchriftFarbe der Felder für jede 2te Tabelle
      const htmlGragient=[150,15,50];                          // einstellung des gradienten
      const htmlFarbTableColorGradient1="#A29595";         // Gradient - Hintergrund der Tabelle - Verlauffarbe
      const htmlFarbTableColorGradient2="#E8343A";              // Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
      const htmlFarbTableBorderColor="grey";                   // Farbe des Rahmen - ist dieser gleich den gradienten, sind die rahmen unsichtbar
      let htmlRahmenLinien="cols";                             // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
      
      // falls eine extra html datei gebraucht wird
      const path = "/htmlexample.html";                        //FIlenamen definieren
      const home ='vis.0'                                      //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
      let   braucheEinFile=false;                              // bei true wird ein file geschrieben
      
      // AB HIER NICHTS  ÄNDERN -------------------------------------------------------------------------------------------------
      // AB HIER NICHTS  ÄNDERN -------------------------------------------------------------------------------------------------
      // AB HIER NICHTS  ÄNDERN ---------------------------------erst wieder ab Zeile 134----------------------------------------
      
      let borderHelpBottum;
      let borderHelpRight;
      let htmlcenterHelp;
      let htmlcenterHelp2;
      
      if(String(htmlRahmenLinien)=="rows") {borderHelpBottum=1;borderHelpRight=0;}
      if(String(htmlRahmenLinien)=="cols") {borderHelpBottum=0;borderHelpRight=1;}
      if(String(htmlRahmenLinien)=="none") {borderHelpBottum=0;borderHelpRight=0;}
      if(String(htmlRahmenLinien)=="all")  {borderHelpBottum=1;borderHelpRight=1;}
      zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
      zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
      
      
      const htmlZentriert='<center>'
      const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html;  http-equiv=\"refresh\" content=\"30\"; charset=utf-8\">"+
                         "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                         " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                        // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                         " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                         " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                         "td:nth-child(1) {width: "+htmlSpalte1Weite[0]+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite[1]+"}"+
                         " </style></head><body> <div>";
      //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
      const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\""+rahmenBreite+"\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+zeilenAbstand+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                          "; font-family:"+htmlSchriftart+";background-image: linear-gradient("+htmlGragient[0]+"deg,"+htmlFarbTableColorGradient2+" "+htmlGragient[1]+"%,"+htmlFarbTableColorGradient1+" "+htmlGragient[2]+"%);\">";
      let htmlTabUeber4="<tr style=\" height:"+UeberSchriftHoehe+"px; color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \">";
      const htmlTabUeber3="</tr>";
      
      
      const buttonScript =   '<script> function setOnOtherValue(myval) {	var Self = this;	Self.servConn.getStates(myval, (error, states) => {  console.log(states); self.servConn.setState(myval, !states[myval].val);}  )}'
                           +'</script>'
      
      
      //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 3
      let htmlTabUeber2=""
      for (let ue=0;ue<htmlSpalte1Weite.length;ue++) { if (!schalterInSpaltenUeberschrift[ue] ) { 
                                                            htmlTabUeber2=htmlTabUeber2.concat("<td width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+" style=\"color:"+htmlFarbTableColorUber+"\">"+htmlFeld[ue]+"</td>")} 
                                                            else {let valButton="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte"+ue
                                                            htmlTabUeber2=htmlTabUeber2.concat("<td  width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+">"+""+" <button style\=\" border-radius: 4px; border:1px solid\; background-color\:transparent\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnOtherValue\(\'"+valButton+"\')\">"+htmlFeld[ue]+"</button></td>")  //symbolSchalter[ue]  
                                                            }
      }
      
      let  htmlTabUeber2_1=""
      for (let ue=0;ue<htmlSpalte1Weite.length;ue++) { htmlTabUeber2_1=htmlTabUeber2_1.concat("<td width="+htmlSpalte1Weite[ue]+" align="+Feld1lAlign[ue]+" style=\"color:"+htmlFarbZweiteTabelle+"\">"+htmlFeld[ue]+"</td>")}
      
      //------------------------------------------------------
      if ( !(val.length == Feld1lAlign.length && htmlSpalte1Weite.length == htmlFeld.length && val.length == htmlFeld.length) || (mehrfachTabelle<1 || mehrfachTabelle>3) ) 
           { log("Anzahle der Definitions Arrays sind ungleich ODER mehrfachTabelle ist falsch - Script wurde gestoppt !!!","error");
               // @ts-ignore
               stopScript();}
      let mitAlphabet=false;
      let langeGesamt=0; 
      let htmlTabUeber="";
      let htmlOut="";
      let mix;
      var counter;
      let makeJsonWidget;
      let myObject=[];
      let welcheSortierung=0;
      var runSchon=false
      needDP();
      
      
      async function writeHTML(){
      
      let seitenLeistenTest="";
      let htmlTabUeber1=htmlTabUeber4
      myObject=[]
      let helperLeerzeile=""
      let makeJsonWidget=[];
      htmlOut="";
      counter=-1;
      
      //--------------------------------------------------------------------------------------------------------------------------------------------------
      //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
      //---------alle val[x] werte müssen von euch bestimmt werden - val[0],val[1],val[2] !!!-------------------------------------------------------------
      //--------------------------------------------------------------------------------------------------------------------------------------------------
      
      var ArrayL=[]
      const list = getSchedules(true);
      await list.forEach(schedule =>  { ArrayL.push(schedule)    });  /*console.log(JSON.stringify(schedule));;*/
      // setTimeout(function () { 
        //  log(JSON.stringify(ArrayL))
      for (let uu=0;uu<ArrayL.length;uu++){
         if(ArrayL[uu].hasOwnProperty("scriptName")) {
         let valZwischen=ArrayL[uu].scriptName; //log(val[0]) ;
         val[0]=valZwischen.replace(/.+\.(.+)$/g,"$1");
         val[1]=ArrayL[uu].pattern
         val[2]=valZwischen.replace(/script.js.(.+)\..+$/g,"$1");
       
        
         
         myObject.push({                     "value0" : val[0],            //  "INSTANCE"
                                             "value1" : val[1],            //  "SINCE"
                                             "value2" : val[2]
                                                             })
                     
                makeJsonWidget.push({        [htmlFeld[0]] : val[0],  //  "INSTANCE"
                                             [htmlFeld[1]] : val[1],
                                             [htmlFeld[2]] : val[2]
                                                             })  
      }}
      
                                          // Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!
      
         if(sortierenEIN ) switch (welcheSortierung) {
             case 0: sortMe("alpha","value0");break;  
             case 1: sortMe("alpha","value1");break;   
             case 2: sortMe("alpha","value2");break;}
      
              
      
         for(let zz=0;zz<myObject.length;zz++){
      
       // Unterüberschften ------------------------------------------------------       
              if (mitAlphabet && welcheSortierung==0){
                if( myObject[zz].value0[0]!=helperLeerzeile){ tabelleAusbessern();
                                                              counter=-1;  for(let ic=0;ic<mehrfachTabelle;ic++ ) { for (let tt=0 ;tt<val.length;tt++) 
                                                                                                                        { tt==0 && ic==0 ? val[tt]=(myObject[zz].value0[0]).toUpperCase() : val[tt]="&ensp;"
                                                                                                                        }   
                                                                                                                    counter++;tabelleBind();langeGesamt++; }
                helperLeerzeile=myObject[zz].value0[0] } ; sortierenEIN=false;}
       // Unterüberschften Ende---------------------------------------------------  
      
      
          val[0]=myObject[zz].value0;
          val[1]=myObject[zz].value1;
          val[2]=myObject[zz].value2;
      
      
           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
           tabelleBind();                                   // HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  
           langeGesamt++;                                   // WICHTIG Seitenleiste
         }
      seitenLeistenTest="</br>"+langeGesamt
      //-------------------------------------------------------------------------------------------------------------------------------------------------
      //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
      //-------------------------------------------------------------------------------------------------------------------------------------------------
       let einmalAbstand=`</br>
      `
       for (let f=0;f<abstandSeitentextVonOben;f++){
           seitenLeistenTest=seitenLeistenTest+`<br>
      `}
       for (let i=0;i<nameSeitenLeiste.length;i++){
           seitenLeistenTest=seitenLeistenTest+nameSeitenLeiste[i]+`<br>
      ` }
         htmlTabUeber="";
       if (ichWillSeitenLeiste) htmlTabUeber1=htmlTabUeber1+"<td  style=\" background-color: "+htmlBackgroundFarbeSeitenliste+"; margin-top: 200px; color: "+htmlFarbSeiteSchrift+ ";font-size:"+schriftGroesseSeitenleiste+"px; vertical-align:top; text-align:center \" width=\""+breiteSeitenleiste+"\" rowspan=\""+(langeGesamt+1)+"\">"+seitenLeistenTest+"</td>"
        switch (mehrfachTabelle) { 
         case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
         case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
         case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2_1+htmlTabUeber3; break;
         case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
        };   
        if (!UeberschriftSpalten) {htmlTabUeber=""}
        
            tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
            if (braucheEinJSON ) {setStateDelayed("javascript." + instance + ".Tabellen@Liv."+dpVIS+".JSONVis",JSON.stringify(makeJsonWidget),1000 )}
      //   }, 10050);   
         runSchon=false;    
      } // function ende
      
      //MAIN:
       
      schedule(mySchedule,  function () { 
       if(!runSchon) writeHTML(); 
       if (braucheEinFile && !runSchon) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
      }); 
      setTimeout(function () { if(!runSchon) writeHTML();  }, 50);  
      
       function tabelleBind(){
        
         switch (mehrfachTabelle) { 
      
         case 1: if(counter%2==0)   {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                     for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                  }  htmlOut=htmlOut.concat("</tr>");   break;
      
                                     } else   {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                               for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                            }  htmlOut=htmlOut.concat("</tr>");   break;
                                     }
         
         case 2: if(counter%4==0){  if(counter%2==0)  {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                                       for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                    {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                    }  
                                                                                 
                                      } else { for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");
                                                                            }  htmlOut=htmlOut.concat("</tr>");  } break;
                                 } else {
                                   if(counter%2==0)  {htmlOut=htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                                      for(let u=0;u<val.length;u++){  if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                   {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                   }  
                                      } else {        for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");
                                                                                   }  htmlOut=htmlOut.concat("</tr>");  }  break;}
      
         case 3: if(counter%2==0)  {  if(counter%3==0 ) {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeGeradeZeilen+"\">";
                                                         for(let u=0;u<val.length;u++){if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                      {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                                              }  
                                     } else { if(counter%3==1)  {for(let u=0;u<val.length;u++){  if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");} else
                                                                                                                    {htmlOut=htmlOut.concat("<td  align="+Feld1lAlign[u]+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "; color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>")}
                                                                                                              }  
                                                                } else  { for(let u=0;u<val.length;u++){  htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                                                       }  htmlOut=htmlOut.concat("</tr>");  } }  break;
                                   } 
                                   else {
                                      if(counter%3==0 )  {htmlOut = htmlOut+"<tr cellspacing=\""+abstandZelle+"\"  bgcolor=\""+farbeUngeradeZeilen+"\">";
                                                         for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");} else
                                                                                                           {htmlOut=htmlOut.concat("<td style=\" border-right:"+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld1lAlign[u]+">"+val[u]+"</td>")}
                                                                                                              }  
                                                                                                              
                                   } else{ if(counter%3==1 )  { for(let u=0;u<val.length;u++){ if(u<val.length-1) {htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>");} else
                                                                                                                  {htmlOut=htmlOut.concat("<td  align="+Feld1lAlign[u]+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "; color:"+htmlFarbFelderschrift2+"\">"+val[u]+"</td>")}
                                                                                                              }  
                                                               } else {        for(let u=0;u<val.length;u++){ htmlOut=htmlOut.concat("<td align="+Feld1lAlign[u]+">"+val[u]+"</td>");
                                                                                                            }  htmlOut=htmlOut.concat("</tr>"); } } break;
                                   }                                        
      
      
                                      
              } //switch ende
      
      }
      
       function tabelleAusbessern() {         // bessert mei mehrfachtabellen die nicht vollen zeilenn aus - bevor die unterüberschriften kommen
      
      switch (mehrfachTabelle) {
              
             case 1:    break;
             case 2:    let helpMehrfach="</td>";
                        for(let w=0;w<val.length;w++){helpMehrfach=helpMehrfach.concat("<td>&ensp;</td>")};helpMehrfach=helpMehrfach.concat("</tr>")
                        if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach);
                        break;
             case 3:   let helpMehrfach2="</td>";
                       for(let w=0;w<val.length;w++){helpMehrfach2=helpMehrfach2.concat("<td>&ensp;</td>")};helpMehrfach2=helpMehrfach2.concat("</tr>")
                       if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                       if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach2);
                       let helpMehrfach3="</td>";
                       let helpMehrfach31="";for(let w=0;w<val.length;w++){helpMehrfach31=helpMehrfach31.concat("<td>&ensp;</td>")}
                       for(let w=0;w<val.length;w++){if(w<val.length-1) {helpMehrfach3=helpMehrfach3.concat("<td>&ensp;</td>")} else
                                                               {helpMehrfach3=helpMehrfach3.concat("<td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td>"+helpMehrfach31)}
                                                         };helpMehrfach3=helpMehrfach3.concat("</tr>")        
                       if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach3);  break; }}
      
       function tabelleFinish() {
      
      switch (mehrfachTabelle) {
              
             case 1:    break;
             case 2:    let helpMehrfach="</td>";
                        for(let w=0;w<val.length;w++){helpMehrfach=helpMehrfach.concat("<td>&ensp;</td>")};helpMehrfach=helpMehrfach.concat("</tr>")
                        if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach);
                        break;
             case 3:   let helpMehrfach2="</td>";
                       for(let w=0;w<val.length;w++){helpMehrfach2=helpMehrfach2.concat("<td>&ensp;</td>")};helpMehrfach2=helpMehrfach2.concat("</tr>")
                       if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                       if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach2);
                       let helpMehrfach3="</td>";
                       let helpMehrfach31="";for(let w=0;w<val.length;w++){helpMehrfach31=helpMehrfach31.concat("<td>&ensp;</td>")}
                       for(let w=0;w<val.length;w++){if(w<val.length-1) {helpMehrfach3=helpMehrfach3.concat("<td>&ensp;</td>")} else
                                                               {helpMehrfach3=helpMehrfach3.concat("<td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td>"+helpMehrfach31)}
                                                         };helpMehrfach3=helpMehrfach3.concat("</tr>")        
                       if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, helpMehrfach3);  break; }
           
               var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlUEberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</p>"; 
             var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: center;\" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</div>";
              
              if (!htmlSignature) htmlUnter="";
                //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
                 var htmlOutVIS="";
               //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                  if (htmlUberschrift) 
                      { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript ;
      
                    } else {
                     zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript;
      
                       }
                       
      
        // log("bin raus aus tabelleBind");
                 if (braucheEinVISWidget)  setStateDelayed("javascript." + instance + ".Tabellen@Liv."+dpVIS+".HTMLTableVis", htmlOutVIS ,1000);
      
       var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((new Date().getTime())), "SS:mm:ss");+"</div>"
      
       if (!htmlSignature) htmlUnter="";
        var htmlEnd="</table>"+htmlUnter+"</div></body>";
       //mit oder ohne überschrift - zentriert oder links
      htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
       //log(htmlOut);
      
      
      }
      
      async function needDP(){
         for(let s=0;s<schalterInSpaltenUeberschrift.length;s++){ if(schalterInSpaltenUeberschrift[s]){
         if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte"+s))) {
             await createStateAsync("Tabellen@Liv."+dpVIS+".Spalte"+s, false,{type: "boolean", name: "Schalter_Spalte"+s, role: "value", read: true, write: true, } ); } 
           }}
      
         if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".HTMLTableVis"))) {
             await createStateAsync("Tabellen@Liv."+dpVIS+".HTMLTableVis", "empty",{type: "string", name: "HTML_Standard_Widget_mit_Binding", role: "value", read: true, write: true, } ); } 
          if (!(await existsStateAsync("javascript." + instance + ".Tabellen@Liv."+dpVIS+".JSONVis"))) {
             await createStateAsync("Tabellen@Liv."+dpVIS+".JSONVis", "",{type: "string", name: "JSON Format", role: "value", read: true, write: true, } ); }   
         
      
         let arrTriggerSchalter=[]
         $("javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte*").each(function(id, i) {  
                arrTriggerSchalter.push(id) 
         });
       //  log(arrTriggerSchalter.toString())
       
         on({id: arrTriggerSchalter, ack: false, change: "any"}, function (obj) { 
           //  log(obj.id)
           obj.id=="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte1"  ? welcheSortierung=1 : welcheSortierung=2;
           if (obj.id=="javascript." + instance + ".Tabellen@Liv."+dpVIS+".Spalte0") welcheSortierung=0;
        if(!runSchon) writeHTML();
          if (braucheEinFile && !runSchon) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
      
           
         });
      
      }
      
      
      //SORTIEREN
      function sortMe(myType,value){
      
      if(myType=="alpha" ){
         if( typeof myObject[0][value] != "boolean" ){ 
          myObject.sort(function (alpha, beta) {
                  if ((alpha[value].toString().toUpperCase()).trim() > (beta[value].toString().toUpperCase()).trim())
                     return 1;
                  if ((beta[value].toString().toUpperCase()).trim()> (alpha[value].toUpperCase().toString()).trim())
                     return -1;
                  return 0;
                 });
         }  else { 
            myObject.sort(function(x, y) {
           
             return (x[value] === y[value])? 0 : x[value]? -1 : 1;
             
           
         });
         }
       
      
      }     else { 
                 
            myObject.sort(function (alpha, beta) {
      
             return  beta[value] -alpha[value]; 
            
      
         });}
      
      //    log(JSON.stringify(myObject))
         
      }
       
      
      
      
      
      
      

      LatziL Online
      LatziL Online
      Latzi
      schrieb am zuletzt editiert von
      #43

      @liv-in-sky
      :+1: läuft ohne Meldungen

      liv-in-skyL 1 Antwort Letzte Antwort
      0
      • LatziL Latzi

        @liv-in-sky
        :+1: läuft ohne Meldungen

        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #44

        @latzi kannst du das schedule nicht in cron umwandeln

        Image 5.png

        <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="ZEtOR],6ELU=t8A]8.U1" x="512.9243774414062" y="37.43397521972656">
         <field name="SCHEDULE">30 0 * * *</field>
        </block>
        

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        LatziL 1 Antwort Letzte Antwort
        0
        • Agria4800A Agria4800

          @liv-in-sky sagte in HTML Tabelle für alle Schedules in den Scripten:
          Mal ne Frage, funktioniert das Script bei dir, ich bekomme einen Fehler in Zeile 175:

          val[0]=valZwischen.replace(/.+\.(.+)$/g,"$1");
          

          Log:

          javascript.0	2021-04-06 21:16:14.975	error	(3632) at writeHTML (script.js.VIS-Tabellen.JS_Schedule_Übersicht:175:23)
          javascript.0	2021-04-06 21:16:14.974	error	(3632) script.js.VIS-Tabellen.JS_Schedule_Übersicht: TypeError: Cannot read property 'replace' of undefined
          javascript.0	2021-04-06 21:16:12.117	error	(3632) at writeHTML (script.js.VIS-Tabellen.JS_Schedule_Übersicht:175:23)
          javascript.0	2021-04-06 21:16:12.117	error	(3632) script.js.VIS-Tabellen.JS_Schedule_Übersicht: TypeError: Cannot read property 'replace' of undefined
          
          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #45

          @agria4800 im ersten post ist ein neues script - teste bitte mal, ob das bei dir funk.

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          Agria4800A 1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @latzi kannst du das schedule nicht in cron umwandeln

            Image 5.png

            <block xmlns="https://developers.google.com/blockly/xml" type="schedule" id="ZEtOR],6ELU=t8A]8.U1" x="512.9243774414062" y="37.43397521972656">
             <field name="SCHEDULE">30 0 * * *</field>
            </block>
            

            LatziL Online
            LatziL Online
            Latzi
            schrieb am zuletzt editiert von Latzi
            #46

            @liv-in-sky
            klar, die Blockly´s stammen noch von meinen Anfangszeiten, damals benutzte ich den Wizard, da ich die Syntax des cron nicht so wirklich durchschaute ;-)
            Kann ich das Script trotzdem so belassen?

            Edit: ich war zu langsam

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • LatziL Latzi

              @liv-in-sky
              klar, die Blockly´s stammen noch von meinen Anfangszeiten, damals benutzte ich den Wizard, da ich die Syntax des cron nicht so wirklich durchschaute ;-)
              Kann ich das Script trotzdem so belassen?

              Edit: ich war zu langsam

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #47

              @latzi klar kannst du es lassen - aber es wird halt nicht angezeigt in der tabelle

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              LatziL 2 Antworten Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @latzi klar kannst du es lassen - aber es wird halt nicht angezeigt in der tabelle

                LatziL Online
                LatziL Online
                Latzi
                schrieb am zuletzt editiert von
                #48

                @liv-in-sky
                die Blockly-cron´s ändere ich ohnehin ;-)
                Vielen Dank!

                1 Antwort Letzte Antwort
                0
                • liv-in-skyL liv-in-sky

                  @latzi klar kannst du es lassen - aber es wird halt nicht angezeigt in der tabelle

                  LatziL Online
                  LatziL Online
                  Latzi
                  schrieb am zuletzt editiert von
                  #49

                  @liv-in-sky
                  Mir ist aufgefallen, wenn ich die Sortierung anwähle, wird der Zähler der Scripte jedesmal um die Gesamtanzahl hochgezählt
                  f176d123-9cd6-4305-867b-a04154363d48-grafik.png

                  f9f26c25-37f5-4f30-bd84-591ff82220b5-grafik.png

                  liv-in-skyL 1 Antwort Letzte Antwort
                  1
                  • LatziL Latzi

                    @liv-in-sky
                    Mir ist aufgefallen, wenn ich die Sortierung anwähle, wird der Zähler der Scripte jedesmal um die Gesamtanzahl hochgezählt
                    f176d123-9cd6-4305-867b-a04154363d48-grafik.png

                    f9f26c25-37f5-4f30-bd84-591ff82220b5-grafik.png

                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #50

                    @latzi

                    voll richtig gesehen - nutze das script ja meist nur einmal und beende es - daher ist mir das nicht aufgefallen

                    füge das

                    langeGesamt=0; 
                    

                    in zeile 154 ein

                    oder im ersten post ist neues script

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    LatziL 1 Antwort Letzte Antwort
                    1
                    • liv-in-skyL liv-in-sky

                      @latzi

                      voll richtig gesehen - nutze das script ja meist nur einmal und beende es - daher ist mir das nicht aufgefallen

                      füge das

                      langeGesamt=0; 
                      

                      in zeile 154 ein

                      oder im ersten post ist neues script

                      LatziL Online
                      LatziL Online
                      Latzi
                      schrieb am zuletzt editiert von
                      #51

                      @liv-in-sky sagte in HTML Tabelle für alle Schedules in den Scripten:

                      langeGesamt=0;

                      Vielen Dank!!!

                      1 Antwort Letzte Antwort
                      0
                      • liv-in-skyL liv-in-sky

                        @agria4800 im ersten post ist ein neues script - teste bitte mal, ob das bei dir funk.

                        Agria4800A Offline
                        Agria4800A Offline
                        Agria4800
                        schrieb am zuletzt editiert von
                        #52

                        @liv-in-sky: hat nun geklappt, funktioniert :+1:

                        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

                        895

                        Online

                        32.4k

                        Benutzer

                        81.5k

                        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