LP#1777207: have eg-grid generate DOM nodes only for visible columns
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 9 Jul 2019 18:43:18 +0000 (14:43 -0400)
committerDan Wells <dbw2@calvin.edu>
Thu, 18 Jul 2019 16:36:08 +0000 (12:36 -0400)
commita84b6ae36c385ca0c6c0af5e30a57ceb368086e8
tree00ea78c9a8bac07d643b7a849ad3030c74b1ad80
parent0ab8e87a0e0f551cccdbce41495117dd54ba709a
LP#1777207: have eg-grid generate DOM nodes only for visible columns

This patch changes an ng-show to an ng-if to generate DOM nodes
for grid cells only for visible columns. Prior to this patch, all
grid cells were generated, but the ones that corresponded to hidden
columns would simply be set as hidden.

By not generating the cells unless they're meant to be visible, grid
refreshes for wide grids (like the checkin table) render much more
quickly for a couple reasons:

- simply that there are fewer DOM nodes to process
- probably more importantly, fewer AngularJS watches get
  created

To test
-------
[1] In the checkin grid, check in a large number of items, then
    observe/profile timing as you change the number of visible rows.
[2] Apply the patch and repeat step 1. This time, the grid
    refreshe should be measurably (and visibly) faster.
[3] Test other AngularJS grids and verify that grid display and
    grid actions are normal.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/src/templates/staff/share/t_autogrid.tt2