From 90a72130dfe6489e82ae2e8ccc48d12cce148433 Mon Sep 17 00:00:00 2001
From: Gregoo <versatile.mailbox@gmail.com>
Date: Tue, 4 Feb 2025 19:05:38 +0100
Subject: [PATCH] Make form.select generic
---
templates/macro/form.html | 17 ++++++++---------
templates/set/management.html | 4 ++--
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/templates/macro/form.html b/templates/macro/form.html
index 9564f350..72af87f5 100644
--- a/templates/macro/form.html
+++ b/templates/macro/form.html
@@ -43,26 +43,25 @@
{% endif %}
{% endmacro %}
-{% macro select(name, item, field, metadata_list, nullable=true, icon=none, delete=false) %}
+{% macro select(name, id, prefix, url, value, metadata_list, nullable=true, icon=none, delete=false) %}
{% if g.login.is_authenticated() %}
- {% set prefix=metadata_list.as_prefix() %}
- <label class="visually-hidden" for="{{ prefix }}-{{ item.fields.id }}">{{ name }}</label>
+ <label class="visually-hidden" for="{{ prefix }}-{{ id }}">{{ name }}</label>
<div class="input-group">
{% if icon %}<span class="input-group-text"><i class="ri-{{ icon }} me-1"></i><span class="ms-1 d-none d-md-inline"> {{ name }}</span></span>{% endif %}
- <select id="{{ prefix }}-{{ item.fields.id }}" class="form-select"
+ <select id="{{ prefix }}-{{ id }}" class="form-select"
{% if not delete %}
- data-changer-id="{{ item.fields.id }}" data-changer-prefix="{{ prefix }}" data-changer-url="{{ metadata_list.url_for_set_value(item.fields.id) }}"
+ data-changer-id="{{ id }}" data-changer-prefix="{{ prefix }}" data-changer-url="{{ url }}"
{% else %}
disabled
{% endif %}
autocomplete="off">
- {% if nullable %}<option value="" {% if item.fields[field] is none %}selected{% endif %}><i>None</i></option>{% endif %}
+ {% if nullable %}<option value="" {% if value is none %}selected{% endif %}><i>None</i></option>{% endif %}
{% for metadata in metadata_list %}
- <option value="{{ metadata.fields.id }}" {% if metadata.fields.id == item.fields[field] %}selected{% endif %}>{{ metadata.fields.name }}</option>
+ <option value="{{ metadata.fields.id }}" {% if metadata.fields.id == value %}selected{% endif %}>{{ metadata.fields.name }}</option>
{% endfor %}
</select>
- <span id="status-{{ prefix }}-{{ item.fields.id }}" class="input-group-text ri-save-line"></span>
- <button id="clear-{{ prefix }}-{{ item.fields.id }}" type="button" class="btn btn-sm btn-light btn-outline-danger border"><i class="ri-eraser-line"></i></button>
+ <span id="status-{{ prefix }}-{{ id }}" class="input-group-text ri-save-line"></span>
+ <button id="clear-{{ prefix }}-{{ id }}" type="button" class="btn btn-sm btn-light btn-outline-danger border"><i class="ri-eraser-line"></i></button>
</div>
{% endif %}
{% endmacro %}
diff --git a/templates/set/management.html b/templates/set/management.html
index 744c9616..ade6729c 100644
--- a/templates/set/management.html
+++ b/templates/set/management.html
@@ -25,7 +25,7 @@
</div>
<div class="col-12 flex-grow-1">
{% if brickset_purchase_locations | length %}
- {{ form.select('Location', item, 'purchase_location', brickset_purchase_locations, icon='building-line', delete=delete) }}
+ {{ form.select('Location', item.fields.id, brickset_purchase_locations.as_prefix(), brickset_purchase_locations.url_for_set_value(item.fields.id), item.fields.purchase_location, brickset_purchase_locations, icon='building-line', delete=delete) }}
{% else %}
<i class="ri-error-warning-line"></i> No purchase location found.
{% endif %}
@@ -36,7 +36,7 @@
{{ accordion.footer() }}
{{ accordion.header('Storage', 'storage', 'set-management', icon='archive-2-line') }}
{% if brickset_storages | length %}
- {{ form.select('Storage', item, 'storage', brickset_storages, delete=delete) }}
+ {{ form.select('Storage', item.fields.id, brickset_storages.as_prefix(), brickset_storages.url_for_set_value(item.fields.id), item.fields.storage, brickset_storages, icon='building-line', delete=delete) }}
{% else %}
<p class="text-center"><i class="ri-error-warning-line"></i> No storage found.</p>
{% endif %}