|
From: <ma...@us...> - 2012-12-28 16:40:17
|
Revision: 1266
http://openautomation.svn.sourceforge.net/openautomation/?rev=1266&view=rev
Author: mayerch
Date: 2012-12-28 16:40:09 +0000 (Fri, 28 Dec 2012)
Log Message:
-----------
Allow <trigger> widget to handle short time and long time presses.
Modified Paths:
--------------
CometVisu/trunk/visu/structure/pure/trigger.js
CometVisu/trunk/visu/visu_config.xsd
CometVisu/trunk/visu/visu_config_demo.xml
Modified: CometVisu/trunk/visu/structure/pure/trigger.js
===================================================================
--- CometVisu/trunk/visu/structure/pure/trigger.js 2012-12-28 13:05:21 UTC (rev 1265)
+++ CometVisu/trunk/visu/structure/pure/trigger.js 2012-12-28 16:40:09 UTC (rev 1266)
@@ -21,6 +21,7 @@
var layout = $e.children('layout')[0];
var style = layout ? 'style="' + extractLayout( layout, type ) + '"' : '';
var value = $e.attr('value') ? $e.attr('value') : 0;
+ var shortvalue = $e.attr('shortvalue') ? $e.attr('shortvalue') : 0;
var classes = 'widget clearfix trigger';
if( $e.attr('align') ) {
classes+=" "+$e.attr('align');
@@ -30,7 +31,7 @@
if( $e.attr('flavour') ) flavour = $e.attr('flavour');// sub design choice
if( flavour ) ret_val.addClass( 'flavour_' + flavour );
var label = extractLabel( $e.find('label')[0] );
- var address = makeAddressList($e);
+ var address = makeAddressList($e, function(src, transform, mode, variant){return [true, variant=='short'];});
var actor = '<div class="actor switchUnpressed ';
if ( $e.attr( 'align' ) )
actor += $e.attr( 'align' );
@@ -47,26 +48,45 @@
valueElement.append( $(mappedValue[i]).clone() );
}
$actor.data( {
- 'address' : address,
- 'mapping' : $(element).attr('mapping'),
- 'styling' : $(element).attr('styling'),
- 'type' : 'trigger',
- 'align' : $e.attr('align'),
- 'sendValue': value
- } ).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');
- } ).setWidgetStyling(value);
+ 'address' : address,
+ 'mapping' : $(element).attr('mapping'),
+ 'styling' : $(element).attr('styling'),
+ 'type' : 'trigger',
+ 'align' : $e.attr('align'),
+ 'sendValue' : value,
+ 'shorttime' : parseFloat($e.attr('shorttime')) || -1,
+ 'shortValue': shortvalue
+ } ).bind( 'mousedown touchstart', this.mousedown ).
+ bind( 'mouseup touchend', this.mouseup ).
+ bind( 'mouseout touchout', this.mouseout ).
+ setWidgetStyling(value);
ret_val.append( label ).append( $actor );
return ret_val;
},
- action: function() {
- var data = $(this).data();
- for( var addr in data.address )
- {
- if( !(data.address[addr][1] & 2) ) continue; // skip when write flag not set
- visu.write( addr.substr(1), transformEncode( data.address[addr][0], data.sendValue ) );
- }
+ mousedown: function(event) {
+ $(this).removeClass('switchUnpressed').addClass('switchPressed').data( 'downtime', new Date().getTime() );
+ if( 'touchstart' == event.type )
+ {
+ // touchscreen => disable mouse emulation
+ $(this).unbind('mousedown').unbind('mouseup').unbind('mouseout');
+ }
+ },
+ mouseup: function(event) {
+ var $this = $(this);
+ if( $this.data( 'downtime' ) )
+ {
+ var data = $this.data();
+ var isShort = (new Date().getTime()) - data.downtime < data.shorttime;
+ for( var addr in data.address )
+ {
+ if( !(data.address[addr][1] & 2) ) continue; // skip when write flag not set
+ if( isShort == data.address[addr][2] )
+ visu.write( addr.substr(1), transformEncode( data.address[addr][0], isShort ? data.shortValue : data.sendValue ) );
+ }
+ }
+ $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 2012-12-28 13:05:21 UTC (rev 1265)
+++ CometVisu/trunk/visu/visu_config.xsd 2012-12-28 16:40:09 UTC (rev 1266)
@@ -491,6 +491,8 @@
<xsd:element name="address" type="address" minOccurs="1" />
</xsd:choice>
<xsd:attribute ref="value" use="required" />
+ <xsd:attribute name="shortvalue" type="xsd:string" use="optional" />
+ <xsd:attribute name="shorttime" type="xsd:decimal" use="optional" />
<xsd:attribute ref="mapping" use="optional" />
<xsd:attribute ref="styling" use="optional" />
<xsd:attribute ref="align" use="optional" />
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2012-12-28 13:05:21 UTC (rev 1265)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2012-12-28 16:40:09 UTC (rev 1266)
@@ -188,7 +188,7 @@
<label>Infotrigger: Audioquelle</label>
<address transform="DPT:5.010">12/7/105</address>
</infotrigger>
- <page name="Infotrigger: Erweitert..." align="center">
+ <page name="Trigger und Infotrigger: Erweitert..." align="center">
<text>Ein Infotrigger lässt sich in zwei verschiedenen Betriebsarten betreiben: relativ und absolut</text>
<line/>
<text>Relativ</text>
@@ -218,6 +218,27 @@
<label>Lautstärke</label>
<address transform="DPT:5.001">12/7/5</address>
</infotrigger>
+ <line/>
+ <text><layout colspan="12"/>Ein Trigger kann auch für Kurz- und Langzeit unterschiedliche Werte an unterschiedlich Adressen senden</text>
+ <break/>
+ <trigger value="1" shorttime="300" shortvalue="0">
+ <label>Trigger auf 300ms, sende Kurzzeit "0" und Langzeit "1"</label>
+ <address transform="DPT:1.001" type="">12/7/1</address>
+ <address transform="DPT:1.001" type="" variant="short">12/7/10</address>
+ </trigger>
+ <trigger value="0" shorttime="1000" shortvalue="1">
+ <label>Trigger auf 1000ms, sende Kurzzeit "1" und Langzeit "0"</label>
+ <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">
+ <label>Info: Kurzzeit</label>
+ <address transform="DPT:1.001" type="">12/7/10</address>
+ </info>
+ <info mapping="KonnexHVAC">
+ <label>Info: Langzeit</label>
+ <address transform="DPT:1.001" type="">12/7/1</address>
+ </info>
</page>
<break/>
<slide min="-18" max="26">
@@ -514,6 +535,7 @@
<line />
<page name="Subpage mit Flavour" flavour="lithium" align="center" >
<text><icon name="CometVisu" type="64" /> Icon links vom Text</text>
+ <text><icon name="CometVisu" type="64" flavour="antimony" /> Icon mit flavour links vom Text</text>
<page name="Subpage mit anderem Flavour" flavour="antimony" align="center" >
<text><icon name="CometVisu" type="64" /> Icon links vom Text</text>
</page>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|