:date: 2016-06-29 ======================== Wednesday, June 29, 2016 ======================== Hamza and I have been working on :ticket:`977`. The :meth:`GridPanel.computePageSize` method ============================================ In Lino, a grid panel tries to request exactly as many rows of data as it can display within the space it is filling. In ExtJS 3 we had a trick to compute the exact height of a row, but that trick fails with ExtJS 6. We want to know the number of grid rows that will fit into the grid before actually requesting any data from the server. The store is not yet loaded. We don't want the height of *every* data row. The trick is to create a volatile DOM element with the same CSS as a grid cell and with `
` as content. And instead of displaying this element, we just note its height. The following was interesting as well: http://www.extjs-tutorial.com/extjs/working-with-dom The total inner height of the panel (i.e. the number of pixels available for all rows) seems to be `grid.Panel.getViewRegion `_. Here is an interesting thread: `how to get height of a row from gridview extjs 4? `_ Until now I did not find a perfect solution. As a workaround I use a hard-coded value for the height of a row. Hamza, I commit my last working version so that you can continue on it if you want. A second commit (`0b3728d..2bf6799 `_) with a solution which looks satisfying to me, so I would say that the hack which creates a fake grid row from the two templates is not necessary. The cool new trick (and the thing I had to learn) was how to get the correct total available height of the grid widget. My first approach was this:: var height = this.getViewRegion().getSize().height; But it seems that this one is the best:: var gb = this.body.selectNode('.x-grid-view', false); var height = gb.getHeight(); I used the browser's inspector to find out that I must query for the ``x-grid-view`` element of the grid. I also needed to write and play with the following sandbox showcase. A sandbox showcase ================== I opened :ticket:`999` and added a first example of a "showcase". The example itself is taken from `extjs-tutorial.com `_. This first showcase helped me to understand that `Ext.get() `_ retrieves an `Ext.Element` object which wraps a *DOM element* of the document (or null if no matching element was found). This kind of showcase snippets can be interesting when trying to debug some tough Javascript problem. The basic approach is the same as it was in `the showcases I wrote back in 2010 `_ when I discovered ExtJS 3.