{% extends 'base.html' %} {% load i18n %} {% block content %} <!-- Top bar buttons --> <div class="row"> <div class="col"> <h3>{{ object.shortid }}</h3> </div> <div class="col text-end"> <div class="btn-group" role="group" aria-label="Actions"> <!-- change state button --> {% if state_definitions %} <div class="dropdown ms-2"> <a class="btn btn-green-admin dropdown-toggle" id="addStateDropdown" data-bs-toggle="dropdown" aria-expanded="false"> {% trans "Change state" %} {% if device_states %} ({{ device_states.0.state }}) {% else %} ( {% trans "None" %} ) {% endif %} </a> <ul class="dropdown-menu" aria-labelledby="addStateDropdown" style="width: 100%;"> {% for state in state_definitions %} <li style="width: 100%;"> <form id="changeStateForm{{ state.id }}" method="post" action="{% url 'action:change_state' %}"> {% csrf_token %} <input type="hidden" name="previous_state" value="{{ device_states.0.state|default:"nil" }}"> <input type="hidden" name="snapshot_uuid" value="{{ object.last_uuid }}"> <input type="hidden" name="new_state" value="{{ state.state }}"> <a class="dropdown-item d-flex justify-content-between align-items-center" href="#" onclick="document.getElementById('changeStateForm{{ state.id }}').submit(); return false;"> <span class="font-monospace">{{ state.state }}</span> <span class="badge bg-secondary rounded-pill-sm">{{ forloop.counter }}</span> </a> </form> </li> {% endfor %} </ul> </div> {% else %} <button class="btn btn-green-admin" type="button" disabled> <i class="bi bi-plus"></i> {% trans "Change state" %} {% if device_states %} ({{ device_states.0.state }}) {% endif %} </button> {% endif %} <!-- Add note button --> <button class="btn btn-yellow ms-2" type="button" data-bs-toggle="modal" data-bs-target="#addNoteModal"> <i class="bi bi-sticky"></i> {% trans "Add a note" %} </button> </div> </div> </div> <div class="row"> <div class="col"> <ul class="nav nav-tabs nav-tabs-bordered"> <li class="nav-item"> <a href="#details" class="nav-link active" data-bs-toggle="tab" data-bs-target="#details">{% trans 'General details' %}</a> </li> <li class="nav-item"> <a href="#user_properties" class="nav-link" data-bs-toggle="tab" data-bs-target="#user_properties">{% trans 'Properties' %}</a> </li> <li class="nav-item"> <a href="#lots" class="nav-link" data-bs-toggle="tab" data-bs-target="#lots">{% trans 'Lots' %}</a> </li> <li class="nav-item"> <a href="#components" class="nav-link" data-bs-toggle="tab" data-bs-target="#components">{% trans 'Components' %}</a> </li> <li class="nav-item"> <a href="#evidences" class="nav-link" data-bs-toggle="tab" data-bs-target="#evidences">{% trans 'Evidences' %}</a> </li> {% if dpps %} <li class="nav-item"> <a href="#dpps" class="nav-link" data-bs-toggle="tab" data-bs-target="#dpps">{% trans 'Dpps' %}</a> </li> {% endif %} <li class="nav-item"> <a class="nav-link" href="{% url 'device:device_web' object.id %}" target="_blank">Web</a> </li> <li class="nav-item"> <a href="#log" class="nav-link" data-bs-toggle="tab" data-bs-target="#log">{% trans 'Log' %}</a> </li> </ul> </div> </div> <div class="tab-content pt-4"> {% include 'tabs/general_details.html' %} {% include 'tabs/log.html' %} {% include 'tabs/user_properties.html' %} {% include 'tabs/lots.html' %} {% include 'tabs/components.html' %} {% include 'tabs/evidences.html' %} <!-- Add a note popup --> <div class="modal fade" id="addNoteModal" tabindex="-1" aria-labelledby="addNoteModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="addNoteModalLabel">{% trans "Add a Note" %}</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{% trans 'Close' %}"></button> </div> <div class="modal-body"> <form method="post" action="{% url 'action:add_note' %}"> {% csrf_token %} <div class="mb-3"> <input type="hidden" name="snapshot_uuid" value="{{ object.last_uuid }}"> <label for="noteDescription" class="form-label">{% trans "Note" %}</label> <textarea class="form-control" id="noteDescription" name="note" placeholder="Max 250 characters" name="note" rows="3" required></textarea> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{% trans "Cancel" %}</button> <button type="submit" class="btn btn-green-admin">{% trans "Save Note" %}</button> </div> </form> </div> </div> </div> </div> {% endblock %} {% block extrascript %} <script> document.addEventListener('DOMContentLoaded', function () { // Obtener el hash de la URL (ejemplo: #components) const hash = window.location.hash // Verificar si hay un hash en la URL if (hash) { // Buscar el botón o enlace que corresponde al hash y activarlo const tabTrigger = document.querySelector(`[data-bs-target="${hash}"]`) if (tabTrigger) { // Crear una instancia de tab de Bootstrap para activar el tab const tab = new bootstrap.Tab(tabTrigger) tab.show() } } }) </script> {% endblock %}