Hi,

Catching up and building stuff. I'm going to repeat some things for the
befit of anyone joining Royale for 2018 (and to refresh my own thoughts
coming off of holiday!).

The initial idea of List and related classes was their beads were to be
almost static. You'd have data that you would use to create the
dataProvider to the list and when set, would cause the itemRenderers to be
deleted and replaced. Even something as simple as adding new data to the
end of the dataProvider would require this reset: you'd have to clear the
dataProvider (list.dataProver = null) and set it again or create a
completely new dataProvider and set that to the list.

The selected item and index should, in this case, be cleared. I'd have to
run a test to see if that really happens as I don't remember. If you want
to reset them back (assuming that index still existed) you would write a
bead to do it.

Now we are at the dynamic stage where we want to handle runtime updates to
the dataProvider and create just new itemRenderers and insert them or
remove itemRenderers when data is deleted from the dataProvider.

Alex believes that the initial creation and insertions are the most common
of the dynamic actions; removals being less common. As such in the PAYG
world you would have a bead that handled a replacement of the dataProvider
(which covers the initialization step) and a bead which handled additions
and a bead to handle removals. There's a lot of duplication of code in
these and under a non-PAYG system you'd just combine these into a single
bead to do initialize, add, and removal.

In the dynamic beads, the selection should be preserved. That information
is stored in the model. The model doesn't do much else accept keep the
data. The standard view bead would not know about these extra events so
yes, we'd need another view bead to intercept those events and re-apply or
adjust the selection.

‹peter 

On 12/30/17, 4:29 PM, "Piotr Zarzycki" <[email protected]> wrote:

>Peter,
>
>I have figure out what is wrong in case of List. I reported in the
>previous
>email that in the ListExample once you remove one item, something is wrong
>with selection. Issue happened when you removing item in the middle of
>collection.
>
>Let's say that you have 5 items and you are removing item with index = 2.
>Removing will work properly, but StringItemRenderer ->
>DataItemRenderer -> UIItemRendererBase
><- has property "index" which is basically not being refreshed after
>remove. In the result renderers has following indexes:
>
>0,
>1,
>3,
>4
>
>Which is messes up selection and roll over color changes. How actually fix
>that ? My first thought was that ListView should listen for "layoutNeeded"
>(we are dispatching that event after remove, add etc.) and refresh indexes
>of all renderers.
>
>The second thought is that ListView should listen for remove event, where
>we will have index of removed row, so we will be able loop through part of
>the collection and refresh rest of the indexes. It is more efficient, but
>maybe this is job for new type of View (bead) - ListRemoveView bead ?
>
>Looking forward to your thought once you get back from Vacation. :)
>
>Thanks, Piotr
>
>
>
>2017-12-22 15:05 GMT+01:00 Piotr Zarzycki <[email protected]>:
>
>> Hi Peter,
>>
>> I haven't checked your branch yet, but I just pushed couple of things to
>> the develop which I needed for my examples. Here is the list of beads
>>which
>> we currently have and can be used for List. I think names are self
>> explanatory.
>>
>> DynamicAddItemRendererForArrayListData
>>
>> DynamicUpdateItemRendererForArrayListData
>>
>> DynamicRemoveItemRendererForArrayListData
>>
>> DynamicRemoveAllItemRendererForArrayListData
>>
>> DynamicRemoveAllByNullItemRendererForArrayListData
>>
>> All beads above should be used once you set for your list:
>>IDataProviderItemRendererMapper:
>>ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForAr
>>rayList")
>>
>> We have also DynamicItemsRendererFactoryForArrayListData - which is
>>doing actually two things. Create all items once someone set
>>dataProvider (the same logic as in DataItemRendererFactoryForArrayList)
>>AND handle adding to
>>
>> ArrayList (the same logic as in DynamicAddItemRendererForArrayListData)
>>- It duplicates logic from those both beads.
>>
>>
>> Two Scenarios with DynamicItemsRendererFactoryForArrayListData:
>>
>> 1) If we use DynamicItemsRendererFactoryForArrayListData simply in the
>>List as it is in our ListExample [1] we don't have to remember to setup:
>>
>> IDataProviderItemRendererMapper:
>>ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForAr
>>rayList").
>>
>> However in that scenario we will have in List totally useless bead
>>DataItemRendererFactoryForArray which is being added default to the List.
>>
>> 2) If we use DynamicItemsRendererFactoryForArrayListData and we add in
>>CSS  IDataProviderItemRendererMapper:
>>ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForAr
>>rayList")
>>
>> I'm not sure what can happen actually, cause both beads are using the
>>same logic to create item renderers. Can be situation when one bead is
>>create renderers and second one re do this work again ? :)
>>
>>
>> Thanks, Piotr
>>
>>
>>
>> [1] 
>>https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.c
>>om%2Fapache%2Froyale-asjs%2Fblob%2F24b09c787fc1da2d0a19895a2b2d4a440e26c5
>>97%2Fexamples%2Froyale%2FListExample%2Fsrc%2Fmain%2Froyale%2FMyInitialVie
>>w.mxml%23L69&data=02%7C01%7Cpent%40adobe.com%7C94d879f8f6054e10c75508d54f
>>cc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636502661827506659&sd
>>ata=W4Ih5Q0IGhGNvOX9jrmn580Qw4ljo%2BavjqABV4%2BJr%2Bc%3D&reserved=0
>>
>>
>>
>> 2017-12-19 20:35 GMT+01:00 Olaf Krueger <[email protected]>:
>>
>>> Peter, great to read something about these "Collections" and
>>>"Hierarchical
>>> data" stuff here!
>>> Thanks for working on this, have a nice time and enjoy your break!
>>>
>>> Olaf
>>>
>>>
>>>
>>> --
>>> Sent from: 
>>>https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-r
>>>oyale-development.20373.n8.nabble.com%2F&data=02%7C01%7Cpent%40adobe.com
>>>%7C94d879f8f6054e10c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7
>>>C0%7C0%7C636502661827506659&sdata=Zb1nVaD5dUx1Y89Q1jj4LxqBhtlxoZFlwDFJAq
>>>ruTsY%3D&reserved=0
>>>
>>
>>
>>
>> --
>>
>> Piotr Zarzycki
>>
>> Patreon: 
>>*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pat
>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7C94d879f8f6054e
>>10c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636502661
>>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFegFXtA%3D&reserv
>>ed=0
>> 
>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pat
>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7C94d879f8f6054e
>>10c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636502661
>>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFegFXtA%3D&reserv
>>ed=0>*
>>
>
>
>
>-- 
>
>Piotr Zarzycki
>
>Patreon: 
>*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patr
>eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7C94d879f8f6054e10
>c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636502661827
>506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFegFXtA%3D&reserved=0
><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patr
>eon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com%7C94d879f8f6054e10
>c75508d54fcc6fe8%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636502661827
>506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFegFXtA%3D&reserved=0
>>*

Reply via email to