<!-- head --><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FilaMan - Filament Management Tool</title> <link rel="icon" type="image/png" href="/favicon.ico"> <link rel="stylesheet" href="style.css"> <script> fetch('/api/version') .then(response => response.json()) .then(data => { const versionSpan = document.querySelector('.version'); if (versionSpan) { versionSpan.textContent = 'v' + data.version; } }) .catch(error => console.error('Error fetching version:', error)); </script> </head> <body> <div class="navbar"> <div style="display: flex; align-items: center; gap: 2rem;"> <img src="/logo.png" alt="FilaMan Logo" class="logo"> <div class="logo-text"> <h1>FilaMan<span class="version"></span></h1> <h4>Filament Management Tool</h4> </div> </div> <nav style="display: flex; gap: 1rem;"> <a href="/">Start</a> <a href="/waage">Scale</a> <a href="/spoolman">Spoolman/Bambu</a> <a href="/about">About</a> <a href="/upgrade">Upgrade</a> </nav> <div class="status-container"> <div class="status-item"> <span class="status-dot" id="bambuDot"></span>B </div> <div class="status-item"> <span class="status-dot" id="spoolmanDot"></span>S </div> <div class="ram-status" id="ramStatus"></div> </div> </div> <!-- head --> <div class="connection-status hidden"> <div class="spinner"></div> <span>Connection lost. Trying to reconnect...</span> </div> <div class="content"> <div class="three-column-layout"> <!-- Linke Spalte --> <div class="column"> <div class="feature-box"> <div class="statistics-header"> <h2>Statistics</h2> <button id="refreshSpoolman" class="refresh-button"> <span>Refresh Spoolman</span> </button> </div> <div class="statistics-column"> <h3>Spools</h3> <div class="spool-stat" style="display: flex; justify-content: center; align-items: center;"> <span class="stat-label">total:</span> <span class="stat-value" id="totalSpools"></span> <div style="width: auto;"></div> <span class="stat-label">without Tag:</span> <span class="stat-value" id="spoolsWithoutTag"></span> </div> </div> <div class="statistics-grid"> <div class="statistics-column"> <h3>Overview</h3> <ul class="statistics-list"> <li> <span class="stat-label">Manufacturer:</span> <span class="stat-value" id="totalVendors"></span> </li> <li> <span class="stat-label">Weight:</span> <span class="stat-value"><span id="totalWeight"></span></span> </li> <li> <span class="stat-label">Length:</span> <span class="stat-value"><span id="totalLength"></span></span> </li> </ul> </div> <div class="statistics-column"> <h3>Materials</h3> <ul class="statistics-list" id="materialsList"> <!-- Wird dynamisch befüllt --> </ul> </div> </div> </div> <div class="feature-box"> <div class="nfc-header"> <h2>NFC-Tag</h2> <span id="nfcStatusIndicator" class="status-circle"></span> </div> <div class="nfc-status-display"></div> </div> </div> <!-- Mittlere Spalte --> <div class="column"> <div class="feature-box"> <h2>Spoolman Spools</h2> <label for="vendorSelect">Manufacturer:</label> <div style="display: flex; justify-content: space-between; align-items: center;"> <select id="vendorSelect" class="styled-select"> <option value="">Please choose...</option> </select> <label style="margin-left: 10px;"> <input type="checkbox" id="onlyWithoutSmId" checked onchange="updateFilamentDropdown()"> Only Spools without SM ID </label> </div> </div> <div id="filamentSection" class="feature-box hidden"> <label>Spool / Filament:</label> <div class="custom-dropdown"> <div class="dropdown-button" onclick="toggleFilamentDropdown()"> <div class="selected-color" id="selected-color"></div> <span id="selected-filament">Please choose...</span> <span class="dropdown-arrow">▼</span> </div> <div class="dropdown-content" id="filament-dropdown-content"> <!-- Optionen werden dynamisch hinzugefügt --> </div> </div> <p id="nfcInfo" class="nfc-status"></p> <button id="writeNfcButton" class="btn btn-primary hidden" onclick="writeNfcTag()">Write Tag</button> </div> </div> </div> </div> <script src="spoolman.js"></script> <script src="rfid.js"></script> </body> </html>