Ticket #5134: report-paginate.diff
| File report-paginate.diff, 3.6 KB (added by liris <liris.pp@…>, 5 years ago) |
|---|
-
templates/report.cs
diff -r -u trac-0.10.3.1-orig/templates/report.cs trac-0.10.3.1/templates/report.cs
old new 108 108 /if ?><?cs 109 109 /if ?> 110 110 111 112 <form id="query" method="get" action=""> 113 <p class="option"> 114 Page: 115 <?cs each:n = page_query.numpages ?> 116 <?cs if:n == page_query.curpage ?> 117 <?cs var:n ?> 118 <?cs else ?> 119 <a href="<?cs var:report.href ?>?<?cs if page_query.baseparams ?><?cs var:page_query.baseparams ?>&<?cs /if ?>page=<?cs var:n ?>"><?cs var:n ?></a> 120 <?cs /if ?> 121 <?cs /each ?> 122 </p> 123 <p class="option"> 124 <label>Tickets per page: 125 <input type="text" class="textwidget" name="per_page" value="<?cs var:page_query.perpage ?>" size="6" /> 126 </label> 127 </p> 128 <div class="buttons"> 129 <input type="hidden" name="order" value="<?cs var:query.order ?>" /> 130 <?cs if:query.desc ?><input type="hidden" name="desc" value="1" /><?cs /if ?> 131 <input type="submit" name="update" value="Update" /> 132 </div> 133 <hr /> 134 </form> 135 111 136 <?cs each row = report.items ?> 112 137 <?cs if group != row.__group__ || idx == #0 ?> 113 138 <?cs if:idx != #0 ?></tbody><?cs /if ?> -
trac/ticket/report.py
diff -r -u trac-0.10.3.1-orig/trac/ticket/report.py trac-0.10.3.1/trac/ticket/report.py
old new 28 28 from trac.util.datefmt import format_date, format_time, format_datetime, \ 29 29 http_date 30 30 from trac.util.html import html 31 from trac.config import IntOption 31 32 from trac.web import IRequestHandler 32 33 from trac.web.chrome import add_link, add_stylesheet, INavigationContributor 33 34 from trac.wiki import wiki_to_html, IWikiSyntaxProvider, Formatter 34 35 36 import math 37 35 38 class ReportModule(Component): 36 39 40 tickets_per_page = IntOption('ticket', 'default_per_page', default=10, 41 doc="The number of tickets shown per page in queries") 42 37 43 implements(INavigationContributor, IPermissionRequestor, IRequestHandler, 38 44 IWikiSyntaxProvider) 39 45 … … 300 306 301 307 # Convert the rows and cells to HDF-format 302 308 row_idx = 0 309 # Update/retrieve the number of tickets per page 310 perpage = int(req.args.get("per_page", 0)) 311 if not perpage: 312 perpage = req.session.get('tickets_perpage') 313 if not perpage: 314 perpage = self.tickets_per_page 315 else: 316 perpage = int(perpage) 317 else: 318 req.session['tickets_perpage'] = perpage 319 320 # Calculate number of pages and current page 321 numpages = int(math.ceil(len(rows) * 1.0 / perpage)) 322 curpage = int(req.args.get('page', 1)) 323 if curpage <= 0 or curpage > numpages: 324 raise TracError, 'Invalid page %s'%(curpage) 325 326 # Calculate the start and end point 327 start = perpage * (curpage-1) 328 end = start + perpage 329 rows = rows[start:end] 330 331 # A few more HDF variables 332 req.hdf['page_query.perpage'] = perpage 333 req.hdf['page_query.numpages'] = range(1, numpages+1) 334 req.hdf['page_query.curpage'] = curpage 335 params = {} 336 if req.args.has_key('sort'): 337 params['sort'] = req.args['sort'] 338 if req.args.has_key('asc'): 339 params['asc'] = req.args['asc'] 340 req.hdf['page_query.baseparams'] = urllib.urlencode(params) 341 303 342 for row in rows: 304 343 col_idx = 0 305 344 numrows = len(row)
