I can see that I still haven't convinced folks that the Basic component
set should not be baking things in.  Separation of concerns is generally a
good thing and, IMO, will help the framework and applications scale.

The top-level component like List really only should proxy the model.  In
fact, for every Basic component, we should try to prove that you can use
composition to create the very same component from a UIBase.  IOW:

<js:List dataProvider="foo" />

Should be able to be written as:

<js:UIBase>
  <js:beads>
    <js:ArraySelectionModel dataProvider="['foo', 'bar']" />
    <js:ListView />
    <js:SingleSelectionController />
    <js:ItemRendererFactoryForArrayData />
  </js:beads>
</js:UIBase>

That way, you can explicitly replace certain beads to get what you want,
such as:

<js:UIBase>
  <js:beads>
    <js:LinkedListOfPeopleInstancesSelectionModel
dataProvider="{LinkedListOfPeople}" />
    <js:ListView />
    <js:CheckBoxMultipleSelectionControllerForPeopleInstances />
    <js:ItemRendererFactoryForLinkedListOfPeopleInstances />
  </js:beads>
</js:UIBase>

Which could then be re-composed as:

  <my:ListWithMultipleSelectionForPeopleInstances />


So, when you look at List and DataGroup, they don't do much, because they
aren't supposed to do much.  These pieces are the "common area" the other
beads coordinate on to display renderers, manage selection, whatever.  If
you find it convenient to bake some things together for MDL purposes
that's fine, but the goal for Basic is to maintain separation to allow for
maximum flexibility in composition.

Another reason for having all of these replaceable parts is to allow for
greater type-safety.  In the regular Flex SDK List, both the dataProvider
and selectedItem are of type Object because we tell folks to use this one
List class regardless of the data.  With small separate pieces in FlexJS,
instead of accessing dataProvider and selectedItem on the List, you can
access a strongly typed property on the various beads and know right away
your data types did not match.  In the example above, the
LinkedListOfPeopleInstancesSelectionModel could have a dataProvider
property of type ILinkedList and the
CheckBoxMultipleSelectionControllerForPeopleInstances would have a
selectedItem property of type ILinkedListItem or something like that.

So, it isn't clear to me that DataGroup must have the same set of
properties as in the regular Flex SDK.  You should be able to compose all
kinds of different combinations of renderer factories, data models and
selection models and have them coordinate on a DataGroup.  And List is
just a convenience wrapper for those who want to give up some
strong-typing for a more Flex-like API surface.

My 2 cents,
-Alex

On 11/23/16, 7:03 AM, "Yishay Weiss" <yishayj...@hotmail.com> wrote:

