[Seaside] Suggested extension for WASelectTag

jtuchel at objektfabrik.de jtuchel at objektfabrik.de
Mon Jul 3 07:06:47 UTC 2017


Hi Paul,


I I admit not having invested too much time into the iteration 
possibility, I just couldn't get it to work. For some reason I couldn't 
get the combination of a callback for the select tag and setting value: 
on each option to work. I don't remember the datails, but I tried two or 
three ways and failed every time. I may have given up too fast, because 
the solution I suggested is so easy and fast to implement...

My favorite solution wouldn't be adding a new attribute to each option 
tag, but using the value attribute of the options for the business value.

OTOH, the two argument block also allows for disabling options or any 
other manipulation of an option, so it's quite flexible.

I'll take a look at 
WAInputElementContainer>>#renderSingleSelectionCustomOn: and see what I 
have missed in my attempts. Thanks for the pointer.

Joachim









Am 02.07.17 um 18:34 schrieb Paul DeBruicker:
> Hi Joachim,
>
> I don't think you missed an existing way to set an attribute on a select tag
> option.  Other than iterating over the options like in e.g.
> WAInputElementContainer>>#renderSingleSelectionCustomOn: I don't know how to
> set them.
>
>
> Seems like your method is more convenient than iterating over the option
> tags.  I'd add it for sure.
>
>
> Paul
>
>
>
> jtuchel wrote
>> Hi,
>>
>>
>> I needed a way to add an attribute of each option in a select list,
>> because Seaside uses the value attribute for its server side callback.
>>
>> The reason was I wanted to do something on the browser side
>> onChange/onKeyUp based on some business values.
>>
>>
>> Here is what I changed in WASelectTag:
>>
>> * added inst var: itemConfigBlock with getter and setter
>>
>> * changed #renderListItemLabelled: to
>>
>>
>> renderListItem: anObject labelled: aString
>>
>>       | option |
>>
>>       option := canvas option.
>>       self hasCallback ifTrue: [option value: (self valueFor: anObject)].
>>       titleBlock isNil ifFalse: [option title: (self titleFor: anObject)].
>>       itemConfigBlock ifNotNil: [:block | block value: option value:
>> anObject].
>>       option
>>           selected: (self isSelected: anObject);
>>           disabled: (self isEnabled: anObject) not;
>>           with: aString
>>
>>
>> And this is how you can use it:
>>
>>
>> html select
>>
>>       items: MyListOfItems;
>>
>>       callback: [];
>>
>>       itemConfigBlock: [:option :anObject| option attrbibuteAt:
>> 'data-value' put: anObject someValue asString].
>>
>>
>> Was this available already and did I overlook it?
>>
>> Does this sound reasonable? Worth adding to Seaside?
>>
>>
>> Joachim
>>
>>
>>
>>
>>
>>
>>
>>
>> -- 
>> -----------------------------------------------------------------------
>> Objektfabrik Joachim Tuchel          mailto:
>> jtuchel@
>> Fliederweg 1                         http://www.objektfabrik.de
>> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
>> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>>
>> _______________________________________________
>> seaside mailing list
>> seaside at .squeakfoundation
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
>
>
> --
> View this message in context: http://forum.world.st/Suggested-extension-for-WASelectTag-tp4953167p4953223.html
> Sent from the Seaside General mailing list archive at Nabble.com.
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside


-- 
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:jtuchel at objektfabrik.de
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1



More information about the seaside mailing list