2025-02-17 10:46:56 +01:00
|
|
|
<!-- head --><!DOCTYPE html>
|
2025-02-16 10:26:36 +01:00
|
|
|
<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">
|
|
|
|
</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">
|
2025-02-20 17:11:28 +01:00
|
|
|
<h1>FilaMan<span class="version">v1.2.81</span></h1>
|
2025-02-16 10:26:36 +01:00
|
|
|
<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>
|
2025-02-18 12:28:47 +01:00
|
|
|
<a href="/upgrade">Upgrade</a>
|
2025-02-16 10:26:36 +01:00
|
|
|
</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>
|
|
|
|
|
2025-02-17 10:46:56 +01:00
|
|
|
<!-- head -->
|
2025-02-16 10:26:36 +01:00
|
|
|
|
2025-02-12 21:10:25 +01:00
|
|
|
<script>
|
|
|
|
window.onload = function() {
|
|
|
|
if (spoolmanUrl && spoolmanUrl.trim() !== "") {
|
|
|
|
document.getElementById('spoolmanUrl').value = spoolmanUrl;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
function checkSpoolmanInstance() {
|
|
|
|
const url = document.getElementById('spoolmanUrl').value;
|
|
|
|
fetch(`/api/checkSpoolman?url=${encodeURIComponent(url)}`)
|
|
|
|
.then(response => response.json())
|
|
|
|
.then(data => {
|
|
|
|
if (data.healthy) {
|
|
|
|
document.getElementById('statusMessage').innerText = 'Spoolman-Instance is availabe and healthy!';
|
|
|
|
} else {
|
|
|
|
document.getElementById('statusMessage').innerText = 'Spoolman-Instance not available.';
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
document.getElementById('statusMessage').innerText = 'Error while connecting to Spoolman-Instance: ' + error.message;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function saveBambuCredentials() {
|
|
|
|
const ip = document.getElementById('bambuIp').value;
|
|
|
|
const serial = document.getElementById('bambuSerial').value;
|
|
|
|
const code = document.getElementById('bambuCode').value;
|
|
|
|
|
|
|
|
fetch(`/api/bambu?bambu_ip=${encodeURIComponent(ip)}&bambu_serialnr=${encodeURIComponent(serial)}&bambu_accesscode=${encodeURIComponent(code)}`)
|
|
|
|
.then(response => response.json())
|
|
|
|
.then(data => {
|
|
|
|
if (data.healthy) {
|
|
|
|
document.getElementById('bambuStatusMessage').innerText = 'Bambu Credentials saved!';
|
|
|
|
} else {
|
|
|
|
document.getElementById('bambuStatusMessage').innerText = 'Error while saving Bambu Credentials.';
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.catch(error => {
|
|
|
|
document.getElementById('bambuStatusMessage').innerText = 'Error while saving: ' + error.message;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<script>
|
|
|
|
var spoolmanUrl = "{{spoolmanUrl}}";
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="content">
|
|
|
|
<h1>Spoolman API URL / Bambu Credentials</h1>
|
|
|
|
<label for="spoolmanUrl">Set URL/IP to your Spoolman-Instanz:</label>
|
|
|
|
<input type="text" id="spoolmanUrl" placeholder="http://ip-or-url-of-your-spoolman-instanz:port">
|
|
|
|
<button onclick="checkSpoolmanInstance()">Save Spoolman URL</button>
|
|
|
|
<p id="statusMessage"></p>
|
|
|
|
|
|
|
|
<h2>Bambu Lab Printer Credentials</h2>
|
|
|
|
<div class="bambu-settings">
|
|
|
|
<div class="input-group">
|
|
|
|
<label for="bambuIp">Bambu Drucker IP-Adresse:</label>
|
|
|
|
<input type="text" id="bambuIp" placeholder="192.168.1.xxx" value="{{bambuIp}}">
|
|
|
|
</div>
|
|
|
|
<div class="input-group">
|
|
|
|
<label for="bambuSerial">Drucker Seriennummer:</label>
|
|
|
|
<input type="text" id="bambuSerial" placeholder="BBLXXXXXXXX" value="{{bambuSerial}}">
|
|
|
|
</div>
|
|
|
|
<div class="input-group">
|
|
|
|
<label for="bambuCode">Access Code:</label>
|
|
|
|
<input type="text" id="bambuCode" placeholder="Access Code vom Drucker" value="{{bambuCode}}">
|
|
|
|
</div>
|
|
|
|
<button onclick="saveBambuCredentials()">Save Bambu Credentials</button>
|
|
|
|
<p id="bambuStatusMessage"></p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|