LP#1797007 Grid cell tooltips apply to all cells
authorBill Erickson <berickxx@gmail.com>
Mon, 5 Nov 2018 15:52:17 +0000 (10:52 -0500)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 15 Nov 2018 15:42:44 +0000 (10:42 -0500)
Avoid excessive browser page re-flows, caused by checking cell widths
for rendering tooltips, by rendering tooltips for all cells regardless
of the size of the content.

This reverts commit 1e9c0ab388a0697a1f099970240f2da21bfb5e1f.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jason Boyer <JBoyer@library.in.gov>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/templates/staff/share/t_autogrid.tt2
Open-ILS/web/js/ui/default/staff/services/grid.js

index 19862d4..4d90a48 100644 (file)
           <!-- if the cell comes with its own template,
                translate that content into HTML and insert it here -->
           <span ng-if="col.template && !col.compiled" 
-            id="{{cellId(col, item)}}"
             style="padding-left:5px; padding-right:10px;">
             <span tooltip-class="eg-grid-tooltip"
               tooltip-class="eg-grid-tooltip"
           <!-- otherwise, simply display the item value, which may 
                pass through datatype-specific filtering. -->
           <span ng-if="!col.template" 
-            id="{{cellId(col, item)}}"
-            uib-tooltip="{{cellOverflowed(cellId(col, item), 1) ? (itemFieldValue(item, col) | egGridValueFilter:col:item) : ''}}"
-            tooltip-class="eg-grid-tooltip"
+            uib-tooltip="{{itemFieldValue(item, col) | egGridValueFilter:col:item}}"
             tooltip-placement="top-left"
             tooltip-class="eg-grid-tooltip"
             style="padding-left:5px; padding-right:10px;">
index cf29360..9ee646a 100644 (file)
@@ -886,32 +886,6 @@ angular.module('egGridMod',
                 return grid.modifyColumnPos(col, diff);
             }
 
-            // Returns true of the contents of the cell overflow its container.
-            // parentDepth tells the code how far up the DOM tree to traverse
-            // via parentNode before stopping to inspect the value.
-            // There's no way to pass a reference to a DOM node directly via
-            // a scope function (except ng-click, etc.) so pass the 
-            // DOM id instead and get the node from there.
-            $scope.cellOverflowed = function(id, parentDepth) {
-                var node = document.getElementById(id);
-                if (!node) return;
-                for (var i = 0; i < parentDepth; i++) {
-                    node = node.parentNode;
-                }
-                return node.scrollHeight > node.clientHeight 
-                    || node.scrollWidth > node.clientWidth;
-            }
-
-            // Generates a unique identifier per cell per grid.
-            $scope.cellId = function(col, item) {
-                if (!col || !item) return '';
-                return 'grid-cell-span-' 
-                    // differentiate grids
-                    + ($scope.persistKey || $scope.idlClass || $scope.grid_element.id)
-                    // differentiate rows and columns.
-                    + '-' + col.name + '-' + $scope.indexValue(item);
-
-            }
 
             // handles click, control-click, and shift-click
             $scope.handleRowClick = function($event, item) {
@@ -1148,10 +1122,7 @@ angular.module('egGridMod',
             }
 
             $scope.getHtmlTooltip = function(col, item) {
-                if ($scope.cellOverflowed($scope.cellId(col, item), 1)) {
-                    return grid.getItemTextContent(item, col);
-                }
-                return "";
+                return grid.getItemTextContent(item, col);
             }
 
             /**