Adding top-level Scopes table
This commit is contained in:
1 parent
bc8b67d585
commit
3febc15a8f
11 files changed
+470
-1
No files matched your search
@@ -5,6 +5,7 @@
|
||||
{% set can_labels = su or "attachment_point_names:read" in p or "manufacturers:read" in p or "part_colours:read" in p or "part_types:read" in p or "scope_models:read" in p or "sub_part_types:read" in p %}
|
||||
{% set can_database = su or "imported_parts:read" in p or "augmented_parts:read" in p or "attachment_points:read" in p %}
|
||||
{% set can_parts = can_connections or can_labels or can_database %}
|
||||
{% set can_scopes = su or ("augmented_parts:read" in p and "fits:read" in p) %}
|
||||
|
||||
{# ── SVG icon sprite ───────────────────────────────────────────────────────── #}
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
|
||||
@@ -127,6 +128,10 @@
|
||||
<nav>
|
||||
<a href="/">{{ icon("home") }} Dashboard</a>
|
||||
|
||||
{% if can_scopes %}
|
||||
<a href="/scopes">{{ icon("crosshair") }} Scopes</a>
|
||||
{% endif %}
|
||||
|
||||
{% if can_admin %}
|
||||
<div class="nav-group">
|
||||
<span class="nav-label">{{ icon("shield") }} Admin ▾</span>
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Scopes · {{ app_name }}{% endblock %}
|
||||
{% block body %}
|
||||
{% include "_nav.html" %}
|
||||
<main class="container">
|
||||
<h1>Scopes</h1>
|
||||
<p class="muted">
|
||||
Every scope on record, with the accessories that fit it. Each part-type
|
||||
column lists matching parts; <span class="fit-badge fit-badge-exact">Exact</span>
|
||||
is a confirmed fit, <span class="fit-badge fit-badge-possible">Possible</span> a candidate.
|
||||
</p>
|
||||
|
||||
{%- macro mag(v) -%}{{ v | int if v == v | int else v | round(1) }}{%- endmacro -%}
|
||||
{% macro magnification(info) -%}
|
||||
{%- if info and info.magnification_min is not none and info.magnification_max is not none -%}
|
||||
{{ mag(info.magnification_min) }}–{{ mag(info.magnification_max) }}×
|
||||
{%- elif info and info.magnification_min is not none -%}
|
||||
{{ mag(info.magnification_min) }}×
|
||||
{%- elif info and info.magnification_max is not none -%}
|
||||
{{ mag(info.magnification_max) }}×
|
||||
{%- else -%}
|
||||
<span class="muted">—</span>
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
<div class="card" style="overflow-x:auto">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Scope</th>
|
||||
<th>Manufacturer</th>
|
||||
<th>Model</th>
|
||||
<th>Type</th>
|
||||
<th>Magnification</th>
|
||||
<th>Objective thread</th>
|
||||
{% for ct in column_types %}
|
||||
<th>{{ ct.name }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in rows %}
|
||||
{% set scope = row.scope %}
|
||||
{% set info = row.info %}
|
||||
<tr>
|
||||
<td>
|
||||
<strong>{{ scope.description }}</strong>
|
||||
{% if scope.sku %}<br><span class="muted">{{ scope.sku }}</span>{% endif %}
|
||||
</td>
|
||||
<td>{{ scope.manufacturer.name if scope.manufacturer else "—" }}</td>
|
||||
<td>{{ scope.scope_model.name if scope.scope_model else "—" }}</td>
|
||||
<td>{{ scope.sub_part_type.name if scope.sub_part_type else "—" }}</td>
|
||||
<td>{{ magnification(info) }}</td>
|
||||
<td>
|
||||
{% if info and info.objective_thread_pitch %}
|
||||
{{ info.objective_thread_pitch }}
|
||||
{% else %}<span class="muted">—</span>{% endif %}
|
||||
</td>
|
||||
{% for ct in column_types %}
|
||||
{% set entries = row.cells.get(ct.id) %}
|
||||
<td>
|
||||
{% if entries %}
|
||||
{% for e in entries %}
|
||||
<div class="fit-cell-item">
|
||||
<span class="fit-badge fit-badge-{{ e.label }}">{{ e.label | capitalize }}</span>
|
||||
{{ e.part.description | truncate(48) }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<span class="muted">—</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="{{ 6 + column_types | length }}" class="muted">
|
||||
No scopes recorded yet.
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</main>
|
||||
{% endblock %}
|
||||
Reference in new issue
Block a user