264 ), |
267 ), |
265 |
268 |
266 self.render_row(item, **opts) |
269 self.render_row(item, **opts) |
267 ) |
270 ) |
268 |
271 |
269 def render_pagination (self, page, count=None) : |
272 def render_pagination (self, page, count=None, **opts) : |
270 """ |
273 """ |
271 Render pagination links. |
274 Render pagination links. |
272 """ |
275 """ |
273 |
276 |
274 if count is not None : |
277 if count is not None : |
275 pages = int(math.ceil(count / self.page)) |
278 pages = int(math.ceil(count / self.page)) |
276 else : |
279 else : |
277 pages = None |
280 pages = None |
278 |
281 |
279 if page > 0 : |
282 if page > 0 : |
280 yield html.a(href=self.tableurl(page=0))(html("«« First")) |
283 yield html.a(href=self.tableurl(page=0, **opts))(html("«« First")) |
281 yield html.a(href=self.tableurl(page=(page - 1)))(html("« Prev")) |
284 yield html.a(href=self.tableurl(page=(page - 1), **opts))(html("« Prev")) |
282 |
285 |
283 yield html.span("Page {page} of {pages}".format(page=(page + 1), pages=(pages or '???'))) |
286 if pages : |
284 |
287 yield html.span("Page {page} of {pages}".format(page=(page + 1), pages=pages)) |
285 yield html.a(href=self.tableurl(page=(page + 1)))(html("» Next")) |
288 else : |
286 |
289 yield html.span("Page {page}".format(page=(page + 1))) |
287 def render_foot (self, query, page) : |
290 |
|
291 yield html.a(href=self.tableurl(page=(page + 1), **opts))(html("» Next")) |
|
292 |
|
293 def render_foot (self, query, page, **opts) : |
288 """ |
294 """ |
289 Render pagination/host count in footer. |
295 Render pagination/host count in footer. |
290 """ |
296 """ |
291 |
297 |
292 # XXX: does separate SELECT count() |
298 # XXX: does separate SELECT count() |
293 count = query.count() |
299 count = query.count() |
294 |
300 |
295 if page : |
301 if page is None : |
296 return self.render_pagination(page, count) |
302 return "{count} {items}".format(count=count, items=self.ITEMS) |
297 else : |
303 else : |
298 return "{count} hosts".format(count=count) |
304 # XXX: count is just the count we got.. |
|
305 return self.render_pagination(page, count=None, **opts) |
299 |
306 |
300 def render (self, query, filters=None, sort=None, page=None, hilight=None) : |
307 def render (self, query, filters=None, sort=None, page=None, hilight=None) : |
301 """ |
308 """ |
302 Return <table> element. Wrapped in <form> if filters. |
309 Return <table> element. Wrapped in <form> if filters. |
303 query - filter()'d sort()'d SELECT query() |
310 query - filter()'d sort()'d SELECT query() |