[Seaside-dev] Re: Javascript Condition with else decoration

Esteban A. Maringolo emaringolo at gmail.com
Tue Sep 30 13:24:48 UTC 2014


No replies to this request in a week.
Can I have write access to the repo?

Who is the principal maintainer of Seaside?

Esteban A. Maringolo


2014-09-22 17:21 GMT-03:00 Esteban A. Maringolo <emaringolo at gmail.com>:
> I was trying to implement a classical "if {...} else {...}" object using
> JSDecorations.
> Then I found there is a JSCondition, but there is no way to describe an
> "else" statement.
>
> Also there is an JSIfThenElse decoration, but it is implemented as a ternary
> operator (x ? y : z) instead of 'if(x){ y} else {z}'
>
> So I added an extension to JSObject, named #condition:else: and also a
> JSConditionElse decoration which produces the expected output.
>
> Can this be added to the main trunk of the Javascript-Core package?
>
> The changes are attached.
>
>
> With these modifications I was able to transform this Javascript:
>     $('#ajaxId tbody').on( 'click', 'tr', function () {
>         if ( $(this).hasClass('selected') ) {
>             $(this).removeClass('selected');
>         }
>         else {
>             $('#ajaxId tr.selected').removeClass('selected');
>             $(this).addClass('selected');
>         }
>     } );
>
> Into this:
>
> | selClass |
> selClass := 'selected'.
> ^ (html jQuery: '#' , self ajaxId , ' tbody')
> on: 'click'
> selector: 'tr'
> do:
> ((html jQuery this removeClass: selClass)
> condition: (html jQuery this hasClass: selClass)
> else:
> (JSScript new
> add: ((html jQuery: '#' , self ajaxId , ' tr.' , selClass) removeClass:
> selClass);
> add: (html jQuery this addClass: selClass);
> yourself))
>
>
> Esteban A. Maringolo
>
> ps: An alternative solution would be to modify the JSIfThenElse, but this
> would require adding returns to the trueStatement and falseStatement of this
> class.


More information about the seaside-dev mailing list