Dateien
Hetzner-Backup/v2_adminpanel/templates/monitoring/device_limits.html
2025-07-03 20:38:33 +00:00

127 Zeilen
5.1 KiB
HTML

{% extends "base.html" %}
{% block title %}Device Limit Monitoring{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<h1 class="h3 mb-4">Device Limit Monitoring</h1>
<!-- Overall Stats -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Total Devices</h5>
<p class="card-text display-6">{{ stats.total_devices }}</p>
<small class="text-muted">of {{ stats.total_device_limit }} allowed</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Overall Usage</h5>
<p class="card-text display-6">{{ stats.usage_percent }}%</p>
<div class="progress">
<div class="progress-bar {% if stats.usage_percent > 90 %}bg-danger{% elif stats.usage_percent > 70 %}bg-warning{% else %}bg-success{% endif %}"
role="progressbar" style="width: {{ stats.usage_percent }}%"></div>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Active (24h)</h5>
<p class="card-text display-6">{{ stats.active_24h }}</p>
<small class="text-muted">devices seen today</small>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Active (7d)</h5>
<p class="card-text display-6">{{ stats.active_7d }}</p>
<small class="text-muted">devices seen this week</small>
</div>
</div>
</div>
</div>
<!-- Warnings -->
{% if warnings %}
<div class="card">
<div class="card-header">
<h5 class="mb-0">Device Limit Warnings</h5>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>License Key</th>
<th>Customer</th>
<th>Devices</th>
<th>Limit</th>
<th>Usage</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for warning in warnings %}
<tr>
<td>
<a href="{{ url_for('license_bp.license_detail', license_id=warning.license_id) }}">
{{ warning.license_key }}
</a>
</td>
<td>
{{ warning.customer_name }}<br>
<small class="text-muted">{{ warning.customer_email }}</small>
</td>
<td>{{ warning.device_count }}</td>
<td>{{ warning.device_limit }}</td>
<td>
<div class="progress" style="width: 100px;">
<div class="progress-bar {% if warning.status == 'exceeded' %}bg-danger{% else %}bg-warning{% endif %}"
role="progressbar" style="width: {{ warning.usage_percent }}%">
{{ warning.usage_percent }}%
</div>
</div>
</td>
<td>
{% if warning.status == 'exceeded' %}
<span class="badge bg-danger">Exceeded</span>
{% else %}
<span class="badge bg-warning">Warning</span>
{% endif %}
</td>
<td>
<a href="{{ url_for('license_bp.license_detail', license_id=warning.license_id) }}#devices"
class="btn btn-sm btn-primary">
View Devices
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% else %}
<div class="alert alert-success">
<i class="fas fa-check-circle"></i> All licenses are within their device limits.
</div>
{% endif %}
</div>
<script>
// Auto-refresh every 30 seconds
setTimeout(function() {
location.reload();
}, 30000);
</script>
{% endblock %}