{% extends "base.html" %} {% macro render_select(name, label, options, selected) -%}
{%- endmacro %} {% macro render_range(group_id, label, name_min, name_max, min_bound, max_bound, current_min, current_max, step, min_display, max_display, unit, format_type, precision, disabled) -%}

{{ label }}

Drag either handle to set the minimum and maximum value.

{{ min_display }} - {{ max_display }}
{% if disabled %}

No values available yet.

{% else %}
Minimum {{ min_display }}
Maximum {{ max_display }}
{% endif %}
{%- endmacro %} {% block content %} {% set focal_min_bound = (filter_metadata.ranges.focal_length.min or 0)|round(0, 'floor')|int %} {% set focal_max_bound = (filter_metadata.ranges.focal_length.max or focal_min_bound)|round(0, 'ceil')|int %} {% set pixel_min_bound = (filter_metadata.ranges.pixel_scale.min or 0)|round(2, 'floor') %} {% set pixel_max_bound = (filter_metadata.ranges.pixel_scale.max or pixel_min_bound)|round(2, 'ceil') %} {% set capture_min_date = filter_metadata.ranges.capture_dates.min %} {% set capture_max_date = filter_metadata.ranges.capture_dates.max %} {% set capture_disabled = not capture_min_date or not capture_max_date %} {% set capture_min_bound = capture_min_date.toordinal() if capture_min_date else 0 %} {% set capture_max_bound = capture_max_date.toordinal() if capture_max_date else 0 %}

Image Collection

{{ result_count }} image{{ '' if result_count == 1 else 's' }} matched.

Reset Filters
{% if active_filters %}
Applied Filters {% for chip in active_filters %} {{ chip.label }}: {{ chip.value }} x {% endfor %} Clear all
{% endif %}

Collection Filters

Open the panel to refine the collection. Changes apply automatically.

{{ active_filters|length }} active Hide Filters

Basic Filters

Start with the equipment and capture window you already know.

{{ render_select("telescope_type", "Telescope Type", filter_metadata.dropdowns.telescope_type, filter_state.telescope_type) }} {{ render_select("telescope_name", "Telescope Name", filter_metadata.dropdowns.telescope_name, filter_state.telescope_name) }} {{ render_select("main_camera", "Main Camera", filter_metadata.dropdowns.main_camera, filter_state.main_camera) }} {{ render_select("guide_camera", "Guide Camera", filter_metadata.dropdowns.guide_camera, filter_state.guide_camera) }}
{{ render_range( "focal-length", "Focal Length", "focal_length_min", "focal_length_max", focal_min_bound, focal_max_bound, filter_state.focal_length_min, filter_state.focal_length_max, 1, filter_state.focal_length_min ~ " mm", filter_state.focal_length_max ~ " mm", "mm", "number", 0, filter_metadata.ranges.focal_length.min is none ) }} {{ render_range( "capture-date", "Capture Dates", "capture_date_min", "capture_date_max", capture_min_bound, capture_max_bound, filter_state.capture_date_min, filter_state.capture_date_max, 1, capture_min_date.strftime("%Y-%m-%d") if capture_min_date else "N/A", capture_max_date.strftime("%Y-%m-%d") if capture_max_date else "N/A", "", "date", 0, capture_disabled ) }}

Advanced Filters

Narrow by post metadata once the basic setup is close.

{{ render_select("filter_type", "Filter Type", filter_metadata.dropdowns.filter_type, filter_state.filter_type) }} {{ render_select("mount", "Mount", filter_metadata.dropdowns.mount, filter_state.mount) }} {{ render_select("object_type", "Object Type", filter_metadata.dropdowns.object_type, filter_state.object_type) }} {{ render_select("moon_phase", "Moon Phase", filter_metadata.dropdowns.moon_phase, filter_state.moon_phase) }} {{ render_select("author", "Author", filter_metadata.dropdowns.author, filter_state.author) }}
{{ render_range( "pixel-scale", "Pixel Scale", "pixel_scale_min", "pixel_scale_max", pixel_min_bound, pixel_max_bound, filter_state.pixel_scale_min, filter_state.pixel_scale_max, 0.01, "%.2f arcsec/px"|format(filter_state.pixel_scale_min), "%.2f arcsec/px"|format(filter_state.pixel_scale_max), "arcsec/px", "number", 2, filter_metadata.ranges.pixel_scale.min is none ) }}

Filters update automatically as you change them. Dropdowns only show values that already exist in the collection.

{% if images %}
{% for img in images %} {% endfor %}
{% else %}

No images matched these filters.

Try widening the slider ranges or clearing one of the filter chips above.

Back to Full Collection
{% endif %}
{% endblock %}