{% extends "base.html" %} {% from "_projects_table.html" import projects_table %} {% from "_entry_rows.html" import entry_rows with context %} {% block title %}{{ category_title }}{% endblock %} {% block description %}{{ category_description }}{% endblock %} {% block canonical_url %}{{ category_url }}{% endblock %} {% block alternate_links %}{% endblock %} {% block extra_head %} {% endblock %} {% block header %}
{%+ with all_projects = true %}{% include "_topbar.html" %}{% endwith +%}
{% if parent_category %}

{{ parent_category.name }}

{% endif %}

{{ category.name }}

{% if category.description_html %}

{{ category.description_html | safe }}

{% endif %} {% if intro_html %}
{{ intro_html | safe }}
{% endif %} {% set named_groups = entry_groups | selectattr("name") | list %} {% if (named_groups and not group_categories) or guide_html %} {% endif %}
{% if group_categories %} {%+ with nav_categories = group_categories %}{% include "_category_nav.html" %}{% endwith +%} {% endif %}
{% endblock %} {% block content %} {% include "_sponsor_band.html" %}
{% set single_entry = entries | length == 1 %}
{% if entry_groups and not single_entry %} {% set named_groups = entry_groups | selectattr("name") | list %}

{% if group_categories %}Listed by section, in editorial order.{% elif named_groups %}Listed in editorial order, grouped by use case.{% else %}Listed in editorial order.{% endif %} Click a column header to re-sort the whole list.

{% elif not entry_groups %}

{{ entries | length }} {{ category.name }} project{{ "s" if not single_entry }}

{% endif %}

{% if not single_entry %}Press / to search. {% endif %}Tags open their category. Click a row for details.

{% call projects_table(entries | length, "in " ~ category.name, entry_groups) %} {% if entry_groups %} {% set row = namespace(index=0) %} {% for group in entry_groups %} {% if group.name %}

{% if group.url %}{{ group.name }}{% else %}{{ group.name }}{% endif %} {{ group.entries | length }} project{{ "s" if group.entries | length != 1 }}

{% if group.lead %}
{{ group.lead | safe }}
{% endif %} {% endif %} {% for entry in group.entries %} {% set row.index = row.index + 1 %} {{ entry_rows(entry, row.index) }} {% endfor %} {% endfor %} {% else %} {% for entry in entries %} {{ entry_rows(entry, loop.index) }} {% endfor %} {% endif %} {% endcall %}
{% if guide_html %}

{{ category.name }} guide

{{ guide_html | safe }}
{% endif %} {% include "_final_cta.html" +%} {% endblock %}