Hi Peter, Welcome after vacation! I sense all ideas when I'm working with that stuff. I think you will see the issue with indexes, even if it's not the case with removing from the list. I will wait for your review with that index refresh.
Thank you so much! :) 2018-01-02 19:10 GMT+01:00 Peter Ent <[email protected]>: > 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%2F24b09c787fc1da2d0a19895a2b2d > 4a440e26c5 > >>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%7Cfa7b1b5a7b34438794aed2c178de > cee1%7 > >>>C0%7C0%7C636502661827506659&sdata=Zb1nVaD5dUx1Y89Q1jj4LxqBhtlxoZ > FlwDFJAq > >>>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%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C636502661 > >>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg > FXtA%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%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C636502661 > >>827506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg > FXtA%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%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C636502661827 > >506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg > FXtA%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%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C636502661827 > >506659&sdata=sjS%2Fmydo1M%2FGkkREJsc5CRyA1uFXRUK76zEHFeg > FXtA%3D&reserved=0 > >>* > > -- Piotr Zarzycki Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>*
