I am working on an AddItemBead and RemoveItemBead. These beads assume the dataProvider in the model are ArrayList since that collection dispatches CollectionEvents with itemAdded and itemRemoved events. So these beads will either add an item to the DataGroup or remove one. Then they will adjust the model's selectedItem and selectedIndex accordingly.
These will be beads of the DataItemRendererFactoryForArrayList and not beads on the List itself. I'm having to change DataItemRendererFactoryForArrayList to make things more public since it isn't trivial to add or remove an itemRenderer. —peter On 12/5/17, 9:51 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote: >Hi Peter, > >I see that and there is question whether I can put that code as a separate >bead to our repo and whether you are not going to do this? >You have started other thread about Tree Grid and beads mentioned by you >seems to be the answer. Let me know before I create something. > >Thanks, Piotr > >On Tue, Dec 5, 2017, 15:43 Peter Ent <p...@adobe.com.invalid> wrote: > >> I think some of this changes when you are running in the browser. Does >>our >> framework code really need to know if an item is visible or not to >>remove >> it? You want it gone from the DOM so you need to remove it and the >>browser >> takes care of the visuals. Depending on the CSS for that container, >>things >> would probably just sort themselves out - no need to fool with >>scrollbars >> either as they are the responsibility of the browser. On the browser >> platform, adding a remove function would not, I think, be as costly as >>it >> would on the Flash platform. >> >> Now the selectedItem and selectedIndex are, of course, Royale things so >> that would need to be considered. But that's the same as for adding or >> inserting an item into a list. Again, the browser should take care of >>the >> visuals once the item is added to the DOM. If the item has been tagged >> properly for CSS, you wouldn't even need to trigger the Royale layout. >> >> As a side note, the reason the Group does not have a default layout is >>to >> allow you to make a DIV (the Group), put stuff into it, and style it so >> that the "layout" is handled in CSS. This way added, removing, changing >>is >> left up the browser with no need for Royale code support since the >>browser >> has all the code already and your Royale payload can be smaller. You >>only >> need to "pay" if you want a layout that cannot be accomplished with CSS. >> >> Supporting virtualized list is a completely different matter. HTML >>doesn't >> support that and then what Alex says really comes into play there. >> >> Back the question about removing all the rows. The DataGroup has a >> function to remove all of the itemRenderers. You need to trigger that >> somehow - either in your own code or perhaps a bead. Then clean up the >> selectedItem/selectedIndex in the model. >> >> ‹peter >> >> On 12/5/17, 12:03 AM, "Alex Harui" <aha...@adobe.com.INVALID> wrote: >> >> >In general, removing stuff should be PAYG. Not every app needs to >>remove >> >things, and removal is often way more expensive than adding. >> > >> >For example, when an item is added to a sophisticated list, the various >> >beads have to do these things: >> >1) figure out if the item is on screen and a new renderer needs to be >> >added. >> >2) figure out if the item was added before the selectedIndex so the >> >selectedIndex needs to be updated >> >3) update the scrollbar (if any). >> > >> >When removing, the various beads have more to do: >> >1) figure out if the item is on screen and its renderer needs to be >> >removed. >> >2) figure out if the renderer removed is on the last visible page of >>the >> >list and scrollbars are up and the item that will take up the removed >> >renderer needs to come from a lower index in the data provider >> >3) figure out if the item was added before the selectedIndex so the >> >selectedIndex needs to be updated >> >4) figure out if the item removed was the selectedIndex and thus decide >> >what to do about selectedIndex and selectedItem >> >5) update the scrollbar (if any). >> > >> >HTH, >> >-Alex >> > >> > >> >On 12/4/17, 5:08 PM, "Peter Ent" <p...@adobe.com.INVALID> wrote: >> > >> >>I need to think about this for a bit because I¹m fiddling with this >>bit >> >>of code in List. I¹ll get back to you in my tomorrow. >> >> >> >>Peter >> >> >> >> >> >>> On Dec 4, 2017, at 4:53 PM, Piotr Zarzycki >><piotrzarzyck...@gmail.com> >> >>>wrote: >> >>> Hi Guys, >> >>> >> >>> I have faced an issue where solution seems to be not so easy. I have >> >>>MDL >> >>> Table (issue affects also List) with some rows. >> >>> >> >>> If I simply assign to dataProvider = null it doesn't remove all >> >>>content. It >> >>> is because in our DataItemRendererFactoryForArrayData and other >>type of >> >>> that class we have in listeners of "dataProviderChanged" this code >> >>>[1]. >> >>> Basically if we assign null to dataProvider we are not cleaning up >>item >> >>> renderers, but should we ? >> >>> >> >>> Maybe there should be separate bead which allow to do such >>operations ? >> >>> >> >>> Thoughts ? >> >>> >> >>> [1] >> >>>>>*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpast >>>>>e >> . >> >>>a >> >>>pache.org%2F6qVy&data=02%7C01%7Cpent%40adobe.com >> %7C05ca01d43a8448485bd50 >> >>>8 >> >>>>>d53b617760%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63648021216449 >>>>>91 >> >>>9 >> >>>9&sdata=6mmrQ1g5CRuRmRyRpSLNil3LUn93jAKTJVI6RHSocL8%3D&reserved=0 >> >>>>><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpast >>>>>e >> . >> >>>a >> >>>pache.org%2F6qVy&data=02%7C01%7Cpent%40adobe.com >> %7C05ca01d43a8448485bd50 >> >>>8 >> >>>>>d53b617760%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C63648021216449 >>>>>91 >> >>>9 >> >>>9&sdata=6mmrQ1g5CRuRmRyRpSLNil3LUn93jAKTJVI6RHSocL8%3D&reserved=0>* >> >>> >> >>> Thanks, >> >>> -- >> >>> >> >>> Piotr Zarzycki >> >>> >> >>> Patreon: >> >>>* >> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pa >> >>>t >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com >> %7C05ca01d43a844 >> >>>8 >> >>>>>485bd508d53b617760%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636480 >>>>>21 >> >>>2 >> >>>>>164499199&sdata=Lh5NSyP1MPIG6h5X4eG9RW3MWcQMiMBDevLzt8WoPS4%3D&reserve >>>>>d= >> >>>0 >> >>> >> >>>< >> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.pa >> >>>t >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Cpent%40adobe.com >> %7C05ca01d43a844 >> >>>8 >> >>>>>485bd508d53b617760%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636480 >>>>>21 >> >>>2 >> >>>>>164499199&sdata=Lh5NSyP1MPIG6h5X4eG9RW3MWcQMiMBDevLzt8WoPS4%3D&reserve >>>>>d= >> >>>0 >> >>>>* >> > >> >>