{# /opportunities filter controls. Layout: a CSS grid that wraps onto two rows on desktop (Search | Issue | Workload | Suggestions on row 1; Dataset | Author on row 2). Each control is one line via the filter components. The Partition / Cluster filter was removed in spec 154 v2 along with its table column - partition + cluster recommendations are a data-lineage-level signal and belong on /recommendations/layout, not on a per-job listing. Collapsed by default; auto-opens when any signal is non-empty. See ``components/_filter_form.html`` for the wrapper behaviour. #} {% from "components/_filter_form.html" import filter_form %} {% from "components/_filter_select.html" import filter_select %} {% from "components/_filter_text.html" import filter_text %} {% set _signals = [signals.search, signals.types, signals.dataset, signals.workload, signals.suggestions, signals.author, signals.materialization, signals.origin] %} {% set _hidden = {"sort": signals.sort, "direction": signals.direction} %}
{% call filter_form(action="/opportunities", clear_href="/opportunities", signals=_signals, hidden=_hidden) %} {{ filter_text("search", "Search", signals.search, placeholder="Search models or tables…", aria_label="Search opportunities") }} {{ filter_select("types", "Issue", signals.types, values=["", "with"] + available_types, labels=["All issues", "Any issue"] + available_type_labels, aria_label="Filter opportunities by issue type") }} {{ filter_select("workload", "Workload", signals.workload, values=["", "build", "consumption"], labels=["All workloads", "Build", "Consumption"], aria_label="Filter opportunities by workload") }} {{ filter_select("suggestions", "SQL Suggestions", signals.suggestions, values=["", "with"] + available_sql_suggestions + ["without"], labels=["Any", "Any suggestion"] + available_sql_suggestion_labels + ["Without"], aria_label="Filter opportunities by SQL-rewrite suggestion availability") }} {# Post-spec-155 consolidation: one filter for the merged Materialization column. Values mirror the actual chips shown in the table (ephemeral / incremental / materialized view / unused), plus "without" for rows with an empty cell. #} {{ filter_select("materialization", "Materialization Suggestion", signals.materialization, values=["", "with"] + available_materializations + ["without"], labels=["Any", "Any signal"] + (available_materializations | map("title") | list) + ["Without"], aria_label="Filter opportunities by materialization suggestion column") }} {{ filter_select("dataset", "Dataset", signals.dataset, values=[""] + available_datasets, labels=["All datasets"] + available_datasets, aria_label="Filter opportunities by dataset") }} {{ filter_select("author", "Author", signals.author, values=[""] + available_authors, labels=["All authors"] + available_authors, aria_label="Filter opportunities by author") }} {# Spec 156 - Origin filter. ``available_origins`` is the distinct set of origin_tool values present in the active workspace, with ``ad_hoc`` sorted last so it doesn't crowd the front of the list. #} {{ filter_select("origin", "Origin", signals.origin, values=[""] + available_origins, labels=["All origins"] + (available_origins | map("replace", "_", " ") | list), aria_label="Filter opportunities by origin tool") }} {% endcall %}