Closed fhainz closed 8 years ago
I'm currently thinking about the naming. I don't like 'only-autoclose' and I prefer to use class="..." for boolean values.
Nachdem mein Englisch nicht das beste ist, Antworte ich dir auf Deutsch ;-)
Mir gefällt der Name auch nicht. Hast du einen Vorschlag? Wenn nicht, lasse ich mir noch etwas anderes einfallen und baue das inzwischen nach class="" um.
Ich hab das jetzt in einen class="..." Aufruf umgebaut. Den Namen hab ich erstmal gleich gelassen. Mir ist noch nicht viel eingefallen. Vielleicht irgendwas mit security?
Ein Problem hab ich aber noch. Ich will ja verhindern das im Hintergrund irgendetwas geklickt werden kann. Also muss shade immer aktiv sein bis sich das Popup automatisch schließt. Wenn außer dem Alarm Popup noch ein anderes Popup auf der selben Seite definiert ist, wird der Klick auf shade von dem Alarm Popup ignoriert, aber das andere Popup deaktiviert shade. Somit ist der Hintergrund wieder klickbar. Zeile 131-135 ist dafür verantwortlich. Auf einer anderen Seite ohne 2. Popup funktioniert das alles wunderbar.
Hast du eine Idee wie ich das fixen kann?
Grüße
Wie wäre der Name "interlock" für Verriegelung, Sperre, Zugriffssperre ? Dann müssen wir die Eigenschaft "DarfNichtReagierenBeiKlickAufShade" für alle Popups verfügbar machen, im Modul also und nicht nur für einzelne Elemente (elem.data('only-autoclose')). Wenn ein Element "interlock" hat und aktiviert ist, setzt er ein isLocked=true im Popup-Modul und alle Reaktionen auf shadeclicked werden ignoriert. Nur noch die Popups ohne "interlock" dürfen sich per X schließen lassen.
Name klingt gut!
Dann müssen wir die Eigenschaft "DarfNichtReagierenBeiKlickAufShade" für alle Popups verfügbar machen, im Modul also
Hast du das schon irgendwo ähnlich umgesetzt wo ich mir etwas abschauen kann? Oder kannst du mich in die richtige Richtig stoßen wie ich das angehen kann? Bin in js nicht so drinnen, aber werde mich morgen näher mit der sache beschäftigen.
Meinst du in etwa so? Leider funktioniert das auch nicht.
Ich denke ich es habe nun geschafft. shadeClick wird jetzt bei gesetzter class interlock nicht ausgeführt. Was meinst du zu diesem Entwurf?
Changes accepted with small changes from my side. Please test it again.
Please test it again.
Funktioniert leider nicht. Das interlock popup wird bei klick auf shade immer ausgeblendet. Auch wenn es kein 2. Popup auf der Seite gibt.
Edit: Ich glaube daran liegt es: Du prüfst in der hide() Funktion elem.hasClass. Der hide Funktion wird aber als elem dialog übergeben - hide(dialog,elem.data('mode')); Das Problem hatte ich bei meinen Tests auch einmal, deswegen habe ich die Prüfung vor dem Aufruf der hide Funktion gemacht und das visible eingebaut.
So funktioniert es für mich. https://github.com/fhainz/fhem-tablet-ui/blob/patch-3/www/tablet_eval/js/widget_popup.js Falls du es ohne visible haben möchtest, könntest du nochmals schauen? Ich schaffe es nicht ohne. :)
Meine Variante, die ich vorhin hochgeladen habe, funktionierte bei mir aber. Bei dir nicht?
Sry, gar nicht mitbekommen das du heute schon was geändert hast. Mit der Version von gestern wurde, bei klick auf shade, shade und Popup geschlossen, mit der aktuellen Version bleibt das Popup stehen, shade verschwindet aber.
Ich habe gerade meine komplette Tablet UI einem update unterzogen. Deine Version funktioniert bei mir nicht. Wenn die Klasse interstate gesetzt ist wird bei einem Klick auf den Hintergrund das shade div ausgeblendet. Getestet mit Safari und Chrome. Könntest du das bitte nochmal bei dir testen?
Bei mir geht es wirklich! Siehe Testpage: test-popup.html
Danke für die testpage. Ich hab ausgiebig getestet und rausgefunden das Problem nur in Zusammenhang mit einem 2. Popup und pagebutton besteht. Eventuell wegen der unterschiedlichen seiten?
Ich hab die testpage mal umgebaut. Könntest du diese mal bitte bei dir testen?
https://gist.github.com/fhainz/5d07bf3c06573e410f77b20f818c0811
Grüße
jetzt kann ich es nachvollziehen, danke. Es ist die zweite Instanz von popup, die auf das shadeClicked reagiert und schließt. Wenn es die Instanz wäre, wo auch das popup mit dem interlock als Element drin ist wäre, würde auch das Popup selbst zugehen. Ich überlege mir was ...
Es ist die zweite Instanz von popup, die auf das shadeClicked reagiert und schließt
Genau das ist das Problem. Aus diesem Grund hatte ich bei bei meinem patch die visible variable eingeführt.
Ich überlege mir was ...
Danke!
Jetzt sollte es gehen. Sorry für meine Hartnäckigkeit, aber ich versuche es immer so minimalistisch wie möglich zu halten.
Danke, jetzt funktioniert es wunderbar.
Sorry für meine Hartnäckigkeit, aber ich versuche es immer so minimalistisch wie möglich zu halten.
Schon ok. Am ende musst du dich ja im code auskennen :)
https://forum.fhem.de/index.php?topic=52594