Mercurial > hg > savane-forge
changeset 321:469bdacd96b0
Add "dichotomy" when page range is very big
author | Sylvain Beucler <beuc@beuc.net> |
---|---|
date | Thu, 19 Aug 2010 01:07:45 +0200 |
parents | 5891fb49de1f |
children | 3f005a413dfc |
files | savane/svmain/templatetags/range.py |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/savane/svmain/templatetags/range.py +++ b/savane/svmain/templatetags/range.py @@ -46,15 +46,23 @@ short_page_range = range(middle_start, middle_end+1) if middle_start > 1: - if middle_start > 1+FAR: + if middle_start <= 1+FAR: + short_page_range = range(1, middle_start) + short_page_range + elif middle_start <= 1+FAR+(2*ADJACENT+1): short_page_range = range(1, FAR+1) + ['...'] + short_page_range else: - short_page_range = range(1, middle_start) + short_page_range + # dichotomy if you can fit more than the display range in the '...' + short_page_range = range(1, FAR+1) + ['...'] \ + + [1+FAR + ((middle_start-1) - FAR) / 2] + ['...'] + short_page_range if middle_end < orig_last: - if middle_end < orig_last-FAR: + if middle_end >= orig_last-FAR: + short_page_range = short_page_range + range(middle_end+1, orig_last+1) + elif middle_end >= orig_last-FAR-(2*ADJACENT+1): short_page_range = short_page_range + ['...'] + range(orig_last-FAR+1, orig_last+1) else: - short_page_range = short_page_range + range(middle_end+1, orig_last+1) + # dichotomy if you can fit more than the display range in the '...' + short_page_range = short_page_range + ['...'] \ + + [orig_last-FAR - ((orig_last-FAR) - middle_end) / 2] + ['...'] + range(orig_last-FAR+1, orig_last+1) return short_page_range