Package reahl.web.bootstrap.pagination¶
New in version 3.2.
Sometimes you need to display a long list of items. Displaying such a list on a single page is not a good idea, because the page will take forever to load.
This module provides a few classes you can use to build a single View that displays
only one “pageful” of the list. You can then also include a PageMenu
– a
menu on which a user can choose to navigate to another section (or page) of the list.
PagedPanel¶
- class reahl.web.bootstrap.pagination.PagedPanel(view, page_index, css_id)¶
A
Div
whose contents change, depending on the page selected by a user from aPageMenu
. A programmer should subclass from PagedPanel, supplying an __init__ method which populates the PagedPanel with appropriate contents, based on its .current_contents.Styling
Represented in HTML by an <div> element.
- Parameters
view – (See
reahl.web.fw.Widget
)page_index – The
PageIndex
to use to supply contents to the pages displayed by this PagedPanel.css_id – (See
reahl.web.ui.HTMLElement
)
- query_fields(fields)¶
Accessed as a property, but is a method:
@exposed query_fields(self, fields)
Override this method to parameterise this Widget.
When accessed as a property for the first time, this method is called, and passed an empty
FieldIndex
as fields.Inside the method you can declare each argument of the Widget by assigning a
Field
to an attribute of fields.When constructed, the Widget uses the names and validation details of each Field to parse values for its arguments from the current query string. The resultant argument values set as attributes on this Widget (with names matching the argument names).
- property current_contents¶
The list of items that should be displayed for the current page.
PageIndex¶
- class reahl.web.bootstrap.pagination.PageIndex(current_page_number=1, start_page_number=1, max_page_links=5)¶
An object responsible for breaking a long list of items up into shorter lists for display. Each such shorter list is referred to as a page. Different ways of breaking long lists into smaller lists are provided by subclasses.
- Parameters
- abstract get_contents_for_page(page_number)¶
Override this method in subclasses to obtain the correct list of items for the given page_number.
- abstract property total_number_of_pages¶
Override this @property in subclasses to state what the total number of pages is.
SequentialPageIndex¶
- class reahl.web.bootstrap.pagination.SequentialPageIndex(items, items_per_page=5, current_page_number=1, start_page_number=1, max_page_links=4)¶
A PageIndex that breaks a list of items up into smaller lists, by cutting the original list into sections that have a maximum number of items per page.
- Parameters
- get_contents_for_page(page_number)¶
Override this method in subclasses to obtain the correct list of items for the given page_number.
- property total_number_of_pages¶
Override this @property in subclasses to state what the total number of pages is.
AnnualPageIndex¶
- class reahl.web.bootstrap.pagination.AnnualPageIndex(annual_item_organiser, current_page_number=1, start_page_number=1, max_page_links=4)¶
A PageIndex that breaks a list of items up into smaller lists, by arranging all items that have the same year on the same page.
- Parameters
- get_contents_for_page(page_number)¶
Override this method in subclasses to obtain the correct list of items for the given page_number.
- property total_number_of_pages¶
Override this @property in subclasses to state what the total number of pages is.