@@ -, +, @@ reports table - 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"). --- .../en/modules/admin/preferences/tools.pref | 2 +- .../modules/reports/guided_reports_start.tt | 52 ++++++++++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/tools.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/tools.pref @@ -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. --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt @@ -1592,6 +1592,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 ; + */ + 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"); @@ -1767,13 +1814,14 @@ [% IF (saved1) %] var rtable = KohaTable("table_reports", { - 'iDisplayLength': [% 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({ --