Hi Massimo,
Some feedback for you on the new grid (which is looking very cool) and which I played with a bit today. Basically I connected to a MySQL db and loaded some existing medium sized tables (~400K records) and sort of compared it with web2py grid (standard web2py) and also datatables (using server side processing on py4web which is still at an experimental stage) . Assuming that any grid component should be able to load, display, paginate, search, filter, import, export and have CRUD functionality, I ran a small comparison. Main things I was looking for were:- 1: Initial load times (crucial for larger tables) 2: End user experience (look and feel, filtering, useablitly etc.) 3: Functionality (1) For initial load times (and I haven’t put in any timing stats) for sure the new py4web grid wins hands down followed closely by datatables and finally web2py grid. As the web2py grid doesn’t run on py4web we cannot really compare apples and pears but all tests were run on same machine using same database. (2) This is slightly subjective but for now I would go with datatables followed by web2py.grid and finally py4web.grid for the following reasons:- a. Datatables (to me) looks a lot better than the web2py.grid even after restyling it to get is as close (looks wise) to datatables. b. Web2py.grid filtering/extended search (to me) is streaks ahead of the other two. It is probably one of the most usefull tools when working with big tables (even though the load time if you have a table with many referenced fields is a bit tedious). Datatable search(ing) is pretty good though a bit hungry when doing the searching server side and I still haven’t managed get the server side to filter properly on referenced fields but in general it works pretty much okay. The filtering on the new grid is very unintuitive by comparison and I was not able to build any sort of query (but that could just be me). c. Pagination/Load More doesn’t work for me particularly for larger tables where it is much easier (in my opinion) to use standard pagination with first and last etc unless there is a query builder similar to web2py.grid available to filter out a set of records. Even then first and last are still very useful for larger sets (3) Here web2py.grid has to win hands down J followed closely by datatables (after a lot of hair pulling). Whilst I understand this is v1.0 of the py4web.grid, there are a few (in my opinion) fundamental things that need addressing. a. Referenced fields in the grid are displayed as [linked id’s]. Clicking on them does nothing. Would be good to show the referenced records _format and clicking on the link should display the record (either in view or edit mode). This is semi-working in the _dashboard app but there is no way (apart from the back arrow) to get back to the original table/record. b. Adding a new record that has referenced fields does not work yet (certainly there is no dropdown list to chose from) c. Similarly changing a record with a referenced field needs a bit of work. d. Import/Export functionality Conclusion:- I think for a v1.0 the grid is very cool and shows a huge amount of potential. Having said that (for me) the ideal grid for py4web would be something that has the following :- 1: Web2py.grid type extended search form. 2: Look and feel of (slightly extended) datatables 3: Speed of py4web.grid as is currently is. Disclaimer:- Please note that the above is purely my opinion and is intended purely to provide my own feedback on the py4web new grid. (bucket list is running over) J Best Regards John From: web2py@googlegroups.com [mailto:web2py@googlegroups.com] On Behalf Of Massimo Di Pierro Sent: 12 September 2019 08:32 To: web2py-users Subject: [web2py] py4web has now a grid ... ... it is incomplete. It is experimental. The API is subject to change. But I could use some community feedback: from py4web.utils.publisher import Publisher, ALLOW_ALL_POLICY # exposes services necessary to access the db via ajax publisher = Publisher(db, policy=ALLOW_ALL_POLICY) # expose as /examples/grid @action('grid') @action.uses('grid.html') def example_grid(): return dict(grid=publisher.grid(db.person)) embed in template with [[=grid]] in templates/grid.html as in web2py. The difference from web2py is that the grid communicate with the server via ajax and the style is in static/components/mtable.html Still does not access authentication based access control but will add it very soon. You can try it. https://github.com/web2py/py4web/blob/master/apps/examples/__init__.py#L41 -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/cc53051f-104c-4b20-97a6-c32f8220d052%40googlegroups.com <https://groups.google.com/d/msgid/web2py/cc53051f-104c-4b20-97a6-c32f8220d052%40googlegroups.com?utm_medium=email&utm_source=footer> . -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/079301d5698a%249a342690%24ce9c73b0%24%40gmail.com.