Bug 29530: Fix handling of NumSavedReports preference in reports table

This patch updates the way the NumSavedReports preference value is used
on the saved reports page so that the setting is correctly incorporated
into the DataTable.

The patch also expands the description of the NumSavedReports preference
in order to clarify the expected behavior when no value is saved.

To test, apply the patch and go to Administration -> System
preferences and note the value of NumSavedReports.

 - Go to Reports -> Use saved.
 - Confirm that the first page of saved reports shows the number
   specified in NumSavedReports.
 - In the "Show" dropdown menu, confirm that the number from
   NumSavedReports is preselected by default.
   - Expand the dropdown menu to confirm that the NumSavedReports number
     is positioned sequentially with the default values. For example, if
     NumSavedReports = "78," the menu options should be
     "10, 20, 50, 78, 100, All".
 - Test with various values of NumSavedReports. A blank value should
   result in the "All" option being selected. A non-numeric or
   non-positive value should result in the default set of options being
   used ("10, 20, 50, 100, All").

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Owen Leonard 2021-11-23 18:27:21 +00:00 committed by Kyle Hall
parent edff2287c2
commit 3c8a197484
2 changed files with 51 additions and 3 deletions

View File

@ -55,4 +55,4 @@ Tools:
- By default, show
- pref: NumSavedReports
class: integer
- reports on the saved reports page.
- reports on the saved reports page. A value of 20 is recommended. If empty, all reports will be shown.

View File

@ -1586,6 +1586,53 @@
}
}
/**
* Process the value of the NumSavedReports system preference for use as
a DataTable pageLenth option
* @param {string} pageLength - The value of the NumSavedReports system
preference, passed via the template during table initiation
* @return {number} - The number of results to show by default in the
DataTable (-1 for "all")
*/
function getPageLength( pageLength ){
if( pageLength !== "" ){
if( Number( pageLength ) > 0 ){
return Number( pageLength );
} else {
return 20; /* Negative or non-numeric value passed. Use default 20 */
}
} else {
return -1;
}
}
/**
* Rebuild the DataTable's lengthMenu array, adding the value of the NumSavedReports
system preference
* @param {string} pageLength - The value of the NumSavedReports system
preference, passed via the template during table initiation
* @return {Array} - An array of two arrays: 1. The numeric values for
options in the pageLenth <select>; 2. The text values for options in
the pageLength <select>;
*/
function buildLengthMenu( num ){
var lengthMenu = dataTablesDefaults.lengthMenu;
var pageLength = getPageLength( num );
if( !lengthMenu[0].includes( pageLength ) ){
/* extend lengthMenu with custom value */
lengthMenu.forEach( function( item ){
item.pop(); /* Remove the last entry, "all" */
item.push( Number( pageLength ) ); /* Add the value from NumSavedReports */
item.sort(function( a, b ){ /* Re-sort the values */
return a - b;
});
});
lengthMenu[0].push(-1); /* Add the numeric "all" option */
lengthMenu[1].push( _("All") ); /* Add the textual "all" option */
}
return lengthMenu;
}
$(document).ready(function(){
var activeTab = localStorage.getItem("sql_reports_activetab");
@ -1761,13 +1808,14 @@
[% IF (saved1) %]
var rtable = KohaTable("table_reports", {
'pageLength': [% Koha.Preference('NumSavedReports') | html %],
"pageLength": getPageLength( "[% Koha.Preference('NumSavedReports') | html %]" ),
"lengthMenu": buildLengthMenu( "[% Koha.Preference('NumSavedReports') | html %]" ),
'bAutoWidth': false,
'sPaginationType': 'full',
'aaSorting': [[ 1, "asc" ]],
'oLanguage': {
'sZeroRecords': _("No matching reports found")
},
}
}, columns_settings);
var rtabs = $("#tabs").tabs({