{% extends "base.html" %} {% import "macros/ui.html" as m %} {% block title %}{{ ws_name }}{% endblock %} {% block nav_workspaces %}btn-active{% endblock %} {% block content %} {{ m::ws_tabs(ws_name=ws_name, active=ws_active_tab, ws_envs=ws_envs, ws_has_clusters=ws_has_clusters, ws_has_workflows=ws_has_workflows, current_env=current_env) }} {% if ws %} {# ── Workspace info header — collapsible single-line summary ─ #}
{{ ws_name }} {% if ws_card and ws_card != "" %} {% if ws_card.status %} {{ ws_card.status }} {% endif %} {% if ws_card.tags %} {% for tag in ws_card.tags %}{{ tag }}{% endfor %} {% endif %} {% if ws_card.features %} {% for f in ws_card.features %}{{ f }}{% endfor %} {% endif %} {% endif %}
{% if ws_card and ws_card != "" %}
{% if ws_card.tagline %}
{{ ws_card.tagline }}
{% endif %}
{{ ws.path }}
{% endif %}
{# ── Aggregate stats ───────────────────────────────────────── #}
Infra envs
{{ infra_envs | length }}
Servers
{{ srv_count }}
across all envs
Components
{{ comp_count }}
across all envs
Workflows
{{ wf_count }}
across all envs
{% for env in infra_envs %}
{# ── Servers ── #}

Servers

{% if env.servers %}
{% for srv in env.servers %}
{% if srv.state == "completed" %} {% elif srv.state == "running" %} {% elif srv.state == "failed" %} {% elif srv.state == "pending" %} {% else %} {% endif %} {{ srv.name }} {% if srv.state %} {{ srv.state }} {% endif %}
{% endfor %}
{% else %} {% endif %}
{# ── Components ── #}

Components

{% if env.components %}
{% for comp in env.components %}
{% if comp.state == "completed" %} {% elif comp.state == "running" %} {% elif comp.state == "failed" %} {% elif comp.state == "pending" %} {% else %} {% endif %} {{ comp.name }} {% if comp.state %} {{ comp.state }} {% endif %}
{% endfor %}
{% else %} {% endif %}
{# ── Workflows ── #}

Workflows

{% if env.workflows %}
{% for wf in env.workflows %} {{ wf }} {% endfor %}
{% else %} {% endif %}
{% else %}
No infra environments found.
{% endfor %}
{% else %}
Workspace {{ ws_name }} not found.
{% endif %}
Servers → Components → DAG → Clusters →
{% endblock %}