Rendre la vue zones et salles arborescente
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-17 00:03:16 +00:00
parent 1c5299da41
commit a8c2f1226e
2 changed files with 2 additions and 2 deletions

View file

@ -78,7 +78,7 @@ def index():
r = z['rooms'].setdefault(room.id, {'name': room.name, 'types': {}}) r = z['rooms'].setdefault(room.id, {'name': room.name, 'types': {}})
key = eq.effective_category_id or f'name:{eq.name.lower().split(" #")[0]}' key = eq.effective_category_id or f'name:{eq.name.lower().split(" #")[0]}'
display_name = eq.category.name if eq.category else eq.name.split(' #')[0] display_name = eq.category.name if eq.category else eq.name.split(' #')[0]
item = r['types'].setdefault(key, {'name': display_name, 'category': eq.category.name if eq.category else '', 'quantity': 0, 'ids': []}) item = r['types'].setdefault(key, {'name': display_name, 'category': eq.effective_category.name if eq.effective_category else '', 'quantity': 0, 'ids': []})
item['quantity'] += eq.quantity or 1 item['quantity'] += eq.quantity or 1
item['ids'].append(eq.id) item['ids'].append(eq.id)
zone_tree = [{'id': bid, 'name': b['name'], 'zones': [{'id': zid, 'name': z['name'], 'rooms': [{'id': rid, 'name': r['name'], 'types': list(r['types'].values())} for rid, r in z['rooms'].items()]} for zid, z in b['zones'].items()]} for bid, b in grouped.items()] zone_tree = [{'id': bid, 'name': b['name'], 'zones': [{'id': zid, 'name': z['name'], 'rooms': [{'id': rid, 'name': r['name'], 'types': list(r['types'].values())} for rid, r in z['rooms'].items()]} for zid, z in b['zones'].items()]} for bid, b in grouped.items()]

View file

@ -61,7 +61,7 @@
{% if view == 'zones' %} {% if view == 'zones' %}
<div class="alert alert-info py-2"><i class="bi bi-info-circle"></i> Quantités regroupées par zone, salle et type déquipement.</div> <div class="alert alert-info py-2"><i class="bi bi-info-circle"></i> Quantités regroupées par zone, salle et type déquipement.</div>
{% for building in zone_tree %}<div class="card mb-3 border-0 shadow-sm"><div class="card-header fw-semibold"><i class="bi bi-building"></i> {{ building.name }}</div><div class="card-body"> {% for building in zone_tree %}<div class="card mb-3 border-0 shadow-sm"><div class="card-header fw-semibold"><i class="bi bi-building"></i> {{ building.name }}</div><div class="card-body">
{% for zone in building.zones %}<h6 class="mt-2"><i class="bi bi-signpost-split"></i> {{ zone.name }}</h6>{% for room in zone.rooms %}<div class="border rounded p-2 mb-2 ms-3"><strong><i class="bi bi-door-open"></i> {{ room.name }}</strong><table class="table table-sm mb-0 mt-1"><tbody>{% for item in room.types %}<tr><td>{{ item.name }}</td><td class="text-muted">{{ item.category }}</td><td class="text-end"><span class="badge bg-primary">{{ item.quantity }}</span></td></tr>{% endfor %}</tbody></table></div>{% endfor %}{% endfor %}</div></div>{% else %}<div class="text-muted text-center py-4">Aucun équipement localisé.</div>{% endfor %} {% for zone in building.zones %}<details class="mb-2" open><summary class="fw-semibold"><i class="bi bi-signpost-split"></i> {{ zone.name }} <span class="badge bg-light text-dark">{{ zone.rooms|length }} salle(s)</span></summary>{% for room in zone.rooms %}<details class="border rounded p-2 mb-2 ms-3" open><summary><a href="{{ url_for('equipments.room_detail', id=room.id) }}" class="text-decoration-none"><i class="bi bi-door-open"></i> {{ room.name }}</a> <span class="badge bg-primary">{{ room.types|sum(attribute='quantity') }}</span></summary><table class="table table-sm mb-0 mt-1"><tbody>{% for item in room.types %}<tr><td><a href="{{ url_for('equipments.detail', id=item.ids[0]) }}" class="text-decoration-none">{{ item.name }}</a></td><td class="text-muted">{{ item.category }}</td><td class="text-end"><span class="badge bg-primary">{{ item.quantity }}</span></td></tr>{% endfor %}</tbody></table></details>{% endfor %}</details>{% endfor %}</div></div>{% else %}<div class="text-muted text-center py-4">Aucun équipement localisé.</div>{% endfor %}
{% else %} {% else %}
{% if parents %} {% if parents %}
<div class="accordion" id="parentsAccordion"> <div class="accordion" id="parentsAccordion">