Forum Stats

  • 3,780,926 Users
  • 2,254,456 Discussions
  • 7,879,496 Comments

Discussions

How to combine Collections/Models with RowExpander in a table

User10193645-Oracle
User10193645-Oracle Member Posts: 13
edited Apr 12, 2016 2:15PM in Oracle JET

The Table component and Table with RowExpander are rather picky about data sources compatible with the components. Current examples in the JET 2.0 cookbook use JsonTreeDataSource, but I'm looking for the CollectionTreeDataSource (I think) to work with Collections/Models. Any hint how to properly assemble these parts?

To add some context - I'm trying to display some messages (loaded via Collections) in a table, where expanded row would show message content. Currently I manually create JsonTreeDataSource in Collection callbacks, but that defeats the purpose of using Collections.

Thanks.

Answers

  • John 'JB' Brock-Oracle
    John 'JB' Brock-Oracle Posts: 2,710 Employee
    edited Apr 12, 2016 12:50PM

    Have you looked at the Cookbook demo for RowExpander with Collection?

    Row Expander - Row Expander with Collections

    If you have looked at this, what part isn't working for your scenario?

  • User10193645-Oracle
    User10193645-Oracle Member Posts: 13
    edited Apr 12, 2016 1:10PM

    It seems it's my bad - I missed that example somehow. I'm going to look at it now.

    Thank you.

  • User10193645-Oracle
    User10193645-Oracle Member Posts: 13
    edited Apr 12, 2016 1:43PM

    Looking closer though, it's not straightforward at all to use that example. The things to resolve:

    • DataGrid is not the same as DataTable. DataTable requires something like: new oj.FlattenedTreeTableDataSource( new oj.FlattenedTreeDataSource ... 
    • Collections are not used in the example in a CRUD sense, instead of fetch/add etc it's just direct JSON fetch
    • Options literal used by oj.CollectionTreeDataSource with all its root/parseMetadata/childCollectionCallback is undocumented
    • The example demonstrates the flexibility of DataGrid and as such much move involved than some basic example could be for DataTable.

    So, I guess, I'm still stuck with Collections/Table/CRUD/RowExpander.

  • John 'JB' Brock-Oracle
    John 'JB' Brock-Oracle Posts: 2,710 Employee
    edited Apr 12, 2016 2:15PM

    Yes, the demo is definitely using code to manipulate the data into something the DataGrid can use, but I assumed you would be massaging your own code anyway, not using that demos code.

    I had not paid attention to the fact that it was using DataGrid, sorry about that.

    There is a FlattenedTreeTableDataSource as well: JSDoc: Class: FlattenedTreeTableDataSource

    The CRUD side of this wouldn't be any different than the normal Collection CRUD example for getting the data.  I definitely agree that the docs are not sufficient in one place for doing this. It's going to take some piecing together between the Table example and this one.

    The JSON fetch is being done instead of the Collection fetch because there isn't a live REST service for the demo's to hit against in the Cookbook.  Some of the demo's use a MockREST library, but that confuses people as well.  We also tried a live REST service at one point and that was a disaster with everyone hitting and randomly adding and deleting data.  No perfect answer for that one unfortunately.