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
|
// value via Qt's signal/slot machinery; here the DOM itself never echoes
|
||||||
// a plain .value assignment as an 'input'/'change' event, but the
|
// a plain .value assignment as an 'input'/'change' event, but the
|
||||||
// stale-overwrite risk is the same).
|
// stale-overwrite risk is the same).
|
||||||
let initialPowerSync = true;
|
|
||||||
let initialSpeedSync = true;
|
|
||||||
let initialHeatrateSync = true;
|
let initialHeatrateSync = true;
|
||||||
let initialTempSollSync = true;
|
let initialTempSollSync = true;
|
||||||
let initialPotTempSync = true;
|
let initialPotTempSync = true;
|
||||||
@@ -527,18 +525,11 @@ function onHeaterChanged(msg) {
|
|||||||
heaterPowerSoll = msg.PowerSet;
|
heaterPowerSoll = msg.PowerSet;
|
||||||
document.getElementById('lcd-power-soll').textContent = msg.PowerSet;
|
document.getElementById('lcd-power-soll').textContent = msg.PowerSet;
|
||||||
updateFireVisualization();
|
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') {
|
} else if (key === 'Power') {
|
||||||
heaterPowerIst = msg.Power;
|
heaterPowerIst = msg.Power;
|
||||||
document.getElementById('lcd-power-ist').textContent = msg.Power;
|
document.getElementById('lcd-power-ist').textContent = msg.Power;
|
||||||
if (initialPowerSync) {
|
document.getElementById('heater-power').value = msg.Power;
|
||||||
document.getElementById('heater-power').value = msg.Power;
|
document.getElementById('heater-power-readout').textContent = msg.Power;
|
||||||
document.getElementById('heater-power-readout').textContent = msg.Power;
|
|
||||||
initialPowerSync = false;
|
|
||||||
}
|
|
||||||
} else if (key === 'Capabilities') {
|
} else if (key === 'Capabilities') {
|
||||||
const power = msg.Capabilities.Power;
|
const power = msg.Capabilities.Power;
|
||||||
heaterMaxPower = power.Max || 100;
|
heaterMaxPower = power.Max || 100;
|
||||||
@@ -553,12 +544,8 @@ function onStirrerChanged(msg) {
|
|||||||
for (const key of Object.keys(msg)) {
|
for (const key of Object.keys(msg)) {
|
||||||
if (key === 'Speed') {
|
if (key === 'Speed') {
|
||||||
stirrerSpeedIst = msg.Speed;
|
stirrerSpeedIst = msg.Speed;
|
||||||
const sudRunningSpd = RUNNING_STATES.has(sudState);
|
document.getElementById('stirrer-speed').value = msg.Speed;
|
||||||
if (initialSpeedSync || sudRunningSpd) {
|
document.getElementById('stirrer-speed-readout').textContent = msg.Speed;
|
||||||
document.getElementById('stirrer-speed').value = msg.Speed;
|
|
||||||
document.getElementById('stirrer-speed-readout').textContent = msg.Speed;
|
|
||||||
if (!sudRunningSpd) initialSpeedSync = false;
|
|
||||||
}
|
|
||||||
updateStirrerVisualization();
|
updateStirrerVisualization();
|
||||||
updateStepPlates();
|
updateStepPlates();
|
||||||
} else if (key === 'Capabilities') {
|
} else if (key === 'Capabilities') {
|
||||||
@@ -641,12 +628,6 @@ function onSudChanged(msg) {
|
|||||||
energyByStep = {};
|
energyByStep = {};
|
||||||
energyCurrent = 0;
|
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;
|
wasRunning = isRunningNow;
|
||||||
sudState = newState;
|
sudState = newState;
|
||||||
const sliderDisabled = RUNNING_STATES.has(sudState);
|
const sliderDisabled = RUNNING_STATES.has(sudState);
|
||||||
@@ -762,8 +743,6 @@ function connect() {
|
|||||||
ws = ws_;
|
ws = ws_;
|
||||||
statusEl.textContent = 'Connecting…';
|
statusEl.textContent = 'Connecting…';
|
||||||
ws.onopen = () => {
|
ws.onopen = () => {
|
||||||
initialPowerSync = true;
|
|
||||||
initialSpeedSync = true;
|
|
||||||
initialHeatrateSync = true;
|
initialHeatrateSync = true;
|
||||||
initialTempSollSync = true;
|
initialTempSollSync = true;
|
||||||
initialPotTempSync = true;
|
initialPotTempSync = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user