fix(meters): complete checkpoint C1 meter UI
This commit is contained in:
parent
d2c1632319
commit
de46775c22
3 changed files with 57 additions and 5 deletions
|
|
@ -82,7 +82,11 @@ def new():
|
||||||
@login_required
|
@login_required
|
||||||
def detail(meter_id):
|
def detail(meter_id):
|
||||||
"""Détails d'un compteur avec historique des relevés."""
|
"""Détails d'un compteur avec historique des relevés."""
|
||||||
meter = Meter.query.get_or_404(meter_id)
|
meter = Meter.query.options(
|
||||||
|
joinedload(Meter.equipment), joinedload(Meter.building), joinedload(Meter.zone),
|
||||||
|
joinedload(Meter.room), joinedload(Meter.housing_unit),
|
||||||
|
joinedload(Meter.replaced_meter), joinedload(Meter.replacement),
|
||||||
|
).get_or_404(meter_id)
|
||||||
readings = MeterReading.query.options(joinedload(MeterReading.read_by)).filter_by(meter_id=meter_id)\
|
readings = MeterReading.query.options(joinedload(MeterReading.read_by)).filter_by(meter_id=meter_id)\
|
||||||
.order_by(MeterReading.reading_date.desc()).limit(50).all()
|
.order_by(MeterReading.reading_date.desc()).limit(50).all()
|
||||||
|
|
||||||
|
|
@ -164,6 +168,7 @@ def edit(meter_id):
|
||||||
if scope_key:
|
if scope_key:
|
||||||
for key in scope_keys:
|
for key in scope_keys:
|
||||||
setattr(meter, key, scope_id if key == scope_key else None)
|
setattr(meter, key, scope_id if key == scope_key else None)
|
||||||
|
meter.parent_id = request.form.get('parent_id', type=int)
|
||||||
meter.usage = (request.form.get('usage') or '').strip() or None
|
meter.usage = (request.form.get('usage') or '').strip() or None
|
||||||
meter.remainder_label = (request.form.get('remainder_label') or '').strip() or None
|
meter.remainder_label = (request.form.get('remainder_label') or '').strip() or None
|
||||||
meter.status = request.form.get('status') or meter.status
|
meter.status = request.form.get('status') or meter.status
|
||||||
|
|
@ -186,6 +191,7 @@ def edit(meter_id):
|
||||||
zones=Zone.query.order_by(Zone.name).all(),
|
zones=Zone.query.order_by(Zone.name).all(),
|
||||||
rooms=Room.query.order_by(Room.name).all(),
|
rooms=Room.query.order_by(Room.name).all(),
|
||||||
housing_units=HousingUnit.query.order_by(HousingUnit.name).all(),
|
housing_units=HousingUnit.query.order_by(HousingUnit.name).all(),
|
||||||
|
meters=Meter.query.filter(Meter.id != meter_id).order_by(Meter.name).all(),
|
||||||
timedelta=timedelta,
|
timedelta=timedelta,
|
||||||
today=date.today())
|
today=date.today())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,18 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt class="col-sm-5">Statut</dt>
|
<dt class="col-sm-5">État du compteur</dt>
|
||||||
|
<dd class="col-sm-7">
|
||||||
|
{% if meter.status == 'replaced' %}
|
||||||
|
<span class="badge bg-secondary">Remplacé</span>
|
||||||
|
{% elif meter.status == 'active' %}
|
||||||
|
<span class="badge bg-success">Actif</span>
|
||||||
|
{% else %}
|
||||||
|
<span class="badge bg-secondary">{{ meter.status }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</dd>
|
||||||
|
|
||||||
|
<dt class="col-sm-5">État des seuils historiques</dt>
|
||||||
<dd class="col-sm-7">
|
<dd class="col-sm-7">
|
||||||
{% if meter.warning_level == 'critical' %}
|
{% if meter.warning_level == 'critical' %}
|
||||||
<span class="badge bg-danger">Critique</span>
|
<span class="badge bg-danger">Critique</span>
|
||||||
|
|
@ -101,6 +112,15 @@
|
||||||
<span class="badge bg-success">OK</span>
|
<span class="badge bg-success">OK</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
|
{% if meter.replaced_meter %}
|
||||||
|
<dt class="col-sm-5">Remplace</dt>
|
||||||
|
<dd class="col-sm-7"><a href="{{ url_for('meters.detail', meter_id=meter.replaced_meter.id) }}">{{ meter.replaced_meter.name }}</a></dd>
|
||||||
|
{% endif %}
|
||||||
|
{% if meter.replacement %}
|
||||||
|
<dt class="col-sm-5">Remplacé par</dt>
|
||||||
|
<dd class="col-sm-7"><a href="{{ url_for('meters.detail', meter_id=meter.replacement.id) }}">{{ meter.replacement.name }}</a></dd>
|
||||||
|
{% endif %}
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -46,14 +46,36 @@
|
||||||
value="{{ meter.name }}">
|
value="{{ meter.name }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="parent_id" class="form-label">Compteur parent</label>
|
||||||
|
<select class="form-select" id="parent_id" name="parent_id">
|
||||||
|
<option value="">Aucun — compteur racine</option>
|
||||||
|
{% for parent in meters %}
|
||||||
|
{% if parent.id != meter.id %}
|
||||||
|
<option value="{{ parent.id }}" {% if meter.parent_id == parent.id %}selected{% endif %}>
|
||||||
|
{{ parent.name }}{% if parent.unit %} ({{ parent.unit }}){% endif %}
|
||||||
|
</option>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
<small class="text-muted">Le compteur ne peut pas être son propre parent ni appartenir à un cycle.</small>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label for="meter_type" class="form-label">Type</label>
|
<label for="meter_type" class="form-label">Type</label>
|
||||||
<select class="form-select" id="meter_type" name="meter_type">
|
<select class="form-select" id="meter_type" name="meter_type">
|
||||||
|
<option value="eau" {% if meter.meter_type == 'eau' %}selected{% endif %}>Eau</option>
|
||||||
|
<option value="gaz" {% if meter.meter_type == 'gaz' %}selected{% endif %}>Gaz</option>
|
||||||
|
<option value="electricite" {% if meter.meter_type == 'electricite' %}selected{% endif %}>Électricité</option>
|
||||||
|
<option value="photocopieur" {% if meter.meter_type == 'photocopieur' %}selected{% endif %}>Photocopieur</option>
|
||||||
<option value="hours" {% if meter.meter_type == 'hours' %}selected{% endif %}>Heures</option>
|
<option value="hours" {% if meter.meter_type == 'hours' %}selected{% endif %}>Heures</option>
|
||||||
<option value="cycles" {% if meter.meter_type == 'cycles' %}selected{% endif %}>Cycles</option>
|
<option value="cycles" {% if meter.meter_type == 'cycles' %}selected{% endif %}>Cycles</option>
|
||||||
<option value="distance" {% if meter.meter_type == 'distance' %}selected{% endif %}>Distance</option>
|
<option value="distance" {% if meter.meter_type == 'distance' %}selected{% endif %}>Distance</option>
|
||||||
<option value="custom" {% if meter.meter_type == 'custom' %}selected{% endif %}>Personnalisé</option>
|
<option value="custom" {% if meter.meter_type == 'custom' %}selected{% endif %}>Personnalisé</option>
|
||||||
|
{% if meter.meter_type not in ['eau', 'gaz', 'electricite', 'photocopieur', 'hours', 'cycles', 'distance', 'custom'] %}
|
||||||
|
<option value="{{ meter.meter_type }}" selected>Autre — {{ meter.meter_type }}</option>
|
||||||
|
{% endif %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
|
|
@ -144,7 +166,7 @@
|
||||||
<h6>Intervalle de relevé</h6>
|
<h6>Intervalle de relevé</h6>
|
||||||
<p class="text-muted small">
|
<p class="text-muted small">
|
||||||
Définissez la fréquence à laquelle vous souhaitez effectuer les relevés.
|
Définissez la fréquence à laquelle vous souhaitez effectuer les relevés.
|
||||||
Le système vous rappellera quand un relevé est attendu.
|
Il s'agit d'une fréquence indicative. La planification automatique des échéances sera gérée par le module de relevés planifiés.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h6 class="mt-3">Prochain relevé</h6>
|
<h6 class="mt-3">Prochain relevé</h6>
|
||||||
|
|
@ -153,7 +175,7 @@
|
||||||
<p class="{% if next_date < today %}text-danger{% else %}text-success{% endif %}">
|
<p class="{% if next_date < today %}text-danger{% else %}text-success{% endif %}">
|
||||||
<strong>{{ next_date.strftime('%d/%m/%Y') }}</strong>
|
<strong>{{ next_date.strftime('%d/%m/%Y') }}</strong>
|
||||||
{% if next_date < today %}
|
{% if next_date < today %}
|
||||||
<span class="badge bg-danger">En retard</span>
|
<span class="badge bg-danger">Indication calculée : date dépassée</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
@ -162,10 +184,14 @@
|
||||||
|
|
||||||
<h6 class="mt-3">Types de compteurs</h6>
|
<h6 class="mt-3">Types de compteurs</h6>
|
||||||
<ul class="small">
|
<ul class="small">
|
||||||
|
<li><strong>Eau</strong> — index physique en m³</li>
|
||||||
|
<li><strong>Gaz</strong> — index physique en m³</li>
|
||||||
|
<li><strong>Électricité</strong> — unité selon le compteur</li>
|
||||||
|
<li><strong>Photocopieur</strong> — pages N&B ou couleur</li>
|
||||||
<li><strong>Heures</strong> - Compteur d'heures (motrice, groupe électrogène...)</li>
|
<li><strong>Heures</strong> - Compteur d'heures (motrice, groupe électrogène...)</li>
|
||||||
<li><strong>Cycles</strong> - Nombre d'ouvertures/fermetures</li>
|
<li><strong>Cycles</strong> - Nombre d'ouvertures/fermetures</li>
|
||||||
<li><strong>Distance</strong> - Kilométrage (véhicule...)</li>
|
<li><strong>Distance</strong> - Kilométrage (véhicule...)</li>
|
||||||
<li><strong>Personnalisé</strong> - Autre unité (m³, litres...)</li>
|
<li><strong>Personnalisé / autre</strong> - Autre unité (m³, litres...)</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue