Constraints can hold complex javascript. To cap constraints to a
range (100-500 in this example), I use something like
width="{max(100, min(500, sizeslider.value))}"
A nest of trinary ? expressions would probably be faster by avoiding
two function calls. With whitespace added for clarity:
width="${ sizeslider.value < 100
? 100
: ( sizeslider.value > 500 ?
500
: sizeslider.value)) }"
It is sometimes clearer to express this as a handler for
sizeslider.onvalue, something like this:
<handler reference="sizeslider" event="onvalue"
method="setClampedSize" />
<method name="setClampedSize" args="x">
var xclamp = min(100, max(500, x));
mybox.setAttribute("width", xclamp);
</method>
The compiler probably turns the first and third forms above into the
same thing; if the compiler has an optimization for min and max (but
I don't think it does) then all three forms would be equivalent.
-ben
On Sep 22, 2006, at 10:25 PM, [EMAIL PROTECTED] wrote:
> In my example below, I create a view with a smaller nested view. The
> inner view gets its size from constraints based on the its parent.
> The problem is, when the parent is resized too small, the constraints
> on the inner view become negative. If you run my app, you can adjust
> the size with the slider and see what happens. Basically, I need some
> way to have a constraint that tracks the parent, but cannot become
> negative. Is there some way to do this in a contstraint? Or possibly
> a different solution that doesn't have the negative constraint
> problem?
>
>
> <canvas>
>
> <view x="20" y="20" layout="axis:y">
> <view layout="axis:x">
> <text text="outer view size: "/>
> <slider id="sizeslider" width="100" showvalue="true"
> value="50"/>
> </view>
> <view layout="axis:x">
> <text text="inner view size: "/>
> <text text="${box.subviews[0].height}" bgcolor="silver"/>
> </view>
> </view>
>
> <view id="box" x="20" y="80" bgcolor="blue"
> width="${sizeslider.value}" height="${sizeslider.value}">
> <view bgcolor="green" x="10" y="10"
> width="${parent.width - 20}" height="${parent.height -
> 20}"/>
> </view>
>
>
> </canvas>
>
>
> _______________________________________________
> Laszlo-user mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-user
_______________________________________________
Laszlo-user mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-user