Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI internas

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    EDOMI internas

    Hallo gaert ,

    ich weiß und kann verstehen, dass du aktuell noch keine EDOMI Internas preisgeben willst.
    Ich versuche nun doch zwei Fragen zu stellen, da mir ja schon lange was auf den Nägeln brennt und ich leider als php und auch js Neuling trotz vieler Versuche nicht weiterkomme:
    Ich habe es geschafft einen Event auf Zeilenebene in das Listelement (control14.js) einzubauen. Anscheinend kann ich aber mit dem Befehl setKoValue wohl nicht jedes beliebige KO setzen?!
    Mir hätte zumindest als Interimslösung vorgeschwebt, das übergebene KO (finde ich leider auch nicht d.dataset.gaid1 d.dataset.gaid2, nur das d.dataset.var1 als Inhalt des KOs) zu nehmen und das KO mit der nächst höheren Nummer als Rückmelde KO zu setzen.

    Nebenbei habe ich festgestellt, dass ich hier auch über Erweiterung der Kopfzeilenlogik z.B. auch Center usw. setzen könnte. Nachteil ist natürlich, dass meine LBS dann nur noch für mich funktionieren würden. Da ich mit den 10kByte aktuell meistens noch hinkomme, werd' ich das erstmal lassen..
    Mein Hauptproblem ist also, wie kann ich ein (beliebiges) KO aus dem js-Teil der Visu ansprechen, wenn das überhaupt geht. Lesend wohl nicht, das hab ich irgendwo schonmal gelesen, weil natürlich auf jeder Seite nur die relevanten Daten gepollt werden.

    Vielleicht magst du mir ja einen Hinweis geben.

    Winni

    #2
    Hallo gaert ,

    Hab' einen workaround für mich gefunden , komme wohl erstmal selber klar, bis du das Control in einer nächsten Version evtl. mal selber änderst.

    Winni

    Kommentar


      #3
      So, bin eigentlich ein Riesenstück weiter, ich setzte hier jetzt mal einen Teil meines abgewandelten Visuelements 14 rein:

      Code:
                      for (var tt=colsStart;tt<colsMax;tt++) {
                          var meta=cols[0][tt].split("***");
                          if (meta.length==2 && !isNaN(parseFloat(meta[1]))) {
                              tmp+="<col width='"+parseFloat(meta[1])+"%'>";
                              isSet=true;
                          } else if (meta.length==2) {                                            //WIW Ergänzung
      // weitere Formatierungsmöglichkeiten durch * getrennt
      // W: width, Breite der Spalte in %
      // A: alignment, Ausrichtung der Spalte
      // S: style, Farbe für Spalte
      // V: vertical alignment, horizintale Ausrichtung der Spalte
                              var colinfo=meta[1].split("*");                                        //WIW Ergänzung
                              tmp+="<col";                                                        //WIW Ergänzung
                              for (var cf=0;cf<colinfo.length;cf++) {                                //WIW Ergänzung
                                  switch (colinfo[cf].substr(0,2)) {                                //WIW Ergänzung
                                  case 'W:':                                                        //WIW Ergänzung
                                      tmp+=" width='"+parseFloat(colinfo[cf].substr(2,20))+"%'";    //WIW Ergänzung
                                      break;                                                        //WIW Ergänzung
                                  case 'A:':                                                        //WIW Ergänzung
                                      tmp+=" align='"+colinfo[cf].substr(2,20)+"'";                //WIW Ergänzung
                                      break;                                                        //WIW Ergänzung
                                  case 'V:':                                                        //WIW Ergänzung
                                      tmp+=" valign='"+colinfo[cf].substr(2,20)+"'";                //WIW Ergänzung
                                      break;                                                        //WIW Ergänzung
                                  case 'S:':                                                        //WIW Ergänzung
                                      tmp+=" style='"+colinfo[cf].substr(2,40)+"'";                //WIW Ergänzung
                                      break;                                                        //WIW Ergänzung
                                  }                                                                //WIW Ergänzung
                              };                                                                    //WIW Ergänzung
                              tmp+=">";                                                            //WIW Ergänzung
                              isSet=true;                                                            //WIW Ergänzung
                          } else {
                              tmp+="<col width=''>";
                          }
                          cols[0][tt]=meta[0];
                      }
                      if (isSet) {n+="<colgroup>"+tmp+"</colgroup>"; alert(n);}
                  }            
      
                  for (var t=0;t<rowsMax;t++) {
                      var b1="";
                      if (t<(rowsMax-1) && (d.dataset.var6==1 || d.dataset.var6==3)) {b1="border-bottom:1px dotted;";}
                      if (t==0 && d.dataset.var7>=1) {
                          //Titelzeile
                          b1="border-bottom:1px solid; font-weight:bold;";
                          if (d.dataset.var7==2) {n+="<tr height='1'>";} else {n+="<tr"+h+">";}
                      } else {
                          var wfc='setKoValue('+d.dataset.gaid2+',stringCleanup(\'Z:'+t+'\'));';      //WIW Änderung
                          var wdb=" ondblclick=\""+wfc+"\"";                                            //WIW Änderung
                          n+="<tr"+h+wdb+">";                                                            //WIW Änderung
                      }
      gaert kann ich irgendetwas machen, damit align und valign greift? Insbesondere align wäre mir wichtig, um die Datenmenge zu reduzieren. Ausserdem werden die Zeilen aufgrund der Datenmenge zu hoch dargestellt, sofern ich diese Formatierung per <p...> in jeder Zelle übertrage.
      Wenn jetzt noch die Möglichkeit bestünde in der Oberfläche eine var7 mit 'Titelzeile nicht ausgeben' und die gaid2 einzugeben wäre , aktuell muss ich das mit SQL einfügen....

      Damit würde eine Kopfzeile z.B. so aussehen können:
      Beginn***W:10*A:right;Ende***W:10*A:right;Titel*** W:20*A:right*S:background-color:red*V:bottom;Ort***W:10*A:right;Beschreibung ***A:right

      Wenn dir das Ganze zu weit geht, bitte den Post löschen!

      Winni

      Kommentar


        #4
        Hm, scheint statt align auf col-Level muss ich wohl text-align auf Zellen-Ebene verwenden, mal sehn ob ich das irgendwie hinbekomme...

        so, jetzt sieht's besser aus:

        Code:
                        for (var tt=colsStart;tt<colsMax;tt++) {
                            var meta=cols[0][tt].split("***");
                            colalign[tt]="";                                                          //WIW Ergänzung
                            colvalign[tt]="";                                                        //WIW Ergänzung
                            if (meta.length==2 && !isNaN(parseFloat(meta[1]))) {
                                tmp+="<col width='"+parseFloat(meta[1])+"%'>";
                                isSet=true;
                            } else if (meta.length==2) {                                            //WIW Ergänzung
        // weitere Formatierungsmöglichkeiten durch * getrennt
        // W: width, Breite der Spalte in %
        // A: alignment, Ausrichtung der Spalte
        // S: style, Farbe für Spalte
        // V: vertical alignment, horizintale Ausrichtung der Spalte
                                var colinfo=meta[1].split("*");                                        //WIW Ergänzung
                                tmp+="<col";                                                        //WIW Ergänzung
                                for (var cf=0;cf<colinfo.length;cf++) {                                //WIW Ergänzung
                                    switch (colinfo[cf].substr(0,2)) {                                //WIW Ergänzung
                                    case 'W:':                                                        //WIW Ergänzung
                                        tmp+=" width='"+parseFloat(colinfo[cf].substr(2,20))+"%'";    //WIW Ergänzung
                                        break;                                                        //WIW Ergänzung
                                    case 'A:':                                                        //WIW Ergänzung
                                        colalign[tt]=" text-align:"+colinfo[cf].substr(2,20)+";";    //WIW Ergänzung
                                        break;                                                        //WIW Ergänzung
                                    case 'V:':                                                        //WIW Ergänzung
                                        colvalign[tt]=" vertical-align:"+colinfo[cf].substr(2,20)+";";    //WIW Ergänzung
                                        break;                                                        //WIW Ergänzung
                                    case 'S:':                                                        //WIW Ergänzung
                                        tmp+=" style='"+colinfo[cf].substr(2,40)+"'";                //WIW Ergänzung
                                        break;                                                        //WIW Ergänzung
                                    }                                                                //WIW Ergänzung
                                };                                                                    //WIW Ergänzung
                                tmp+=">";                                                            //WIW Ergänzung
                                isSet=true;                                                            //WIW Ergänzung
                            } else {
                                tmp+="<col width=''>";
                            }
                            cols[0][tt]=meta[0];
                        }
                        if (isSet) {n+="<colgroup>"+tmp+"</colgroup>"; alert(n);}
                    }            
        
                    for (var t=0;t<rowsMax;t++) {
                        var b1="";
                        if (t<(rowsMax-1) && (d.dataset.var6==1 || d.dataset.var6==3)) {b1="border-bottom:1px dotted;";}
                        if (t==0 && d.dataset.var7>=1) {
                            //Titelzeile
                            b1="border-bottom:1px solid; font-weight:bold;";
                            if (d.dataset.var7==2) {n+="<tr height='1'>";} else {n+="<tr"+h+">";}
                        } else {
                            var wfc='setKoValue('+d.dataset.gaid2+',stringCleanup(\'Z:'+t+'\'));';      //WIW Ergänzung
                            var wdb=" ondblclick=\""+wfc+"\"";                                            //WIW Ergänzung
                            n+="<tr"+h+wdb+">";                                                            //WIW Ergänzung
                        }
                        for (var tt=colsStart;tt<colsMax;tt++) {
                            if (cols[t][tt]!==undefined) {var col=cols[t][tt];} else {var col="&nbsp;";}
                            var b2="";
                            if (tt<(colsMax-1) && (d.dataset.var6==2 || d.dataset.var6==3)) {b2="border-right:1px dotted;";}
                            n+="<td style='"+b1+b2+colalign[tt]+colvalign[tt]+"'>"+col+"</td>";         //WIW Ergänzung
                        }
                        n+="</tr>";
                    }
        Zuletzt geändert von Winni; 22.11.2016, 20:06.

        Kommentar


          #5
          Wäre schön, wenn die angesprochenen Funktionalitäten (ich habe noch etwas erweitert) mal in EDOMI einfließen könnten. Beispiel für die Arbeit mit solchen List-Elementen: Auswahl des News-Kanals links, Anzeige der Artikel rechts. Keine Bindung an einzelne Visuelemente, sehr flexibel. Trotz 10kByte Grenze:
          News1.png
          News2.png


          Das Ganze für Tankstellen mit Preisen, auf Doppelklick in eine Preiszeile Links erscheint rechts das Detail der Tankstelle:
          Benzinpreise.png

          Kommentar


            #6
            Hat schon einmal jemand erfolgreich ein eigenes Visu-Control in EDOMI eingebunden?
            Nach längerem Suchen und patchen von app1.php app100.php app1002.php kann ich meine Visu-Element in dem Visueditor nutzen und die entsprechenden Daten eintragen. Die Infos landen auch in der Datenbank. Ich habe mich an das Control14 angelehnt und eine Control41 geschrieben.
            Dazu existiert auch control41.js und preview41.js, welche funktionstüchtig sind, da vorher als control14 getestet.
            Die Javascript-Programme werden aber in der Visu nicht aufgerufen, die Visu-Elemente erscheinen nicht.
            Kann ich da noch etwas machen, oder ist der Aufruf in dem verschlüsselten Teil von EDOMI untergebracht.
            Bin leider nicht der wirkliche php/js Kenner und habe nur durch Suchen von Textstrings im Code die entsprechenden Stellen finden können......

            Bin für jeden Tipp dankbar

            Winni

            Kommentar


              #7
              Manchmal hilft's wohl zu fragen... Hab' grad entdeckt, dass ich app0.php noch anpassen muss, dann klappts.
              Jetzt bleibt nur noch zu hoffen, dass gaert evtl. eine Möglichkeit anbietet, sowas auch über ein Update hinaus lauffähig zu halten. Evtl. mit Nummernvergabe und einem include. Aktiv sollte das ganze nur werden, wenn eine entsprechend controlxx.js Datei vorhanden ist, so sollten die Auswirkungen auf Installationen, welche das Control nicht nutzen wollen gegen null gehen.

              Kommentar


                #8
                Naja, ganz klappt's immer noch nicht, habe jetzt die veränderte control14.js auf original gesetzt, die Funktion x_construct wird wohl aus control41.js gezogen, aber die Funktion x_Refresh wohl nach wie vor aus control14.js, obwohl ich das in app0.php angepasst habe. Werde morgen weitersuchen.

                Kommentar


                  #9
                  is ne ganz schöne OneManShow hier.. aber ich finds cool was du hier machst.. gerade das mit den Tankstellenpreisen ist sehr schön gelöst !
                  Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                  Kommentar


                    #10
                    Für mich ist's jetzt wohl gelaufen, habe noch herausgefunden, dass bei eval(this.responseText) das falsche Refresh aufgerufen wird, aber wo das ganze aufgebaut wird krieg ich nicht raus:
                    41-1.png
                    41-2.png

                    Kommentar


                      #11
                      Sorry für die Verspätung - ich bin zur Zeit ziemlich ausgelastet...

                      Deine Bemühungen in Ehren, jedoch bitte ich um Verständnis, dass ich die Funktionsweise der Visu usw. nicht mit 3 Sätzen erklären kann Wie Du schon bemerkt hast ist die Sache ein wenig komplizierter, als man zunächst vermuten würde. Von der Idee einer "interaktiven Tabelle" bin ich nicht so wirklich überzeugt, da dies für einige Inkonsistenzen und doch recht aufgeblähte KO-Inhalte führt (zumindest in dieser Art und Weise). Ich werde mich bestimmt irgendwann damit auseinandersetzen - dann aber eher im Kontext eines neuen Visuelements für diesen Zweck
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #12
                        Hallo gaert

                        danke für die kurze Rückmeldung. Dann macht es wohl wirklich keinen Sinn ohne deine Hilfe weiterzusuchen, ich werde dann erstmal das veränderte Control14 verwenden, was nur immer Ärger macht, wenn ich die Visu-Seiten anlange... Krieg ich aber hin.
                        Das mit den aufgeblähten KOs ist mir noch nicht so ganz klar. Ich bin mit meiner Lösung eigentlich recht gut zurechtgekommen. Kopfzeile mit *** und Sonderinformationen, halt etwas ausgeprägter als bei dir um in den Daten-Zellen weniger Infos zu benötigen.
                        Additiv habe ich mittlerweile auch eine Fußzeile, in der ich Steuerungmöglichkeiten übergeben kann, wie z.B. welche Zeile markiert werden soll (bei Verlassen und Neueinstieg in Visuseite notwendig). Dabei kann ich die Markierung über Zeilennummer oder Schlüsselbegriff durchführen (weil das Listelement sich ja evtl. selber sortiert)

                        Bin mal auf deine Lösung gespannt.

                        Grundsätzlich wäre aber eine Möglichkeit eigene Visu-Elemente zu erzeugen wirklich toll. Das Konzept ist grundlegend dafür ja auch völlig ausreichend wenn man sich an ein bestehendes Element anlehnen kann, nur muss man leider an vielen Stellen ein wenig schrauben, was bei Updates zu Aufwand führt. Eilt ja alles nicht so sehr, bin ja schon froh wenn's irgendwo auf deiner Liste steht

                        Winni

                        Kommentar

                        Lädt...
                        X