ECM_Control/templates/index.html

68 lines
2.3 KiB
HTML

{% extends "base.html" %}
{% block title %}Dashboard - ECM Control{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-12">
<h1>ECM Control Dashboard</h1>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5>Quick Stats</h5>
</div>
<div class="card-body">
<p><strong>Recipes:</strong> {{ recipes|length }}</p>
<p><strong>Buttons:</strong> {{ buttons|length }}</p>
<p><strong>Total Shots:</strong> {{ recent_shots|length }}</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5>Button Status</h5>
</div>
<div class="card-body">
{% for button in buttons %}
<div class="d-flex justify-content-between align-items-center mb-2">
<span>{{ button.name }} (GPIO {{ button.gpio_pin }})</span>
<span class="badge bg-{{ 'success' if button.recipe_name else 'warning' }}">
{{ button.recipe_name or 'No Recipe' }}
</span>
</div>
{% endfor %}
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-header">
<h5>Recent Shots</h5>
</div>
<div class="card-body" style="max-height: 300px; overflow-y: auto;">
{% for shot in recent_shots %}
<div class="mb-2">
<div><strong>{{ shot.button_name }}</strong> - {{ shot.recipe_name }}</div>
<div class="text-muted small">
{{ shot.start_time }} -
<span class="badge bg-{{ 'success' if shot.status == 'completed' else 'warning' }}">
{{ shot.status }}
</span>
</div>
{% if shot.actual_grams %}
<div class="text-muted small">{{ shot.actual_grams }}g in {{ shot.actual_duration_seconds }}s</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endblock %}