Always show count of distinct facet values, closes #1556

Refs #1423
This commit is contained in:
Simon Willison 2021-12-15 09:58:01 -08:00
commit eb53837d2a
3 changed files with 5 additions and 11 deletions

View file

@ -157,7 +157,7 @@
<div class="facet-info facet-{{ database|to_css_class }}-{{ table|to_css_class }}-{{ facet_info.name|to_css_class }}" id="facet-{{ facet_info.name|to_css_class }}" data-column="{{ facet_info.name }}"> <div class="facet-info facet-{{ database|to_css_class }}-{{ table|to_css_class }}-{{ facet_info.name|to_css_class }}" id="facet-{{ facet_info.name|to_css_class }}" data-column="{{ facet_info.name }}">
<p class="facet-info-name"> <p class="facet-info-name">
<strong>{{ facet_info.name }}{% if facet_info.type != "column" %} ({{ facet_info.type }}){% endif %} <strong>{{ facet_info.name }}{% if facet_info.type != "column" %} ({{ facet_info.type }}){% endif %}
{% if show_facet_counts %} <span class="facet-info-total">{% if facet_info.truncated %}&gt;{% endif %}{{ facet_info.results|length }}</span>{% endif %} <span class="facet-info-total">{% if facet_info.truncated %}&gt;{% endif %}{{ facet_info.results|length }}</span>
</strong> </strong>
{% if facet_info.hideable %} {% if facet_info.hideable %}
<a href="{{ facet_info.toggle_url }}" class="cross">&#x2716;</a> <a href="{{ facet_info.toggle_url }}" class="cross">&#x2716;</a>

View file

@ -937,7 +937,6 @@ class TableView(RowTableShared):
key=lambda f: (len(f["results"]), f["name"]), key=lambda f: (len(f["results"]), f["name"]),
reverse=True, reverse=True,
), ),
"show_facet_counts": special_args.get("_facet_size") == "max",
"extra_wheres_for_ui": extra_wheres_for_ui, "extra_wheres_for_ui": extra_wheres_for_ui,
"form_hidden_args": form_hidden_args, "form_hidden_args": form_hidden_args,
"is_sortable": any(c["sortable"] for c in display_columns), "is_sortable": any(c["sortable"] for c in display_columns),

View file

@ -1015,24 +1015,19 @@ def test_column_metadata(app_client):
) )
@pytest.mark.parametrize("use_facet_size_max", (True, False)) def test_facet_total():
def test_facet_total_shown_if_facet_max_size(use_facet_size_max):
# https://github.com/simonw/datasette/issues/1423 # https://github.com/simonw/datasette/issues/1423
# https://github.com/simonw/datasette/issues/1556
with make_app_client(settings={"max_returned_rows": 100}) as client: with make_app_client(settings={"max_returned_rows": 100}) as client:
path = "/fixtures/sortable?_facet=content&_facet=pk1" path = "/fixtures/sortable?_facet=content&_facet=pk1"
if use_facet_size_max:
path += "&_facet_size=max"
response = client.get(path) response = client.get(path)
assert response.status == 200 assert response.status == 200
fragments = ( fragments = (
'<span class="facet-info-total">&gt;100</span>', '<span class="facet-info-total">&gt;30</span>',
'<span class="facet-info-total">8</span>', '<span class="facet-info-total">8</span>',
) )
for fragment in fragments: for fragment in fragments:
if use_facet_size_max: assert fragment in response.text
assert fragment in response.text
else:
assert fragment not in response.text
def test_sort_rowid_with_next(app_client): def test_sort_rowid_with_next(app_client):