[OpenAjaxIDE] Multiselect properties - must have datatype of array

Bertrand Le Roy Bertrand.Le.Roy at microsoft.com
Thu Aug 7 10:21:05 PDT 2008


It may be a special case to you, but it’s the general case to us. Actually, most languages implement enums and flags exactly that way.

The additive process you describe doesn’t work because there may be values that are predefined combinations of simple values (in, out, inOut).

So far, the metadata specification has done great efforts never to impose any patterns on library implementations beyond obvious bad practice. It seems like here the specification would at least favor (and probably impose) an implementation pattern.

I reiterate my question: apart from us, who else is using enums and flags, and what is the pattern they are applying?

Bertrand

From: ide-bounces at openajax.org [mailto:ide-bounces at openajax.org] On Behalf Of Jon Ferraiolo
Sent: Thursday, August 07, 2008 10:13 AM
To: Aaron Reed
Cc: ide at openajax.org
Subject: Re: [OpenAjaxIDE] Multiselect properties - must have datatype of array


Hi Aaron,
I like this approach much better than format="bitfield"

Jon


[cid:image001.gif at 01C8F877.369B8E60]Aaron Reed/Austin/IBM

Aaron Reed/Austin/IBM

08/07/2008 10:04 AM


To


Jon Ferraiolo/Menlo Park/IBM at IBMUS


cc


"ide at openajax.org" <ide at openajax.org>, ide-bounces at openajax.org, Wayne Vicknair/Austin/IBM at ibmus


Subject


Re: [OpenAjaxIDE] Multiselect properties - must have datatype of array[cid:image005.gif at 01C8F877.369B8E60]<Notes://D03NM113/8725716300163E43/38D46BF5E8F08834852564B500129B2C/6B4D1328FA4743158825749E0055C4D8>








@format="bitwise" has a very 'special case' feel to it. Why not just say that if the datatype is an array, then the selected options will be returned in an array and that if the datatype is not an array, then the values will go through an additive process (if appropriate) based on the datatype. For example, string values would be concatenated (in document order, values separated by a single space), arrays could be merged into a single array and number values would be added (author could certainly choose to make the values 'unique powers of 2' to cover the bitflag scenario). Even if the other examples I noted aren't found to be useful, I'd think the additive capability with multiply selectable numbers could be useful beyond the world of bit flags.

--Aaron
IBM Corporation
Internal Zip: 9022D016
11501 Burnet Road
Austin, TX 78758
(512)838-9948
inet: aaronr at us.ibm.com
_
(} @
|= Volleyball Rules!!!
/\


[cid:image001.gif at 01C8F877.369B8E60]Jon Ferraiolo/Menlo Park/IBM at IBMUS

Jon Ferraiolo/Menlo Park/IBM at IBMUS
Sent by: ide-bounces at openajax.org

08/07/2008 10:49 AM


To


Wayne Vicknair/Austin/IBM at IBMUS


cc


"ide at openajax.org" <ide at openajax.org>


Subject


Re: [OpenAjaxIDE] Multiselect properties - must have datatype of array








There are lots of ways to address this requirement. Here are two that come to mind:

