FHEM Forum

FHEM => Frontends => Thema gestartet von: frank am 18 Februar 2015, 17:04:53

Titel: Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 18 Februar 2015, 17:04:53
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
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: rudolfkoenig am 18 Februar 2015, 17:10:05
Kannst du bitte das Problem nicht mir Prosa, sondern mit Definition/Attribut und evtl. Bild beschreiben?
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 18 Februar 2015, 18:07:16
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"'} } }
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: rudolfkoenig am 19 Februar 2015, 09:58:40
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.
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 19 Februar 2015, 12:10:59
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.
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 25 Februar 2015, 17:43:38
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
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: rudolfkoenig am 25 Februar 2015, 19:47:06
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.
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 26 Februar 2015, 11:40:31
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.
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: betateilchen am 26 Februar 2015, 11:54:53
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.
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: frank am 26 Februar 2015, 12:29:10
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".
Titel: Antw:Problem mit neuem Widget bei Eingabe von Attributwert über WebIf
Beitrag von: betateilchen am 26 Februar 2015, 12:47:27
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.