{# /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] %} {% 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=[""] + available_types, labels=["All issues"] + (available_types | map("replace", "_", " ") | list), 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", "Suggestions", signals.suggestions, values=["", "with", "without"], labels=["Any", "With", "Without"], aria_label="Filter opportunities by suggestion availability") }} {# Post-spec-155 consolidation: one filter for the merged Materialization column. The four-value enum lets users either ask the binary question ("with" / "without" any materialization signal) or disambiguate ("strategy" / "unused"). #} {{ filter_select("materialization", "Materialization", signals.materialization, values=["", "with", "strategy", "unused", "without"], labels=["Any", "With (any)", "Strategy", "Unused", "Without"], aria_label="Filter opportunities by materialization 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") }} {% endcall %}