Option 1: Do nothing special in the metadata spec to address Bertrand's performance concern. Microsoft's property manager logic would recognize that it is working with its own widgets somehow and provide a more efficient code path that uses bitfields instead of arrays. (Bertrand would have to say whether this option is feasible for MS's products)

Option 2: Add a new 'bitfield' type for the 'format' attribute, so you would have <options datatype="Number" format="bitfield">. We explain that if format="bitfield", then the 'value' attributes on the <option> element must be unique powers of 2, such as <option value="1">, <option value="2">, <option value="4">, etc, and require that tools save a Number (more specifically, an integer) into the property storage system.

There are other options. I'm willing to go along with most everything so long as we make a reasonable attempt to avoid unnecessary vendor-specific features.

Jon


[cid:image001.gif at 01C8F877.369B8E60]Wayne Vicknair/Austin/IBM
Wayne Vicknair/Austin/IBM

08/07/2008 07:56 AM


To


Bertrand Le Roy <Bertrand.Le.Roy at microsoft.com>


cc


"ide at openajax.org" <ide at openajax.org>, ide-bounces at openajax.org, Jon Ferraiolo/Menlo Park/IBM at IBMUS


Subject


Re: [OpenAjaxIDE] Multiselect properties - must have datatype of array[cid:image005.gif at 01C8F877.369B8E60]<Notes://d03nm113/8725716300163E43/38D46BF5E8F08834852564B500129B2C/AE37910B80828D168525749E00057C3C>








I believe that the <options> and <option> element combination do indeed express a constrained, multiple-value parameter. HTML DOM and Dojo's dijit.form.MultiSelect both happen to implement that concept with an, admittedly inefficient, array return value. That implementation does not diminish the expressiveness of the <options> construct. An implementation could choose to iterate over the array values converting them to numbers and bitwise or-ing them together.

Cheers,
[cid:image006.gif at 01C8F877.369B8E60]
Wayne E. Vicknair
Consulting Product Design Professional
IBM SWG Emerging Internet Technologies
Office: 512.838.0707 Email: waynev at us.ibm.com


[cid:image001.gif at 01C8F877.369B8E60]Bertrand Le Roy ---08/06/2008 07:59:54 PM---Same thing that happens in C. Never been a problem as you rarely have the many flag values. Storing a list of countries or stat
Bertrand Le Roy <Bertrand.Le.Roy at microsoft.com>
Sent by: ide-bounces at openajax.org

08/06/08 07:50 PM


To


Jon Ferraiolo/Menlo Park/IBM at IBMUS


cc


"ide at openajax.org" <ide at openajax.org>


Subject


Re: [OpenAjaxIDE] Multiselect properties - must have datatype of array








Same thing that happens in C. Never been a problem as you rarely have the many flag values. Storing a list of countries or states would be more efficiently stored in more elaborate data structures. The use we have of flags is typically stuff like read/write/readwrite or left, right, top, bottom and combinations. You get the idea. Bit structures are way more efficient for this type of situation.
Sure, HTML options are different but I’m not sure I see your point.
Anyway, that’s the design we have in our APIs and it would be nice if it was possible to express it.

From: Jon Ferraiolo [mailto:jferrai at us.ibm.com]
Sent: Wednesday, August 06, 2008 5:32 PM
To: Bertrand Le Roy
Cc: ide at openajax.org
Subject: RE: [OpenAjaxIDE] Multiselect properties - must have datatype of array

What happens if you are doing multi-select with more than (4bytes) 32 alternatives (e.g., # states in US) or more than (8bytes) 64 alternatives (e.g., # countries in the world)?

HTML's OPTION element doesn't require the use of bit flags (i.e., values which are powers of 2), and that's what our <option> element will be mapped into for a large number of cases.


[cid:image001.gif at 01C8F877.369B8E60]Bertrand Le Roy <Bertrand.Le.Roy at microsoft.com>


Options are for enums, right? If so, that is completely different from our usage. Multiple value enums (or flags) have integer values (like in C) and are combined through the | or operator. Testing for a specific value is done with the & and operator.
So for example, you’d have:
<property name="FavoriteAnimals">
__<options multiple="true">
____<option value="1"><label locid="animal_panda">Panda</label></option>
____<option value="2"><label locid="animal_tiger">Tiger</label></option>
____<option value="4"><label locid="animal_cat">House cat</label></option>
____<option value="8"><label locid="animal_dog">Man's best friend</label></option>
__</options>
</property>

And if the user picks Tiger and House Cat, that gives 6.

From: ide-bounces at openajax.org [mailto:ide-bounces at openajax.org] On Behalf Of Jon Ferraiolo
Sent: Wednesday, August 06, 2008 10:14 AM
To: ide at openajax.org
Subject: [OpenAjaxIDE] Multiselect properties - must have datatype of array

Aaron Reed of IBM is implementing the <property><options multiple="true"> feature in the open source reference implementation and the question can up about how to represent the multiple choices when the property value is persisted into the property storage area. Here is an example:

<property name="FavoriteAnimals">
__<options multiple="true">
____<option value="panda"><label locid="animal_panda">Panda</label></option>
____<option value="tiger"><label locid="animal_tiger">Tiger</label></option>
____<option value="cat"><label locid="animal_cat">House cat</label></option>
____<option value="dog"><label locid="animal_dog">Man's best friend</label></option>
__</options>
</property>

Let's suppose the user picked "Tiger" and "House cat".

Given that we are focused on JavaScript, our proposal is that the natural way to store a multi-select option would be as a JavaScript array. In this case, the array would be ["tiger","cat"].

Does this make sense to people?

If so, then should we change the spec to say that if a <property> uses <options> with multiple="true", then the <property> element must have datatype="[]".

A follow on question is whether we should require an array of Strings, or is it OK to have an array of anything, such as Number? Is the array could contain things other than String, then implementations would need to a string-to-whatever conversion at some point (e.g., string-to-number). I would thing that array-of-Strings is the way to go.

Jon _______________________________________________
IDE mailing list
IDE at openajax.org
http://openajax.org/mailman/listinfo/ide[cid:image007.gif@01C8F877.369B8E60][cid:image008.gif@01C8F877.369B8E60]_______________________________________________
IDE mailing list
IDE at openajax.org
http://openajax.org/mailman/listinfo/ide
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.gif
Type: image/gif
Size: 105 bytes
Desc: image001.gif
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0005.gif 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.png
Type: image/png
Size: 168 bytes
Desc: image003.png
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0002.png 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image004.png
Type: image/png
Size: 166 bytes
Desc: image004.png
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0003.png 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image005.gif
Type: image/gif
Size: 149 bytes
Desc: image005.gif
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0006.gif 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image006.gif
Type: image/gif
Size: 2342 bytes
Desc: image006.gif
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0007.gif 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image007.gif
Type: image/gif
Size: 960 bytes
Desc: image007.gif
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0008.gif 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image008.gif
Type: image/gif
Size: 1255 bytes
Desc: image008.gif
Url : http://openajax.org/pipermail/ide/attachments/20080807/b5e9f803/attachment-0009.gif 


More information about the IDE mailing list