Hi Isomorphic,
creating this thread I noticed that the drawAheadRatio is only applied at start IMHO.
Please see this modified online testcase (v12.0p_2019-08-15) with drawAheadRatio: 1.10 and drawAheadRatio: 5.00 and enable gridHTML Debug logging in the Developer Console.
For me, the sample in "Tahoe spacious" displays 20 rows at start.
These are the log statements when you start the sample and mouse-wheel scroll very slow until the next log entry.
drawAheadRatio: 1.10:
IMHO it should be rows 3->24 here in the 2nd row to have the same difference as 0->21.
(3->41 is 39 rows, the same you would get at start for drawAheadRatio: 2.00)
drawAheadRatio: 5.00:
IMHO it should be rows 76->171 here in the 2nd row to have the same difference as 0->95.
(76->114 is 39 rows, the same you would get at start for drawAheadRatio: 2.00)
I can see though that the specified drawAheadRatio is used when doing a "drag-scroll fast-release" or clicking the empty scrollbar area above or below the handle to scroll by exactly one page.
It seems that this number is not applied when scrolling slowly. Here it is always 2 * viewport rows.
I'm investigating this as I want to get rid of the white area shown when scrolling. If this is noticeable or not depends of course on the ListGrid's complexity and one could perhaps win something here by not using recordComponents.
Aside of this, it seems that with drawAheadRatio I should be able to trade the time the white area is shown (better with low drawAheadRatio) against count the white area is shown (better with high drawAheadRatio). But this is not true as you can see above.
Another improvement suggestion would be to also have a "drawBehindRatio" (or to use some amount of the drawAhead for drawBehind), so that it is not possible to trigger getTableHTML() for mouse-wheel up.
This might feel a bit constructed, but happens always if you drag-scroll and then scroll up.
Best regards
Blama
creating this thread I noticed that the drawAheadRatio is only applied at start IMHO.
Please see this modified online testcase (v12.0p_2019-08-15) with drawAheadRatio: 1.10 and drawAheadRatio: 5.00 and enable gridHTML Debug logging in the Developer Console.
For me, the sample in "Tahoe spacious" displays 20 rows at start.
Code:
isc.ListGrid.create({ ID:"dsListGrid", width: "30%", height: 680, autoFetchData: true, dataSource: "supplyItem", dataFetchMode: "local", showSelectedRollOverCanvas: false, sortField: "itemID", //drawAheadRatio: 5.00, drawAheadRatio: 1.10, fields:[ {name: "itemID", width: 60 }, {name: "itemName"}, {name: "SKU", hidden: true}, {name: "category", hidden: true}, {name: "unitCost", hidden: true}, {name: "units", hidden: true}, {name: "inStock", hidden: true}, {name: "nextShipment", hidden: true}, {name: "description", hidden: true }, ] });
drawAheadRatio: 1.10:
Code:
14:50:15.268:TMR6:DEBUG:gridHTML:dsListGrid_body:getTableHTML: columns 0->1, rows 0->21, time: 3ms (44 cells at 0.07ms per cell, 14666.67 cells per second), spacerHeights: [0,125984], left/right pad: [0,0], 0 single cell rows 14:50:18.179:TMR3:DEBUG:gridHTML:dsListGrid_body:getTableHTML: columns 0->1, rows 3->41, time: 2ms (78 cells at 0.03ms per cell, 39000.00 cells per second), spacerHeights: [96,125344], left/right pad: [0,0], 0 single cell rows
(3->41 is 39 rows, the same you would get at start for drawAheadRatio: 2.00)
drawAheadRatio: 5.00:
Code:
14:51:51.026:TMR0:DEBUG:gridHTML:dsListGrid_body:getTableHTML: columns 0->1, rows 0->95, time: 9ms (192 cells at 0.05ms per cell, 21333.33 cells per second), spacerHeights: [0,123616], left/right pad: [0,0], 0 single cell rows 14:52:22.327:TMR1:DEBUG:gridHTML:dsListGrid_body:getTableHTML: columns 0->1, rows 76->114, time: 3ms (78 cells at 0.04ms per cell, 26000.00 cells per second), spacerHeights: [2432,123008], left/right pad: [0,0], 0 single cell rows
(76->114 is 39 rows, the same you would get at start for drawAheadRatio: 2.00)
I can see though that the specified drawAheadRatio is used when doing a "drag-scroll fast-release" or clicking the empty scrollbar area above or below the handle to scroll by exactly one page.
It seems that this number is not applied when scrolling slowly. Here it is always 2 * viewport rows.
I'm investigating this as I want to get rid of the white area shown when scrolling. If this is noticeable or not depends of course on the ListGrid's complexity and one could perhaps win something here by not using recordComponents.
Aside of this, it seems that with drawAheadRatio I should be able to trade the time the white area is shown (better with low drawAheadRatio) against count the white area is shown (better with high drawAheadRatio). But this is not true as you can see above.
Another improvement suggestion would be to also have a "drawBehindRatio" (or to use some amount of the drawAhead for drawBehind), so that it is not possible to trigger getTableHTML() for mouse-wheel up.
This might feel a bit constructed, but happens always if you drag-scroll and then scroll up.
Best regards
Blama
Comment