{% extends "base.html" %} {% block title %}Search — ABREKA{% endblock %} {% block breadcrumb %} {% endblock %} {% block extra_css %} .search-layout { display: grid; grid-template-columns: 250px 1fr; gap: 20px; } @media (max-width: 768px) { .search-layout { grid-template-columns: 1fr; } } /* Search bar */ .search-bar { display: flex; gap: 8px; margin-bottom: 20px; } .search-bar input[type="text"] { flex: 1; padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; font-family: var(--font); background: var(--surface); color: var(--text); } .search-bar input[type="text"]:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.15); } /* Facets sidebar */ .facets .facet-group { margin-bottom: 16px; } .facets .facet-group h3 { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); margin-bottom: 6px; font-weight: 600; } .facets label { display: flex; align-items: center; gap: 6px; font-size: 13px; padding: 2px 0; cursor: pointer; } .facets label:hover { color: var(--primary); } .facet-count { margin-left: auto; font-size: 11px; color: var(--muted); background: var(--bg); padding: 0 6px; border-radius: 8px; min-width: 20px; text-align: center; } /* Active filter chips */ .filter-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; } .chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; background: var(--primary-light); border: 1px solid var(--primary); border-radius: 12px; font-size: 12px; color: var(--primary); } .chip a { color: var(--primary); font-weight: 700; font-size: 14px; line-height: 1; } .chip a:hover { color: #ef4444; text-decoration: none; } .result-count { font-size: 13px; color: var(--muted); margin-bottom: 8px; } {% endblock %} {% block content %}

Search Experiments

{# Preserve non-text filters as hidden inputs so the search bar form keeps them #} {% for s in status_filters %} {% endfor %} {% for t in tag_filters %} {% endfor %} {% if has_metrics %} {% endif %} {% if root_only %} {% endif %} {% if parent_filter %} {% endif %}
{% if search_error %}
{{ search_error }}
{% endif %}
{# Facet sidebar #}
{# Status facets #}

Status

{% set all_statuses = ["proposed", "implementing", "testing", "running", "completed", "failed"] %} {% for s in all_statuses %} {% set count = status_counts.get(s, 0) %} {% set checked = s in status_filters %} {% endfor %}
{# Tag facets #} {% if all_tags %}

Tags

{% for tag, count in all_tags | dictsort %} {% set checked = tag in tag_filters %} {% endfor %}
{% endif %} {# Has metrics #}

Metrics

{# Lineage #}

Lineage

{% if status_filters or tag_filters or has_metrics or root_only or parent_filter %} Clear all filters {% endif %}
{# Results #}
{# Active filter chips #} {% if q or status_filters or tag_filters or has_metrics or root_only or parent_filter %}
{% if q %} q: {{ q }} × {% endif %} {% for s in status_filters %} status: {{ s }} × {% endfor %} {% for t in tag_filters %} tag: {{ t }} × {% endfor %} {% if has_metrics %} metrics: {{ has_metrics }} × {% endif %} {% if root_only %} root only × {% endif %} {% if parent_filter %} parent: {{ parent_filter }} × {% endif %}
{% endif %}
{{ total_results }} experiment{{ 's' if total_results != 1 }} found
{% if experiments %}
{% for exp in experiments %} {% endfor %}
ID Status Hypothesis {{ primary_metric }} Parents Tags Created
{{ exp.id }} {{ exp.status }} {{ exp.hypothesis[:60] }}{% if exp.hypothesis|length > 60 %}...{% endif %} {% if exp.metrics and pm_split and exp.metrics.get(pm_split, {}).get(pm_key) is not none %} {{ "%.4f" | format(exp.metrics[pm_split][pm_key]) }} {% else %} {% endif %} {% for p in exp.parents %} {{ p }}{% if not loop.last %}, {% endif %} {% endfor %} {% if not exp.parents %}{% endif %} {% for t in exp.get('tags', []) %} {{ t }} {% endfor %} {{ exp.created_at[:10] }}
{% else %}

No experiments found matching your criteria.

{% endif %}
{% endblock %}