[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