149 lines
6.6 KiB
HTML
149 lines
6.6 KiB
HTML
{% extends 'base.html' %}
|
|
{% block title %}Imprimantes{% endblock %}
|
|
{% block content %}
|
|
<div class="page-header d-flex justify-content-between align-items-center">
|
|
<h1><i class="bi bi-printer me-2 text-secondary"></i>Imprimantes</h1>
|
|
<a href="{{ url_for('planning') }}" class="btn btn-sm btn-outline-secondary">
|
|
<i class="bi bi-arrow-left me-1"></i>Planning
|
|
</a>
|
|
</div>
|
|
|
|
<div class="row g-4">
|
|
<div class="col-md-7">
|
|
<div class="card">
|
|
<div class="card-header py-3">Parc machines</div>
|
|
<div class="card-body p-0">
|
|
<table class="table table-hover mb-0">
|
|
<thead class="table-light">
|
|
<tr><th>Nom</th><th>Statut</th><th>Préfixe HA</th><th>Notes</th><th></th></tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for p in printers %}
|
|
<tr>
|
|
<td class="fw-semibold">{{ p.name }}</td>
|
|
<td>
|
|
{% if p.is_active %}
|
|
<span class="badge bg-success">Active</span>
|
|
{% else %}
|
|
<span class="badge bg-secondary">Inactive</span>
|
|
{% endif %}
|
|
</td>
|
|
<td>
|
|
{% if p.ha_entity_prefix %}
|
|
<code class="small text-primary">{{ p.ha_entity_prefix }}</code>
|
|
{% else %}
|
|
<span class="text-muted small">—</span>
|
|
{% endif %}
|
|
</td>
|
|
<td class="text-muted small">{{ p.notes or '—' }}</td>
|
|
<td>
|
|
<div class="d-flex gap-1">
|
|
<button class="btn btn-sm btn-outline-secondary py-0"
|
|
onclick="openEditModal({{ p.id }}, '{{ p.name|replace("'","\\'") }}', '{{ p.ha_entity_prefix or '' }}', '{{ p.notes|replace("'","\\'")|default('') }}')">
|
|
<i class="bi bi-pencil"></i>
|
|
</button>
|
|
<form method="POST" action="{{ url_for('toggle_printer', id=p.id) }}">
|
|
<button class="btn btn-sm {% if p.is_active %}btn-outline-warning{% else %}btn-outline-success{% endif %} py-0">
|
|
{% if p.is_active %}<i class="bi bi-pause"></i>{% else %}<i class="bi bi-play"></i>{% endif %}
|
|
</button>
|
|
</form>
|
|
<form method="POST" action="{{ url_for('delete_printer', id=p.id) }}"
|
|
onsubmit="return confirm('Supprimer {{ p.name }} ?')">
|
|
<button class="btn btn-sm btn-outline-danger py-0"><i class="bi bi-trash"></i></button>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-5">
|
|
<div class="card">
|
|
<div class="card-header py-3">Ajouter une imprimante</div>
|
|
<div class="card-body">
|
|
<form method="POST">
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Nom</label>
|
|
<input type="text" name="name" class="form-control" required placeholder="ex: A1 #7, X1C #1">
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Préfixe entité Home Assistant <span class="text-muted fw-normal small">(optionnel)</span></label>
|
|
<input type="text" name="ha_entity_prefix" class="form-control font-monospace"
|
|
placeholder="ex : patabambulab01">
|
|
<div class="form-text">Préfixe HA pour la synchro automatique du planning. Configurer l'URL HA dans <a href="{{ url_for('settings') }}">Paramètres</a>.</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Notes</label>
|
|
<input type="text" name="notes" class="form-control" placeholder="couleur, emplacement…">
|
|
</div>
|
|
<div class="form-check mb-3">
|
|
<input class="form-check-input" type="checkbox" name="is_active" id="isActive" checked>
|
|
<label class="form-check-label" for="isActive">Active dès l'ajout</label>
|
|
</div>
|
|
<button type="submit" class="btn fw-bold" style="background:#ff6b35;color:#fff">
|
|
<i class="bi bi-plus-lg me-1"></i>Ajouter
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="alert alert-info mt-3 small">
|
|
<i class="bi bi-info-circle me-1"></i>
|
|
Max <strong>5 imprimantes simultanées</strong> (contrainte électrique). Configurez ce maximum dans <a href="{{ url_for('settings') }}">Paramètres</a>.
|
|
<br>L'imprimante #6 est inactive par défaut.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal édition imprimante -->
|
|
<div class="modal fade" id="editPrinterModal" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title"><i class="bi bi-pencil me-2"></i>Modifier l'imprimante</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<form id="editPrinterForm" method="POST">
|
|
<div class="modal-body">
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Nom</label>
|
|
<input type="text" name="name" id="editName" class="form-control" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Préfixe Home Assistant <span class="text-muted fw-normal small">(optionnel)</span></label>
|
|
<input type="text" name="ha_entity_prefix" id="editHaPrefix" class="form-control font-monospace"
|
|
placeholder="ex : patabambulab01">
|
|
<div class="form-text">Laisser vide pour désactiver la synchro HA.</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-semibold">Notes</label>
|
|
<input type="text" name="notes" id="editNotes" class="form-control" placeholder="couleur, emplacement…">
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Annuler</button>
|
|
<button type="submit" class="btn fw-bold" style="background:#ff6b35;color:#fff">
|
|
<i class="bi bi-save me-1"></i>Enregistrer
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script>
|
|
function openEditModal(id, name, haPrefix, notes) {
|
|
document.getElementById('editPrinterForm').action = '/printers/' + id + '/edit';
|
|
document.getElementById('editName').value = name;
|
|
document.getElementById('editHaPrefix').value = haPrefix;
|
|
document.getElementById('editNotes').value = notes;
|
|
new bootstrap.Modal(document.getElementById('editPrinterModal')).show();
|
|
}
|
|
</script>
|
|
{% endblock %}
|