Manche "anzeigen" doppelt

Begonnen von derhelge, 19 Oktober 2016, 08:08:59

Vorheriges Thema - Nächstes Thema

setstate

Hat jemand schon drauf verwiesen?

https://wiki.fhem.de/wiki/FHEM_Tablet_UI_FAQ#Wie_baue_ich_ein_Men.C3.BC_mit_dem_Pagetab_Widget_auf.3F

Und wie peterboeckmann schon sagte:     <script src="js/fhem-tablet-ui.js" defer></script> nur einmal in der index.html , nicht in den Subfiles

nokion

Und bitte die index.html NICHT mit in die Datei menu.html aufnehmen, sonst ist wieder alles doppelt.

VG
T

OdfFhem

Da mich die doppelte Darstellung langsam nervt und bei mir auch kein mehrmaliges Refreshen der Seite zu einem Ende der fehlerhaften Darstellung führt, habe ich einmal einen (hoffentlich) "ballastfreien" Testfall konstruiert (fhem-tablet-ui.js nicht mehrfach vorhanden, kein pagetab, ...).

Das Beispiel enthält lediglich
- einmal ein thermostat-Widget, direkt eingebettet in ein div-Tag (Anzeige 1x)
- einmal ein thermostat-Widget, über ein include-Widget vollkommen identisch eingebettet in ein div-Tag (Anzeige 2x, davon 1x ohne Messwert-Darstellung)

index_doppelt.html

<!DOCTYPE html>
<html>
<head>
  <script src="js/fhem-tablet-ui.js" defer></script>
  <title>doppelt-Test</title>
</head>
<body>
  <div style="background-color:#CCB487;">
    <div data-type="include" data-url="template_neu_thermostat1.html" data-parameter='{"param01":"ftuitest","param02":"SZ1"}'></div>
  </div>
  <div style="background-color:#A5C19D;">
    <header class="">SZ2</header>
    <div data-type="thermostat" data-device="ftuitest" data-get="userRead_desired_temp_celsius"
         data-temp="userRead_measured_temp_celsius" data-min="15" data-max="25" data-step="1"></div>
  </div>
</body>
</html>


template_neu_thermostat1.html

<header>param02</header>
<div data-type="thermostat" data-device="param01" data-get="userRead_desired_temp_celsius"
    data-temp="userRead_measured_temp_celsius" data-min="15" data-max="25" data-step="1"></div>


Da das Verhalten in Chrome sowie Firefox identisch ist (Desktop und auch Tablet), habe ich die Hoffnung, dass vielleicht doch noch die Ursache gefunden werden kann ...


Die Doppelung habe ich übrigens auch schon beim weather-Widget festgestellt; auch hier wurde dauerhaft das zur Wetterlage passende "Icon" 2x dargestellt.

setstate

#33
Gute Demo, damit kann man arbeiten :-)

Es scheint ein Race Condition Problem sein. Während das include noch lädt, initialisiert das thermostat widget beide gefundene.

Da muss ich noch Verrieglungen einbauen.

Update:

Ich muss in jedes Modul einen Marker einbauen, dass des Element schon einmal initialisiert wurde


        me.elements = $('[data-type="' + me.widgetname + '"]:not([data-ready])', me.area);
        me.elements.each(function (index) {
            var elem = $(this);
            elem.attr("data-ready", "");

setstate

Die Änderung ist eingebaut. -> Update

OdfFhem

@setstate
Ich habe vor einer Weile das Update eingespielt und bislang noch keine Ungereimtheit festgestellt; es scheint soweit alles zu laufen und ich sehe auch keine Doppelgänger mehr. :D

Desweiteren habe ich das oben angesprochene weather-Widget-Konstrukt in ein Template ausgelagert und auch das funktionierte auf Anhieb - perfekt.


Vielen Dank für die schnelle Lokalisierung und Beseitigung dieses lästigen Verhaltens.


P.S.: Und das "-" von gestern ist auch weg ... ;)