Clock Widget: Client-Zeit statt Server-Zeit und "späte" Aktualisierung

Begonnen von Thorsten Pferdekaemper, 08 August 2019, 17:06:48

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hi,
ich bin mal wieder nicht in meiner "normalen" Zeitzone und bastle mit FTUI/FUIP herum. Dabei sind mir beim Clock-Widget zwei Sachen aufgefallen:

Anzeige der Client-Zeit statt der Server-Zeit
Direkt nach einem Seiten-Reload wird erst einmal die Client-Zeit angezeigt. Das liegt wohl daran, dass die Ermittlung des Zeitunterschieds asynchron passiert und damit letztendlich nach dem ersten Rendering. Ich habe das bei mir so korrigiert:

            ftui.sendFhemCommand('{localtime}')
                .done(function (fhemResult) {
                    var now = new Date();
                    var ft = new Date(fhemResult);
                    elem.data('serverDiff', now.getTime() - ft.getTime());
// PFE: init_ui was already processed here, so update again
updateText(elem);
                });

Neu ist die Zeile mit dem "updateText".
Mit dieser Änderung sieht man zwar noch ganz kurz die falsche Zeit aufflackern, aber das ist meiner Meinung nach akzeptabel.

"späte" Aktualisierung
Wenn das Telefon eine Weile "schläft", dann wird nach dem Einschalten erst einmal für eine Weile (bis zu einer Minute) eine alte Zeit angezeigt. Anscheinend werden Änderungen am DOM ignoriert, wenn die Seite unsichtbar ist oder der Timer "schläft" dann auch. (Das sind nur Vermutungen...)
Ich habe das bei mir so gelöst:

// PFE: immediately update time when page comes back visible
$(document).on('visibilitychange', function () {
            if (document.visibilityState === 'hidden')
                // page is hidden
return;
            // page is visible
updateText(elem);
        });

Das ganze hängt am Ende von init_attr.

Vielleicht könnte jemand das "offiziell" einbauen.

Gruß,
   Thorsten

FUIP

Thorsten Pferdekaemper

Hi,
ich habe das jetzt für FUIP gelöst, indem ich eine eigene Version des clock-Widgets benutze. Wenn jemand trotzdem die Korrektur einbauen will, dann bitte Bescheid geben, damit ich meine Umgehungslösung wieder entfernen kann.
Gruß,
   Thorsten
FUIP