Ich will euch hier ein paar meiner Hacks für die Autogeneration vorstellen:
1. In der Navigation fehlte mir eine Option um Einträge wie z.B. Temperatur auf der rechten Seite einzublenden:
Dazu habe ich folgendes Modifiziert:
smarthome.py:
smartVISU:
Anzuwenden ist das ganze dann z.B. so:
Als nächstes kommt ein Hack um z.B. Erdgeschoß als Trennlinie (data-role="list-divider") in der Navigation einzufügen.
Da ist der Code für das sv_nav_aside schon mit drin. Und so wendet man das dann an:
was mir noch so fehlt:
Nämlich dass man in einem "Raum" nicht nur Widgets in den Blöcken haben kann sondern nochmal einen Header mit Widgets um Zentralfunktionen abzulegen... und später evtl. dass man noch eine Übersicht z.B. über alle Beleuchtungen, Rolläden, Temperaturen, usw. hat... und dass man noch bei den Blöcken der Widgets eigenschaften festlegen kann, wie z.B. den Blocktype... und dass er immer den Namen als Block-Überschrift nimmt gefällt mir auch nicht... naja, mal schauen...
1. In der Navigation fehlte mir eine Option um Einträge wie z.B. Temperatur auf der rechten Seite einzublenden:
Dazu habe ich folgendes Modifiziert:
smarthome.py:
Code:
diff --git a/plugins/visu/smartvisu.py b/plugins/visu/smartvisu.py
old mode 100755
new mode 100644
index d33824a..aac462d
--- a/plugins/visu/smartvisu.py
+++ b/plugins/visu/smartvisu.py
@@ -92,7 +92,11 @@ def pages(smarthome, directory):
img = item.conf['sv_img']
else:
img = ''
- nav_lis += parse_tpl(tpldir + '/navi.html', [('{{ visu_page }}', item.id()), ('{{ visu_name }}', str(item)), ('{{ visu_img }}', img)])
+ if 'sv_nav_aside' in item.conf:
+ nav_aside = item.conf['sv_nav_aside']
+ else:
+ nav_aside = ''
+ nav_lis += parse_tpl(tpldir + '/navi.html', [('{{ visu_page }}', item.id()), ('{{ visu_name }}', str(item)), ('{{ visu_img }}', img), ('{{ visu_aside }}', nav_aside), ('item.name', str(item)), ("'item", "'" + item.id()) ])
with open("{0}/{1}.html".format(outdir, item.id()), 'w') as f:
f.write(r)
nav = parse_tpl(tpldir + '/navigation.html', [('{{ visu_navis }}', nav_lis)])
Code:
Index: pages/base/tpl/navi.html
===================================================================
--- pages/base/tpl/navi.html (Revision 329)
+++ pages/base/tpl/navi.html (Arbeitskopie)
@@ -1,6 +1,7 @@
<li data-icon="false">
<a href="index.php?page={{ visu_page }}">
<img class="icon" src="{{ icon0 }}{{ visu_img }}"/><h3>{{ visu_name }}</h3>
+ <div class="ui-li-aside">{{ visu_aside }}</div>
</a>
</li>
Code:
[eg]
[[flur]]
name = Flur
sv_page = room
sv_img = scene_stairs.png
sv_nav_aside = "{{ basic.float('item', 'eg.flur.temperature', '°C') }}"
Code:
diff --git a/plugins/visu/smartvisu.py b/plugins/visu/smartvisu.py
old mode 100755
new mode 100644
index d33824a..58f50a5
--- a/plugins/visu/smartvisu.py
+++ b/plugins/visu/smartvisu.py
@@ -87,14 +87,28 @@ def pages(smarthome, directory):
except Exception, e:
logger.warning("Could not delete file {0}: {1}".format(fp, e))
for item in smarthome.find_items('sv_page'):
- r = room(smarthome, item, tpldir)
- if 'sv_img' in item.conf:
- img = item.conf['sv_img']
- else:
- img = ''
- nav_lis += parse_tpl(tpldir + '/navi.html', [('{{ visu_page }}', item.id()), ('{{ visu_name }}', str(item)), ('{{ visu_img }}', img)])
- with open("{0}/{1}.html".format(outdir, item.id()), 'w') as f:
- f.write(r)
+ if item.conf['sv_page'] == 'room':
+ r = room(smarthome, item, tpldir)
+ if 'sv_img' in item.conf:
+ img = item.conf['sv_img']
+ else:
+ img = ''
+ if 'sv_nav_aside' in item.conf:
+ if isinstance(item.conf['sv_nav_aside'], list):
+ nav_aside = ', '.join(item.conf['sv_nav_aside'])
+ else:
+ nav_aside = item.conf['sv_nav_aside']
+ else:
+ nav_aside = ''
+
+ nav_lis += parse_tpl(tpldir + '/navi.html', [('{{ visu_page }}', item.id()), ('{{ visu_name }}', str(item)), ('{{ visu_img }}', img), ('{{ visu_aside }}', nav_aside), ('item.name', str(item)), ("'item", "'" + item.id()) ])
+
+ with open("{0}/{1}.html".format(outdir, item.id()), 'w') as f:
+ f.write(r)
+
+ elif item.conf['sv_page'] == 'seperator':
+ nav_lis += '<li data-role="list-divider">' + str(item) + '</li>\n'
+
nav = parse_tpl(tpldir + '/navigation.html', [('{{ visu_navis }}', nav_lis)])
with open(outdir + '/navigation.html', 'w') as f:
f.write(nav)
Code:
[eg]
[[eg-sep]]
name = Erdgeschoß
sv_page = seperator
[[flur]]
name = Flur
sv_page = room
sv_img = scene_stairs.png
sv_nav_aside = "{{ basic.float('item', 'eg.flur.temperature', '°C') }}"
Nämlich dass man in einem "Raum" nicht nur Widgets in den Blöcken haben kann sondern nochmal einen Header mit Widgets um Zentralfunktionen abzulegen... und später evtl. dass man noch eine Übersicht z.B. über alle Beleuchtungen, Rolläden, Temperaturen, usw. hat... und dass man noch bei den Blöcken der Widgets eigenschaften festlegen kann, wie z.B. den Blocktype... und dass er immer den Namen als Block-Überschrift nimmt gefällt mir auch nicht... naja, mal schauen...


dachte dass muss so sein - wie gesagt kenne mich nicht so aus mit python... nehme es oben aus dem text raus.


Kommentar