As mentioned on bug 29355 comment 12, we should've made the pickup locations dropdowns use the infinite scrolling feature from Select2.
Created attachment 127255 [details] [review] Bug 29404: Add infinite scrolling to pickup location dropdowns This patch adds infinite scrolling to the pickup locations select2 dropdowns on the staff interface. It does so by adding a new transport function (in select2.js) to read the response headers Koha's API sends back, and converting to the right data structure Select2 expects for the feature to work. This is manually used in the different pickup locations dropdowns. There's a separate bug that will introduce a select2 wrapper that will probably embed this function in it. To test: 1. Run the [DO NOT PUSH] script inside koha-shell to generate random pickup locations: $ kshell k$ perl generate_pickup_locations.pl 2. Try placing holds. Notice the visible pickup locations dropdowns display some pickup locations based on the matches you got. They are all fetched once => SUCCESS: It works 3. Repeat for the current holds page and the patron holds listing => SUCCESS: Same behavior 4. Apply this patch 5. Repeat 2 and 3 => SUCCESS: Things work, but pickup locations are retrieved as needed, while you scroll. 6. Sign off :-D
Created attachment 127256 [details] [review] [DO NOT PUSH] Bug 29404: Helper script to generate pickup locations Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Created attachment 127262 [details] [review] Bug 29404: Add infinite scrolling to pickup location dropdowns This patch adds infinite scrolling to the pickup locations select2 dropdowns on the staff interface. It does so by adding a new transport function (in select2.js) to read the response headers Koha's API sends back, and converting to the right data structure Select2 expects for the feature to work. This is manually used in the different pickup locations dropdowns. There's a separate bug that will introduce a select2 wrapper that will probably embed this function in it. To test: 1. Run the [DO NOT PUSH] script inside koha-shell to generate random pickup locations: $ kshell k$ perl generate_pickup_locations.pl 2. Try placing holds. Notice the visible pickup locations dropdowns display some pickup locations based on the matches you got. They are all fetched once => SUCCESS: It works 3. Repeat for the current holds page and the patron holds listing => SUCCESS: Same behavior 4. Apply this patch 5. Repeat 2 and 3 => SUCCESS: Things work, but pickup locations are retrieved as needed, while you scroll. 6. Sign off :-D Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Works as expected :)
Created attachment 127317 [details] [review] Bug 29404: Add infinite scrolling to pickup location dropdowns This patch adds infinite scrolling to the pickup locations select2 dropdowns on the staff interface. It does so by adding a new transport function (in select2.js) to read the response headers Koha's API sends back, and converting to the right data structure Select2 expects for the feature to work. This is manually used in the different pickup locations dropdowns. There's a separate bug that will introduce a select2 wrapper that will probably embed this function in it. To test: 1. Run the [DO NOT PUSH] script inside koha-shell to generate random pickup locations: $ kshell k$ perl generate_pickup_locations.pl 2. Try placing holds. Notice the visible pickup locations dropdowns display some pickup locations based on the matches you got. They are all fetched once => SUCCESS: It works 3. Repeat for the current holds page and the patron holds listing => SUCCESS: Same behavior 4. Apply this patch 5. Repeat 2 and 3 => SUCCESS: Things work, but pickup locations are retrieved as needed, while you scroll. 6. Sign off :-D Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Hard call, really. It can be considered an enhancement for libraries with hundreds of branches, but for those with very few? You have to wait 1 sec for the result every time you interact with the dropdown, it would be immediate if the filtering is done by JS locally. I can imagine easily it could become unusable if the server is a bit overloaded (and this will help the server to become even more overloaded...) I am willing to push it for 21.11 in order to get feedback from end users, but we should be ready to revert this behaviour if needed.
Pushed to master for 21.11, thanks to everybody involved!