Adding part details page

This commit is contained in:
Ian Roddis committed 2026-07-27 15:11:58 -03:00
1 parent 2587ccbceb
commit 1b52ad04bc
7 files changed
+305 -9

No files matched your search

@@ -0,0 +1,85 @@
{% extends "base.html" %}
{% block title %}{{ ap.description | truncate(40) }} · {{ app_name }}{% endblock %}
{% block body %}
{% include "_nav.html" %}
{%- macro conn_desc(point) -%}
{%- if point.iso_thread -%}
ISO M{{ point.iso_thread.diameter_mm }}×{{ point.iso_thread.pitch_mm }}
{%- elif point.unc_thread -%}
UNC {{ point.unc_thread.diameter_fraction }}-{{ point.unc_thread.tpi }} {{ point.unc_thread.series.value }}
{%- elif point.clamp_connection -%}
Clamp {{ point.clamp_connection.min_mm if point.clamp_connection.min_mm is not none else point.clamp_connection.min_in }}–{{ point.clamp_connection.max_mm if point.clamp_connection.max_mm is not none else point.clamp_connection.max_in }}
{%- elif point.static_connection -%}
Static {{ point.static_connection.od_mm }} mm OD
{%- else -%}
—
{%- endif -%}
{%- endmacro -%}
<main class="container">
<p><a href="/admin/augmented-parts" class="btn btn-ghost">← Augmented Parts</a></p>
<h1>{{ ap.description }}</h1>
<p class="muted">
<span class="tag">{{ ap.part_type.name }}</span>
{% if ap.sub_part_type %}<span class="tag">{{ ap.sub_part_type.name }}</span>{% endif %}
{% if ap.sku %}· SKU {{ ap.sku }}{% endif %}
</p>
<div class="grid">
<div class="card">
<h2>Details</h2>
<dl class="kv">
<dt>SKU</dt><dd>{{ ap.sku or "—" }}</dd>
<dt>Description</dt><dd>{{ ap.description }}</dd>
<dt>Colour</dt><dd>{{ ap.colour.name if ap.colour else "—" }}</dd>
<dt>Manufacturer</dt><dd>{{ ap.manufacturer.name if ap.manufacturer else "—" }}</dd>
<dt>Type</dt><dd>{{ ap.part_type.name }}</dd>
<dt>Sub type</dt><dd>{{ ap.sub_part_type.name if ap.sub_part_type else "—" }}</dd>
<dt>Scope model</dt>
<dd>
{% if ap.scope_model %}
{{ ap.scope_model.name }}
{% if ap.scope_model.url %} · <a href="{{ ap.scope_model.url }}" target="_blank" rel="noopener">link</a>{% endif %}
{% else %}—{% endif %}
</dd>
</dl>
</div>
{% if scope_info %}
<div class="card">
<h2>Scope information</h2>
<dl class="kv">
<dt>Magnification</dt>
<dd>
{% if scope_info.magnification_min is not none or scope_info.magnification_max is not none %}
{{ scope_info.magnification_min if scope_info.magnification_min is not none else "?" }}–{{ scope_info.magnification_max if scope_info.magnification_max is not none else "?" }}×
{% else %}—{% endif %}
</dd>
<dt>Model suffix</dt><dd>{{ scope_info.model_suffix or "—" }}</dd>
<dt>Objective thread</dt><dd>{{ scope_info.objective_thread_pitch or "—" }}</dd>
</dl>
</div>
{% endif %}
<div class="card">
<h2>Attachment points</h2>
{% for point in attachment_points %}
<div class="ap-item">
<span class="ap-item-name">{{ point.attachment_point_name.name }}</span>
<code class="ap-item-conn">{{ conn_desc(point) }}</code>
</div>
{% else %}
<p class="muted">No attachment points recorded.</p>
{% endfor %}
</div>
</div>
{% if can_read_fits %}
<div class="card">
{% include "admin/_augmented_part_fits.html" %}
</div>
{% endif %}
</main>
{% endblock %}