56 lines
1.9 KiB
HTML
56 lines
1.9 KiB
HTML
<div id="skipped-parts-list">
|
|
{% if sync_result %}<p class="alert alert-success">{{ sync_result }}</p>{% endif %}
|
|
{% if sync_error %}<p class="alert alert-error">{{ sync_error }}</p>{% endif %}
|
|
|
|
{% if any_unlinked %}
|
|
<form hx-post="/admin/augmented-parts/skipped"
|
|
hx-target="#skipped-parts-list"
|
|
hx-swap="outerHTML">
|
|
|
|
<div class="card">
|
|
<div class="form-grid">
|
|
<label>Type
|
|
<select name="part_type_id" required>
|
|
<option value="">— select type —</option>
|
|
{% for pt in part_types %}
|
|
<option value="{{ pt.id }}">{{ pt.name }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</label>
|
|
<label>Sub Type
|
|
<select name="sub_part_type_id">
|
|
<option value="">— none —</option>
|
|
{% for spt in sub_part_types %}
|
|
<option value="{{ spt.id }}">{{ spt.name }} ({{ spt.part_type.name }})</option>
|
|
{% endfor %}
|
|
</select>
|
|
</label>
|
|
<button id="sync-selected-btn" type="submit" class="btn btn-primary">Sync selected</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="filter-bar">
|
|
<form hx-get="/admin/augmented-parts/skipped/filter"
|
|
hx-target="#skipped-parts-table-card"
|
|
hx-trigger="input delay:300ms, change"
|
|
hx-swap="outerHTML">
|
|
<input type="text" name="description" placeholder="Filter by description…" value="{{ filter_description or '' }}">
|
|
<select name="colour">
|
|
<option value="">All colours</option>
|
|
{% for c in skipped_colours %}
|
|
<option value="{{ c }}" {{ "selected" if filter_colour == c }}>{{ c }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</form>
|
|
</div>
|
|
|
|
{% include "admin/_skipped_parts_table_card.html" %}
|
|
|
|
</form>
|
|
{% else %}
|
|
<div class="card">
|
|
<p class="muted">No skipped parts — all imported parts have been synchronised.</p>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|