kopia lustrzana https://github.com/simonw/datasette
Don't show facet in cog menu if not allow_facet, closes #1683
rodzic
d431a9055e
commit
c496f2b663
|
@ -128,7 +128,8 @@ var DROPDOWN_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="14" heig
|
||||||
} else {
|
} else {
|
||||||
hideColumn.parentNode.style.display = "none";
|
hideColumn.parentNode.style.display = "none";
|
||||||
}
|
}
|
||||||
/* Only show facet if it's not the first column, not selected, not a single PK */
|
/* Only show "Facet by this" if it's not the first column, not selected,
|
||||||
|
not a single PK and the Datasette allow_facet setting is True */
|
||||||
var displayedFacets = Array.from(
|
var displayedFacets = Array.from(
|
||||||
document.querySelectorAll(".facet-info")
|
document.querySelectorAll(".facet-info")
|
||||||
).map((el) => el.dataset.column);
|
).map((el) => el.dataset.column);
|
||||||
|
@ -137,7 +138,12 @@ var DROPDOWN_ICON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="14" heig
|
||||||
var isSinglePk =
|
var isSinglePk =
|
||||||
th.getAttribute("data-is-pk") == "1" &&
|
th.getAttribute("data-is-pk") == "1" &&
|
||||||
document.querySelectorAll('th[data-is-pk="1"]').length == 1;
|
document.querySelectorAll('th[data-is-pk="1"]').length == 1;
|
||||||
if (isFirstColumn || displayedFacets.includes(column) || isSinglePk) {
|
if (
|
||||||
|
!DATASETTE_ALLOW_FACET ||
|
||||||
|
isFirstColumn ||
|
||||||
|
displayedFacets.includes(column) ||
|
||||||
|
isSinglePk
|
||||||
|
) {
|
||||||
facetItem.parentNode.style.display = "none";
|
facetItem.parentNode.style.display = "none";
|
||||||
} else {
|
} else {
|
||||||
facetItem.parentNode.style.display = "block";
|
facetItem.parentNode.style.display = "block";
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
{% block extra_head %}
|
{% block extra_head %}
|
||||||
{{- super() -}}
|
{{- super() -}}
|
||||||
<script src="{{ urls.static('table.js') }}" defer></script>
|
<script src="{{ urls.static('table.js') }}" defer></script>
|
||||||
|
<script>DATASETTE_ALLOW_FACET = {{ datasette_allow_facet }};</script>
|
||||||
<style>
|
<style>
|
||||||
@media only screen and (max-width: 576px) {
|
@media only screen and (max-width: 576px) {
|
||||||
{% for column in display_columns -%}
|
{% for column in display_columns -%}
|
||||||
|
|
|
@ -888,6 +888,9 @@ class TableView(RowTableShared):
|
||||||
"metadata": metadata,
|
"metadata": metadata,
|
||||||
"view_definition": await db.get_view_definition(table),
|
"view_definition": await db.get_view_definition(table),
|
||||||
"table_definition": await db.get_table_definition(table),
|
"table_definition": await db.get_table_definition(table),
|
||||||
|
"datasette_allow_facet": "true"
|
||||||
|
if self.ds.setting("allow_facet")
|
||||||
|
else "false",
|
||||||
}
|
}
|
||||||
d.update(extra_context_from_filters)
|
d.update(extra_context_from_filters)
|
||||||
return d
|
return d
|
||||||
|
|
|
@ -1075,3 +1075,17 @@ def test_table_page_title(app_client, path, expected):
|
||||||
response = app_client.get(path)
|
response = app_client.get(path)
|
||||||
title = Soup(response.text, "html.parser").find("title").text
|
title = Soup(response.text, "html.parser").find("title").text
|
||||||
assert title == expected
|
assert title == expected
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("allow_facet", (True, False))
|
||||||
|
def test_allow_facet_off(allow_facet):
|
||||||
|
with make_app_client(settings={"allow_facet": allow_facet}) as client:
|
||||||
|
response = client.get("/fixtures/facetable")
|
||||||
|
expected = "DATASETTE_ALLOW_FACET = {};".format(
|
||||||
|
"true" if allow_facet else "false"
|
||||||
|
)
|
||||||
|
assert expected in response.text
|
||||||
|
if allow_facet:
|
||||||
|
assert "Suggested facets" in response.text
|
||||||
|
else:
|
||||||
|
assert "Suggested facets" not in response.text
|
||||||
|
|
Ładowanie…
Reference in New Issue