Wskaźnik offline: ramka zamiast belki + naprawa cyklicznego migania
Dwa zgłoszenia z kiosku (2026-07-31): 1. BELKA ZASŁANIAŁA DANE ALS. Pełnoekranowy pasek u góry zajmował pas ekranu i obcinał dane informacyjne w iframe. Zastąpiony cienką pulsującą RAMKĄ wokół całego ekranu (pointer-events: none, niczego nie zakrywa) plus małą plakietką w rogu. Z daleka widoczna równie dobrze. 2. WSKAŹNIK MIGAŁ zamiast świecić ciągle. disconnectedSince było resetowane przy KAŻDEJ nieudanej próbie reconnectu, nie tylko przy przejściu połączone->rozłączone — przy odstępie ponowień > 10 s (backoff dochodzi do 30 s) licznik ciszy zerował się co próbę i wskaźnik cyklicznie znikał i wracał. Teraz znacznik początku przerwy ustawiany wyłącznie przy przejściu ze stanu połączonego. Kontekst zgłoszenia: strona działa jeszcze przeciw STAREMU LuPortowi, który nie ma kanału zbiorczego ani uwierzytelniania WS — połączenie pada ciągle (oczekiwane do czasu wdrożenia; potem wstaje bez zmian), a błąd zamieniał tę ciągłą przerwę w miganie. Testy: scenariusz 7 próbkuje wskaźnik co 500 ms przez 90 s ciągłej awarii i wymaga 100% aktywnych próbek — z błędem aktywnych było 51/182 (72% czasu zgaszony; dokładnie zgłoszone "pojawia się i znika"). Fałszywy WebSocket odrzuca teraz połączenia jak przeglądarka (onclose po nieudanej próbie), więc długa przerwa z ponowieniami jest testowalna. 11/11 scenariuszy PASS, mutacja poprawki wywraca scenariusz 7. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -18,13 +18,15 @@ także po każdym wznowieniu połączenia.
|
||||
|----------|-------|
|
||||
| Brak maszyny w alarmie | Iframe z infoterminalem ALS |
|
||||
| Co najmniej jedna maszyna w alarmie | Ekran alarmowy z kartami maszyn |
|
||||
| Brak łączności z LuPort > 10 s | Pomarańczowy pasek u góry (na obu widokach) |
|
||||
| Brak łączności z LuPort > 10 s | Pomarańczowa pulsująca ramka wokół ekranu + plakietka w rogu (na obu widokach) |
|
||||
|
||||
Alarm jest wykrywany, gdy pole `status` maszyny zawiera słowo **`alarm`**
|
||||
(bez rozróżnienia wielkości liter), np. `"Alarm - awaria"`, `"ALARM"`.
|
||||
|
||||
Pomarańczowy pasek to celowo INNY kolor niż czerwień alarmów: mówi „ekran może
|
||||
pokazywać nieświeży obraz", a nie „maszyna stoi".
|
||||
Wskaźnik offline to cienka pulsująca RAMKA wokół całego ekranu plus mała
|
||||
plakietka w rogu — niczego nie zasłania (pełnoekranowa belka zakrywała dane
|
||||
ALS w iframe). Pomarańcz to celowo INNY kolor niż czerwień alarmów: mówi
|
||||
„ekran może pokazywać nieświeży obraz", a nie „maszyna stoi".
|
||||
|
||||
---
|
||||
|
||||
@@ -39,7 +41,7 @@ Wszystkie parametry na początku sekcji `<script>` w `als_alert_screen.html`:
|
||||
| `MACHINES` | filtr maszyn pokazywanych na ekranie; `[]` = wszystkie |
|
||||
| `WATCHDOG_SILENCE_MS` | po jakiej ciszy uznać połączenie za martwe (90 s) |
|
||||
| `STALE_MS` | po jakim czasie dane maszyny znikają z ekranu (5 min) |
|
||||
| `OFFLINE_BANNER_AFTER_MS` | po jakim czasie bez łączności pokazać pasek (10 s) |
|
||||
| `OFFLINE_BANNER_AFTER_MS` | po jakim czasie bez łączności pokazać ramkę offline (10 s) |
|
||||
|
||||
Oba kluczowe parametry można też nadpisać w adresie strony — wygodne przy
|
||||
konfiguracji kiosku bez edycji pliku:
|
||||
@@ -85,8 +87,16 @@ Strona obsługuje dwa typy ramek — obydwa tak samo (liczy się najnowszy stan)
|
||||
połączenie i wymusza reconnect.
|
||||
3. **Wygasanie danych.** Dane maszyny starsze niż 5 min znikają z ekranu —
|
||||
alarm maszyny usuniętej z widgetu ALS nie wisi w nieskończoność.
|
||||
4. **Widoczna utrata łączności.** Pasek offline + pasek statusu w rogu.
|
||||
Ekran nigdy nie pokazuje po cichu nieświeżego obrazu.
|
||||
4. **Widoczna utrata łączności.** Pulsująca ramka offline świeci CIĄGLE
|
||||
przez całą przerwę (znacznik początku przerwy ustawiany tylko przy
|
||||
przejściu połączone→rozłączone — reset przy każdej nieudanej próbie
|
||||
powodował cykliczne miganie). Ekran nigdy nie pokazuje po cichu
|
||||
nieświeżego obrazu.
|
||||
|
||||
Uwaga: do czasu wdrożenia NOWEGO LuPorta ramka będzie świecić stale —
|
||||
stary system nie ma kanału zbiorczego ani uwierzytelniania WS, więc nowa
|
||||
strona nie ma się z czym połączyć. To oczekiwane; po przełączeniu
|
||||
serwera na nowy system strona wstaje bez żadnych zmian.
|
||||
|
||||
---
|
||||
|
||||
@@ -134,9 +144,10 @@ CHROME_BIN=/usr/bin/chromium python3 test/testy_ekranu.py
|
||||
|
||||
Deterministyczne, bez sieci: skrypt aplikacji jest wycinany z żywego
|
||||
`als_alert_screen.html`, `window.WebSocket` podmieniany na fałszywkę,
|
||||
a scenariusz (10 asercji: migawka, aktualizacje, reconnect, baner offline,
|
||||
watchdog, wygasanie danych) jedzie na wirtualnym czasie Chromium — całość
|
||||
trwa kilka sekund mimo symulowania ~6 minut.
|
||||
a scenariusz (11 asercji: migawka, aktualizacje, reconnect, ciągłość
|
||||
wskaźnika offline podczas długiej przerwy, watchdog, wygasanie danych)
|
||||
jedzie na wirtualnym czasie Chromium — całość trwa kilkanaście sekund mimo
|
||||
symulowania ~8 minut.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user