feat: enhance reconnect functionality and improve UI feedback for connection status
This commit is contained in:
parent
c6fd5f8ad5
commit
dc82c04a17
49
html/rfid.js
49
html/rfid.js
@ -112,9 +112,39 @@ function initWebSocket() {
|
|||||||
|
|
||||||
if (bambuDot) {
|
if (bambuDot) {
|
||||||
bambuDot.className = 'status-dot ' + (data.bambu_connected ? 'online' : 'offline');
|
bambuDot.className = 'status-dot ' + (data.bambu_connected ? 'online' : 'offline');
|
||||||
|
// Add click handler only when offline
|
||||||
|
if (!data.bambu_connected) {
|
||||||
|
bambuDot.style.cursor = 'pointer';
|
||||||
|
bambuDot.onclick = function() {
|
||||||
|
if (socket && socket.readyState === WebSocket.OPEN) {
|
||||||
|
socket.send(JSON.stringify({
|
||||||
|
type: 'reconnect',
|
||||||
|
payload: 'bambu'
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
bambuDot.style.cursor = 'default';
|
||||||
|
bambuDot.onclick = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (spoolmanDot) {
|
if (spoolmanDot) {
|
||||||
spoolmanDot.className = 'status-dot ' + (data.spoolman_connected ? 'online' : 'offline');
|
spoolmanDot.className = 'status-dot ' + (data.spoolman_connected ? 'online' : 'offline');
|
||||||
|
// Add click handler only when offline
|
||||||
|
if (!data.spoolman_connected) {
|
||||||
|
spoolmanDot.style.cursor = 'pointer';
|
||||||
|
spoolmanDot.onclick = function() {
|
||||||
|
if (socket && socket.readyState === WebSocket.OPEN) {
|
||||||
|
socket.send(JSON.stringify({
|
||||||
|
type: 'reconnect',
|
||||||
|
payload: 'spoolman'
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
spoolmanDot.style.cursor = 'default';
|
||||||
|
spoolmanDot.onclick = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ramStatus) {
|
if (ramStatus) {
|
||||||
ramStatus.textContent = `${data.freeHeap}k`;
|
ramStatus.textContent = `${data.freeHeap}k`;
|
||||||
@ -305,7 +335,13 @@ function displayAmsData(amsData) {
|
|||||||
tray[prop.key] !== '' &&
|
tray[prop.key] !== '' &&
|
||||||
tray[prop.key] !== 'null'
|
tray[prop.key] !== 'null'
|
||||||
)
|
)
|
||||||
.map(prop => `<p>${prop.label}: ${tray[prop.key]}</p>`)
|
.map(prop => {
|
||||||
|
// Spezielle Behandlung für setting_id
|
||||||
|
if (prop.key === 'setting_id' && tray[prop.key] === '-1') {
|
||||||
|
return `<p>${prop.label}: not calibrated</p>`;
|
||||||
|
}
|
||||||
|
return `<p>${prop.label}: ${tray[prop.key]}</p>`;
|
||||||
|
})
|
||||||
.join('');
|
.join('');
|
||||||
|
|
||||||
// Temperaturen nur anzeigen, wenn beide nicht 0 sind
|
// Temperaturen nur anzeigen, wenn beide nicht 0 sind
|
||||||
@ -418,13 +454,16 @@ function handleSpoolIn(amsId, trayId) {
|
|||||||
nozzle_temp_max: parseInt(maxTemp),
|
nozzle_temp_max: parseInt(maxTemp),
|
||||||
type: selectedSpool.filament.material,
|
type: selectedSpool.filament.material,
|
||||||
brand: selectedSpool.filament.vendor.name,
|
brand: selectedSpool.filament.vendor.name,
|
||||||
tray_info_idx: selectedSpool.filament.extra.bambu_idx.replace(/['"]+/g, '').trim(),
|
tray_info_idx: selectedSpool.filament.extra.bambu_idx.replace(/['"]+/g, '').trim()
|
||||||
cali_idx: selectedSpool.filament.extra.bambu_setting_id.replace(/['"]+/g, '').trim()
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Debug logging
|
// Prüfe, ob der Key bambu_setting_id vorhanden ist
|
||||||
console.log("Sende WebSocket Nachricht:", payload);
|
if (selectedSpool.filament.extra.bambu_setting_id) {
|
||||||
|
payload.payload.cali_idx = selectedSpool.filament.extra.bambu_setting_id.replace(/['"]+/g, '').trim();
|
||||||
|
} else {
|
||||||
|
payload.payload.cali_idx = "-1";
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
socket.send(JSON.stringify(payload));
|
socket.send(JSON.stringify(payload));
|
||||||
|
@ -133,6 +133,15 @@ body {
|
|||||||
background-color: #dc2626;
|
background-color: #dc2626;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.status-dot.offline {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-dot.offline:hover {
|
||||||
|
opacity: 0.8;
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
.ram-status {
|
.ram-status {
|
||||||
color: var(--inner-text-color);
|
color: var(--inner-text-color);
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
|
@ -69,6 +69,16 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (doc["type"] == "reconnect") {
|
||||||
|
if (doc["payload"] == "bambu") {
|
||||||
|
bambu_restart();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doc["payload"] == "spoolman") {
|
||||||
|
initSpoolman();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else if (doc["type"] == "setBambuSpool") {
|
else if (doc["type"] == "setBambuSpool") {
|
||||||
Serial.println(doc["payload"].as<String>());
|
Serial.println(doc["payload"].as<String>());
|
||||||
setBambuSpool(doc["payload"]);
|
setBambuSpool(doc["payload"]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user