Browser GUI: always reflect server ist values for heater power and stirrer speed
Remove one-time sync guards (initialPowerSync, initialSpeedSync) so heater power and stirrer speed sliders track the server's ist readbacks on every push, not just on first connect. Also remove the zero-out on sud stop/pause: with continuous ist tracking the animation and slider always agree, and the zero-out caused them to diverge when the server kept sending non-zero values during a pause. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SH2D4LRuCnhLSzoYerAfJX
This commit is contained in:
+4
-25
@@ -28,8 +28,6 @@ let stirrerSpeedIst = 0;
|
||||
// value via Qt's signal/slot machinery; here the DOM itself never echoes
|
||||
// a plain .value assignment as an 'input'/'change' event, but the
|
||||
// stale-overwrite risk is the same).
|
||||
let initialPowerSync = true;
|
||||
let initialSpeedSync = true;
|
||||
let initialHeatrateSync = true;
|
||||
let initialTempSollSync = true;
|
||||
let initialPotTempSync = true;
|
||||
@@ -527,18 +525,11 @@ function onHeaterChanged(msg) {
|
||||
heaterPowerSoll = msg.PowerSet;
|
||||
document.getElementById('lcd-power-soll').textContent = msg.PowerSet;
|
||||
updateFireVisualization();
|
||||
if (RUNNING_STATES.has(sudState)) {
|
||||
document.getElementById('heater-power').value = msg.PowerSet;
|
||||
document.getElementById('heater-power-readout').textContent = msg.PowerSet;
|
||||
}
|
||||
} else if (key === 'Power') {
|
||||
heaterPowerIst = msg.Power;
|
||||
document.getElementById('lcd-power-ist').textContent = msg.Power;
|
||||
if (initialPowerSync) {
|
||||
document.getElementById('heater-power').value = msg.Power;
|
||||
document.getElementById('heater-power-readout').textContent = msg.Power;
|
||||
initialPowerSync = false;
|
||||
}
|
||||
document.getElementById('heater-power').value = msg.Power;
|
||||
document.getElementById('heater-power-readout').textContent = msg.Power;
|
||||
} else if (key === 'Capabilities') {
|
||||
const power = msg.Capabilities.Power;
|
||||
heaterMaxPower = power.Max || 100;
|
||||
@@ -553,12 +544,8 @@ function onStirrerChanged(msg) {
|
||||
for (const key of Object.keys(msg)) {
|
||||
if (key === 'Speed') {
|
||||
stirrerSpeedIst = msg.Speed;
|
||||
const sudRunningSpd = RUNNING_STATES.has(sudState);
|
||||
if (initialSpeedSync || sudRunningSpd) {
|
||||
document.getElementById('stirrer-speed').value = msg.Speed;
|
||||
document.getElementById('stirrer-speed-readout').textContent = msg.Speed;
|
||||
if (!sudRunningSpd) initialSpeedSync = false;
|
||||
}
|
||||
document.getElementById('stirrer-speed').value = msg.Speed;
|
||||
document.getElementById('stirrer-speed-readout').textContent = msg.Speed;
|
||||
updateStirrerVisualization();
|
||||
updateStepPlates();
|
||||
} else if (key === 'Capabilities') {
|
||||
@@ -641,12 +628,6 @@ function onSudChanged(msg) {
|
||||
energyByStep = {};
|
||||
energyCurrent = 0;
|
||||
}
|
||||
if (!isRunningNow && wasRunning) {
|
||||
document.getElementById('heater-power').value = 0;
|
||||
document.getElementById('heater-power-readout').textContent = 0;
|
||||
document.getElementById('stirrer-speed').value = 0;
|
||||
document.getElementById('stirrer-speed-readout').textContent = 0;
|
||||
}
|
||||
wasRunning = isRunningNow;
|
||||
sudState = newState;
|
||||
const sliderDisabled = RUNNING_STATES.has(sudState);
|
||||
@@ -762,8 +743,6 @@ function connect() {
|
||||
ws = ws_;
|
||||
statusEl.textContent = 'Connecting…';
|
||||
ws.onopen = () => {
|
||||
initialPowerSync = true;
|
||||
initialSpeedSync = true;
|
||||
initialHeatrateSync = true;
|
||||
initialTempSollSync = true;
|
||||
initialPotTempSync = true;
|
||||
|
||||
Reference in New Issue
Block a user