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 }}">
<p class="facet-info-name">
<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>
{% if facet_info.hideable %}
<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"]),
reverse=True,
),
"show_facet_counts": special_args.get("_facet_size") == "max",
"extra_wheres_for_ui": extra_wheres_for_ui,
"form_hidden_args": form_hidden_args,
"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_shown_if_facet_max_size(use_facet_size_max):
def test_facet_total():
# 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:
path = "/fixtures/sortable?_facet=content&_facet=pk1"
if use_facet_size_max:
path += "&_facet_size=max"
response = client.get(path)
assert response.status == 200
fragments = (
'<span class="facet-info-total">&gt;100</span>',
'<span class="facet-info-total">&gt;30</span>',
'<span class="facet-info-total">8</span>',
)
for fragment in fragments:
if use_facet_size_max:
assert fragment in response.text
else:
assert fragment not in response.text
assert fragment in response.text
def test_sort_rowid_with_next(app_client):