diff options
author | Martin Czygan <martin.czygan@gmail.com> | 2019-11-08 23:00:29 +0100 |
---|---|---|
committer | Martin Czygan <martin.czygan@gmail.com> | 2019-11-08 23:12:12 +0100 |
commit | ed72027bbf36e933c8db069bd02b0163a84aef83 (patch) | |
tree | dc0568703c43eec59d4ddb3cefec50f0d38f22c8 /python/fatcat_web/templates | |
parent | 5748f3241117b52f5295dc589374ec0c219534e4 (diff) | |
download | fatcat-ed72027bbf36e933c8db069bd02b0163a84aef83.tar.gz fatcat-ed72027bbf36e933c8db069bd02b0163a84aef83.zip |
Add basic pagination to search results
The "deep paging problem" imposes some limit, which currently is a
hardcoded default value, `deep_page_limit=2000` in `do_search`.
Elasticsearch can be configured, too:
> Note that from + size can not be more than the index.max_result_window
index setting, which defaults to 10,000.
-- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-from-size
Diffstat (limited to 'python/fatcat_web/templates')
-rw-r--r-- | python/fatcat_web/templates/container_search.html | 21 | ||||
-rw-r--r-- | python/fatcat_web/templates/release_search.html | 24 |
2 files changed, 42 insertions, 3 deletions
diff --git a/python/fatcat_web/templates/container_search.html b/python/fatcat_web/templates/container_search.html index 7f6799dd..9e2aa10a 100644 --- a/python/fatcat_web/templates/container_search.html +++ b/python/fatcat_web/templates/container_search.html @@ -30,7 +30,26 @@ {% if found %} {% if found.results %} - <i>Showing top {{ found.count_returned }} out of {{ found.count_found }} results for: <code>{{ found.query.q }}</code></i> + <i>Showing + {% if found.offset == 0 %} + first + {% else %} + results {{ found.offset }} — + {% endif %} + {{ found.offset + found.count_returned }} out of {{ found.count_found }} results for: <code>{{ found.query.q }}</code></i> + <br> + {% if found.offset > 0 %} + {% if found.offset - found.limit < 0 %} + <a href="{{ url_for('release_search', q=query, offset=0) }}">Prev</a> + {% else %} + <a href="{{ url_for('release_search', q=query, offset=found.offset - found.limit) }}">Prev</a> + {% endif %} + {% endif %} + + {% if found.offset + found.limit < found.count_found and found.offset + found.limit < found.deep_page_limit %} + <a href="{{ url_for('release_search', q=query, offset=found.offset + found.limit) }}">Next</a> + {% endif %} + {% for entity in found.results %} <div> <h4 style="margin-top: 1em; margin-bottom: 4px; font-size: 1.1em;"> diff --git a/python/fatcat_web/templates/release_search.html b/python/fatcat_web/templates/release_search.html index 7d6b0443..359038dc 100644 --- a/python/fatcat_web/templates/release_search.html +++ b/python/fatcat_web/templates/release_search.html @@ -36,8 +36,28 @@ {% if found %} {% if found.results %} - <i>Showing top {{ found.count_returned }} out of {{ found.count_found }} results for: <code>{{ found.query.q }}</code></i> -{% for paper in found.results %} + <i>Showing + {% if found.offset == 0 %} + first + {% else %} + results {{ found.offset }} — + {% endif %} + {{ found.offset + found.count_returned }} out of {{ found.count_found }} results for: <code>{{ found.query.q }}</code></i> + + <br> + {% if found.offset > 0 %} + {% if found.offset - found.limit < 0 %} + <a href="{{ url_for('release_search', q=query, offset=0) }}">Prev</a> + {% else %} + <a href="{{ url_for('release_search', q=query, offset=found.offset - found.limit) }}">Prev</a> + {% endif %} + {% endif %} + + {% if found.offset + found.limit < found.count_found and found.offset + found.limit < found.deep_page_limit %} + <a href="{{ url_for('release_search', q=query, offset=found.offset + found.limit) }}">Next</a> + {% endif %} + + {% for paper in found.results %} {{ entity_macros.release_search_result_row(paper) }} {% endfor %} {% if found.results|length > 8 %} |