Bug 37351: Rework checkbox JS to work with paginating dataTable

To Test:

1. Log in to staff client
2. Place items on items for borrowers
    2-1 Place enough holds as noted above
    2-2 Trap holds for borrowers
3. Open Circulation->Holds Awaiting Pickup (circ/waitingreserves.pl)
4. Click a checkbox for one or mroe holds
    Note->The 'Cancel selected (0)' button changes to 'Cancel
	selected (1)', etc.
5. Cancel selected Holds using the (Cancel selected (#) button)
6. Confirm Cancellation
7. Wait for background processes to complete, then verify holds are cancelled.
8. Return to Open Circulation->Holds Awaiting Pickup (circ/waitingreserves.pl)
9. Ensure button shows "Cancel selected (0)"
10. Click "Next >" to navigate to page 2 of holds
11. Click a checkbox for one or more holds
     Note->The 'Cancel selected (0)' button DOES NOT increase as boxes
	are selected.
12. Cancel selected Holds using the (Cancel selected (#) button)
13. Confirm Cancellation
14. Wait for background processes to complete, then verify holds are cancelled.
     Note-> Holds were not cancelled

15. APPLY PATCH
16. Try step 9-14 again. This time the 'Cancel selected (0)' button should update even when you paginate.
17. Make sure you try all the tables, Holds waiting, Holds waiting over X, Holds with cancellation requests.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Lucas Gass 2024-07-24 22:44:05 +00:00 committed by Martin Renvoize
parent a0f89e7e98
commit bbd1fa0bfa
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F

View file

@ -265,39 +265,41 @@
});
$('.holds_table').each(function() {
var table = $(this);
var parent = table.parents('.tab-pane');
$('.holds_table .select_hold_all', parent).each(function() {
var count = $('.select_hold:not(:checked)', table).length;
$('.select_hold_all', table).prop('checked', !count);
});
$('.cancel_selected_holds', parent).html(MSG_CANCEL_SELECTED.format($('.holds_table .select_hold:checked', parent).length));
$('.holds_table .select_hold_all', parent).click(function() {
var count = $('.select_hold:checked', table).length;
$('.select_hold', table).prop('checked', !count);
$(this).prop('checked', !count);
$('.cancel_selected_holds', parent).data('ids', $('.holds_table .select_hold:checked', parent).toArray().map(el => $(el).data('id'))).html(MSG_CANCEL_SELECTED.format($('.holds_table .select_hold:checked', parent).length));
localStorage.selectedWaitingHolds = JSON.stringify($('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')));
});
$('.holds_table .select_hold', parent).click(function() {
var count = $('.select_hold:not(:checked)', table).length;
$('.select_hold_all', table).prop('checked', !count);
$('.cancel_selected_holds', parent).data('ids', $('.holds_table .select_hold:checked', parent).toArray().map(el => $(el).data('id'))).html(MSG_CANCEL_SELECTED.format($('.holds_table .select_hold:checked', parent).length));
localStorage.selectedWaitingHolds = JSON.stringify($('.holds_table .select_hold:checked').toArray().map(el => $(el).data('id')));
});
$('.cancel_selected_holds', parent).click(function(e) {
var table = $(this);
var parent = table.parents('.tab-pane');
var this_dt = $(this).closest('.holds_table').dataTable();
parent.find('.cancel_selected_holds').html(MSG_CANCEL_SELECTED.format(this_dt.$(".select_hold:checked", {"page": "all"}).length));
parent.find('.cancel_selected_holds').click(function(e) {
e.preventDefault();
if($('.select_hold:checked', table).length) {
cancel_link = $(this);
$('#cancelModal').modal();
}
return false;
});
});
});
$('.holds_table').on('click', '.select_hold_all', function() {
var table = $(this);
var parent = table.parents('.tab-pane');
var this_dt = $(this).closest('.holds_table').dataTable();
var all_pages = this_dt.fnGetNodes();
var all_checked = this_dt.find('.select_hold_all').prop('checked');
this_dt.find('.select_hold' , all_pages).prop('checked', all_checked);
var count = this_dt.$(".select_hold:checked", {"page": "all"}).length;
parent.find('.cancel_selected_holds').data('ids', this_dt.$(".select_hold:checked", {"page": "all"}).toArray().map(el => $(el).data('id'))).html(MSG_CANCEL_SELECTED.format(count));
localStorage.selectedWaitingHolds = JSON.stringify(this_dt.$(".select_hold:checked", {"page": "all"}).toArray().map(el => $(el).data('id')));
});
$('.holds_table').on('click', '.select_hold', function() {
var table = $(this);
var parent = table.parents('.tab-pane');
var this_dt = $(this).closest('.holds_table').dataTable();
var count = this_dt.$(".select_hold:checked", {"page": "all"}).length;
parent.find('.cancel_selected_holds').data('ids', this_dt.$(".select_hold:checked", {"page": "all"}).toArray().map(el => $(el).data('id'))).html(MSG_CANCEL_SELECTED.format(count));
localStorage.selectedWaitingHolds = JSON.stringify(this_dt.$(".select_hold:checked", {"page": "all"}).toArray().map(el => $(el).data('id')));
});
var activeTab = localStorage.getItem("waitingreserves_activetab");