From 3b885d31241aeadbc47f6389539ca39690b349c6 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Tue, 15 May 2018 22:06:05 -0700 Subject: [PATCH] Show enabled facets in flexbox columns, refs #255 --- datasette/static/app.css | 19 +++++++++++++++++++ datasette/templates/table.html | 26 ++++++++++++++++---------- datasette/views/table.py | 17 +++++++++++++---- 3 files changed, 48 insertions(+), 14 deletions(-) diff --git a/datasette/static/app.css b/datasette/static/app.css index 98c4a47c..96f4dbe0 100644 --- a/datasette/static/app.css +++ b/datasette/static/app.css @@ -231,3 +231,22 @@ a.not-underlined { .not-underlined .underlined { text-decoration: underline; } + +.facet-results { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} +.facet-info { + width: 250px; + margin-right: 20px; +} +.facet-info li, +.facet-info ul { + margin: 0; + padding: 0; +} +.facet-info ul { + padding-left: 1.25em; + margin-bottom: 1em; +} diff --git a/datasette/templates/table.html b/datasette/templates/table.html index 3abd5b10..d90fe5e4 100644 --- a/datasette/templates/table.html +++ b/datasette/templates/table.html @@ -98,17 +98,23 @@

Suggested facets: {% for facet in suggested_facets %}{{ facet.name }}{% if not loop.last %}, {% endif %}{% endfor %} {% endif %} -{% for facet_name, facet_info in facet_results.items() %} -

{{ facet_name }}

- -{% endfor %} + +{% endif %} {% include custom_rows_and_columns_templates %} diff --git a/datasette/views/table.py b/datasette/views/table.py index 3eb41ade..394f82c0 100644 --- a/datasette/views/table.py +++ b/datasette/views/table.py @@ -555,17 +555,21 @@ class TableView(RowTableShared): ) try: facet_rows = await self.execute( - name, facet_sql, params, truncate=False, custom_time_limit=200 + name, facet_sql, params, + truncate=False, custom_time_limit=200 ) + facet_results_values = [] facet_results[column] = { "name": column, - "results": [], + "results": facet_results_values, "truncated": len(facet_rows) > FACET_SIZE, } facet_rows = facet_rows[:FACET_SIZE] # Attempt to expand foreign keys into labels values = [row["value"] for row in facet_rows] - expanded = (await self.expand_foreign_keys(name, table, column, values)) + expanded = (await self.expand_foreign_keys( + name, table, column, values + )) for row in facet_rows: selected = str(other_args.get(column)) == str(row["value"]) if selected: @@ -576,7 +580,7 @@ class TableView(RowTableShared): toggle_path = path_with_added_args( request, {column: row["value"]} ) - facet_results[column]["results"].append({ + facet_results_values.append({ "value": row["value"], "label": expanded.get( (column, row["value"]), @@ -710,6 +714,11 @@ class TableView(RowTableShared): "display_columns": display_columns, "filter_columns": filter_columns, "display_rows": display_rows, + "sorted_facet_results": sorted( + facet_results.values(), + key=lambda f: len(f["results"]), + reverse=True + ), "is_sortable": any(c["sortable"] for c in display_columns), "path_with_replaced_args": path_with_replaced_args, "path_with_removed_args": path_with_removed_args,