Ankündigung

Einklappen
Keine Ankündigung bisher.

VSE Entwicklung Allgemein

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

  • sipiyou
    antwortet
    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.

    Einen Kommentar schreiben:


  • SvenA
    antwortet
    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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • gaert
    antwortet
    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).

    Einen Kommentar schreiben:


  • Winni
    antwortet
    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.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    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.

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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

    Einen Kommentar schreiben:


  • Winni
    antwortet
    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.

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    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

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Da würde mir auf die Schnelle nur das Feld "Beschriftung" einfallen - var1..20 dürften zu kurz sein.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    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.

    Einen Kommentar schreiben:


  • Winni
    antwortet
    gaert
    Ich versuchs' nochmal mit einer weiteren Anfrage: Ich hätte gerne im VSE0029 die Möglichkeit Bilder richtig skaliert, also eingepasst auszugeben, was ja aktuell nicht möglich ist. Auch gerne immer entsprechend zentriert (vertikal wie horizontal).
    Hab mir das in einem eigenen VSE mal zusammengebastelt. Hat das (evtl. in schönerer Form) die Chance in das Standard-VSE aufgenommen zu werden, oder soll ich auch hier ein VSE veröffentlichen?

    Code:
    .
    .
        [var4 = select,2,'Bild: Format','0#Breite und Höhe anpassen|1#Breite anpassen|2#Höhe anpassen|3#Originalgröße|4#zentriert anpassen']
    
    .
    .
    .
    VSE_VSEID_setTimer=function(elementId,statusOk) {
        var d=document.getElementById("e-"+elementId);
        if (d && d.dataset.var4==4) {
            var wiw=document.getElementById("e-"+elementId+"-urlcontent");
            if (wiw) {
                var bprop = wiw.naturalHeight/wiw.naturalWidth;
                var cprop = wiw.offsetParent.clientHeight/wiw.offsetParent.clientWidth;
                if (cprop > bprop) { wiw.style.width='100%';    wiw.style.height='auto'; 
                } else {wiw.style.width='auto';    wiw.style.height='100%'; };
                if (wiw.offsetParent.clientHeight > wiw.clientHeight) { 
                    wiw.style.marginTop = ((wiw.offsetParent.clientHeight-wiw.clientHeight)/2)+'px' 
                } else {
                    wiw.style.marginTop = '0px' 
                }
            }
        }
        if (d) {
    .
    .
    .
    .

    Einen Kommentar schreiben:

Lädt...
X