relative berechnung wird nicht ausgewertet

  • Ich habe zwei drawrectangle aufrufe in einer area, bei dem ich im zweiten rechteck auf die breite des ersten zurückgreifen will.
    Leider funktioniert dies nicht, d.h. im Debugmodus wird die Breite korrekt ausgewiesen, im Skin selbst wird aber nichts gezeichnet.


    PHP
    <progressbar>
      	<area x="5%" y="83%" width="90%" height="5%" layer="2">
        	<drawrectangle name="pbBackground" x="10" y="40%" width="{areawidth}-20" height="20%" color="{clrGray}"/>
        	<drawrectangle x="10" y="40%" width="{current}/{total}*{width(pbBackground)}" height="20%" color="{clrWhite}"/>
      	</area>
    </progressbar>


    Im Log wird folgendes ausgewiesen:


    Bug oder nicht?

    Gruss Björn.


    SilverGreen-Skin

    2 Mal editiert, zuletzt von Björn ()

  • Moin,


    das mit dem width ist eigentlich für Elemente mit dynamischer Breite wie z.B. Schriften gedacht...warum schreibst du beim zweiten drawrectangle nicht einfach auch width="{current}/{total}*{areawidth}-{current}/{total}*20}" ?


    Ciao Louis

  • Oder weil du keine Klammern auflösen kannst? ;)


    Spass bei Seite...eigentlich müsste deine Variante auch funktionieren, keine Ahnung warum das nicht klappt. Müsste ich mir mal genauer anschauen was da schief läuft.


    Ciao Louis

  • Wäre schon cool, wenn das so funktionieren würde.
    Das mit dem Klammern auflösen macht es nicht gerade einfacher bzw. verständlicher im XML.

    Gruss Björn.


    SilverGreen-Skin

  • Ich kann dieses Phänomen übrigens bestätigen. Ich habe auch schon an einigen Stellen "improvisieren" müssen ;)

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Moin,


    bitte mal mit dem aktuellen Git testen, damit sollte der Big gefixt sein und auch das obige Beispiel funktionieren.


    Der Fehler ist aufgetreten, wenn sowohl dynamische Tokens als auch relative Width, Height, PosX oder PosY Werte von anderen Funktionen innerhalb eines Parameters gleichzeitig benutzt worden sind. Das kommt nicht so häufig vor, deshalb habe ich das wohl noch nie gebraucht und deshalb nicht bemerkt ;)


    Ciao Louis

  • PS: noch eine Anmerkung zum Debug Modus und weil du schreibst "im Debugmodus wird die Breite korrekt ausgewiesen": wenn ein dynamischer Parameter komplett ausgewertet werden kann, dann taucht das Resultat unter "Integer Parameters" auf. In deinem Debug Log wird "width" aber nur unter "Dynamic Integer Parameters" gelistet. Deshalb wurde die Breite nicht korrekt ausgerechnet. Das nur zur Vollständigkeit ;)


    Ciao Louis

  • zu früh gefreut ;(
    kann es sein, dass es innerhalb eines loops nicht funktioniert?



    Das Log dazu:


    Habs gerade auch mal gegengetestet. Ein zweites drawrectangle unterhalb des ersten funktioniert.

    Gruss Björn.


    SilverGreen-Skin

  • Louis,
    könnte man nicht innerhalb einer area sowas wie eigene Variablen definieren?
    zb. in der Art
    <define name=pbBackground" value="{areawidth}-20"/>


    Dann bräuchte man da nicht so Sachen machen wie ich mit dem drawrectangle, um an die Breite zu kommen

    Gruss Björn.


    SilverGreen-Skin

  • Moin,

    kann es sein, dass es innerhalb eines loops nicht funktioniert?


    so wie du es machst nicht...du kannst XML technisch gesehen immer nur auf der "gleichen Ebene" Höhe oder Breite anderer Funktionen abfragen. In <loop> also nur andere Funktionen aus diesem <loop>.


    Im Code war aber für loops trotzdem noch ein Bug, bitte nochmal aus dem Git updaten.


    Ciao Louis

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!