LP#1886713: fix issue where AngularJS hotkeys fail to initialize
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 7 Jul 2020 20:24:49 +0000 (16:24 -0400)
committerMike Rylander <mrylander@gmail.com>
Fri, 24 Jul 2020 13:51:06 +0000 (09:51 -0400)
Fixes a race condition where the navbar service can look for
eg-accesskey attributes before all of the elements that have
them meet the conditions to show up in the DOM.

To test
-------
[1] From an AngularJS part of the staff interface, note that
    hitting F8 sometimes does not perform the retrieve
    last patron action, nor does F8 show up on the list of
    hot keys when you hit "?" outside of an input.
[2] Apply the patch and repeat step 1. This time, the F8
    hotkey should consistently work.

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Rogan Hamby <rogan.hamby@gmail.com>
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/web/js/ui/default/staff/services/navbar.js

index b6ff1d3..a00e26a 100644 (file)
@@ -120,12 +120,15 @@ angular.module('egCoreMod')
 
                                 $scope.showAngularCatalog = 
                                     s['ui.staff.angular_catalog.enabled'];
+                            }).then(function() {
+                                // need to defer initialization of hotkeys to this point
+                                // as it depends on various settings.
+                                $timeout(function(){find_accesskeys($element)});
                             });
+                        } else {
+                            // fallback initialization of hotkeys
+                            $timeout(function(){find_accesskeys($element)});
                         }
-                        // need to defer initialization of hotkeys to this point
-                        // as some of them are conditional on whether one is logged in
-                        // or is working in offline circulation mode
-                        $timeout(function(){find_accesskeys($element)});
                     }
                 );
             }