Skip to content

Commit

Permalink
Correct pagination on group list
Browse files Browse the repository at this point in the history
  • Loading branch information
dcramer committed Jun 4, 2014
1 parent 68ccb9e commit 8e8132f
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 8 deletions.
27 changes: 21 additions & 6 deletions src/sentry/templates/sentry/groups/group_list.html
Expand Up @@ -37,7 +37,6 @@ <h6>{% trans filter.label %}</h6>
{% endblock %}

{% block main %}
{% paginator event_list from request as event_list per_page EVENTS_PER_PAGE %}
{% querystring from request without sort as sort_querystring %}
{% querystring from request without since as since_querystring %}

Expand Down Expand Up @@ -80,8 +79,16 @@ <h6>{% trans filter.label %}</h6>
<i aria-hidden="true" class="icon-arrow-down"></i></a>
</div>
<div class="btn-group pull-right">
<a class="btn prev{% if not event_list.paginator.has_previous %} disabled{% else %}" href="?{{ event_list.query_string|escape }}&amp;p={{ event_list.paginator.previous_page }}{% endif %}"><span>{% trans "Previous" %}</span></a>
<a class="btn next{% if not event_list.paginator.has_next %} disabled{% else %}" href="?{{ event_list.query_string|escape }}&amp;p={{ event_list.paginator.next_page }}{% endif %}"><span>{% trans "Next" %}</span></a>
{% if previous_page %}
<a class="btn prev" href="?{{ pageless_query_string|escape }}&amp;p={{ previous_page }}"><span>{% trans "Previous" %}</span></a>
{% else %}
<a class="btn prev disabled"><span>{% trans "Previous" %}</span></a>
{% endif %}
{% if next_page %}
<a class="btn next" href="?{{ pageless_query_string|escape }}&amp;p={{ next_page }}"><span>{% trans "Next" %}</span></a>
{% else %}
<a class="btn next disabled"><span>{% trans "Next" %}</span></a>
{% endif %}
</div>
</div>

Expand Down Expand Up @@ -136,15 +143,23 @@ <h6>{% trans filter.label %}</h6>

<div class="btn-toolbar" style="border-bottom: none">
<div class="btn-group pull-right">
<a class="btn prev{% if not event_list.paginator.has_previous %} disabled{% else %}" href="?{{ event_list.query_string|escape }}&amp;p={{ event_list.paginator.previous_page }}{% endif %}"><span>{% trans "Previous" %}</span></a>
<a class="btn next{% if not event_list.paginator.has_next %} disabled{% else %}" href="?{{ event_list.query_string|escape }}&amp;p={{ event_list.paginator.next_page }}{% endif %}"><span>{% trans "Next" %}</span></a>
{% if previous_page %}
<a class="btn prev" href="?{{ pageless_query_string|escape }}&amp;p={{ previous_page }}"><span>{% trans "Previous" %}</span></a>
{% else %}
<a class="btn prev disabled"><span>{% trans "Previous" %}</span></a>
{% endif %}
{% if next_page %}
<a class="btn next" href="?{{ pageless_query_string|escape }}&amp;p={{ next_page }}"><span>{% trans "Next" %}</span></a>
{% else %}
<a class="btn next disabled"><span>{% trans "Next" %}</span></a>
{% endif %}
</div>
</div>

<script>
$(function(){
new app.StreamPage({
groups: {{ event_list.paginator.objects|to_json:request|safe }},
groups: {{ event_list|to_json:request|safe }},
canStream: {{ has_realtime|to_json|safe }},
realtime: true
});
Expand Down
30 changes: 28 additions & 2 deletions src/sentry/web/frontend/groups.py
Expand Up @@ -94,17 +94,35 @@ def _get_group_list(request, project):

# HACK(dcramer): this should be removed once the pagination component
# is abstracted from the paginator tag
query_kwargs['limit'] = EVENTS_PER_PAGE + 2
try:
page = int(request.GET.get('p', 1))
except TypeError:
page = 1

query_kwargs['offset'] = (page - 1) * EVENTS_PER_PAGE
query_kwargs['limit'] = EVENTS_PER_PAGE + 1

results = app.search.query(**query_kwargs)

if len(results) == query_kwargs['limit']:
next_page = page + 1
else:
next_page = None

if page > 1:
prev_page = page - 1
else:
prev_page = None

return {
'event_list': results,
'event_list': results[:EVENTS_PER_PAGE],
'date_from': date_from,
'date_to': date_to,
'today': today,
'sort': sort_by,
'date_type': date_filter,
'previous_page': prev_page,
'next_page': next_page,
}


Expand Down Expand Up @@ -231,6 +249,11 @@ def group_list(request, team, project):

has_realtime = page == 1

query_dict = request.GET.copy()
if 'p' in query_dict:
del query_dict['p']
pageless_query_string = query_dict.urlencode()

return render_to_response('sentry/groups/group_list.html', {
'team': project.team,
'project': project,
Expand All @@ -239,8 +262,11 @@ def group_list(request, team, project):
'date_type': response['date_type'],
'has_realtime': has_realtime,
'event_list': response['event_list'],
'previous_page': response['previous_page'],
'next_page': response['next_page'],
'today': response['today'],
'sort': response['sort'],
'pageless_query_string': pageless_query_string,
'sort_label': sort_label,
'SORT_OPTIONS': SORT_OPTIONS,
}, request)
Expand Down

0 comments on commit 8e8132f

Please sign in to comment.