DOIF/uiTable: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) (→Beispiel für Raw definition: Text ergänzt) |
Trelle (Diskussion | Beiträge) (→Beschreibung: ergänzt) |
||
Zeile 12: | Zeile 12: | ||
=== Beschreibung === | === Beschreibung === | ||
Die Widgetkombination wird dur den folgenden Code-Auszug beschrieben. | |||
<pre> | |||
$TPL{style2}="text-align:right;width:23px;position:absolute;left:13px;top:26px;font-weight:bold;font-size:12px;color:#"; | |||
$TPL{style3}="text-align:right;width:23px;position:absolute;left:13px;top:13px;font-weight:bold;font-size:12px;color:#"; | |||
$TPL{knob1}="knob,thickness:.4,fgColor:#00A5FF,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false"; | |||
$TPL{knob2}="knob,thickness:.3,fgColor:#FFA500,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false"; | |||
"<div style='position:relative;width:50px;height:50px'><div style='position:absolute;left:0px;top:0px'>".WID([HMdummy_Labor:measured-temp],$TPL{knob1})."</div><div style='position:absolute;left:0px;top:0px'>".WID([HMdummy_Labor:desired-temp],$TPL{knob2},"set")."</div>".STY([HMdummy_Labor:measured-temp:d1],$TPL{style2}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:measured-temp],"0")).STY([HMdummy_Labor:desired-temp:d1],$TPL{style3}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:desired-temp,"0"]))."</div>" | |||
</pre> | |||
Mit style2, style3, knob1 und knob2 werden vier Templates gespeichert. Sie werden jeweils nur einmal verwendet, verkürzen aber die Tabellendefinition. | |||
Die Templates knob1 und knob2 beschreiben die [[FHEMWEB/Widgets|Knob-Widgets]]. | |||
Die Templates style2 und style3 beschreiben die Textfelder für die Soll- und Isttemperatur durch die Angabe der entsprechenden CSS-Attribute. | |||
Die Tabellenzelle wird mit div-Elementen nach folgenden Schema strukturiert. | |||
<pre> | |||
<div mit relativer Position zum Elternelement> | |||
<div mit absoluter Position zum Elternelement> Knob-Widget Isttemperatur </div> | |||
<div mit absoluter Position zum Elternelement> Knob-Widget Solltemperatur </div> | |||
<div mit absoluter Position zum Elternelement> Solltemperatur </div> in STY enthalten und beschrieben durch style3 | |||
<div mit absoluter Position zum Elternelement> Isttemperatur </div> in STY enthalten und beschrieben durch style2 | |||
</div> | |||
</pre> | |||
=== Beispiel für [[Import_von_Code_Snippets|Raw definition]] === | === Beispiel für [[Import_von_Code_Snippets|Raw definition]] === |
Version vom 21. Oktober 2017, 19:10 Uhr
An dieser Seite wird momentan noch gearbeitet. |
Das Attribut uiTable ist noch nicht offizieller Bestandteil des Moduls. Eine Vorabversion gibt im Forenthread, dort ist derzeit
auch die Syntax beschrieben.Das DOIF-Attribut uiTable dient der Definition eines User Interface im Kontext von FHEMWEB. Die Syntax ist in der Befehlsreferenz zu uiTable beschrieben und wird hier nicht behandelt. An dieser Stelle werden Beispiele zur Gestaltung der uiTable gezeigt.
Kombination von WID und STY zu einem Thermostat Widget
uiTable ist tabellenförmig aufgebaut, in einer Tabellenzelle können mehrere Elemente kombiniert werden.
Beschreibung
Die Widgetkombination wird dur den folgenden Code-Auszug beschrieben.
$TPL{style2}="text-align:right;width:23px;position:absolute;left:13px;top:26px;font-weight:bold;font-size:12px;color:#"; $TPL{style3}="text-align:right;width:23px;position:absolute;left:13px;top:13px;font-weight:bold;font-size:12px;color:#"; $TPL{knob1}="knob,thickness:.4,fgColor:#00A5FF,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false"; $TPL{knob2}="knob,thickness:.3,fgColor:#FFA500,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false"; "<div style='position:relative;width:50px;height:50px'><div style='position:absolute;left:0px;top:0px'>".WID([HMdummy_Labor:measured-temp],$TPL{knob1})."</div><div style='position:absolute;left:0px;top:0px'>".WID([HMdummy_Labor:desired-temp],$TPL{knob2},"set")."</div>".STY([HMdummy_Labor:measured-temp:d1],$TPL{style2}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:measured-temp],"0")).STY([HMdummy_Labor:desired-temp:d1],$TPL{style3}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:desired-temp,"0"]))."</div>"
Mit style2, style3, knob1 und knob2 werden vier Templates gespeichert. Sie werden jeweils nur einmal verwendet, verkürzen aber die Tabellendefinition. Die Templates knob1 und knob2 beschreiben die Knob-Widgets. Die Templates style2 und style3 beschreiben die Textfelder für die Soll- und Isttemperatur durch die Angabe der entsprechenden CSS-Attribute.
Die Tabellenzelle wird mit div-Elementen nach folgenden Schema strukturiert.
<div mit relativer Position zum Elternelement> <div mit absoluter Position zum Elternelement> Knob-Widget Isttemperatur </div> <div mit absoluter Position zum Elternelement> Knob-Widget Solltemperatur </div> <div mit absoluter Position zum Elternelement> Solltemperatur </div> in STY enthalten und beschrieben durch style3 <div mit absoluter Position zum Elternelement> Isttemperatur </div> in STY enthalten und beschrieben durch style2 </div>
Beispiel für Raw definition
Der Code enthält einen Dummy HMdummy_Labor der das Thermostatventil simuliert und ein DOIF HMsensor_Labor, das die Ist-Temperatur bis zur Solltemperatur erhöht und dann diesen Vorgang wiederholt. Die uiTable mit der Widgetkombination ist im DOIF widgetkombi_Labor enthalten.
defmod widgetkombi_Labor DOIF (1) ## HMsensor_Labor HMdummy_Labor attr widgetkombi_Labor group Labor: uiTable attr widgetkombi_Labor room DOIF_Labor attr widgetkombi_Labor uiTable {\ $TPL{style2}="text-align:right;;width:23px;;position:absolute;;left:13px;;top:26px;;font-weight:bold;;font-size:12px;;color:#";;\ $TPL{style3}="text-align:right;;width:23px;;position:absolute;;left:13px;;top:13px;;font-weight:bold;;font-size:12px;;color:#";;\ \ $TPL{knob1}="knob,thickness:.4,fgColor:#00A5FF,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false";;\ $TPL{knob2}="knob,thickness:.3,fgColor:#FFA500,min:7,max:30,width:50,height:50,step:.5,angleArc:270,angleOffset:225,displayInput:false";;\ \ }\ WID([HMsensor_Labor],"uzsuSelectRadio,enable,disable,disabled")\ \ "<div style='position:relative;;width:50px;;height:50px'><div style='position:absolute;;left:0px;;top:0px'>".WID([HMdummy_Labor:measured-temp],$TPL{knob1})."</div><div style='position:absolute;;left:0px;;top:0px'>".WID([HMdummy_Labor:desired-temp],$TPL{knob2},"set")."</div>".STY([HMdummy_Labor:measured-temp:d1],$TPL{style2}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:measured-temp],"0")).STY([HMdummy_Labor:desired-temp:d1],$TPL{style3}.DOIF_color("3052FF","FF0000",1,25,[HMdummy_Labor:desired-temp,"0"]))."</div>" defmod HMdummy_Labor dummy attr HMdummy_Labor group Labor: uiTable attr HMdummy_Labor room DOIF_Labor attr HMdummy_Labor userReadings desired-temp {ReadingsNum($name,"state",7)} defmod HMsensor_Labor DOIF ([+1])\ (setreading HMdummy_Labor measured-temp {(if ([HMdummy_Labor:measured-temp] < [HMdummy_Labor:desired-temp]){[HMdummy_Labor:measured-temp]+.5} else {7})}) attr HMsensor_Labor do always attr HMsensor_Labor group Labor: uiTable attr HMsensor_Labor room DOIF_Labor attr HMsensor_Labor webCmd enable:disable setstate HMdummy_Labor desired-temp 16.5 setstate HMdummy_Labor 2017-10-21 19:26:41 desired-temp 16.5 setstate HMdummy_Labor 2017-10-21 19:26:41 measured-temp 13.5 setstate HMdummy_Labor 2017-10-21 19:26:13 state desired-temp 16.5 setstate HMsensor_Labor disabled setstate HMsensor_Labor 2017-10-21 19:26:41 cmd 1 setstate HMsensor_Labor 2017-10-21 19:26:41 cmd_event timer_1 setstate HMsensor_Labor 2017-10-21 19:26:41 cmd_nr 1 setstate HMsensor_Labor 2017-10-21 19:26:41 last_cmd cmd_1 setstate HMsensor_Labor 2017-10-21 19:26:41 mode disabled setstate HMsensor_Labor 2017-10-21 19:26:41 state disabled setstate HMsensor_Labor 2017-10-21 19:27:25 timer_01_c01 21.10.2017 19:27:26 setstate widgetkombi_Labor initialized setstate widgetkombi_Labor 2017-10-21 19:17:32 cmd 0 setstate widgetkombi_Labor 2017-10-21 19:17:32 state initialized