Make form.select generic

This commit is contained in:
Gregoo 2025-02-04 19:05:38 +01:00
parent 50e6c8bf9c
commit 90a72130df
2 changed files with 10 additions and 11 deletions

View File

@ -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 %}

View File

@ -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 %}