fix(base): auto-logout ignora le letture del solo calibro (#37 punto 2)
L'inattività contava mousemove/mousedown/keypress/touchstart/scroll. Il numpad fa preventDefault() su ogni cifra/Enter letta dal calibro USB, il che sopprime anche il keypress successivo: un operatore che lavora solo di calibro non generava alcuna attività e veniva disconnesso a metà task. Aggiunto 'keydown' alla lista: scatta comunque, a prescindere dal preventDefault() di un handler successivo sullo stesso evento. Test: rendering di una pagina con auto_logout_minutes impostato, verifica che l'elenco eventi contenga 'keydown'. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -138,7 +138,11 @@
|
||||
self.showWarning = false;
|
||||
}
|
||||
};
|
||||
['mousemove','mousedown','keypress','touchstart','scroll'].forEach(function(evt) {
|
||||
// 'keydown', not just 'keypress': the numpad calls preventDefault() on every
|
||||
// digit/Enter it reads from the USB caliper, which also suppresses the
|
||||
// keypress that would otherwise follow - an operator working only from the
|
||||
// caliper produced no activity at all and was logged out mid-task (#37.2).
|
||||
['mousemove','mousedown','keydown','keypress','touchstart','scroll'].forEach(function(evt) {
|
||||
window.addEventListener(evt, handler, { passive: true });
|
||||
});
|
||||
},
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
"""gitea:Adriano/TieMeasureFlow#37 (point 2).
|
||||
|
||||
base.html's auto-logout only counted activity through 'mousemove', 'mousedown',
|
||||
'keypress', 'touchstart', 'scroll'. The numpad (static/js/numpad.js) calls
|
||||
preventDefault() on every keydown it reads from the USB caliper, which also
|
||||
suppresses the keypress that would otherwise follow: an operator working
|
||||
purely from the caliper produced no activity at all in the inactivity timer's
|
||||
eyes and was logged out mid-task. Adding 'keydown' to the list fixes it -
|
||||
keydown always fires regardless of what a later handler does with
|
||||
preventDefault().
|
||||
"""
|
||||
ACTIVITY_EVENTS = "['mousemove','mousedown','keydown','keypress','touchstart','scroll']"
|
||||
|
||||
|
||||
def test_inactivity_timer_listens_for_keydown(logged_in_client, mock_api_client, monkeypatch):
|
||||
with logged_in_client.session_transaction() as sess:
|
||||
sess["language"] = "it"
|
||||
sess["auto_logout_minutes"] = 15
|
||||
|
||||
monkeypatch.setattr("blueprints.measure.Config.STATION_CODE", "ST-TEST")
|
||||
mock_api_client.get_station_recipes.return_value = []
|
||||
|
||||
resp = logged_in_client.get("/measure/select")
|
||||
assert resp.status_code == 200
|
||||
html = resp.get_data(as_text=True)
|
||||
|
||||
assert ACTIVITY_EVENTS in html
|
||||
Reference in New Issue
Block a user