>Looking at List it doesn’t really do much in way of selection. All it
>does is act as a proxy to the model which in turn keeps the selection
>state and fires the necessary events.
>
>
>
>So I would rename List to DataGroup and get rid of the proxy methods. The
>default model bead (defined in defaults.css) should not be
>ArraySelectionModel but new stripped down version called ArrayModel. A
>controller would not be necessary so I would remove that from
>defaults.css.
>
>
>
>List would extend DataGroup, add the said proxy methods,  and have the
>same section in defaults.css it has today.
>
>
>
>How does that sound?
>
>
>
>From: Carlos Rovira<mailto:carlos.rov...@codeoscopic.com>
>Sent: Wednesday, November 23, 2016 1:07 PM
>To: dev@flex.apache.org<mailto:dev@flex.apache.org>
>Subject: Re: [FlexJS] List Structure
>
>
>
>Hi Alex,
>
>it seems the DataGroup is not a component for direct use like in old flex
>sdk, I tried to extend from it but doesn't know nothing about a
>dataProvider. I think I need to wrap it. There's some docs about the
>minimum requirements and beads needed?
>
>I think what we need is exactly the DataGroup as we use to have in old
>flex
>sdk. One that deals with dataProvider info and nothing more. Capable of
>iterate through the data and create the associated item renderers inside
>the container. So add, remove, but no need of selection.
>
>
>
>2016-11-23 8:43 GMT+01:00 Carlos Rovira <carlos.rov...@codeoscopic.com>:
>
>> Hi Alex,
>>
>> That would be ok, but I would like to provide data in flex way vía data
>> provider, since is the way we have to populate List in Flex... Is like
>> other components I introduce yesterday. I marked here :
>> https://cwiki.apache.org/confluence/display/FLEX/Table+Of+Components
>> to redactor and provide dataProvider API, Those are menus, tabbars ...
>>
>> So the following example:
>> http://imgur.com/a/Vg0Bk
>>
>> could be populated with data (and so real apps)
>>
>> I will make a try as I get more time
>>
>>
>>
>>
>>
>>
>> 2016-11-23 1:53 GMT+01:00 Alex Harui <aha...@adobe.com>:
>>
>>>
>>>
>>> On 11/22/16, 4:15 PM, "carlos.rov...@gmail.com on behalf of Carlos
>>> Rovira"
>>> <carlos.rov...@gmail.com on behalf of carlosrov...@apache.org> wrote:
>>>
>>> >2016-11-22 22:56 GMT+01:00 Alex Harui <aha...@adobe.com>:
>>> >
>>> >> I just remembered that there are two kinds of "lists" in HTML.
>>>There
>>> is
>>> >> the Select element which has a selection model, and then there is
>>>ol/ul
>>> >> which has no selection model.  What kind of list is MDL's list?
>>>Does
>>> it
>>> >> support selection?
>>> >>
>>> >> IMO, ol/ul are for displaying a list of items without a selection
>>> model.
>>> >> There is no promise that the children are the same.  One <li> tag
>>>may
>>> >>have
>>> >> a completely different topology of child tags than the next <li>
>>>tag.
>>> >>
>>> >>
>>> >You're right Alex, MDL is second, UL with LI items, with no selection
>>> >model, at least for what I see in the examples,
>>> >selection seems to be in Table component...
>>> >
>>> >
>>> >> AIUI, the Select element only supports plain text renderers.
>>> SimpleList
>>> >> was intended to wrap that.  The other List provides the basis of a
>>>List
>>> >> with data providers, factories and item renderers.
>>> >>
>>> >>
>>> >So is clear I don't want SimpleList, maybe List...
>>>
>>> IMO, if you don't need selection, you should just create a new base
>>>class
>>> that wraps UL and OL.
>>>
>>> HTH,
>>> -Alex
>>>
>>>
>>
>>
>> --
>>
>> Carlos Rovira
>> Director General
>> M: +34 607 22 60 05
>> http://www.codeoscopic.com
>> http://www.avant2.es
>>
>> Este mensaje se dirige exclusivamente a su destinatario y puede contener
>> información privilegiada o confidencial. Si ha recibido este mensaje por
>> error, le rogamos que nos lo comunique inmediatamente por esta misma
>>vía y
>> proceda a su destrucción.
>>
>> De la vigente Ley Orgánica de Protección de Datos (15/1999), le
>> comunicamos que sus datos forman parte de un fichero cuyo responsable es
>> CODEOSCOPIC S.A. La finalidad de dicho tratamiento es facilitar la
>> prestación del servicio o información solicitados, teniendo usted
>>derecho
>> de acceso, rectificación, cancelación y oposición de sus datos
>>dirigiéndose
>> a nuestras oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la
>> documentación necesaria.
>>
>>
>
>
>--
>
>Carlos Rovira
>Director General
>M: +34 607 22 60 05
>http://www.codeoscopic.com
>http://www.avant2.es
>
>Este mensaje se dirige exclusivamente a su destinatario y puede contener
>información privilegiada o confidencial. Si ha recibido este mensaje por
>error, le rogamos que nos lo comunique inmediatamente por esta misma vía y
>proceda a su destrucción.
>
>De la vigente Ley Orgánica de Protección de Datos (15/1999), le
>comunicamos
>que sus datos forman parte de un fichero cuyo responsable es CODEOSCOPIC
>S.A. La finalidad de dicho tratamiento es facilitar la prestación del
>servicio o información solicitados, teniendo usted derecho de acceso,
>rectificación, cancelación y oposición de sus datos dirigiéndose a
>nuestras
>oficinas c/ Paseo de la Habana 9-11, 28036, Madrid con la documentación
>necesaria.

Reply via email to