Ability to set custom table/view page size in metadata, closes #751

pull/783/head
Simon Willison 2020-05-27 22:00:04 -07:00
rodzic 510c1989d4
commit 75cd432e5a
4 zmienionych plików z 27 dodań i 3 usunięć

Wyświetl plik

@ -527,7 +527,7 @@ class TableView(RowTableShared):
extra_args = {}
# Handle ?_size=500
page_size = _size or request.args.get("_size")
page_size = _size or request.args.get("_size") or table_metadata.get("size")
if page_size:
if page_size == "max":
page_size = self.ds.max_returned_rows

Wyświetl plik

@ -156,6 +156,29 @@ Or use ``"sort_desc"`` to sort in descending order:
}
}
.. _metadata_page_size:
Setting a custom page size
--------------------------
Datasette defaults to displaing 100 rows per page, for both tables and views. You can change this default page size on a per-table or per-view basis using the ``"size"`` key in ``metadata.json``:
.. code-block:: json
{
"databases": {
"mydatabase": {
"tables": {
"example_table": {
"size": 10
}
}
}
}
}
This size can still be over-ridden by passing e.g. ``?_size=50`` in the querystring.
.. _metadata_sortable_columns:
Setting which columns can be used for sorting

Wyświetl plik

@ -305,6 +305,7 @@ METADATA = {
},
"attraction_characteristic": {"sort_desc": "pk"},
"facet_cities": {"sort": "name"},
"paginated_view": {"size": 25},
},
"queries": {
"𝐜𝐢𝐭𝐢𝐞𝐬": "select id, name from facet_cities order by id limit 1;",

Wyświetl plik

@ -754,9 +754,9 @@ def test_table_with_reserved_word_name(app_client):
"path,expected_rows,expected_pages",
[
("/fixtures/no_primary_key.json", 201, 5),
("/fixtures/paginated_view.json", 201, 5),
("/fixtures/paginated_view.json", 201, 9),
("/fixtures/no_primary_key.json?_size=25", 201, 9),
("/fixtures/paginated_view.json?_size=25", 201, 9),
("/fixtures/paginated_view.json?_size=50", 201, 5),
("/fixtures/paginated_view.json?_size=max", 201, 3),
("/fixtures/123_starts_with_digits.json", 0, 1),
# Ensure faceting doesn't break pagination: