Problem mit neuem Widget bei Eingabe von Attributwert über WebIf

Begonnen von frank, 18 Februar 2015, 17:04:53

Vorheriges Thema - Nächstes Thema

frank

seit kurzem öffnet sich bei mir ein fenster mit codemirror-funktionalität bei eingaben von attributwerten. eigentlich ganz nett. ich habe aber probleme beim editieren von sehr langen werten.

beim click auf das vorhandene attribut wird der inhalt korrekt in das kurze webif-eingabefeld übernommen. nehme ich zumindestens an, da ich nur den kurzen anfang erkennen kann. aber dann beim anklicken des eingabefeldes wird nur der letzte teil, des zu editierenden wertes ins editierfenster übernommen. die umgekehrte richtung funktioniert. ich werde quasi genötigt, meine änderungen direkt in der fhem.cfg vorzunehmen.  ;)

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

rudolfkoenig

Kannst du bitte das Problem nicht mir Prosa, sondern mit Definition/Attribut und evtl. Bild beschreiben?

frank

der screenshot ist vom editieren des attr myTemp valueStyle

define myTemp readingsGroup MeinWetter:<aktuell>,<heute>,<morgen>,fc3_day_of_week,fc4_day_of_week,fc5_day_of_week \
MeinWetter:icon,fc1_icon,fc2_icon,fc3_icon,fc4_icon,fc5_icon \
MeinWetter:wind_condition,fc1_high_c,fc2_high_c,fc3_high_c,fc4_high_c,fc5_high_c \
MeinWetter:pressure,fc1_low_c,fc2_low_c,fc3_low_c,fc4_low_c,fc5_low_c \
<Raum>,<Hrel>,<Tist>,<Tdew>,<Habs>,<Htrend>,<Tsoll>,<Mode>,<Tnight>,<Tday>,<TC>,<Vist>,<Vctrl>,<Vstat>,<Vsoll>,<Verr>,<VD> \
Broetje:humidity,ToutIst,dewpoint,humidityAbsolut \
Wetter.(Nord|Sued):humidity,temperature,dewpoint,absFeuchte,pressure,luminosity \
Thermostat.*_Weather:humidity,measured-temp,dewpoint,absFeuchte,humidityAbsolutTrend,desired-temp@{$DEVICE=~s/_Weather//g;;$DEVICE."_Climate"},controlMode@{$DEVICE=~s/_Weather//g;;$DEVICE."_Climate"},night-temp@{$DEVICE=~s/_Weather//g;;$DEVICE."_Climate"},day-temp@{$DEVICE=~s/_Weather//g;;$DEVICE."_Climate"},battery@{$DEVICE=~s/_Weather//g;;$DEVICE.""},ValvePosition@{valveOfDevice($DEVICE)},valveCtrl@{valveCtrlOfDevice($DEVICE)},operState@{valveOfDevice($DEVICE)},ValveDesired@{valveOfDevice($DEVICE)},R-valveErrorPos@{valveOfDevice($DEVICE)},battery@{valveOfDevice($DEVICE)}
attr myTemp mapping { 'Broetje' => 'Wetter','MeinWetter' => '','Thermostat.AZ' => 'EG_Arbeitszimmer','Thermostat.Keller' => 'UG_Keller','Thermostat.SZ' => 'OG_Schlafzimmer','Thermostat.WZ'=>'EG_Wohnzimmer','Thermostat.Kueche' => 'EG_Küche','Thermostat.GZ' => 'OG_Gästezimmer','Thermostat.Bad' => 'EG_Bad','Thermostat.Bad.OG' => 'OG_Bad','Thermostat.OZ' => 'EG_Kaminzimmer','desired-temp' => '','controlMode' => ''}
attr myTemp nameStyle { 'style="color:yellow"' }
attr myTemp notime 1
attr myTemp room 01_INFO
attr myTemp valueColumn {'fc1_high_c' => 2,'fc1_low_c' => 2,'humidityAbsolut' => 4,'desired-temp' => 6}
attr myTemp valueFormat {'battery'=>'{[split(" ", $VALUE)]->[0]}','temperature' => "%0.1f °C",'measured-temp' => "%0.1f °C",'dewpoint' => "%0.1f °C", 'fc1_high_c' => "%.1f °C", 'fc1_low_c' => "%.1f °C", 'fc2_high_c' => "%.1f °C", 'fc2_low_c' => "%.1f °C", 'fc3_high_c' => "%.1f °C", 'fc3_low_c' => "%.1f °C", 'fc4_high_c' => "%.1f °C", 'fc4_low_c' => "%.1f °C", 'fc5_high_c' => "%.1f °C", 'fc5_low_c' => "%.1f °C", 'ToutIst' => "%.1f °C",'desired-temp' => '{sprintf("%.1f °C",[split(" ", $VALUE)]->[0])}','night-temp' => '{sprintf("%.1f °C",[split(" ", $VALUE)]->[0])}', 'day-temp' => '{sprintf("%.1f °C",[split(" ", $VALUE)]->[0])}', 'humidity' => "%.0f %%",'absFeuchte' => "%0.1f g/m³",'humidityAbsolut' => "%0.1f g/m³",'humidityAbsolut0' => "%0.1f g/m³",'ValvePosition'=>'{sprintf("%02d",[split(" ",$VALUE)]->[0])." %%"}','ValveDesired'=>'{sprintf("%02d",[split(" ",$VALUE)]->[0])." %%"}','R-valveErrorPos'=>'{sprintf("%02d",[split(" ",$VALUE)]->[0])." %%"}'}
attr myTemp valueIcon {'battery.ok' => 'batterie@lightgreen','battery.low' => 'batterie@red','icon' => '%VALUE','fc1_icon' => '%VALUE','fc2_icon' => '%VALUE','fc3_icon' => '%VALUE','fc4_icon' => '%VALUE','fc5_icon' => '%VALUE'}
attr myTemp valueStyle { if($READING eq "humidity") {{return "style=\"color:#".substr(pahColor(40,60,80,$VALUE,[255,255,0, 127,255,0, 0,255,0, 0,255,255, 0,127,255],0),0,6)."\""}} elsif($READING ~~ ["temperature","measured-temp","ToutIst"]) { if($VALUE > 24){'style="color:violet"'} elsif($VALUE > 21){'style="color:orangered"'} elsif($VALUE > 18){'style="color:orange"'} elsif($VALUE > 15){'style="color:lightgreen"'} else{'style="color:lightblue"'} }  elsif($READING eq "dewpoint") {  if(ReadingsVal($DEVICE,"measured-temp","") > ($VALUE + 3)){'style="color:lightgreen"'}  elsif((ReadingsVal($DEVICE,"measured-temp","") > ($VALUE+1))&&(ReadingsVal($DEVICE,"measured-temp","") <= ($VALUE+3))){'style="color:orange"'}  else{'style="color:orangered"'} }  elsif($READING =~ m/day_of/){'style="color:yellow"'}  elsif($READING eq "humidityAbsolutTrend") {  if($VALUE ~~ ["↑↑","↑↘","↘↑","→↗","↗→"]){'style="color:dodgerblue"'}  elsif($VALUE ~~ ["→→","↗↘","↘↗"]){'style="color:lightgreen"'}  elsif($VALUE ~~ ["↓↓","↓↗","↗↓","↘→","→↘"]){'style="color:yellow"'} }  elsif($READING eq "ValvePosition") { my $myRoom = $1 if($DEVICE =~ m/Ventil.(.*)/);;;; if(ReadingsVal("VentilControler.".$myRoom."_Btn1","valveCtrl","") eq "lost"){return 'style="color:orangered"'} elsif(ReadingsVal("VentilControler.".$myRoom."_Btn1","valveCtrl","") =~ m/miss/){return 'style="color:orange"'} elsif(ReadingsVal("VentilControler.".$myRoom."_Btn1","valveCtrl","") eq "ok"){return 'style="color:lightgreen"'} } elsif($READING eq "valveCtrl") { my $myRoom = $1 if($DEVICE =~ m/VentilControler.(.*)_Btn1/);;;; my $myValve = "Ventil.".$myRoom;;;; my $myValvePos = ReadingsVal($myValve,"ValvePosition",0);;;; fhem("trigger $myValve ValvePosition: $myValvePos");;;; if($VALUE eq "lost"){return 'style="color:orangered"'} elsif($VALUE =~ m/miss/){return 'style="color:orange"'} elsif($VALUE eq "ok"){return 'style="color:lightgreen"'} } }
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

rudolfkoenig

Das fragliche Attribut war zu lang, Firefox hat auch unfertige Puffer gemeldet, und im Fenster hat man das letzte Stueck gesehen. Chrome funktioniert. Habs gefixt, jetzt sollte auch Firefox tun.

frank

ZitatFirefox hat auch unfertige Puffer gemeldet
das erklärt eventuell, dass das letzte stück meist (immer?) unterschiedlich lang war. bei mir ist firefox im einsatz. ich werde die tage berichten, danke.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

das editieren der "langen" attribute funktioniert nun, danke.

jetzt besteht noch ein weiteres problem:
wenn ich das im widget angezeigte attribut nicht ändern möchte und mit cancel abbreche, kann ich kein weiteres attribut editieren, da die attribute nicht mehr im widget angezeigt werden. das widget öffnet sich, aber bleibt vollkommen leer. erst nach einem refresh der browserseite kann wieder editiert werden.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

rudolfkoenig

Nach eine bisschen rumexperimentieren schaut fuer mich so aus:
- ohne codemirror erkenne ich keine Probleme, ich kann oefters speichern, oder per escape nicht speichern
- mit codemirror ist die Seite ab den zweiten Aufruf erstmal schwarz, aber mit richtigen Inhalt. Nach etwas tippen (cursor oder Inhalt) erscheint jedoch der alte Text auch.
- Speichern geht in allen Faellen problemlos.

Wenn jemand Patches fuer Codemirror hat, soll sich melden.

frank

Zitat- mit codemirror ist die Seite ab den zweiten Aufruf erstmal schwarz, aber mit richtigen Inhalt. Nach etwas tippen (cursor oder Inhalt) erscheint jedoch der alte Text auch.
die inhalt-variante kann ich bestätigen. mit cursor erscheint nur der cursor.

dann warten wir mal auf einen codemirror-experten. ich verlinke mal im codemirror-thread.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Das "Problem" mit der zuerst schwarz dargestellten Seite, in der man den Inhalt nicht sieht, existiert bei mir von Anfang an, seit der codemirror in fhem verwendet wird, in ALLEN Eingabefeldern (also bei DEF und Edit Files).

Darüber habe ich mir nie einen Kopf gemacht. Nach dem ersten Tastendruck (ich nehme meistens eine Cursortaste) ist der Inhalt dann sichtbar.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

frank

ZitatDas "Problem" mit der zuerst schwarz dargestellten Seite, in der man den Inhalt nicht sieht, existiert bei mir von Anfang an, seit der codemirror in fhem verwendet wird, in ALLEN Eingabefeldern (also bei DEF und Edit Files).
interessanter voodoo-zauber.  ;)
bei DEF und Edit Files funktioniert es bei mir hervorragend. dort wird das eingabefeld auch in die seite "eingebettet". bei ATTR erscheint bei mir so eine art "overlay-maske".
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

Achso - ich hatte vergeseen dazuzuschreiben, dass dieses Phänomen der schwarzen Seite bei mir nicht permanent auftritt. Eine Logik, anhand derer man auf eine Ursache schließen könnte, konnte ich noch nicht rausfinden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!