69 lines
2.9 KiB
HTML
69 lines
2.9 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>GANDALF - Network Monitor</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="header">
|
|
<h1>GANDALF (Global Advanced Network Detection And Link Facilitator)</h1>
|
|
<p>Ubiquiti Network Management Dashboard</p>
|
|
</div>
|
|
|
|
<div class="metrics-container">
|
|
<div class="metric-card">
|
|
<h2>Network Overview</h2>
|
|
<div id="network-health">
|
|
{%- for device in devices %}
|
|
<div class="device-status" data-device-name="{{ device.name }}">
|
|
<span class="status-indicator"></span>
|
|
<div class="device-info">
|
|
<span class="device-name">{{ device.name }}</span>
|
|
<span class="device-details">{{ device.ip }}</span>
|
|
<span class="device-type">{{ device.type }} ({{ device.connection_type }})</span>
|
|
{% if device.critical %}
|
|
<span class="critical-badge">Critical</span>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{%- endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="metric-card expandable">
|
|
<h2>Interface Status</h2>
|
|
<div id="interface-details">
|
|
{%- for device in devices %}
|
|
<div class="interface-group" data-device-name="{{ device.name }}">
|
|
<div class="interface-header" onclick="toggleInterfaces(this)">
|
|
<h3>{{ device.name }}</h3>
|
|
<span class="expand-icon">▼</span>
|
|
</div>
|
|
<div class="interface-list collapsed"></div>
|
|
</div>
|
|
{%- endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="metric-card">
|
|
<h2>System Health</h2>
|
|
<div id="system-metrics">
|
|
{%- for device in devices %}
|
|
<div class="health-metrics" data-device-name="{{ device.name }}">
|
|
<h3>{{ device.name }}</h3>
|
|
<div class="metrics-list">
|
|
<div class="metric-item cpu"></div>
|
|
<div class="metric-item memory"></div>
|
|
<div class="metric-item temperature"></div>
|
|
</div>
|
|
</div>
|
|
{%- endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script src="{{ url_for('static', filename='app.js') }}"></script>
|
|
</body>
|
|
</html> |