feat: add observation detail template with interactive map, photos, and discussion features

This commit is contained in:
Karl Determe 2026-10-06 11:31:19 +02:00
parent 496b6d9c8b
commit 0c1ae3163d

View file

@ -611,26 +611,26 @@
<!-- Colonne 1 : Actions intervention (primary) --> <!-- Colonne 1 : Actions intervention (primary) -->
<div class="d-flex flex-column gap-1"> <div class="d-flex flex-column gap-1">
{% if observation.observation_type == 'inventory' or observation.observation_type == 'remark' %} {% if observation.observation_type == 'inventory' or observation.observation_type == 'remark' %}
<button type="button" class="btn btn-outline-primary btn-sm" style="width:200px" <button type="button" class="btn btn-outline-primary btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#modalChoixTypeIntervention"> data-bs-toggle="modal" data-bs-target="#modalChoixTypeIntervention">
<i class="bi bi-tools"></i> {% translate "Créer une intervention" %} <i class="bi bi-tools"></i> {% translate "Créer une intervention" %}
</button> </button>
{% else %} {% else %}
<form method="post" action="{% url 'observations:create_intervention_from_observation' observation.id %}"> <form method="post" action="{% url 'observations:create_intervention_from_observation' observation.id %}">
{% csrf_token %} {% csrf_token %}
<button type="submit" class="btn btn-outline-primary btn-sm" style="width:200px"> <button type="submit" class="btn btn-outline-primary btn-sm text-nowrap" style="width:230px">
<i class="bi bi-tools"></i> {% translate "Créer une intervention" %} <i class="bi bi-tools"></i> {% translate "Créer une intervention" %}
</button> </button>
</form> </form>
{% endif %} {% endif %}
{% if not observation.intervention %} {% if not observation.intervention %}
<button type="button" class="btn btn-outline-primary btn-sm" style="width:200px" <button type="button" class="btn btn-outline-primary btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#modalLierIntervention"> data-bs-toggle="modal" data-bs-target="#modalLierIntervention">
<i class="bi bi-link-45deg"></i> {% translate "Lier à une intervention" %} <i class="bi bi-link-45deg"></i> {% translate "Lier à une intervention" %}
</button> </button>
{% endif %} {% endif %}
{% if not observation.project %} {% if not observation.project %}
<button type="button" class="btn btn-outline-primary btn-sm" style="width:200px" <button type="button" class="btn btn-outline-primary btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#modalLierProjet"> data-bs-toggle="modal" data-bs-target="#modalLierProjet">
<i class="bi bi-diagram-3"></i> {% translate "Lier à un projet" %} <i class="bi bi-diagram-3"></i> {% translate "Lier à un projet" %}
</button> </button>
@ -638,35 +638,35 @@
</div> </div>
<!-- Colonne 2 : Actions statut --> <!-- Colonne 2 : Actions statut -->
<div class="d-flex flex-column gap-1"> <div class="d-flex flex-column gap-1">
<button type="button" class="btn btn-outline-success btn-sm" style="width:200px" <button type="button" class="btn btn-outline-success btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="processed" data-status="processed"
data-label="{% translate 'Marquer comme traitée' %}" data-label="{% translate 'Marquer comme traitée' %}"
data-icon="bi-check2-circle" data-btn-class="btn-success"> data-icon="bi-check2-circle" data-btn-class="btn-success">
<i class="bi bi-check2-circle"></i> {% translate "Marquer comme traitée" %} <i class="bi bi-check2-circle"></i> {% translate "Marquer comme traitée" %}
</button> </button>
<button type="button" class="btn btn-outline-warning btn-sm" style="width:200px" <button type="button" class="btn btn-outline-warning btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="needs_info" data-status="needs_info"
data-label="{% translate 'Demander un complément' %}" data-label="{% translate 'Demander un complément' %}"
data-icon="bi-question-circle" data-btn-class="btn-warning"> data-icon="bi-question-circle" data-btn-class="btn-warning">
<i class="bi bi-question-circle"></i> {% translate "Demander un complément" %} <i class="bi bi-question-circle"></i> {% translate "Demander un complément" %}
</button> </button>
<button type="button" class="btn btn-outline-info btn-sm" style="width:200px" <button type="button" class="btn btn-outline-info btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="duplicate" data-status="duplicate"
data-label="{% translate 'Doublon' %}" data-label="{% translate 'Doublon' %}"
data-icon="bi-files" data-btn-class="btn-info"> data-icon="bi-files" data-btn-class="btn-info">
<i class="bi bi-files"></i> {% translate "Doublon" %} <i class="bi bi-files"></i> {% translate "Doublon" %}
</button> </button>
<button type="button" class="btn btn-outline-warning btn-sm" style="width:200px" <button type="button" class="btn btn-outline-warning btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="to_redirect" data-status="to_redirect"
data-label="{% translate 'À rediriger' %}" data-label="{% translate 'À rediriger' %}"
data-icon="bi-reply-all" data-btn-class="btn-warning"> data-icon="bi-reply-all" data-btn-class="btn-warning">
<i class="bi bi-reply-all"></i> {% translate "À rediriger" %} <i class="bi bi-reply-all"></i> {% translate "À rediriger" %}
</button> </button>
<button type="button" class="btn btn-outline-secondary btn-sm" style="width:200px" <button type="button" class="btn btn-outline-secondary btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="not_relevant" data-status="not_relevant"
data-label="{% translate 'Non relevant' %}" data-label="{% translate 'Non relevant' %}"
@ -684,12 +684,12 @@
<form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline"> <form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="new_status" value="to_process"> <input type="hidden" name="new_status" value="to_process">
<button type="submit" class="btn btn-success btn-sm" style="width:200px"> <button type="submit" class="btn btn-success btn-sm text-nowrap" style="width:230px">
<i class="bi bi-send-check"></i> {% translate "Compléments fournis" %} <i class="bi bi-send-check"></i> {% translate "Compléments fournis" %}
</button> </button>
</form> </form>
{% if can_take_action %} {% if can_take_action %}
<button type="button" class="btn btn-outline-secondary btn-sm" style="width:200px" <button type="button" class="btn btn-outline-secondary btn-sm text-nowrap" style="width:230px"
data-bs-toggle="modal" data-bs-target="#actionStatusModal" data-bs-toggle="modal" data-bs-target="#actionStatusModal"
data-status="not_relevant" data-status="not_relevant"
data-label="{% translate 'Non relevant / Sans suite' %}" data-label="{% translate 'Non relevant / Sans suite' %}"
@ -708,7 +708,7 @@
<form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline"> <form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="new_status" value="to_process"> <input type="hidden" name="new_status" value="to_process">
<button type="submit" class="btn btn-outline-primary btn-sm" style="width:200px"> <button type="submit" class="btn btn-outline-primary btn-sm text-nowrap" style="width:230px">
<i class="bi bi-send"></i> {% translate "Envoyer" %} <i class="bi bi-send"></i> {% translate "Envoyer" %}
</button> </button>
</form> </form>
@ -723,7 +723,7 @@
<form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline"> <form method="post" action="{% url 'observations:observation_change_status' observation.id %}" class="d-inline">
{% csrf_token %} {% csrf_token %}
<input type="hidden" name="new_status" value="archived"> <input type="hidden" name="new_status" value="archived">
<button type="submit" class="btn btn-outline-secondary btn-sm" style="width:200px"> <button type="submit" class="btn btn-outline-secondary btn-sm text-nowrap" style="width:230px">
<i class="bi bi-archive"></i> {% translate "Archiver" %} <i class="bi bi-archive"></i> {% translate "Archiver" %}
</button> </button>
</form> </form>