|
From: <ma...@us...> - 2011-02-20 14:29:52
|
Revision: 298
http://openautomation.svn.sourceforge.net/openautomation/?rev=298&view=rev
Author: mayerch
Date: 2011-02-20 14:29:46 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
New Feature: Multitrigger widget, e.g. usefull for selecting scenes
(And tidied up the widget demo configuration)
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
CometVisu/trunk/visu/visu_config_demo.xml
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2011-02-20 12:53:15 UTC (rev 297)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-20 14:29:46 UTC (rev 298)
@@ -311,6 +311,117 @@
content: false
});
+ this.addCreator('multitrigger', {
+ create: function( page, path ) {
+ var $p = $(page);
+ var ret_val = $('<div class="widget switch" />');
+ var labelElement = $p.find('label')[0];
+ var label = labelElement ? '<div class="label">' + labelElement.textContent + '</div>' : '';
+ var address = {};
+ $p.find('address').each( function(){
+ var src = this.textContent;
+ var transform = this.getAttribute('transform');
+ var readonly = this.getAttribute('readonly');
+ ga_list.push( src )
+ address[ '_' + src ] = [ transform, readonly=='true' ];
+ });
+ ret_val.append( label );
+ if( $p.attr('button1label') )
+ {
+ var actor = '<div class="actor switchUnpressed">';
+ actor += '<div class="value">' + $p.attr('button1label') + '</div>';
+ actor += '</div>';
+ var $actor = $(actor).data( {
+ 'address' : address,
+ 'mapping' : $p.attr('mapping'),
+ 'styling' : $p.attr('styling'),
+ 'value' : $p.attr('button1value'),
+ 'type' : 'switch'
+ } ).bind( 'click', this.action );
+ ret_val.append( $actor );
+ }
+ if( $p.attr('button2label') )
+ {
+ var actor = '<div class="actor switchUnpressed">';
+ actor += '<div class="value">' + $p.attr('button2label') + '</div>';
+ actor += '</div>';
+ var $actor = $(actor).data( {
+ 'address' : address,
+ 'mapping' : $p.attr('mapping'),
+ 'styling' : $p.attr('styling'),
+ 'value' : $p.attr('button2value'),
+ 'type' : 'switch'
+ } ).bind( 'click', this.action );
+ ret_val.append( $actor );
+ }
+ if( $p.attr('button3label') )
+ {
+ var actor = '<div class="actor switchUnpressed">';
+ actor += '<div class="value">' + $p.attr('button3label') + '</div>';
+ actor += '</div>';
+ var $actor = $(actor).data( {
+ 'address' : address,
+ 'mapping' : $p.attr('mapping'),
+ 'styling' : $p.attr('styling'),
+ 'value' : $p.attr('button3value'),
+ 'type' : 'switch'
+ } ).bind( 'click', this.action );
+ ret_val.append( $actor );
+ }
+ if( $p.attr('button4label') )
+ {
+ var actor = '<div class="actor switchUnpressed">';
+ actor += '<div class="value">' + $p.attr('button4label') + '</div>';
+ actor += '</div>';
+ var $actor = $(actor).data( {
+ 'address' : address,
+ 'mapping' : $p.attr('mapping'),
+ 'styling' : $p.attr('styling'),
+ 'value' : $p.attr('button4value'),
+ 'type' : 'switch'
+ } ).bind( 'click', this.action );
+ ret_val.append( $actor );
+ }
+ //for( var addr in address ) $actor.bind( addr, this.update );
+ // ret_val.append( label ).append( $actor );
+ return ret_val;
+ },
+ update: function(e,d) {
+ var element = $(this);
+ var value = defaultUpdate( e, d, element );
+ element.removeClass( value == 0 ? 'switchPressed' : 'switchUnpressed' );
+ element.addClass( value == 0 ? 'switchUnpressed' : 'switchPressed' );
+ },
+ action: function() {
+ var data = $(this).data();
+ for( var addr in data.address )
+ {
+ if( data.address[addr][1] == true ) continue; // skip read only
+ var a = visu.write;
+ var b = addr.substr(1);
+ var c = Transform[data.address[addr][0]].encode( data.value );
+ visu.write( addr.substr(1), Transform[data.address[addr][0]].encode( data.value ) );
+ }
+ },
+ attributes: {
+ button1label: { type: 'string' , required: false },
+ button1value: { type: 'string' , required: false },
+ button2label: { type: 'string' , required: false },
+ button2value: { type: 'string' , required: false },
+ button3label: { type: 'string' , required: false },
+ button3value: { type: 'string' , required: false },
+ button4label: { type: 'string' , required: false },
+ button4value: { type: 'string' , required: false },
+ mapping: { type: 'mapping' , required: false },
+ styling: { type: 'styling' , required: false }
+ },
+ elements: {
+ label: { type: 'string', required: false, multi: false },
+ address: { type: 'address', required: true, multi: true }
+ },
+ content: false
+ });
+
this.addCreator('trigger', {
create: function( page, path ) {
var $p = $(page);
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 12:53:15 UTC (rev 297)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 14:29:46 UTC (rev 298)
@@ -53,31 +53,35 @@
</statusbar>
</meta>
<page name="Übersicht">
- <text align="center">CometVisu format neu</text>
+ <text align="center">CometVisu Widget Demo</text>
<info styling="BluePurpleRed">
<label>Slide Info</label>
- <address transform="DPT:9">12/4/250</address>
- <address transform="DPT:9.001">12/4/251</address>
+ <address transform="DPT:9" type="">12/4/250</address>
+ <address transform="DPT:9.001" type="">12/4/251</address>
</info>
<switch mapping="OnOff" styling="RedGreen">
- <label>Terrase Licht</label>
- <address transform="DPT:1.001">1/0/2</address>
- <address transform="DPT:9.001" readonly="true">12/4/253</address>
+ <label>Switch - Terrase Licht</label>
+ <address transform="DPT:1.001" readonly="false" type="">1/0/2</address>
+ <address transform="DPT:9.001" readonly="true" type="">12/4/253</address>
</switch>
<slide min="-18" max="26">
<label>Slide</label>
- <address transform="DPT:9">12/4/250</address>
- <address transform="DPT:9.001" readonly="true">12/4/253</address>
+ <address transform="DPT:9" type="">12/4/250</address>
+ <address transform="DPT:9.001" readonly="true" type="">12/4/253</address>
</slide>
<break/>
<trigger value="0" mapping="OnOff">
- <label>Terrase Licht 0</label>
- <address transform="DPT:1.001">1/0/2</address>
+ <label>Trigger - Terrase Licht</label>
+ <address transform="DPT:1.001" readonly="false" type="">1/0/2</address>
</trigger>
<trigger value="1" mapping="OnOff">
- <label>Terrase Licht 1</label>
- <address transform="DPT:1.001">1/0/2</address>
+ <label>Trigger - Terrase Licht</label>
+ <address transform="DPT:1.001" readonly="false" type="">1/0/2</address>
</trigger>
+ <multitrigger button1label="An" button1value="0" button2label="Aus" button2value="1" button3label="Essen" button3value="2" button4label="Fernsehen" button4value="3">
+ <label>Multitrigger - Szenenaufruf</label>
+ <address transform="DPT:5.010" readonly="false" type="">11/2/50</address>
+ </multitrigger>
<line/>
<image src="icon/comet_128_ff8000.png" width="500px" height="46px"/>
<image src="http://www.e-zeeinternet.com/count.php?page=546016&style=default&nbdigits=9&reloads=1" refresh="10">
@@ -95,29 +99,30 @@
</colorchooser>
<info precision="4">
<label>R</label>
- <address transform="DPT:5.001">1/2/59</address>
+ <address transform="DPT:5.001" type="">1/2/59</address>
</info>
<slide>
<label>R</label>
- <address transform="DPT:5.001">1/2/59</address>
+ <address transform="DPT:5.001" type="">1/2/59</address>
</slide>
<info precision="4">
<label>G</label>
- <address transform="DPT:5.001">1/2/60</address>
+ <address transform="DPT:5.001" type="">1/2/60</address>
</info>
<slide>
<label>G</label>
- <address transform="DPT:5.001">1/2/60</address>
+ <address transform="DPT:5.001" type="">1/2/60</address>
</slide>
<info precision="4">
<label>B</label>
- <address transform="DPT:5.001">1/2/61</address>
+ <address transform="DPT:5.001" type="">1/2/61</address>
</info>
<slide>
<label>B</label>
- <address transform="DPT:5.001">1/2/61</address>
+ <address transform="DPT:5.001" type="">1/2/61</address>
</slide>
<diagram_popup rrd="200_DALI_Linie_1_Strom" unit="mA" series="day" refresh="300">DALI Strom L1</diagram_popup>
<diagram_inline rrd="200_DALI_Linie_1_Strom" width="600" height="400"/>
+ <designtoggle/>
</page>
</pages>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|