Ankündigung

Einklappen
Keine Ankündigung bisher.

VSE Entwicklung Allgemein

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

    Hallo gaert ,
    als "trial and error" Programmierer komm ich aktuell nicht weiter und hoffe auf einen Tip:
    Ich bin an einem VSE für google maps dran. Um die API zu nutzen muss ich einen API-Key für die Library übergeben. Aktuell vernünftigste Lösung erscheint mir in folgendem Bereich des VSE:

    ###[SHARED.JS]###
    var script = document.createElement('script');
    script.onload = function() {
    };
    script.src = "https://maps.googleapis.com/maps/api/js?key=xxxxxxxxxxxxxxxxxxxx&callback=VSE_VSEID_upd ate";
    document.getElementsByTagName('head')[0].appendChild(script);

    ###[/SHARED.JS]###

    Leider hab' ich keine Ahnung woher ich den API-Key aus dem Speicher bekommen kann , fest verdrahtet klappt's im Moment. Aber das hilft anderen Usern nicht weiter. Ich würde den Key gerne im Visuelement angeben können, aber wie komme ich in diesem Abschnitt an den Wert?

    Vielleicht kannst du (oder natürlich jeder andere) mir etwas auf die Sprünge helfen.

    Kommentar


      Da würde mir auf die Schnelle nur das Feld "Beschriftung" einfallen - var1..20 dürften zu kurz sein.
      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

      Kommentar


        aber wie komme ich im SHARED.JS ohne Funktionsaufruf an die nötigen Parameter(veId) um visuElement_getText(veId) aufzurufen? Ich stell mich ja evtl. nur zu dämlich an

        Kommentar


          Zitat von Winni Beitrag anzeigen
          Hallo [USER="6474"]
          Ich bin an einem VSE für google maps dran. Um die API zu nutzen muss ich einen API-Key für die Library übergeben...
          Winni kurze Frage. Muss in das Feld Beschriftung bei deinem VSE etwas eingetragen werden?
          Die API habe ich im Quelltext ergänzt. Über KO1 gebe per iKO Länge|Breite|Zoom an (z.B. 51.341699|12.3235911|12z), aber leider bleibt das VSE dunkel.
          Gruß David

          Kommentar


            Ja, {#} muss eingetragen werden, damit auch ohne KO gearbeitet werden kann

            Kommentar


              Zitat von Winni Beitrag anzeigen
              Ja, {#} muss eingetragen werden, damit auch ohne KO gearbeitet werden kann
              Ok, leider klappt es noch immer nicht. Die API funktioniert, da ich diese in einem anderen LBS nutze.
              Gruß David

              Kommentar


                Also das z am Ende gehört da nicht hin.... Ansonsten sollte es funktionieren.
                Ich habe hier eine überarbeitet Version mit einigen Features mehr, ist aber noch in Arbeit, kann die alte Version aber nicht mehr testen. Hardcopies vom Setup könnten auch weiterhelfen.

                Kommentar


                  das "z" habe ich nun entfernt, leider ohne Erfolg.

                  hier mal ein paar Screenshots:
                  Bildschirmfoto 2020-01-09 um 22.31.33.png Bildschirmfoto 2020-01-09 um 22.31.24.png
                  Gruß David

                  Kommentar


                    Hmm, bei mir klappts (allerdings mit neuer Version, ging aber bisher auch mit der alten problemlos).
                    API-Key ohne Fehler eingetragen? VSE mit download / upload importiert, nicht copy paste?
                    Was wird denn überhaupt angezeit?
                    Was sagt die Console in den Entwicklertools (bei Chrome Strg + Shift + I)
                    Getestet ist es nur mit Chrome.
                    Bitte einen eigen Thread für das Google MAPS-VSE aufmachen für weitere Diskussionen. Hier geht's mehr um Allgemeines!
                    Zuletzt geändert von Winni; 09.01.2020, 23:19.

                    Kommentar


                      gaert Kann es sein, dass sich ein Fehler in der Doku eingeschlichen hat? Ich bekomme keinen Ajax-Aufruf hin.

                      Mir geht's jetzt darum, ob die Funktion
                      visuElement_callPhp nun mit oder ohne VSEID aufgerufen werden muss. Die Standard-VSEs arbeiten wohl ohne, auch die Funktionsbeschreibung lautet so. In dem Beispiel der Abschnitte in der Doku ist als erster Parameter immer VSEID angegeben.

                      Als absoluter Laie noch kurz was ich "irgendwie" machen möchte. Ich habe als VSE-Parameter die Icon-Nummer eines Bildes und brauche die URL, die Standardfunktionen geben wohl nur die Icons aus dem Layout her.... SQL geht ja nur im PHP-Bereich, deshalb taste ich mich da nun ran.

                      Kommentar


                        Die "Funktionsreferenz" ist vollkommen korrekt (zumindest in diesem Fall) - allerdings ist in der Tat das Beispiel falsch... "VSEID" gehört da nicht hin (in JS).
                        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                        Kommentar


                          Ja, danke, hab' mir deine VSEs angesehen, läuft schon

                          Kommentar


                            Hallo gaert,
                            (oder wer noch helfen kann...)

                            ich habe folgendes Problem:

                            Ich müsste in der Funktion VSE_VSEID_DRAGSTART (oder einen anderen Funktion die beim ersten Klick aufgerufen wird) entscheiden, ob der Klick für das VSE ist oder an ein eventuell darunterliegendes Element weitergeleitet werden soll.

                            Ein einfaches "false" in der DRAGSTART zurückzugeben hat nicht funktioniert.
                            Wird die event propagation in der DRAGSTART immer gestoppt oder gibt es eine Möglichkeit den Event weiter gehen zu lassen?

                            Hintergrund ist, daß ich zwei kreisförmige Element habe die übereinander liegen (ein großer Kreis unten und darüber ein kleiner Kreis).
                            Jetzt sind beides Bedienelemente und ich habe Schwierigkeiten mit der Bedienung des unten liegenden Elements, da das obere Element aufgrund seiner quadratischen Form auch Teile des unteren Elements überdeckt. Ein C, wobei
                            SS Eckenradius zu setzen hat nichts gebracht, obwohl er das Element beim Zeichnen dadurch korrekt beschneidet.

                            Gruß
                            Sven

                            Kommentar


                              Da ich mich in den letzten Tagen etwas mehr mit der Visuentwicklung beschäftigt hab, hatte ich einen Art Installer für externe Elemente geschrieben, den ich aber wieder verworfen habe.

                              Ich füg das als "Idee" hier ein, wie man ein einzelnes VSE auf die Beine stellen kann, vielleicht findet sich hierfür eine Verwendung.

                              PHP-Code:
                              ###[ACTIVATION.PHP]###
                              <?
                              $createScripts = array (
                              "buffers.js" => array ( "md5" => "1617D6EEF32CA1E547A77A87BD8DCF96",
                              "data" => "Y2xhc3MgWGlhb21pVlNFQnVmZmVyIGV4dGVuZHMgVWludDhBc nJheXtyZWFkVUludDgodCl7cmV0
                              dXJuIHRoaXNbdF19cmVhZFVJbnQxNkxFKHQpe3JldHVybih0aG lzW3QrMV08PDgpK3RoaXNbdF19
                              cmVhZEludDE2TEUodCl7dmFyIHI9KHRoaXNbdCsxXTw8OCkrdG hpc1t0XTtyZXR1cm4gcj49TWF0
                              aC5wb3coMiwxNSkmJihyLT1NYXRoLnBvdygyLDE2KSkscn1yZW FkVUludDMyTEUodCl7cmV0dXJu
                              KHRoaXNbdCszXTw8MjQpKyh0aGlzW3QrMl08PDE2KSsodGhpc1 t0KzFdPDw4KSt0aGlzW3QrMF19
                              cmVhZEludDMyTEUodCl7dmFyIHI9KHRoaXNbdCszXTw8MjQpKy h0aGlzW3QrMl08PDE2KSsodGhp
                              c1t0KzFdPDw4KSt0aGlzW3QrMF07cmV0dXJuIHI+PU1hdGgucG 93KDIsMzEpJiYoci09TWF0aC5w
                              b3coMiwzMikpLHJ9fQ==
                              ",
                              )
                              );

                              foreach ($createScripts as $myFile => $content) {
                                 $writeFile = 0;

                                 $fName = "/usr/local/edomi/www/shared/js/".$myFile;
                                 if (!file_exists ($fName)) {
                                    $writeFile = 1;
                                 } else {
                                    if (strtolower (md5_file($fName)) != $content['md5'])
                                       $writeFile = 1;
                                 }

                                 if ($writeFile)
                                    if ($file = fopen($fName, "w")) {
                                       fwrite ($file, base64_decode($content['data']));
                                       fclose ($file);
                                    }
                              }
                              ?>
                              ###[/ACTIVATION.PHP]###
                              1) Mit dem Minifier das JS "verkleinern": https://javascript-minifier.com/
                              2) MD5 des minifizierten JS-Codes erstellen: http://onlinemd5.com/
                              3) base64 des minifizierten JS-Codes erstellen: https://www.base64encode.org/

                              Dann kann man mit Winni's Methode die JS im Header hinternherum inkludieren

                              Schöner wäre es, wenn man über ein weiteres Element in Edomi die JS-Dateien direkt einbinden könnte.

                              GGf. kann sich gaert hier ja mal dazu äussern.

                              Kommentar

                              Lädt...
                              X