|
From: <ma...@us...> - 2013-02-02 22:45:05
|
Revision: 1391
http://openautomation.svn.sourceforge.net/openautomation/?rev=1391&view=rev
Author: mayerch
Date: 2013-02-02 22:44:58 +0000 (Sat, 02 Feb 2013)
Log Message:
-----------
Extend infotrigger also for shorttime
Modified Paths:
--------------
CometVisu/trunk/visu/structure/pure/_common.js
CometVisu/trunk/visu/structure/pure/infotrigger.js
CometVisu/trunk/visu/visu_config.xsd
CometVisu/trunk/visu/visu_config_demo.xml
Modified: CometVisu/trunk/visu/structure/pure/_common.js
===================================================================
--- CometVisu/trunk/visu/structure/pure/_common.js 2013-02-02 21:22:00 UTC (rev 1390)
+++ CometVisu/trunk/visu/structure/pure/_common.js 2013-02-02 22:44:58 UTC (rev 1391)
@@ -82,8 +82,12 @@
/*
* this function extracts all addresses with attributes (JNK)
+ *
+ * @param handleVariant is a callback function that returns an array of two
+ * elements. The first is a boolean that determins if
+ * the visu should listen for that address. The second
+ * is added as it is to the returned object.
*/
-
function makeAddressList( page, handleVariant ) {
var address = {};
page.find('address').each( function(){
@@ -314,9 +318,9 @@
function defaultValueHandling( e, data, passedElement )
{
var element = passedElement || $(this);
- var thisTransform = element.data().address[ e.type ][0];
+ var thisTransform = element.data().address[ e.type ][0];
// #1: transform the raw value to a JavaScript type
- var value = templateEngine.transformDecode( element.data().address[ e.type ][0], data );
+ var value = templateEngine.transformDecode( element.data().address[ e.type ][0], data );
element.data( 'basicvalue', value ); // store it to be able to supress sending of unchanged data
Modified: CometVisu/trunk/visu/structure/pure/infotrigger.js
===================================================================
--- CometVisu/trunk/visu/structure/pure/infotrigger.js 2013-02-02 21:22:00 UTC (rev 1390)
+++ CometVisu/trunk/visu/structure/pure/infotrigger.js 2013-02-02 22:44:58 UTC (rev 1391)
@@ -28,7 +28,7 @@
// handle addresses
var address = makeAddressList($e,
function( src, transform, mode, variant ) {
- return [ variant != 'button', variant == 'button' ];
+ return [ variant != 'button' && variant != 'short', variant == 'button' ? 1 : (variant == 'short' ? 2 : 0) ];
}
);
@@ -43,20 +43,25 @@
actordown += '<div class="value">' + ($e.attr('downlabel') ? $e.attr('downlabel') : '-') + '</div>';
actordown += '</div>';
var $actordown = $(actordown).data( {
- 'address' : address,
- 'mapping' : $e.attr('mapping'),
- 'styling' : $e.attr('styling'),
- 'value' : $e.attr('downvalue') || 0,
- 'align' : $e.attr('align'),
- 'change' : $e.attr('change') || 'relative',
- 'min' : parseFloat($e.attr('min')) || 0,
- 'max' : parseFloat($e.attr('max')) || 255,
- 'type' : 'switch'
- } ).bind( 'click', this.action ).bind( 'mousedown', function(){
+ 'address' : address,
+ 'mapping' : $e.attr('mapping'),
+ 'styling' : $e.attr('styling'),
+ 'value' : $e.attr('downvalue') || 0,
+ 'shortvalue' : $e.attr('shortdownvalue') || 0,
+ 'shorttime' : parseFloat($e.attr('shorttime')) || -1,
+ 'align' : $e.attr('align'),
+ 'change' : $e.attr('change') || 'relative',
+ 'min' : parseFloat($e.attr('min')) || 0,
+ 'max' : parseFloat($e.attr('max')) || 255,
+ 'type' : 'switch'
+ } ).bind( 'mousedown touchstart', this.mousedown ).
+ bind( 'mouseup touchend', this.mouseup ).
+ bind( 'mouseout touchout', this.mouseout );/*.
+ .bind( 'click', this.action ).bind( 'mousedown', function(){
$(this).removeClass('switchUnpressed').addClass('switchPressed');
} ).bind( 'mouseup mouseout', function(){ // not perfect but simple
$(this).removeClass('switchPressed').addClass('switchUnpressed');
- } );
+ } );*/
var actorup = '<div class="actor switchUnpressed uplabel" ';
if ( $e.attr( 'align' ) )
@@ -65,20 +70,24 @@
actorup += '<div class="value">' + ($e.attr('uplabel') ? $e.attr('uplabel') : '+') + '</div>';
actorup += '</div>';
var $actorup = $(actorup).data( {
- 'address' : address,
- 'mapping' : $e.attr('mapping'),
- 'styling' : $e.attr('styling'),
- 'value' : $e.attr('upvalue') || 1,
- 'align' : $e.attr('align'),
- 'change' : $e.attr('change') || 'relative',
- 'min' : parseFloat($e.attr('min')) || 0,
- 'max' : parseFloat($e.attr('max')) || 255,
- 'type' : 'switch'
- } ).bind( 'click', this.action ).bind( 'mousedown', function(){
+ 'address' : address,
+ 'mapping' : $e.attr('mapping'),
+ 'styling' : $e.attr('styling'),
+ 'value' : $e.attr('upvalue') || 1,
+ 'shortvalue' : $e.attr('shortupvalue') || 1,
+ 'shorttime' : parseFloat($e.attr('shorttime')) || -1,
+ 'align' : $e.attr('align'),
+ 'change' : $e.attr('change') || 'relative',
+ 'min' : parseFloat($e.attr('min')) || 0,
+ 'max' : parseFloat($e.attr('max')) || 255,
+ 'type' : 'switch'
+ } ).bind( 'mousedown touchstart', this.mousedown ).
+ bind( 'mouseup touchend', this.mouseup ).
+ bind( 'mouseout touchout', this.mouseout );/*..bind( 'click', this.action ).bind( 'mousedown', function(){
$(this).removeClass('switchUnpressed').addClass('switchPressed');
} ).bind( 'mouseup mouseout', function(){ // not perfect but simple
$(this).removeClass('switchPressed').addClass('switchUnpressed');
- } );
+ } );*/
var actorinfo = '<div class="actor switchInvisible " ';
if ( $e.attr( 'align' ) )
@@ -120,24 +129,44 @@
var value = defaultUpdate( e, d, element );
element.addClass('switchInvisible');
},
- action: function() {
- var data = $(this).data();
- var value = data.value;
- var relative = ( data.change != 'absolute' );
- if( !relative )
+ mousedown: function(event) {
+ $(this).removeClass('switchUnpressed').addClass('switchPressed').data( 'downtime', new Date().getTime() );
+ if( 'touchstart' == event.type )
{
- value = parseFloat($(this).parent().find('.switchInvisible').data('basicvalue'));
- if( isNaN( value ) )
- value = 0; // anything is better than NaN...
- value = value + parseFloat(data.value);
- if (value < data.min ) value = data.min;
- if( value > data.max ) value = data.max;
+ // touchscreen => disable mouse emulation
+ $(this).unbind('mousedown').unbind('mouseup').unbind('mouseout');
}
- for( var addr in data.address )
+ },
+ mouseup: function(event) {
+ var $this = $(this);
+ if( $this.data( 'downtime' ) )
{
- if( !(data.address[addr][1] & 2) ) continue; // skip when write flag not set
- if( data.address[addr][2] != relative ) continue; // skip when address mode doesn't fit action mode
- templateEngine.visu.write( addr.substr(1), templateEngine.transformEncode( data.address[addr][0], value ) );
+ var data = $this.data();
+ var isShort = (new Date().getTime()) - data.downtime < data.shorttime;
+ var value = data.value;
+ var relative = ( data.change != 'absolute' );
+ if( !relative )
+ {
+ value = parseFloat($(this).parent().find('.switchInvisible').data('basicvalue'));
+ if( isNaN( value ) )
+ value = 0; // anything is better than NaN...
+ value = value + parseFloat(data.value);
+ if (value < data.min ) value = data.min;
+ if( value > data.max ) value = data.max;
+ }
+ for( var addr in data.address )
+ {
+ if( !(data.address[addr][1] & 2) ) continue; // skip when write flag not set
+ if( !isShort && 1 == data.address[addr][2] )
+ templateEngine.visu.write( addr.substr(1), templateEngine.transformEncode( data.address[addr][0], data.shortvalue ) );
+ if( ( isShort && 2 == data.address[addr][2]) ||
+ (!relative && 0 == data.address[addr][2]) )
+ templateEngine.visu.write( addr.substr(1), templateEngine.transformEncode( data.address[addr][0], value ) );
+ }
}
+ $this.removeClass('switchPressed').addClass('switchUnpressed').removeData( 'downtime' );
+ },
+ mouseout: function(event) {
+ $(this).removeClass('switchPressed').addClass('switchUnpressed').removeData( 'downtime' );
}
});
\ No newline at end of file
Modified: CometVisu/trunk/visu/visu_config.xsd
===================================================================
--- CometVisu/trunk/visu/visu_config.xsd 2013-02-02 21:22:00 UTC (rev 1390)
+++ CometVisu/trunk/visu/visu_config.xsd 2013-02-02 22:44:58 UTC (rev 1391)
@@ -570,10 +570,22 @@
<xsd:element name="address" type="address" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="upvalue" type="xsd:string" use="optional" />
+ <xsd:attribute name="shortupvalue" type="xsd:string" use="optional" />
<xsd:attribute name="downvalue" type="xsd:string" use="optional" />
+ <xsd:attribute name="shortdownvalue" type="xsd:string" use="optional" />
<xsd:attribute name="uplabel" type="xsd:string" use="optional" />
<xsd:attribute name="downlabel" type="xsd:string" use="optional" />
- <xsd:attribute name="change" type="xsd:string" use="optional" />
+ <xsd:attribute name="shorttime" type="xsd:decimal" use="optional">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">Time in milliseconds that is accepted as shorttime.</xsd:documentation>
+ <xsd:documentation xml:lang="de">Zeit in Millisekunden innerhalb der der Tastendruck als Kurzzeit interpretiert wird.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="change" type="xsd:string" use="optional">
+ <xsd:annotation>
+ <xsd:documentation xml:lang="en">Might be 'absolute' or 'relative'.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
<xsd:attribute ref="min" />
<xsd:attribute ref="max" />
<xsd:attribute ref="mapping" use="optional" />
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2013-02-02 21:22:00 UTC (rev 1390)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2013-02-02 22:44:58 UTC (rev 1391)
@@ -231,14 +231,20 @@
<address transform="DPT:1.001" type="">12/7/1</address>
<address transform="DPT:1.001" type="" variant="short">12/7/10</address>
</trigger>
- <info mapping="KonnexHVAC">
+ <info>
<label>Info: Kurzzeit</label>
<address transform="DPT:1.001" type="">12/7/10</address>
</info>
- <info mapping="KonnexHVAC">
+ <info>
<label>Info: Langzeit</label>
<address transform="DPT:1.001" type="">12/7/1</address>
</info>
+ <infotrigger uplabel="Sende 1" upvalue="1" shortupvalue="1" downlabel="Sende 0" downvalue="0" shortdownvalue="0" shorttime="300" align="center" infoposition="1" change="relative" format="%.1f%%">
+ <label>Infotrigger mit 300ms Kurzzeit</label>
+ <address transform="DPT:16.000" mode="read" variant="display">12/7/16</address>
+ <address transform="DPT:1.001" variant="button">12/7/1</address>
+ <address transform="DPT:1.001" variant="short">12/7/10</address>
+ </infotrigger>
</page>
<break/>
<slide min="-18" max="26">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|