Bug 9417 - Allow number of results per page to be selectable for guided reports

This patch adds the ability to select the number of row to show per page while
retaining the default rows per page as 20.

Test Plan:
1) Apply patch
2) Run a guided report that will have many resultant rows
3) Try the various rows per page options
4) Verify the rows per page selected is retained when paging through results

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
This commit is contained in:
Kyle Hall 2013-01-16 06:53:59 -05:00 committed by Jared Camins-Esakov
parent 4da872e51f
commit 0131b9e697
2 changed files with 27 additions and 2 deletions

View file

@ -579,6 +579,26 @@ canned reports and writing custom SQL reports.</p>
[% IF ( notes ) %]<p>[% notes %]</p>[% END %]
[% IF ( unlimited_total ) %]<p>Total number of rows matching the (unlimited) query is [% unlimited_total %].</p>[% END %]
<pre id="sql_output">[% sql |html %]</pre>
<form>
<input type="hidden" name="phase" value="Run this report"/>
<input type="hidden" name="reports" value="[% report_id %]"/>
<label for="limit">Rows per page: </label>
<select name="limit">
[% limits = [ 10, 20, 50, 100, 200, 300, 400, 500, 1000 ] %]
[% FOREACH l IN limits %]
[% IF l == limit %]
<option value="[% l %]" selected="selected">[% l %]</option>
[% ELSE %]
<option value="[% l %]">[% l %]</option>
[% END %]
[% END %]
</select>
<input type="submit" value="Update" />
</form>
<div class="pages">[% pagination_bar %]</div>
[% UNLESS ( errors ) %]
<table>

View file

@ -523,7 +523,7 @@ elsif ( $phase eq 'Save Report' ) {
elsif ($phase eq 'Run this report'){
# execute a saved report
my $limit = 20; # page size. # TODO: move to DB or syspref?
my $limit = $input->param('limit') || 20;
my $offset = 0;
my $report_id = $input->param('reports');
my @sql_params = $input->param('sql_params');
@ -532,6 +532,11 @@ elsif ($phase eq 'Run this report'){
$offset = ($input->param('page') - 1) * $limit;
}
$template->param(
'limit' => $limit,
'report_id' => $report_id,
);
my ( $sql, $type, $name, $notes );
if (my $report = get_saved_report($report_id)) {
$sql = $report->{savedsql};
@ -654,7 +659,7 @@ elsif ($phase eq 'Run this report'){
}
my $totpages = int($total/$limit) + (($total % $limit) > 0 ? 1 : 0);
my $url = "/cgi-bin/koha/reports/guided_reports.pl?reports=$report_id&amp;phase=Run%20this%20report";
my $url = "/cgi-bin/koha/reports/guided_reports.pl?reports=$report_id&amp;phase=Run%20this%20report&amp;limit=$limit";
if (@sql_params) {
$url = join('&amp;sql_params=', $url, map { URI::Escape::uri_escape($_) } @sql_params);
}