Manche "anzeigen" doppelt

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

Vorheriges Thema - Nächstes Thema

derhelge

Hallo,

ich habe mir Tablet UI zusammengebaut. Allerdings habe ich das Problem das dass Thermostat oft doppelt angzeigt wird, ich muss die Seit dann mehrfach neu laden und irgendwann ist es weg.
Cache leere bringt auch nix, getestet am PC mit Chrome und Edge, Handy mit mehreren Browsern überall das Problem.

Hier ist mein benutzter Code :  <li data-row="2" data-col="1" data-sizex="4" data-sizey="4">
    <header>Stube</header>
<div class="left">
<div data-type="label" data-device="Stube_Heizung" data-get="mode" class=""></div>
<div data-type="thermostat" data-device="Stube_Heizung"
data-valve="valveposition"
data-get="desiredTemperature"
data-temp="temperature"
data-set="desiredTemperature"
data-max="31" data-boost="auto"
class="">
</div>
<div data-type="symbol" data-device="Stube_Fenster" data-get-on="!off" data-get-off="closed" class="bigger"></div>
<div data-type="label"
data-device="Stube_Temp"
data-get="temperature"
data-limits='[16,21,27]'
data-colors='["blue","orange","red"]'
data-unit="&deg;C"
class="big">
</div>
<div data-type="label"
data-device="Stube_Temp"
data-get="humidity"
data-limits='[20,40,66]'
data-colors='["white","orange","red"]'
data-unit="%"
class="big">
</div>
</div>



Gollum2

Moin...

hast du das </li> vergessen zu kopieren oder ist es wirklich nicht da?
"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."

Fhem auf Raspberry PI 2
HM LAN HM USB, CUL 433
IT Steckdosen, Diverse HM Aktoren und Sensoren, Yamaha Receiver, Panasonic TV, Harmony Hub

derhelge

Das ist weiter unten da ist noch code von den anderen anzeigen (licht, steckdosen etc.) und dann kommt das </li>

Gollum2

ok...

wenn ich mich nicht irre wird der Value Wert oberhalb des Widgets angezeigt.
Das sollte aber nicht so sein.

ggf. ist es die Formatierung (sprich der Platz)

Teste mal ohne
data-valve="valveposition"

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."

Fhem auf Raspberry PI 2
HM LAN HM USB, CUL 433
IT Steckdosen, Diverse HM Aktoren und Sensoren, Yamaha Receiver, Panasonic TV, Harmony Hub

Gollum2

da ich auch schon oft an der Ausrichtung und Positionierung verzweifelt habe, mache ich jetzt immer folgendes

<div class="container left inline">
...hier kommen meine Elemente rein, die links im ersten Container unter einander stehen.
Alle bekommen in class min. den Wert "cell"
</div>

<div class="container left inline">
...hier kommen die nächste  Elemente rein, die links neben dem ersten Container unter einander stehen. sollen (also die zweite Reihe)
Alle bekommen in class min. den Wert "cell"
</div>

usw...
"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."

Fhem auf Raspberry PI 2
HM LAN HM USB, CUL 433
IT Steckdosen, Diverse HM Aktoren und Sensoren, Yamaha Receiver, Panasonic TV, Harmony Hub

derhelge

Zitatwenn ich mich nicht irre wird der Value Wert oberhalb des Widgets angezeigt.
Das sollte aber nicht so sein.

Doch soll er das habe ich extra gemacht um zu sehen ob das Ventil im Auto der Manuell Mode ist das steht ja auch eine Zeile weiter oben
<div data-type="label" data-device="Stube_Heizung" data-get="mode" class=""></div>

Das komisch ist halt das es nach ein paar mal Laden stimmt (siehe das zweite Bild).

Tedious

Exakt das Problem habe ich auch (und noch nicht lösen können), tritt bei mir aber ausschließlich auf dem IPad auf....
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

derhelge

Das ist ja verrückt und bei mir tritt das am iPad am seltensten auf im Safari, am meisten im Chrome. Das ist nervig irgendwie verstellen sich auch oft die eingestellten Werte bei den Heizungen wenn die Anzeige nicht stimmt.

derhelge

Hat niemand weiter eine Idee. Das Problem liegt wohl irgendwie am Thermostate Widget, es wird doppelt geladen teilweise.
Nehme ich das Widget aus meinem TabletUI funktioniert alles wunderbar.

Gollum2

Tritt das Problem auch auf, wenn du das Widget alleine in die Box setzt? (ohne weitere Elemente)
"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."

Fhem auf Raspberry PI 2
HM LAN HM USB, CUL 433
IT Steckdosen, Diverse HM Aktoren und Sensoren, Yamaha Receiver, Panasonic TV, Harmony Hub

Syrex-o

@derhelge
probier es mal die Objekte als inline zu plazieren. Hatte mal ein ähnliches Problem mit der Positionierung.
Oder gib dem Thermostat einzeln nochmal ne Genaue Positionierung (inline oder container).

setstate

1. keine Doppelnennung der fhem-tablet-ui.js im HTML ???
2. Probier mal ohne jegliche Pagetab / Pagebutton, ist es dann immer noch doppelt ???

Grml

#12
Ich hänge mich hier mal ran, ich habe nämlich exakt das gleiche Problem, die Thermostat-Widges werden sehr oft doppelt geladen, geschätzt bei 60 - 70 % aller Seitenaufrufe. Erst nach 1 - 5 Reloads ist es dann ok, bis es beim nächsten Reload wieder passiert.

@setstate:
Ich habe die zwei Punkte bei mir mal gegengecheckt.
Es scheint in der Tat an Punkt 2 zu liegen! Sobald ich meine Pagetab-Elemente ausblende lädt es sauber. Zumindest habe ich die Seite gerade 40 - 50 aktualisiert und kein einziges mal mehr ein doppeltes Thermostat-Widget bekommen.

Nachtrag: Beim Homestatus-Widget passiert das doppelte Laden auch.

Markus9

Ich habe das gleiche Problem: Homestate wird doppelt angezeigt und die Werte werden verändert. Ich verwende auch Pagetab.
Gibt's dazu mittlerweile eine Lösung? Oder eine Idee für einen Workaround?

haxtibal

Ich habe das gleiche Problem wie ihr und konnte es soweit eingrenzen, dass es für einen Workaround gereicht hat.

Das Problem ist, dass init() aus widget_thermostat.js, L.157 manchmal doppelt oder noch öfter aufgerufen wird, wenn pagetab verwendet wird. Bei diesem init() wird jedem gefundenen <div data-type="thermostat"> Element ein Knob Widget hinzugefügt. Und wenn init() öfter als einmal aufgerufen wird, bekommt das Thermostat Element eben auch mehr als ein Knob Widget.

Ich hab das Problem auf die Schnelle damit gelöst, dass die Initialisierung eines Thermostat Elements beim wiederholten init() Aufruf übersprungen wird:

    function init() {

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

            // Workaround: Skip element if it was already initialized before.
            if (elem.data('get'))
                return;

            elem.initData('get', 'desired-temp');
            // ...


Für einen echten Bugfix müsste man wohl zuerst wissen, ob es per Design erlaubt sein soll, dass eine Plugin init() Funktion mehrfach aufgerufen wird. Falls es nur einmal aufgerufen werden darf, wäre der Bug an zentraler Stelle irgendwo richtung ftui.loadPlugin in fhem-tablet-ui.js zu suchen. Dann müsste es aber eigentlich auch andere Widgets treffen..?