You can subscribe to this list here.
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(121) |
Dec
(58) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2011 |
Jan
(38) |
Feb
(36) |
Mar
(7) |
Apr
(2) |
May
(32) |
Jun
(24) |
Jul
(16) |
Aug
(21) |
Sep
(17) |
Oct
(62) |
Nov
(60) |
Dec
(70) |
| 2012 |
Jan
(54) |
Feb
(41) |
Mar
(21) |
Apr
(38) |
May
(76) |
Jun
(47) |
Jul
(25) |
Aug
(72) |
Sep
(29) |
Oct
(64) |
Nov
(93) |
Dec
(97) |
| 2013 |
Jan
(100) |
Feb
(168) |
Mar
(115) |
Apr
(59) |
May
(37) |
Jun
(32) |
Jul
(45) |
Aug
(42) |
Sep
(24) |
Oct
(73) |
Nov
(64) |
Dec
(4) |
| 2014 |
Jan
(14) |
Feb
(57) |
Mar
(58) |
Apr
(10) |
May
(18) |
Jun
(12) |
Jul
(7) |
Aug
(12) |
Sep
(15) |
Oct
(6) |
Nov
(32) |
Dec
(17) |
| 2015 |
Jan
(50) |
Feb
(5) |
Mar
(1) |
Apr
(26) |
May
(10) |
Jun
(3) |
Jul
(3) |
Aug
(2) |
Sep
(3) |
Oct
(18) |
Nov
(18) |
Dec
(8) |
| 2016 |
Jan
(33) |
Feb
(35) |
Mar
(50) |
Apr
(20) |
May
(25) |
Jun
(17) |
Jul
(8) |
Aug
(73) |
Sep
(64) |
Oct
(51) |
Nov
(20) |
Dec
(14) |
| 2017 |
Jan
(41) |
Feb
(57) |
Mar
(44) |
Apr
(136) |
May
(32) |
Jun
(39) |
Jul
(2) |
Aug
(12) |
Sep
(32) |
Oct
(103) |
Nov
(12) |
Dec
(4) |
| 2018 |
Jan
(9) |
Feb
(1) |
Mar
(60) |
Apr
(24) |
May
(15) |
Jun
(1) |
Jul
(2) |
Aug
(23) |
Sep
(15) |
Oct
(57) |
Nov
(21) |
Dec
(77) |
| 2019 |
Jan
(62) |
Feb
(99) |
Mar
(98) |
Apr
(49) |
May
(6) |
Jun
(3) |
Jul
(6) |
Aug
(18) |
Sep
(9) |
Oct
(15) |
Nov
(30) |
Dec
(6) |
| 2020 |
Jan
(14) |
Feb
(2) |
Mar
(22) |
Apr
(33) |
May
(47) |
Jun
(12) |
Jul
|
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(5) |
Dec
(5) |
| 2021 |
Jan
(4) |
Feb
(101) |
Mar
(13) |
Apr
(32) |
May
(40) |
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
(25) |
Nov
(12) |
Dec
|
| 2022 |
Jan
(154) |
Feb
(82) |
Mar
(63) |
Apr
(27) |
May
(26) |
Jun
(5) |
Jul
(12) |
Aug
(23) |
Sep
(17) |
Oct
(37) |
Nov
(13) |
Dec
(21) |
| 2023 |
Jan
(43) |
Feb
(43) |
Mar
(15) |
Apr
(8) |
May
(3) |
Jun
(25) |
Jul
(6) |
Aug
(38) |
Sep
(5) |
Oct
(20) |
Nov
(9) |
Dec
(28) |
| 2024 |
Jan
(15) |
Feb
(2) |
Mar
(12) |
Apr
(2) |
May
(8) |
Jun
(10) |
Jul
(10) |
Aug
(2) |
Sep
(3) |
Oct
(15) |
Nov
(6) |
Dec
(20) |
| 2025 |
Jan
|
Feb
(2) |
Mar
(6) |
Apr
(2) |
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(11) |
Nov
(2) |
Dec
|
|
From: <ma...@us...> - 2011-02-27 12:54:48
|
Revision: 305
http://openautomation.svn.sourceforge.net/openautomation/?rev=305&view=rev
Author: mayerch
Date: 2011-02-27 12:54:42 +0000 (Sun, 27 Feb 2011)
Log Message:
-----------
Bug fix: default to untransformed data when the transform isn't known
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2011-02-24 12:01:21 UTC (rev 304)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-27 12:54:42 UTC (rev 305)
@@ -748,7 +748,10 @@
function defaultUpdate( e, data, passedElement )
{
var element = passedElement || $(this);
- var value = Transform[ element.data().address[ e.type ][0] ].decode( data );
+ var thisTransform = element.data().address[ e.type ][0];
+ var value = thisTransform in Transform ?
+ Transform[ element.data().address[ e.type ][0] ].decode( data ) :
+ data; // fall back - no Transform defined...
if( element.data( 'precision' ) )
value = Number( value ).toPrecision( element.data( 'precision' ) );
if( element.data( 'format' ) )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <net...@us...> - 2011-02-24 12:01:31
|
Revision: 304
http://openautomation.svn.sourceforge.net/openautomation/?rev=304&view=rev
Author: netzkind
Date: 2011-02-24 12:01:21 +0000 (Thu, 24 Feb 2011)
Log Message:
-----------
allow for tooltips in popup-diagrams (all designs); tooltips can be enabled via the editor for each diagram; format of timestamp is "toLocale"; tooltipped diagrams can be clicked without closing them
Modified Paths:
--------------
CometVisu/trunk/visu/designs/discreet/basic.css
CometVisu/trunk/visu/designs/discreet_sand/basic.css
CometVisu/trunk/visu/designs/discreet_slim/basic.css
CometVisu/trunk/visu/designs/pure/basic.css
CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
Modified: CometVisu/trunk/visu/designs/discreet/basic.css
===================================================================
--- CometVisu/trunk/visu/designs/discreet/basic.css 2011-02-22 21:44:41 UTC (rev 303)
+++ CometVisu/trunk/visu/designs/discreet/basic.css 2011-02-24 12:01:21 UTC (rev 304)
@@ -360,4 +360,13 @@
.diagram_preview {
width: 240px;
height: 2em;
+}
+
+#diagramTooltip {
+ z-index: 1000;
+ color: black;
+ border: 1px solid #fdd;
+ padding: 2px;
+ background-color: #fee;
+ opacity: 0.80;
}
\ No newline at end of file
Modified: CometVisu/trunk/visu/designs/discreet_sand/basic.css
===================================================================
--- CometVisu/trunk/visu/designs/discreet_sand/basic.css 2011-02-22 21:44:41 UTC (rev 303)
+++ CometVisu/trunk/visu/designs/discreet_sand/basic.css 2011-02-24 12:01:21 UTC (rev 304)
@@ -365,4 +365,13 @@
.tickLabel {
color: #453420;
+}
+
+#diagramTooltip {
+ z-index: 1000;
+ color: black;
+ border: 1px solid #fdd;
+ padding: 2px;
+ background-color: #fee;
+ opacity: 0.80;
}
\ No newline at end of file
Modified: CometVisu/trunk/visu/designs/discreet_slim/basic.css
===================================================================
--- CometVisu/trunk/visu/designs/discreet_slim/basic.css 2011-02-22 21:44:41 UTC (rev 303)
+++ CometVisu/trunk/visu/designs/discreet_slim/basic.css 2011-02-24 12:01:21 UTC (rev 304)
@@ -349,4 +349,13 @@
.diagram_preview {
width: 100%;
height: 2em;
+}
+
+#diagramTooltip {
+ z-index: 1000;
+ color: black;
+ border: 1px solid #fdd;
+ padding: 2px;
+ background-color: #fee;
+ opacity: 0.80;
}
\ No newline at end of file
Modified: CometVisu/trunk/visu/designs/pure/basic.css
===================================================================
--- CometVisu/trunk/visu/designs/pure/basic.css 2011-02-22 21:44:41 UTC (rev 303)
+++ CometVisu/trunk/visu/designs/pure/basic.css 2011-02-24 12:01:21 UTC (rev 304)
@@ -311,4 +311,13 @@
.clickable {
cursor: pointer;
+}
+
+#diagramTooltip {
+ z-index: 1000;
+ color: black;
+ border: 1px solid #fdd;
+ padding: 2px;
+ background-color: #fee;
+ opacity: 0.80;
}
\ No newline at end of file
Modified: CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
===================================================================
--- CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-22 21:44:41 UTC (rev 303)
+++ CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-24 12:01:21 UTC (rev 304)
@@ -103,15 +103,54 @@
diagram.data("refresh", $p.attr("refresh"));
var bDiagram = $("<div class=\"diagram\" id=\"" + id + "_big\"/>");
-
+
diagram.addClass("clickable");
+ var data = jQuery.extend({}, diagram.data());
diagram.bind("click", function() {
- bDiagram.data(jQuery.extend({}, diagram.data()));
+ bDiagram.data(data);
bDiagram.css({height: "90%"});
+
showPopup("unknown", {title: page.textContent, content: bDiagram});
bDiagram.parent("div").css({height: "100%", width: "90%", margin: "auto"}); // define parent as 100%!
- refreshDiagram(bDiagram, {yaxis: {labelWidth: null}});
+
+ var bDiagramOpts = {yaxis: {labelWidth: null}};
+ if ($p.attr("tooltip") == "true") {
+ // if we want to display a tooltip, we need to listen to the event
+ var previousPoint = null;
+ jQuery(bDiagram).bind("plothover", function (event, pos, item) {
+ jQuery("#x").text(pos.x.toFixed(2));
+ jQuery("#y").text(pos.y.toFixed(2));
+
+ if (item) {
+ if (previousPoint != item.datapoint) {
+ previousPoint = item.datapoint;
+
+ $("#diagramTooltip").remove();
+ var x = item.datapoint[0],
+ y = item.datapoint[1].toFixed(2);
+
+ var dte = new Date(x);
+
+ showDiagramTooltip(item.pageX, item.pageY,
+ dte.toLocaleString() + ": " + y + jQuery(this).data("unit"));
+ }
+ }
+ else {
+ $("#diagramTooltip").remove();
+ previousPoint = null;
+ }
+
+ })
+ .bind("click", function(event) {
+ // don't let the popup know about the click, or it will close on touch-displays
+ event.stopPropagation();
+ });
+
+ bDiagramOpts = jQuery.extend(bDiagramOpts, {grid: {hoverable: true, clickable: true} });
+ }
+
+ refreshDiagram(bDiagram, bDiagramOpts);
return false;
});
@@ -123,7 +162,8 @@
rrd: {type: "string", required: true},
unit: {type: "string", required: false},
series: {type: "list", required: false, list: {day: "1 day", week: "1 week", month: "1 month", year: "1 year"}},
- refresh: {type: "numeric", required: false}
+ refresh: {type: "numeric", required: false},
+ tooltip: {type: "list", required: false, list: {true: "yes", false: "no"}},
},
content: {type: "string", required: true}
});
@@ -132,6 +172,16 @@
data: $("<span class='link'><a href='#' /></a>").find("a").css("color")
};
+function showDiagramTooltip(x, y, contents) {
+ $('<div id="diagramTooltip">' + contents + '</div>').css( {
+ position: 'absolute',
+ display: 'none',
+ top: y + 5,
+ left: x + 5,
+ }).appendTo("body").fadeIn(200);
+}
+
+
function refreshDiagram(diagram, flotoptions, data) {
var diagram = $(diagram);
var config = jQuery.extend(true, {series: diagram.data("series")}, data || {});
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-22 21:44:48
|
Revision: 303
http://openautomation.svn.sourceforge.net/openautomation/?rev=303&view=rev
Author: mayerch
Date: 2011-02-22 21:44:41 +0000 (Tue, 22 Feb 2011)
Log Message:
-----------
Changed disabling of text selection (which is annoying on a touch device) from JavaScript to CSS3.
This will fix a problem on Chromium where the editor didn't work as the all mousedowns were disabled.
Modified Paths:
--------------
CometVisu/trunk/visu/designs/pure/basic.css
CometVisu/trunk/visu/lib/templateengine.js
Modified: CometVisu/trunk/visu/designs/pure/basic.css
===================================================================
--- CometVisu/trunk/visu/designs/pure/basic.css 2011-02-20 21:10:59 UTC (rev 302)
+++ CometVisu/trunk/visu/designs/pure/basic.css 2011-02-22 21:44:41 UTC (rev 303)
@@ -7,6 +7,10 @@
font-size: 6mm;
overflow: hidden;
margin:0;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ user-select: none;
}
h1
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2011-02-20 21:10:59 UTC (rev 302)
+++ CometVisu/trunk/visu/lib/templateengine.js 2011-02-22 21:44:41 UTC (rev 303)
@@ -68,6 +68,8 @@
window.setTimeout("$.get( 'visu_config" + configSuffix + ".xml', parseXML );", 200);
// disable text selection - it's annoying on a touch screen!
+ /*
+ * Now in the CSS!
if($.browser.mozilla)
{//Firefox
$('body').css('MozUserSelect','none');
@@ -76,6 +78,7 @@
} else {//Opera, etc.
$(document).mousedown(function(){return false;});
}
+ */
} );
$(window).unload(function() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-20 21:11:06
|
Revision: 302
http://openautomation.svn.sourceforge.net/openautomation/?rev=302&view=rev
Author: mayerch
Date: 2011-02-20 21:10:59 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
- Changed info widget from "precision" to "format", i.e. now it's possible to use printf syntax to format the displayed value in an info widget.
- Added example of the use of the Konnex HVAC mode (this might be later changed to a more specialized version)
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 20:57:45 UTC (rev 301)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-20 21:10:59 UTC (rev 302)
@@ -137,7 +137,7 @@
actor += '</div>';
var $actor = $(actor).data({
'address' : address,
- 'precision': $p.attr('precision'),
+ 'format' : $p.attr('format'),
'mapping' : $p.attr('mapping'),
'styling' : $p.attr('styling')
});
@@ -149,7 +149,7 @@
attributes: {
pre: { type: 'string', required: false },
post: { type: 'string', required: false },
- precision: { type: 'precision', required: false },
+ format: { type: 'format', required: false },
mapping: { type: 'mapping', required: false },
styling: { type: 'styling', required: false }
},
@@ -751,6 +751,8 @@
var value = Transform[ element.data().address[ e.type ][0] ].decode( data );
if( element.data( 'precision' ) )
value = Number( value ).toPrecision( element.data( 'precision' ) );
+ if( element.data( 'format' ) )
+ value = sprintf( element.data( 'format' ), value );
element.data( 'value', value );
element.find('.value').text( map( value, element ) );
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 20:57:45 UTC (rev 301)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 21:10:59 UTC (rev 302)
@@ -82,6 +82,10 @@
<label>Multitrigger - Szenenaufruf</label>
<address transform="DPT:5.010" readonly="false" type="">11/2/50</address>
</multitrigger>
+ <multitrigger button1label="Auto" button1value="auto" button2label="Komfort" button2value="comfort" button3label="Standy By" button3value="standby" button4label="Economy" button4value="economy">
+ <label>KONNEX Betriebsart</label>
+ <address transform="DPT:20.102" readonly="false" type="">3/1/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">
@@ -97,7 +101,7 @@
1/2/60
1/2/61
</colorchooser>
- <info precision="4">
+ <info format="%.2f">
<label>R</label>
<address transform="DPT:5.001" type="">1/2/59</address>
</info>
@@ -105,7 +109,7 @@
<label>R</label>
<address transform="DPT:5.001" type="">1/2/59</address>
</slide>
- <info precision="4">
+ <info format="%.2f">
<label>G</label>
<address transform="DPT:5.001" type="">1/2/60</address>
</info>
@@ -113,7 +117,7 @@
<label>G</label>
<address transform="DPT:5.001" type="">1/2/60</address>
</slide>
- <info precision="4">
+ <info format="%.2f">
<label>B</label>
<address transform="DPT:5.001" type="">1/2/61</address>
</info>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-20 20:57:51
|
Revision: 301
http://openautomation.svn.sourceforge.net/openautomation/?rev=301&view=rev
Author: mayerch
Date: 2011-02-20 20:57:45 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
- Added transform for datapoint 20.102 (DPT_HVACMode)
- Extended the transform data structure by a "range" element that might contain min/max or an enum
Modified Paths:
--------------
CometVisu/trunk/visu/transforms/transform_knx.js
Modified: CometVisu/trunk/visu/transforms/transform_knx.js
===================================================================
--- CometVisu/trunk/visu/transforms/transform_knx.js 2011-02-20 15:52:44 UTC (rev 300)
+++ CometVisu/trunk/visu/transforms/transform_knx.js 2011-02-20 20:57:45 UTC (rev 301)
@@ -225,6 +225,57 @@
},
unit : '-'
},
+ '20.102': {
+ name : 'DPT_HVACMode',
+ lname : {
+ 'de': 'KONNEX Betriebsart'
+ },
+ unit : '-',
+ range : {
+ enum: [ 'auto', 'comfort', 'standby', 'economy', 'building_protection' ]
+ },
+ encode: function( phy ){
+ var val;
+ switch( phy )
+ {
+ case 1:
+ case 'comfort':
+ val = 1;
+ break;
+ case 2:
+ case 'standby':
+ val = 2;
+ break;
+ case 3:
+ case 'economy':
+ val = 3;
+ break;
+ case 4:
+ case 'building_protection':
+ val = 4;
+ break;
+ default: // actually "case 0:" / "auto"
+ val = 0;
+ }
+ val = val.toString( 16 );
+ return (val.length == 1 ? '800' : '80') + val;
+ },
+ decode: function( hex ){
+ switch( parseInt( hex, 16 ) )
+ {
+ case 1:
+ return 'comfort';
+ case 2:
+ return 'standby';
+ case 3:
+ return 'economy';
+ case 4:
+ return 'building_protection';
+ default: // actually "case 0:"
+ return 'auto';
+ }
+ },
+ },
/* 9 Zeilen:
},
'.001' : {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-20 15:52:50
|
Revision: 300
http://openautomation.svn.sourceforge.net/openautomation/?rev=300&view=rev
Author: mayerch
Date: 2011-02-20 15:52:44 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
New Feature: Allow the page links to be aligned (e.g. centered).
Note: This feature isn't supported by the editor yet, it has to be set manually in the config file
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 14:48:44 UTC (rev 299)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-20 15:52:44 UTC (rev 300)
@@ -57,8 +57,11 @@
var style = ( '0' != path ) ? 'display:none' : '';
var name = $p.attr('name');
var type = $p.attr('type'); //text, 2d or 3d
+ var style = '';
+ if( $p.attr('align') ) style += 'text-align:' + $p.attr('align') + ';';
+ if( style != '' ) style = 'style="' + style + '"';
ret_val.addClass( 'link' ).addClass('pagelink');
- ret_val.append( '<a href="javascript:scrollToPage(\''+path+'\')">' + name + '</a>' );
+ ret_val.append( '<div ' + style + '><a href="javascript:scrollToPage(\''+path+'\')">' + name + '</a></div>' );
var childs = $p.children();
var container = $( '<div class="clearfix"/>' );
container.append( '<h1>' + name + '</h1>' );
@@ -69,6 +72,7 @@
return ret_val;
},
attributes: {
+ align:{ type: 'string', required: false },
name: { type: 'string', required: true }
},
elements: {
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 14:48:44 UTC (rev 299)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2011-02-20 15:52:44 UTC (rev 300)
@@ -88,7 +88,7 @@
<label>Update every 10 sec</label>
</image>
<designtoggle>Change design</designtoggle>
- <page name="iframe Test">
+ <page name="iframe Test" align="center" >
<iframe src="http://www.cometvisu.org" width="500px" height="500px"/>
</page>
<colorchooser>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-20 14:48:50
|
Revision: 299
http://openautomation.svn.sourceforge.net/openautomation/?rev=299&view=rev
Author: mayerch
Date: 2011-02-20 14:48:44 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
Modified Paths:
--------------
CometVisu/trunk/ChangeLog
Modified: CometVisu/trunk/ChangeLog
===================================================================
--- CometVisu/trunk/ChangeLog 2011-02-20 14:29:46 UTC (rev 298)
+++ CometVisu/trunk/ChangeLog 2011-02-20 14:48:44 UTC (rev 299)
@@ -1,7 +1,7 @@
HEAD
====
--
+- New Feature: Multitrigger widget
0.5.3
=====
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <ma...@us...> - 2011-02-20 12:53:21
|
Revision: 297
http://openautomation.svn.sourceforge.net/openautomation/?rev=297&view=rev
Author: mayerch
Date: 2011-02-20 12:53:15 +0000 (Sun, 20 Feb 2011)
Log Message:
-----------
Fix for bug https://sourceforge.net/tracker/?func=detail&aid=3187421&group_id=296426&atid=1251141
Modified Paths:
--------------
CometVisu/trunk/visu/edit/style_edit.css
Modified: CometVisu/trunk/visu/edit/style_edit.css
===================================================================
--- CometVisu/trunk/visu/edit/style_edit.css 2011-02-13 21:35:02 UTC (rev 296)
+++ CometVisu/trunk/visu/edit/style_edit.css 2011-02-20 12:53:15 UTC (rev 297)
@@ -75,6 +75,8 @@
display: none;
position: absolute;
width: 97%;
+ height: 80%;
+ overflow: auto;
margin: auto;
top: 2em;
left: .5em;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-13 21:35:08
|
Revision: 296
http://openautomation.svn.sourceforge.net/openautomation/?rev=296&view=rev
Author: mayerch
Date: 2011-02-13 21:35:02 +0000 (Sun, 13 Feb 2011)
Log Message:
-----------
Added a sprintf funtion - copied from http://www.webtoolkit.info/
Modified Paths:
--------------
CometVisu/trunk/visu/lib/compatibility.js
Modified: CometVisu/trunk/visu/lib/compatibility.js
===================================================================
--- CometVisu/trunk/visu/lib/compatibility.js 2011-02-13 16:55:20 UTC (rev 295)
+++ CometVisu/trunk/visu/lib/compatibility.js 2011-02-13 21:35:02 UTC (rev 296)
@@ -2,4 +2,136 @@
if (typeof (console) == "undefined") {
console = {};
console.log = console.debug = console.info = console.warn = console.error = function() {}
-}
\ No newline at end of file
+}
+
+/**
+ *
+ * Javascript sprintf
+ * http://www.webtoolkit.info/
+ *
+ *
+ **/
+
+sprintfWrapper = {
+
+ init : function () {
+
+ if (typeof arguments == "undefined") { return null; }
+ if (arguments.length < 1) { return null; }
+ if (typeof arguments[0] != "string") { return null; }
+ if (typeof RegExp == "undefined") { return null; }
+
+ var string = arguments[0];
+ var exp = new RegExp(/(%([%]|(\-)?(\+|\x20)?(0)?(\d+)?(\.(\d)?)?([bcdfosxX])))/g);
+ var matches = new Array();
+ var strings = new Array();
+ var convCount = 0;
+ var stringPosStart = 0;
+ var stringPosEnd = 0;
+ var matchPosEnd = 0;
+ var newString = '';
+ var match = null;
+
+ while (match = exp.exec(string)) {
+ if (match[9]) { convCount += 1; }
+
+ stringPosStart = matchPosEnd;
+ stringPosEnd = exp.lastIndex - match[0].length;
+ strings[strings.length] = string.substring(stringPosStart, stringPosEnd);
+
+ matchPosEnd = exp.lastIndex;
+ matches[matches.length] = {
+ match: match[0],
+ left: match[3] ? true : false,
+ sign: match[4] || '',
+ pad: match[5] || ' ',
+ min: match[6] || 0,
+ precision: match[8],
+ code: match[9] || '%',
+ negative: parseInt(arguments[convCount]) < 0 ? true : false,
+ argument: String(arguments[convCount])
+ };
+ }
+ strings[strings.length] = string.substring(matchPosEnd);
+
+ if (matches.length == 0) { return string; }
+ if ((arguments.length - 1) < convCount) { return null; }
+
+ var code = null;
+ var match = null;
+ var i = null;
+
+ for (i=0; i<matches.length; i++) {
+
+ if (matches[i].code == '%') { substitution = '%' }
+ else if (matches[i].code == 'b') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(2));
+ substitution = sprintfWrapper.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'c') {
+ matches[i].argument = String(String.fromCharCode(parseInt(Math.abs(parseInt(matches[i].argument)))));
+ substitution = sprintfWrapper.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'd') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)));
+ substitution = sprintfWrapper.convert(matches[i]);
+ }
+ else if (matches[i].code == 'f') {
+ matches[i].argument = String(Math.abs(parseFloat(matches[i].argument)).toFixed(matches[i].precision ? matches[i].precision : 6));
+ substitution = sprintfWrapper.convert(matches[i]);
+ }
+ else if (matches[i].code == 'o') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(8));
+ substitution = sprintfWrapper.convert(matches[i]);
+ }
+ else if (matches[i].code == 's') {
+ matches[i].argument = matches[i].argument.substring(0, matches[i].precision ? matches[i].precision : matches[i].argument.length)
+ substitution = sprintfWrapper.convert(matches[i], true);
+ }
+ else if (matches[i].code == 'x') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = sprintfWrapper.convert(matches[i]);
+ }
+ else if (matches[i].code == 'X') {
+ matches[i].argument = String(Math.abs(parseInt(matches[i].argument)).toString(16));
+ substitution = sprintfWrapper.convert(matches[i]).toUpperCase();
+ }
+ else {
+ substitution = matches[i].match;
+ }
+
+ newString += strings[i];
+ newString += substitution;
+
+ }
+ newString += strings[i];
+
+ return newString;
+
+ },
+
+ convert : function(match, nosign){
+ if (nosign) {
+ match.sign = '';
+ } else {
+ match.sign = match.negative ? '-' : match.sign;
+ }
+ var l = match.min - match.argument.length + 1 - match.sign.length;
+ var pad = new Array(l < 0 ? 0 : l).join(match.pad);
+ if (!match.left) {
+ if (match.pad == "0" || nosign) {
+ return match.sign + pad + match.argument;
+ } else {
+ return pad + match.sign + match.argument;
+ }
+ } else {
+ if (match.pad == "0" || nosign) {
+ return match.sign + match.argument + pad.replace(/0/g, ' ');
+ } else {
+ return match.sign + match.argument + pad;
+ }
+ }
+ }
+}
+
+sprintf = sprintfWrapper.init;
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-13 16:55:27
|
Revision: 295
http://openautomation.svn.sourceforge.net/openautomation/?rev=295&view=rev
Author: mayerch
Date: 2011-02-13 16:55:20 +0000 (Sun, 13 Feb 2011)
Log Message:
-----------
New Feature: The footer entries containing an href attribute can be automatically extended by the current config-file information or by all search parameters.
Modified Paths:
--------------
CometVisu/trunk/visu/lib/templateengine.js
CometVisu/trunk/visu/visu_config.xml
CometVisu/trunk/visu/visu_config_demo.xml
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2011-02-13 13:16:42 UTC (rev 294)
+++ CometVisu/trunk/visu/lib/templateengine.js 2011-02-13 16:55:20 UTC (rev 295)
@@ -198,13 +198,26 @@
$( 'meta > statusbar status', xml ).each( function(i){
var type = $(this).attr('type');
var condition = $(this).attr('condition');
+ var extend = $(this).attr('hrefextend');
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
var editMode = 'edit_config.html' == sPage;
if( editMode && '!edit' == condition ) return;
if( !editMode && 'edit' == condition ) return;
- //$('.footer').append( $(this.textContent) );
- $('.footer').html( $('.footer').html() + this.textContent );
+ var text = this.textContent;
+ switch( extend )
+ {
+ case 'all': // append all parameters
+ var search = window.location.search.replace( /\$/g, '$$$$' );
+ text = text.replace( /(href="[^"]*)(")/g, '$1' + search + '$2' );
+ break;
+ case 'config': // append config file info
+ var search = window.location.search.replace( /\$/g, '$$$$' );
+ search = search.replace( /.*(config=[^&]*).*|.*/, '?$1' );
+ text = text.replace( /(href="[^"]*)(")/g, '$1' + search + '$2' );
+ break;
+ }
+ $('.footer').html( $('.footer').html() + text );
});
// adapt width for pages to show
Modified: CometVisu/trunk/visu/visu_config.xml
===================================================================
--- CometVisu/trunk/visu/visu_config.xml 2011-02-13 13:16:42 UTC (rev 294)
+++ CometVisu/trunk/visu/visu_config.xml 2011-02-13 16:55:20 UTC (rev 295)
@@ -13,10 +13,10 @@
- <a href=".">Reload</a>
- <a href="?config=demo">Widget Demo</a>
]]></status>
- <status type="html" condition="!edit"><![CDATA[
+ <status type="html" condition="!edit" hrefextend="config"><![CDATA[
- <a href="edit_config.html">Edit</a>
]]></status>
- <status type="html" condition="edit"><![CDATA[
+ <status type="html" condition="edit" hrefextend="all"><![CDATA[
- <a href=".">normal Mode</a>
]]></status>
<status type="html"><![CDATA[
@@ -25,7 +25,8 @@
</statusbar>
</meta>
<page name="Overview">
- <line />
+ <line/>
<text align="center">Welcome to the CometVisu!</text>
+ <line/>
</page>
</pages>
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2011-02-13 13:16:42 UTC (rev 294)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2011-02-13 16:55:20 UTC (rev 295)
@@ -38,13 +38,13 @@
<statusbar>
<status type="html"><![CDATA[
<img src="icon/comet_64_ff8000.png" alt="CometVisu" /> by <a href="http://www.cometvisu.org/">CometVisu.org</a>
- - <a href=".?config=neu">Reload</a>
+ - <a href=".?config=demo">Reload</a>
- <a href=".">Default Config</a>
]]></status>
- <status type="html" condition="!edit"><![CDATA[
+ <status type="html" condition="!edit" hrefextend="config"><![CDATA[
- <a href="edit_config.html">Edit</a>
]]></status>
- <status type="html" condition="edit"><![CDATA[
+ <status type="html" condition="edit" hrefextend="all"><![CDATA[
- <a href=".">normal Mode</a>
]]></status>
<status type="html"><![CDATA[
@@ -69,7 +69,7 @@
<address transform="DPT:9">12/4/250</address>
<address transform="DPT:9.001" readonly="true">12/4/253</address>
</slide>
- <break />
+ <break/>
<trigger value="0" mapping="OnOff">
<label>Terrase Licht 0</label>
<address transform="DPT:1.001">1/0/2</address>
@@ -78,7 +78,7 @@
<label>Terrase Licht 1</label>
<address transform="DPT:1.001">1/0/2</address>
</trigger>
- <line />
+ <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">
<label>Update every 10 sec</label>
@@ -88,17 +88,36 @@
<iframe src="http://www.cometvisu.org" width="500px" height="500px"/>
</page>
<colorchooser>
- <label>A colorChooser</label>
- <address transform="DPT:5.001" color="r">1/2/59</address>
- <address transform="DPT:5.001" color="g">1/2/60</address>
- <address transform="DPT:5.001" color="b">1/2/61</address>
+ A colorChooser
+ 1/2/59
+ 1/2/60
+ 1/2/61
</colorchooser>
- <info precision="4"><label>R</label><address transform="DPT:5.001">1/2/59</address></info>
- <slide><label>R</label><address transform="DPT:5.001">1/2/59</address></slide>
- <info precision="4"><label>G</label><address transform="DPT:5.001">1/2/60</address></info>
- <slide><label>G</label><address transform="DPT:5.001">1/2/60</address></slide>
- <info precision="4"><label>B</label><address transform="DPT:5.001">1/2/61</address></info>
- <slide><label>B</label><address transform="DPT:5.001">1/2/61</address></slide>
- <diagram_popup undefined="DALI Strom L1" rrd="200_DALI_Linie_1_Strom" unit="mA" series="day" refresh="300">DALI Strom L1</diagram_popup>
+ <info precision="4">
+ <label>R</label>
+ <address transform="DPT:5.001">1/2/59</address>
+ </info>
+ <slide>
+ <label>R</label>
+ <address transform="DPT:5.001">1/2/59</address>
+ </slide>
+ <info precision="4">
+ <label>G</label>
+ <address transform="DPT:5.001">1/2/60</address>
+ </info>
+ <slide>
+ <label>G</label>
+ <address transform="DPT:5.001">1/2/60</address>
+ </slide>
+ <info precision="4">
+ <label>B</label>
+ <address transform="DPT:5.001">1/2/61</address>
+ </info>
+ <slide>
+ <label>B</label>
+ <address transform="DPT:5.001">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"/>
</page>
</pages>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-13 13:16:49
|
Revision: 294
http://openautomation.svn.sourceforge.net/openautomation/?rev=294&view=rev
Author: mayerch
Date: 2011-02-13 13:16:42 +0000 (Sun, 13 Feb 2011)
Log Message:
-----------
Fix bug in the slider that prevented the updates during the sliding.
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2011-02-13 13:03:53 UTC (rev 293)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-13 13:16:42 UTC (rev 294)
@@ -218,8 +218,8 @@
for( var addr in data.address )
{
if( data.address[addr][1] == true ) continue; // skip read only
- var dv = Transform[data.address[addr][0]].encode( data.value );
- if( dv != Transform[data.address[addr][0]].encode( asv ) )
+ var dv = Transform[data.address[addr][0]].encode( asv );
+ if( dv != Transform[data.address[addr][0]].encode( data.value ) )
visu.write( addr.substr(1), dv );
}
data.value = actor.slider('value');
@@ -310,7 +310,7 @@
},
content: false
});
-
+
this.addCreator('trigger', {
create: function( page, path ) {
var $p = $(page);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-13 13:03:59
|
Revision: 293
http://openautomation.svn.sourceforge.net/openautomation/?rev=293&view=rev
Author: mayerch
Date: 2011-02-13 13:03:53 +0000 (Sun, 13 Feb 2011)
Log Message:
-----------
Fix DPT 5.004 (and thus also the important 5.010) encoding when a non natural number (i.e. no integer) got passed.
This caused troubles in the very important case where a slider is connected to a dimmer.
Modified Paths:
--------------
CometVisu/trunk/visu/transforms/transform_knx.js
Modified: CometVisu/trunk/visu/transforms/transform_knx.js
===================================================================
--- CometVisu/trunk/visu/transforms/transform_knx.js 2011-02-11 22:35:52 UTC (rev 292)
+++ CometVisu/trunk/visu/transforms/transform_knx.js 2011-02-13 13:03:53 UTC (rev 293)
@@ -82,7 +82,7 @@
name : 'DPT_Percent_U8',
unit : '%',
encode: function( phy ){
- var val = phy.toString( 16 );
+ var val = parseInt( phy ).toString( 16 );
return (val.length == 1 ? '800' : '80') + val;
},
decode: function( hex ){
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <net...@us...> - 2011-02-11 22:35:58
|
Revision: 292
http://openautomation.svn.sourceforge.net/openautomation/?rev=292&view=rev
Author: netzkind
Date: 2011-02-11 22:35:52 +0000 (Fri, 11 Feb 2011)
Log Message:
-----------
missed changes to diagram/structure_plugin.js
Modified Paths:
--------------
CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
Modified: CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
===================================================================
--- CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-11 22:06:12 UTC (rev 291)
+++ CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-11 22:35:52 UTC (rev 292)
@@ -63,7 +63,7 @@
width: {type: "string", required: false},
height: {type: "string", required: false},
unit: {type: "string", required: false},
- series: {type: "list", required: false, list: {day: "day", week: "week", month: "month", year: "year"}},
+ series: {type: "list", required: false, list: {day: "1 day", week: "1 week", month: "1 month", year: "1 year"}},
refresh: {type: "numeric", required: false}
},
content: {type: "string", required: true}
@@ -122,7 +122,7 @@
attributes: {
rrd: {type: "string", required: true},
unit: {type: "string", required: false},
- series: {type: "list", required: false, list: {day: "day", week: "week", month: "month", year: "year"}},
+ series: {type: "list", required: false, list: {day: "1 day", week: "1 week", month: "1 month", year: "1 year"}},
refresh: {type: "numeric", required: false}
},
content: {type: "string", required: true}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <net...@us...> - 2011-02-11 22:06:18
|
Revision: 291
http://openautomation.svn.sourceforge.net/openautomation/?rev=291&view=rev
Author: netzkind
Date: 2011-02-11 22:06:12 +0000 (Fri, 11 Feb 2011)
Log Message:
-----------
added "list" as valid attribute-type, see plugins/diagram/structure_plugin.js for an example of how to use it
Modified Paths:
--------------
CometVisu/trunk/visu/edit/visuconfig_edit.js
CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
Modified: CometVisu/trunk/visu/edit/visuconfig_edit.js
===================================================================
--- CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-11 21:58:58 UTC (rev 290)
+++ CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-11 22:06:12 UTC (rev 291)
@@ -497,6 +497,19 @@
break;
case "datatype":
break;
+ case "list":
+ $input.append($("<select id=\"add_" + index + "\" />")
+ .append($("<option />").attr("value", "").html("-")));
+ jQuery.each(e.list, function (i, val) {
+ $input.find("select#add_" + index).append($("<option />").attr("value", i).html(val));
+ });
+
+ if (typeof values._attributes != "undefined"
+ && typeof values._attributes[index] != "undefined") {
+ $input.find("option[value=" + values._attributes[index] + "]").attr("selected", "selected");
+ }
+
+ break;
default:
$input.append($("<input type=\"text\" id=\"add_" + index + "\" />"));
Modified: CometVisu/trunk/visu/plugins/diagram/structure_plugin.js
===================================================================
--- CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-11 21:58:58 UTC (rev 290)
+++ CometVisu/trunk/visu/plugins/diagram/structure_plugin.js 2011-02-11 22:06:12 UTC (rev 291)
@@ -63,7 +63,7 @@
width: {type: "string", required: false},
height: {type: "string", required: false},
unit: {type: "string", required: false},
- series: {type: "string", required: false},
+ series: {type: "list", required: false, list: {day: "day", week: "week", month: "month", year: "year"}},
refresh: {type: "numeric", required: false}
},
content: {type: "string", required: true}
@@ -122,7 +122,7 @@
attributes: {
rrd: {type: "string", required: true},
unit: {type: "string", required: false},
- series: {type: "string", required: false},
+ series: {type: "list", required: false, list: {day: "day", week: "week", month: "month", year: "year"}},
refresh: {type: "numeric", required: false}
},
content: {type: "string", required: true}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <net...@us...> - 2011-02-11 21:59:04
|
Revision: 290
http://openautomation.svn.sourceforge.net/openautomation/?rev=290&view=rev
Author: netzkind
Date: 2011-02-11 21:58:58 +0000 (Fri, 11 Feb 2011)
Log Message:
-----------
added attribute "type" for addresses
Modified Paths:
--------------
CometVisu/trunk/visu/edit/style_edit.css
CometVisu/trunk/visu/edit/visuconfig_edit.js
CometVisu/trunk/visu/lib/templateengine.js
Modified: CometVisu/trunk/visu/edit/style_edit.css
===================================================================
--- CometVisu/trunk/visu/edit/style_edit.css 2011-02-06 18:53:51 UTC (rev 289)
+++ CometVisu/trunk/visu/edit/style_edit.css 2011-02-11 21:58:58 UTC (rev 290)
@@ -84,7 +84,7 @@
#addMaster .multi_element {
width: 90%;
- height: 8em;
+ height: 10em;
overflow: auto;
border: 1px solid #444;
-moz-border-radius: 3px;
@@ -122,7 +122,7 @@
height: 1em;
}
-.element .value, .element .transform, .element .readonly {
+.element .value, .element .transform, .element .readonly, .element .addresstype {
font-weight: normal;
height: 1em;
font-size: small;
@@ -138,8 +138,25 @@
.element .readonly {
margin-left: .4em;
+ font-style: italic;
}
+.element .addresstype {
+ float: left;
+ margin-left: .4em;
+ font-weight: bold;
+}
+
+.element .addresstype:before {
+ content: "(";
+}
+
+.element .addresstype:after {
+ content: ")";
+}
+
+
+
.multi_element .element .edit {
}
Modified: CometVisu/trunk/visu/edit/visuconfig_edit.js
===================================================================
--- CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-06 18:53:51 UTC (rev 289)
+++ CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-11 21:58:58 UTC (rev 290)
@@ -244,6 +244,16 @@
}
}
+ if ($e.hasClass("addresstype")) {
+ element.find("label").html("addresstype");
+ myElement.append($("<input class=\"add_addresstype\" />"));
+ if (typeof $e.text() != "undefined") {
+ // pre-set the value
+ myElement.find(":input").val($e.text());
+ }
+
+ }
+
if (element.find("select")[0]) {
var select = element.find("select");
select.change(function() {
@@ -272,6 +282,7 @@
objData.textContent = $e.find("input.add_address").val();
objData._attributes = {};
objData._attributes.transform = $e.find(".add_transform").val();
+ objData._attributes.type = $e.find(".add_addresstype").val();
objData._attributes.readonly = $e.find(".add_readonly:checked").val();
// remove this item and insert a new one instead
@@ -401,6 +412,7 @@
objData.textContent = "";
objData._attributes = {};
objData._attributes.transform = "";
+ objData._attributes.type = "";
objData._attributes.readonly = false;
var elementDiv = createAddressEditorElement(objData);
@@ -578,6 +590,7 @@
$elements.each(function (index, e) {
$address = $("<address />")
.attr("transform", $(e).data("transform"))
+ .attr("addresstype", $(e).data("addresstype"))
.attr("readonly", $(e).data("readonly") == true ? "true" : "false")
.append($(e).data("address"));
dataObject.append($address);
@@ -730,6 +743,7 @@
myElement._attributes.transform = jQuery(element).attr("transform");
myElement._attributes.readonly = jQuery(element).attr("readonly");
+ myElement._attributes.type = jQuery(element).attr("type") || "";
break;
default:
// mostly labels
@@ -884,15 +898,22 @@
elementDiv.append("<div class=\"title\" />")
.append("<div class=\"value editable\" />")
.append("<div class=\"transform editable\" />")
+ .append("<div class=\"addresstype editable\" />")
.append("<div class=\"readonly editable\" />");
//myDiv.find(".title").append();
var t = getAddressesObject();
elementDiv.find(".title").append(t.find("option[value=" + element.textContent + "]").text());
elementDiv.find(".value").append(element.textContent);
elementDiv.find(".transform").append(element._attributes.transform);
+ if (element._attributes.type != "undefined" && element._attributes.type != "") {
+ elementDiv.find(".addresstype").append(element._attributes.type).show();
+ } else {
+ elementDiv.find(".addresstype").hide();
+ }
elementDiv.find(".readonly").append(element._attributes.readonly == "true" ? "readonly" : "")
elementDiv.data("transform", element._attributes.transform)
+ .data("addresstype", element._attributes.type)
.data("readonly", element._attributes.readonly == "true" ? true : false)
.data("address", element.textContent);
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2011-02-06 18:53:51 UTC (rev 289)
+++ CometVisu/trunk/visu/lib/templateengine.js 2011-02-11 21:58:58 UTC (rev 290)
@@ -115,11 +115,10 @@
$( 'head' ).append( '<style type="text/css">.page{width:' + (width-0) + 'px;}</style>' );
// do nothing
} else {
- var width = $( window ).width();
- var height = $( window ).height() - $( '#top' ).outerHeight(true) - $( '#bottom' ).outerHeight(true) - 2;
- $( '#main' ).css( 'width', width ).css( 'height', height );
- $( 'head' ).append( '<style type="text/css">.page{width:' + (width-0) + 'px;height:' + height + 'px;}</style>' );
-
+ var width = $( window ).width();
+ var height = $( window ).height() - $( '#top' ).outerHeight(true) - $( '#bottom' ).outerHeight(true) - 2;
+ $( '#main' ).css( 'width', width ).css( 'height', height );
+ $( 'head' ).append( '<style type="text/css">.page{width:' + (width-0) + 'px;height:' + height + 'px;}</style>' );
}
main_scroll != undefined && main_scroll.seekTo( main_scroll.getIndex(), 0 ); // fix scroll
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:53:57
|
Revision: 289
http://openautomation.svn.sourceforge.net/openautomation/?rev=289&view=rev
Author: mayerch
Date: 2011-02-06 18:53:51 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Preparaions for release 0.5.3
Modified Paths:
--------------
CometVisu/branches/release_0.5.3/ChangeLog
CometVisu/trunk/ChangeLog
Modified: CometVisu/branches/release_0.5.3/ChangeLog
===================================================================
--- CometVisu/branches/release_0.5.3/ChangeLog 2011-02-06 18:38:36 UTC (rev 288)
+++ CometVisu/branches/release_0.5.3/ChangeLog 2011-02-06 18:53:51 UTC (rev 289)
@@ -1,5 +1,5 @@
-HEAD
-====
+0.5.3
+=====
- New Design: "discreet_sand": dark text, light background
- New Design: "discreet_slim": more widgets per line for bigger screens
Modified: CometVisu/trunk/ChangeLog
===================================================================
--- CometVisu/trunk/ChangeLog 2011-02-06 18:38:36 UTC (rev 288)
+++ CometVisu/trunk/ChangeLog 2011-02-06 18:53:51 UTC (rev 289)
@@ -1,3 +1,8 @@
+HEAD
+====
+
+-
+
0.5.3
=====
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:38:42
|
Revision: 288
http://openautomation.svn.sourceforge.net/openautomation/?rev=288&view=rev
Author: mayerch
Date: 2011-02-06 18:38:36 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Release 0.5.3
The release will become 0.6.0 after a short bug fixing period.
Added Paths:
-----------
CometVisu/branches/release_0.5.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:36:50
|
Revision: 287
http://openautomation.svn.sourceforge.net/openautomation/?rev=287&view=rev
Author: mayerch
Date: 2011-02-06 18:36:44 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
A few more logo variations
Added Paths:
-----------
CometVisu/trunk/visu/icon/comet_50_ff8000.png
CometVisu/trunk/visu/icon/comet_50x50_ff8000.jpg
CometVisu/trunk/visu/icon/comet_50x50_ff8000.png
CometVisu/trunk/visu/icon/comet_512_ff8000.jpg.png
CometVisu/trunk/visu/icon/comet_512_ff8000.png
Added: CometVisu/trunk/visu/icon/comet_50_ff8000.png
===================================================================
(Binary files differ)
Property changes on: CometVisu/trunk/visu/icon/comet_50_ff8000.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: CometVisu/trunk/visu/icon/comet_50x50_ff8000.jpg
===================================================================
(Binary files differ)
Property changes on: CometVisu/trunk/visu/icon/comet_50x50_ff8000.jpg
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: CometVisu/trunk/visu/icon/comet_50x50_ff8000.png
===================================================================
(Binary files differ)
Property changes on: CometVisu/trunk/visu/icon/comet_50x50_ff8000.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: CometVisu/trunk/visu/icon/comet_512_ff8000.jpg.png
===================================================================
(Binary files differ)
Property changes on: CometVisu/trunk/visu/icon/comet_512_ff8000.jpg.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: CometVisu/trunk/visu/icon/comet_512_ff8000.png
===================================================================
(Binary files differ)
Property changes on: CometVisu/trunk/visu/icon/comet_512_ff8000.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:30:17
|
Revision: 286
http://openautomation.svn.sourceforge.net/openautomation/?rev=286&view=rev
Author: mayerch
Date: 2011-02-06 18:30:11 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Prepare for release 0.5.3
Modified Paths:
--------------
CometVisu/trunk/ChangeLog
Modified: CometVisu/trunk/ChangeLog
===================================================================
--- CometVisu/trunk/ChangeLog 2011-02-06 18:27:09 UTC (rev 285)
+++ CometVisu/trunk/ChangeLog 2011-02-06 18:30:11 UTC (rev 286)
@@ -1,5 +1,5 @@
-HEAD
-====
+0.5.3
+=====
- New Design: "discreet_sand": dark text, light background
- New Design: "discreet_slim": more widgets per line for bigger screens
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:27:16
|
Revision: 285
http://openautomation.svn.sourceforge.net/openautomation/?rev=285&view=rev
Author: mayerch
Date: 2011-02-06 18:27:09 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Moved the content of the "neu" config to the "demo" config as the transition to the new format is done now
Modified Paths:
--------------
CometVisu/trunk/visu/visu_config_demo.xml
Removed Paths:
-------------
CometVisu/trunk/visu/visu_config_neu.xml
Modified: CometVisu/trunk/visu/visu_config_demo.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_demo.xml 2011-02-06 18:04:14 UTC (rev 284)
+++ CometVisu/trunk/visu/visu_config_demo.xml 2011-02-06 18:27:09 UTC (rev 285)
@@ -38,7 +38,7 @@
<statusbar>
<status type="html"><![CDATA[
<img src="icon/comet_64_ff8000.png" alt="CometVisu" /> by <a href="http://www.cometvisu.org/">CometVisu.org</a>
- - <a href=".?config=demo">Reload</a>
+ - <a href=".?config=neu">Reload</a>
- <a href=".">Default Config</a>
]]></status>
<status type="html" condition="!edit"><![CDATA[
@@ -53,98 +53,52 @@
</statusbar>
</meta>
<page name="Übersicht">
- <text align="center">CometVisu widget demo</text>
- <toggle address="1/0/2" datatype="1.001" response_address="1/0/2" mapping="OnOff" styling="RedGreen">Terrase Licht</toggle>
- <trigger address="1/0/2" datatype="1.001" value="0" mapping="OnOff">Terrase Licht 0</trigger>
- <trigger address="1/0/2" datatype="1.001" value="1" mapping="OnOff">Terrase Licht 1</trigger>
- <trigger address="2/2/5" datatype="5.001" value="0">Rolladen Licht 0</trigger>
- <trigger address="2/2/5" datatype="5.001" value="100">Rolladen Licht 100</trigger>
- <switch address="1/0/50" datatype="1.001" response_address="1/4/50" mapping="OnOff">Schalt Schiebetüre Licht</switch>
- <break/>
- <dim address="1/2/51" datatype="5.010" response_address="1/3/51" response_datatype="5.010">Dim Esstisch</dim>
- <shade address="2/4/5" datatype="5.001">Rollladen links</shade>
- <slide address="12/4/250" datatype="9" min="-18" max="26">Slide</slide>
- <info address="12/4/250" datatype="9" styling="BluePurpleRed">Slide Info</info>
- <info address="12/4/250" datatype="9" styling="BluePurpleRed" mapping="Sign">Slide Info</info>
- <designtoggle>Change design</designtoggle>
- <colorchooser address_r="1/2/59" address_g="1/2/60" address_b="1/2/61" datatype="5.001">A colorChooser</colorchooser>
- <info address="1/2/59" datatype="5.001">R</info>
- <info address="1/2/60" datatype="5.001">G</info>
- <info address="1/2/61" datatype="5.001">B</info>
- <slide address="1/2/59" datatype="5.001">R</slide>
- <line/>
- <image src="icon/comet_128_ff8000.png">Ein Bild</image>
- <image src="icon/comet_128_ff8000.png"/>
+ <text align="center">CometVisu format neu</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>
+ </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>
+ </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>
+ </slide>
+ <break />
+ <trigger value="0" mapping="OnOff">
+ <label>Terrase Licht 0</label>
+ <address transform="DPT:1.001">1/0/2</address>
+ </trigger>
+ <trigger value="1" mapping="OnOff">
+ <label>Terrase Licht 1</label>
+ <address transform="DPT:1.001">1/0/2</address>
+ </trigger>
+ <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">Update every 10 sec</image>
- <break/>
- <image src="http://www.yr.no/place/Germany/Bavaria/Holzkirchen~2899676/meteogram.png" refresh="1800"/>
- <line/>
+ <image src="http://www.e-zeeinternet.com/count.php?page=546016&style=default&nbdigits=9&reloads=1" refresh="10">
+ <label>Update every 10 sec</label>
+ </image>
+ <designtoggle>Change design</designtoggle>
<page name="iframe Test">
<iframe src="http://www.cometvisu.org" width="500px" height="500px"/>
</page>
- <info address="1/0/41" datatype="1.000" mapping="OnOff">Treppenlicht</info>
- <page name="Fenster Kontakte">
- <info address="4/3/10" datatype="1" mapping="OpenClose" styling="GreenRed">Bad EG Reed Fenster</info>
- <info address="4/3/20" datatype="1.001" mapping="OpenClose" styling="GreenRed">WC Reed Fenster</info>
- <info address="4/3/30" datatype="1" mapping="OpenClose" styling="GreenRed">Schlafen Reed Fenster links</info>
- <info address="4/3/31" datatype="1.001" mapping="OpenClose" styling="GreenRed">Schlafen Reed Fenster rechts</info>
- <info address="4/3/32" datatype="1.001" mapping="OpenClose" styling="GreenRed">Schlafen Reed Tuere</info>
- <info address="4/3/40" datatype="1.001" mapping="OpenClose" styling="GreenRed">Kueche Reed Fenster</info>
- <info address="4/3/50" datatype="1.001" mapping="OpenClose" styling="GreenRed">Wohnzimmer Reed Tuere Essen</info>
- <info address="4/3/51" datatype="1.001" mapping="OpenClose" styling="GreenRed">Wohnzimmer Reed Schiebetuere</info>
- <info address="4/3/52" datatype="1.001" mapping="OpenClose" styling="GreenRed">Wohnzimmer Reed Tuere Mitte</info>
- <info address="4/3/53" datatype="1.001" mapping="OpenClose" styling="GreenRed">Wohnzimmer Reed Doppeltuere links</info>
- <info address="4/3/54" datatype="1.001" mapping="OpenClose" styling="GreenRed">Wohnzimmer Reed Doppeltuere rechts</info>
- <info address="4/3/70" datatype="1.001" mapping="OpenClose" styling="GreenRed">Diele EG Reed Tuere</info>
- <info address="4/3/71" datatype="1.001" pre="!" mapping="OpenClose" styling="GreenRed">Diele EG Reed Riegel</info>
- <info address="4/3/110" datatype="1.001" mapping="OpenClose" styling="GreenRed">Diele UG Reed Tuere</info>
- <info address="4/3/111" datatype="1.001" pre="!" mapping="OpenClose" styling="GreenRed">Diele UG Reed Riegel</info>
- <info address="4/3/120" datatype="1.001" mapping="OpenClose" styling="GreenRed">Bad UG Reed Fenster</info>
- <info address="4/3/130" datatype="1.001" mapping="OpenClose" styling="GreenRed">Hobby1 Reed Fenster</info>
- <info address="4/3/140" datatype="1.001" mapping="OpenClose">Hobby2 Reed Fenster</info>
- <info address="4/3/200" datatype="1.001" mapping="OnOff">Klingel</info>
- <info address="4/3/210" datatype="1.001">Lueftung Filter</info>
- <info address="4/3/250" datatype="1.001" mapping="OnOff">Rauchmelder</info>
- </page>
- <page name="Temperaturen">
- <info address="4/0/10" datatype="9.001" pre="ca. " post=" °C">Bad EG Boden Temperatur</info>
- <info address="4/0/11" datatype="9.001" pre="ca. " post=" °C">Bad EG Luft Temperatur</info>
- <info address="4/0/15" datatype="9.001" pre="ca. " post=" °C">Bad EG Dusche Temperatur</info>
- <info address="4/2/10" datatype="5.001" post=" %">Bad EG Luftfeuchte</info>
- <info address="4/0/20" datatype="9.001" pre="ca. " post=" °C">WC Temperatur</info>
- <info address="4/0/30" datatype="9.001" pre="ca. " post=" °C">Schlafzimmer Temperatur</info>
- <info address="4/0/50" datatype="9.001" pre="ca. " post=" °C">Wohnzimmer Temperatur</info>
- <info address="4/0/60" datatype="9.001" pre="ca. " post=" °C">Diele EG Temperatur</info>
- <info address="4/0/110" datatype="9.001" pre="ca. " post=" °C">Diele UG Temperatur</info>
- <info address="4/0/120" datatype="9.001" pre="ca. " post=" °C">Bad UG Boden Temperatur</info>
- <info address="4/0/121" datatype="9.001" pre="ca. " post=" °C">Bad UG Luft Temperatur</info>
- <info address="4/2/120" datatype="5.001" post=" %">Bad UG Luftfeuchte</info>
- <info address="4/0/130" datatype="9.001" pre="ca. " post=" °C">Hobby 1 Temperatur</info>
- <info address="4/0/140" datatype="9.001" pre="ca. " post=" °C">Hobby 2 Temperatur</info>
- <line/>
- <info address="4/0/0" datatype="9.001" pre="ca. " post=" °C">Außen Temperatur</info>
- <info address="4/2/0" datatype="5.001" post=" %">Außen Luftfeuchte</info>
- <info address="4/0/200" datatype="9.001" pre="ca. " post=" °C">HK Vorlauf Temperatur</info>
- <info address="4/0/201" datatype="9.001" pre="ca. " post=" °C">HK Rücklauf Temperatur</info>
- <info address="4/0/204" datatype="9.001" pre="ca. " post=" °C">Zirkulation Temperatur</info>
- <info address="4/0/202" datatype="9.001" pre="ca. " post=" °C">Warmwasser Temperatur</info>
- <info address="4/0/203" datatype="9.001" pre="ca. " post=" °C">Kaltwasser Temperatur</info>
- <info address="4/0/205" datatype="9.001" pre="ca. " post=" °C">Warmwasser UG Temperatur</info>
- </page>
- <page name="Rollläden">
- <shade address="2/4/0" datatype="5.001">Rollladen Bad</shade>
- <shade address="2/4/1" datatype="5.001">Rollladen Schlafen Fenster</shade>
- <shade address="2/4/2" datatype="5.001">Rollladen Schlafen Türe</shade>
- <shade address="2/4/3" datatype="5.001">Rollladen Küche</shade>
- <shade address="2/4/4" datatype="5.001">Rollladen Seitentüre</shade>
- <shade address="2/4/5" datatype="5.001">Rollladen PSK Türe</shade>
- <shade address="2/4/6" datatype="5.001">Rollladen Zwischentüre</shade>
- <shade address="2/4/7" datatype="5.001">Rollladen Doppeltüre</shade>
- <line/>
- <shade address="2/4/8" datatype="5.001">Rollladen Hobby 1</shade>
- <shade address="2/4/9" datatype="5.001">Rollladen Hobby 2</shade>
- </page>
+ <colorchooser>
+ <label>A colorChooser</label>
+ <address transform="DPT:5.001" color="r">1/2/59</address>
+ <address transform="DPT:5.001" color="g">1/2/60</address>
+ <address transform="DPT:5.001" color="b">1/2/61</address>
+ </colorchooser>
+ <info precision="4"><label>R</label><address transform="DPT:5.001">1/2/59</address></info>
+ <slide><label>R</label><address transform="DPT:5.001">1/2/59</address></slide>
+ <info precision="4"><label>G</label><address transform="DPT:5.001">1/2/60</address></info>
+ <slide><label>G</label><address transform="DPT:5.001">1/2/60</address></slide>
+ <info precision="4"><label>B</label><address transform="DPT:5.001">1/2/61</address></info>
+ <slide><label>B</label><address transform="DPT:5.001">1/2/61</address></slide>
<diagram_popup undefined="DALI Strom L1" rrd="200_DALI_Linie_1_Strom" unit="mA" series="day" refresh="300">DALI Strom L1</diagram_popup>
</page>
</pages>
Deleted: CometVisu/trunk/visu/visu_config_neu.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_neu.xml 2011-02-06 18:04:14 UTC (rev 284)
+++ CometVisu/trunk/visu/visu_config_neu.xml 2011-02-06 18:27:09 UTC (rev 285)
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" design="pure" xsi:noNamespaceSchemaLocation="visu_config.xsd">
- <meta>
- <plugins>
- <plugin name="colorchooser"/>
- <plugin name="diagram"/>
- </plugins>
- <mappings>
- <mapping name="OpenClose">
- <entry value="0">zu</entry>
- <entry value="1">offen</entry>
- </mapping>
- <mapping name="OnOff">
- <entry value="0">Aus</entry>
- <entry value="1">An</entry>
- </mapping>
- <mapping name="Sign">
- <entry range_min="-1e99" range_max="0">Negativ</entry>
- <entry value="0">Null</entry>
- <entry range_min="0" range_max="1e99">Positiv</entry>
- </mapping>
- </mappings>
- <stylings>
- <styling name="RedGreen">
- <entry value="0">red</entry>
- <entry value="1">green</entry>
- </styling>
- <styling name="GreenRed">
- <entry value="0">green</entry>
- <entry value="1">red</entry>
- </styling>
- <styling name="BluePurpleRed">
- <entry range_min="-100" range_max="0">blue</entry>
- <entry value="0">purple</entry>
- <entry range_min="0" range_max="100">red</entry>
- </styling>
- </stylings>
- <statusbar>
- <status type="html"><![CDATA[
- <img src="icon/comet_64_ff8000.png" alt="CometVisu" /> by <a href="http://www.cometvisu.org/">CometVisu.org</a>
- - <a href=".?config=neu">Reload</a>
- - <a href=".">Default Config</a>
- ]]></status>
- <status type="html" condition="!edit"><![CDATA[
- - <a href="edit_config.html">Edit</a>
- ]]></status>
- <status type="html" condition="edit"><![CDATA[
- - <a href=".">normal Mode</a>
- ]]></status>
- <status type="html"><![CDATA[
- - <a href="check_config.php">Check Config</a>
- ]]></status>
- </statusbar>
- </meta>
- <page name="Übersicht">
- <text align="center">CometVisu format neu</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>
- </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>
- </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>
- </slide>
- <break />
- <trigger value="0" mapping="OnOff">
- <label>Terrase Licht 0</label>
- <address transform="DPT:1.001">1/0/2</address>
- </trigger>
- <trigger value="1" mapping="OnOff">
- <label>Terrase Licht 1</label>
- <address transform="DPT:1.001">1/0/2</address>
- </trigger>
- <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">
- <label>Update every 10 sec</label>
- </image>
- <designtoggle>Change design</designtoggle>
- <page name="iframe Test">
- <iframe src="http://www.cometvisu.org" width="500px" height="500px"/>
- </page>
- <colorchooser>
- <label>A colorChooser</label>
- <address transform="DPT:5.001" color="r">1/2/59</address>
- <address transform="DPT:5.001" color="g">1/2/60</address>
- <address transform="DPT:5.001" color="b">1/2/61</address>
- </colorchooser>
- <info precision="4"><label>R</label><address transform="DPT:5.001">1/2/59</address></info>
- <slide><label>R</label><address transform="DPT:5.001">1/2/59</address></slide>
- <info precision="4"><label>G</label><address transform="DPT:5.001">1/2/60</address></info>
- <slide><label>G</label><address transform="DPT:5.001">1/2/60</address></slide>
- <info precision="4"><label>B</label><address transform="DPT:5.001">1/2/61</address></info>
- <slide><label>B</label><address transform="DPT:5.001">1/2/61</address></slide>
- <diagram_popup undefined="DALI Strom L1" rrd="200_DALI_Linie_1_Strom" unit="mA" series="day" refresh="300">DALI Strom L1</diagram_popup>
- </page>
-</pages>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 18:04:20
|
Revision: 284
http://openautomation.svn.sourceforge.net/openautomation/?rev=284&view=rev
Author: mayerch
Date: 2011-02-06 18:04:14 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Bugfix - handle unknown widgets correctly
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2011-02-06 13:50:29 UTC (rev 283)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-06 18:04:14 UTC (rev 284)
@@ -26,7 +26,7 @@
}
this.getCreator = function(name) {
- if (typeof this.creators[name] == undefined) {
+ if (this.creators[name] === undefined) {
return this.creators.unknown;
}
return this.creators[name];
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-06 13:50:35
|
Revision: 283
http://openautomation.svn.sourceforge.net/openautomation/?rev=283&view=rev
Author: makki1
Date: 2011-02-06 13:50:29 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
Add hints on rrdtool for diagram and KNX-backend
Modified Paths:
--------------
CometVisu/trunk/README
Modified: CometVisu/trunk/README
===================================================================
--- CometVisu/trunk/README 2011-02-05 22:51:25 UTC (rev 282)
+++ CometVisu/trunk/README 2011-02-06 13:50:29 UTC (rev 283)
@@ -7,3 +7,18 @@
The other part is the CometVisu Visualisation. It is a template engine
that creates an easy to use, web based visualisation. All the necessary
configuration is done in a simple XML file.
+
+*** Important note on diagram-backend ***
+It uses a modified version of rrdtool, adding a "fetchj" option.
+You can find source and Debian-packages here:
+http://repo.wiregate.de/wiregate/pool/main/r/
+http://repo.wiregate.de/wiregate/pool/main/libr/
+
+*** Notes on the KNX-backend ***
+The KNX-backend uses
+/usr/lib/cgi-bin/l : a dummy-login
+/usr/lib/cgi-bin/r : a symlink to /usr/bin/eibread-cgi
+/usr/lib/cgi-bin/w : a symlink to /usr/bin/eibwrite-cgi
+eibread/write-cgi are part of a modified eibd-clients package here:
+http://repo.wiregate.de/wiregate/pool/main/e/
+(source: bcusdk)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-05 22:51:32
|
Revision: 282
http://openautomation.svn.sourceforge.net/openautomation/?rev=282&view=rev
Author: mayerch
Date: 2011-02-05 22:51:25 +0000 (Sat, 05 Feb 2011)
Log Message:
-----------
Patch by Julian Hartmann:
hacked editor to work with new config-layout
colorchooser-editor DOES NOT WORK YET
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
CometVisu/trunk/visu/edit/save_config.php
CometVisu/trunk/visu/edit/style_edit.css
CometVisu/trunk/visu/edit/visuconfig_edit.js
CometVisu/trunk/visu/edit_config.html
CometVisu/trunk/visu/lib/templateengine.js
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2011-02-05 22:51:25 UTC (rev 282)
@@ -71,6 +71,8 @@
attributes: {
name: { type: 'string', required: true }
},
+ elements: {
+ },
content: true
});
@@ -89,6 +91,8 @@
},
attributes: {
},
+ elements: {
+ },
content: false
});
@@ -105,6 +109,8 @@
attributes: {
align: { type: 'string', required: false }
},
+ elements: {
+ },
content: { type: 'string', required: true }
});
@@ -137,13 +143,17 @@
},
update: defaultUpdate,
attributes: {
- pre: { type: 'string' , required: false },
- post: { type: 'string' , required: false },
+ pre: { type: 'string', required: false },
+ post: { type: 'string', required: false },
precision: { type: 'precision', required: false },
- mapping: { type: 'mapping' , required: false },
- styling: { type: 'styling' , required: false }
+ mapping: { type: 'mapping', required: false },
+ styling: { type: 'styling', required: false }
},
- content: { type: 'string' , required: true }
+ elements: {
+ label: { type: 'string', required: true, multi: false },
+ address: { type: 'address', required: true, multi: true }
+ },
+ content: false
});
this.addCreator('slide', {
@@ -238,7 +248,11 @@
mapping: { type: 'mapping', required: false },
styling: { type: 'styling', required: false }
},
- content: { type: 'string', required: true }
+ elements: {
+ label: { type: 'string', required: true, multi: false },
+ address: { type: 'address', required: true, multi: true }
+ },
+ content: false
});
this.addCreator('switch', {
@@ -290,7 +304,11 @@
mapping: { type: 'mapping' , required: false },
styling: { type: 'styling' , required: false }
},
- content: { type: 'string', required: true }
+ elements: {
+ label: { type: 'string', required: true, multi: false },
+ address: { type: 'address', required: true, multi: true }
+ },
+ content: false
});
this.addCreator('trigger', {
@@ -336,15 +354,17 @@
}
},
attributes: {
- address: { type: 'address' , required: true },
- datatype: { type: 'datatype', required: true },
value: { type: 'string' , required: true },
pre: { type: 'string' , required: false },
post: { type: 'string' , required: false },
mapping: { type: 'mapping' , required: false },
styling: { type: 'styling' , required: false }
},
- content: { type: 'string' , required: true }
+ elements: {
+ label: { type: 'string', required: true, multi: false },
+ address: { type: 'address', required: true, multi: true }
+ },
+ content: false
});
this.addCreator('image', {
@@ -370,7 +390,10 @@
height: { type: 'string' , required: false },
refresh: { type: 'numeric', required: false }
},
- content: { type: 'string', required: false }
+ elements: {
+ label: { type: 'string', required: false, multi: false }
+ },
+ content: false
});
this.addCreator('video', {
@@ -396,7 +419,10 @@
height: { type: 'string' , required: false },
refresh: { type: 'numeric', required: false }
},
- content: { type: 'string', required: true }
+ elements: {
+ label: { type: 'string', required: false, multi: false }
+ },
+ content: false
});
this.addCreator('iframe', {
@@ -418,7 +444,10 @@
width: { type: 'string', required: false },
height: { type: 'string', required: false }
},
- content: { type: 'string', required: false }
+ elements: {
+ label: { type: 'string', required: false, multi: false }
+ },
+ content: false
});
this.addCreator('unknown', {
Modified: CometVisu/trunk/visu/edit/save_config.php
===================================================================
--- CometVisu/trunk/visu/edit/save_config.php 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/edit/save_config.php 2011-02-05 22:51:25 UTC (rev 282)
@@ -1,4 +1,9 @@
<?php
+//// Report all PHP errors
+//// debugging:
+//error_reporting(-1);
+//header("content-type: text/plain");
+
define("CONFIG_FILENAME", "../visu_config%s.xml");
define("CONFIG_BASE_XML", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><pages />");
define("CONFIG_PAGE_XML", "<page />");
@@ -58,6 +63,8 @@
$handle = fopen($strConfig, "w");
fputs($handle, $objXML->saveXML());
fclose($handle);
+// debugging:
+//print $objXML->saveXML();
echo 1;
exit;
@@ -73,13 +80,11 @@
*/
function createDOMFromJSON($objJSON) {
- global $objDOM;
-
if (false === isset($objJSON->_type) || "page" != $objJSON->_type) {
throw new Exception("Malformed config received!");
}
- $objXML = $objDOM->createElement("page");
+ $objXML = $GLOBALS['objDOM']->createElement("page");
if (false === empty($objJSON->name)) {
// den Namen der Seite festlegen
@@ -90,12 +95,20 @@
return $objXML;
}
- foreach ($objJSON->_elements as $objElement) {
- if ("page" == $objElement->_type) {
- $objXML->appendChild(createDOMFromJSON($objElement));
- } else {
- $objXML->appendChild(createChildFromJSON($objElement));
+ foreach ($objJSON->_elements as $strKey => $arrElements) {
+ // create an array - sometimes we have one, sometimes not
+ // so just make sure we have one every single time
+ if (false === is_array($arrElements)) {
+ $arrElements = array($arrElements);
}
+
+ foreach ($arrElements as $objElement) {
+ if ("page" == $objElement->_type) {
+ $objXML->appendChild(createDOMFromJSON($objElement));
+ } else {
+ $objXML->appendChild(createChildFromJSON($objElement));
+ }
+ }
}
return $objXML;
@@ -108,31 +121,60 @@
* @param object $obj Ein Objekt das aus dem JSON gewonnen wurde
* @returns object DOM-Objekt
*/
-function createChildFromJSON($objJSON) {
- global $objDOM;
+function createChildFromJSON($objJSON, $debug = false) {
if (true === empty($objJSON->_type)) {
return null;
}
- $objXML = $objDOM->createElement($objJSON->_type);
+ $objXML = $GLOBALS['objDOM']->createElement($objJSON->_type);
if (false === empty($objJSON->_text)) {
$objXML->nodeValue = $objJSON->_text;
}
+
+ if (false === empty($objJSON->_attributes)) {
+ // some attributes are in a sub-element - it's easier to get them out of there
+ // into our main namespace
+ foreach ($objJSON->_attributes as $strKey => $strValue) {
+ $objJSON->$strKey = $strValue;
+ }
+ }
- foreach ($objJSON as $strAttribute => $strValue) {
+
+
+ foreach ($objJSON as $strAttribute => $mixValue) {
if (0 === strpos($strAttribute, "_")) {
// Parameter die mit "_" beginnen sind special purpose
continue;
}
if ($strAttribute === "textContent") {
- $objXML->nodeValue = $strValue;
+ $objXML->nodeValue = $mixValue;
continue;
}
- $objXML->setAttribute($strAttribute, $strValue);
+ $objXML->setAttribute($strAttribute, $mixValue);
}
+
+ // elements AFTER attributes, as they might be overwritten by nodeValue!
+ if (false === empty($objJSON->_elements)) {
+ // sub-elements - we needs thems
+ $arrElements = array();
+ foreach ($objJSON->_elements as $arrSubElements) {
+ foreach ($arrSubElements as $objSubElement) {
+ $arrChildren[] = createChildFromJSON($objSubElement);
+ }
+ }
+
+ if (false === empty($arrChildren)) {
+ // unset the node-value - we have either text OR sub-nodes
+ $objXML->nodeValue = "";
+ foreach ($arrChildren as $objChildNode) {
+ $objXML->appendChild($objChildNode);
+ }
+ }
+ }
+
return $objXML;
}
Modified: CometVisu/trunk/visu/edit/style_edit.css
===================================================================
--- CometVisu/trunk/visu/edit/style_edit.css 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/edit/style_edit.css 2011-02-05 22:51:25 UTC (rev 282)
@@ -74,14 +74,75 @@
background-color: grey;
display: none;
position: absolute;
- width: 48%;
+ width: 97%;
margin: auto;
top: 2em;
- left: 2em;
+ left: .5em;
padding: .5em;
- z-index: 2;
+ z-index: 4;
}
+#addMaster .multi_element {
+ width: 90%;
+ height: 8em;
+ overflow: auto;
+ border: 1px solid #444;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ padding: 2px;
+}
+
+#addMaster fieldset {
+ border: none;
+ padding: 0;
+ margin: 0;
+}
+
+.multi_element .element {
+ min-height: 2em;
+ border: 1px solid #5A5A5A;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ margin-bottom: 2px;
+ cursor: pointer;
+}
+
+.input .add_element {
+ cursor: pointer;
+}
+
+.element .edit {
+ clear: both;
+}
+
+.element .title {
+ font-weight: bold;
+ height: 1em;
+}
+
+.element .value, .element .transform, .element .readonly {
+ font-weight: normal;
+ height: 1em;
+ font-size: small;
+}
+
+.element .value, .element .readonly {
+ float: left;
+}
+
+.element .transform {
+ float: right;
+}
+
+.element .readonly {
+ margin-left: .4em;
+}
+
+.multi_element .element .edit {
+}
+
.addwidget .editcontrols label {
float: left;
width: 180px;
@@ -92,6 +153,17 @@
padding-left: 200px;
}
+.addwidget .editcontrols .multi_element label {
+ float: left;
+ width: 100px;
+ font-size: smaller;
+}
+
+
+.addwidget .editcontrols .multi_element .input {
+ padding-left: 120px;
+}
+
div.line {
width: 97%;
}
@@ -99,3 +171,7 @@
div.line hr {
margin-top: .9em;
}
+
+#addMaster button {
+ margin: .4em;
+}
\ No newline at end of file
Modified: CometVisu/trunk/visu/edit/visuconfig_edit.js
===================================================================
--- CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/edit/visuconfig_edit.js 2011-02-05 22:51:25 UTC (rev 282)
@@ -146,6 +146,152 @@
$("#addMaster").triggerHandler("show");
});
+
+ jQuery(".multi_element .element").live("click", function() {
+ $this = jQuery(this);
+ if ($this.is(".inedit")) {
+ // edit-Feld schon vorhanden, leave it alone
+ return;
+ }
+ $this.addClass("inedit");
+ $edit = jQuery("<div class=\"clearfix edit\" />");
+ $this.append($edit);
+
+ $this.find(".editable").hide().each(function(index, e) {
+ $e = jQuery(e);
+
+ if ($this.closest(".multi_element").hasClass("address")) {
+ // we're editing addresses
+ var element = $("<div />").addClass("add_input").addClass("attribute")
+ .append($("<label />").attr("for", "add_" + index).html(index))
+ .append($("<div class=\"input\" />"));
+ var myElement = element.find("div.input");
+
+ if ($e.hasClass("value")) {
+ element.find("label").html("address");
+ // we will provide an input-field AND a select-list.
+ myElement.append($("<input class=\"add_address\" />"));
+ if (typeof $e.text() != "undefined") {
+ // pre-set the value
+ myElement.find(":input").val($e.text());
+ }
+
+ if (typeof addressesCache != undefined && addressesCache != false) {
+ var input = myElement.find("input");
+ input.attr("disabled", "disabled");
+ myElement.append($("<input type=\"checkbox\" name=\"enable_address\" checked=\"checked\" />")
+ .change(function() {
+ if ($(this).attr("checked")) {
+ input.attr("disabled", "disabled");
+ myElement.find("select").show();
+ } else {
+ input.removeAttr("disabled");
+ myElement.find("select").hide();
+ }
+ })
+ );
+ myElement.append($("<br />"));
+ myElement.append($("<select class=\"add_address\" />")
+ .append($("<option />").attr("value", "").html("-")));
+
+ myElement.find("select:first").append(getAddressesObject());
+
+ myElement.find("select").bind("change", function() {
+ // on changing the address, the coresponding datatype-field is
+ // automagically set
+ $dptField = $(this).closest(".edit").find(".add_transform:input");
+ var dpt = $(this).find("option:selected").attr("class").replace(/[^dpt_\d+\.\d+]*/, "").replace(/^dpt_/, "");
+ if ($dptField.is("input")) {
+ $dptField.val(dpt);
+ } else if ($dptField.is("select")) {
+ $dptField.find("option[value=" + dpt + "]").attr("selected", "selected");
+ }
+ });
+
+ if (typeof $e.text() != "undefined") {
+ myElement.find("option[value=" + $e.text() + "]").attr("selected", "selected");
+ }
+
+ }
+ }
+ if ($e.hasClass("transform")) {
+ element.find("label").html("transform");
+ if (typeof dptCache == undefined || dptCache == false) {
+ // appearantly we were unable to load the list of datatypes from the server
+ // we will provide an input-field instead
+ myElement.append($("<input class=\"add_transform\" />"));
+ if (typeof $e.val() != "undefined") {
+ // pre-set the value
+ myElement.find(":input").val($e.val());
+ }
+ } else {
+ myElement.append($("<select class=\"add_transform\" />")
+ .append($("<option />").attr("value", "").html("-")));
+
+ myElement.find("select:first").append(getDPTObject());
+
+ if (typeof $e.text() != "undefined") {
+ myElement.find("option[value=" + $e.text() + "]").attr("selected", "selected");
+ }
+
+ }
+ }
+ if ($e.hasClass("readonly")) {
+ element.find("label").html("readonly");
+ myElement.append($("<input type=\"checkbox\" name=\"add_readonly\" class=\"add_readonly\" value=\"true\" />"));
+ if (typeof $e.text() != "undefined" && $e.text() != "") {
+ myElement.find("input").attr("checked", "checked");
+ }
+ }
+
+ if (element.find("select")[0]) {
+ var select = element.find("select");
+ select.change(function() {
+ // update the input-field
+ jQuery(this).parent().find("input").val(jQuery(this).val());
+ })
+ }
+
+ element.find(":input")
+ .data("name", index)
+
+ $edit.append(element);
+ delete element;
+ }
+ });
+ $edit.append(jQuery("<div class=\"clearfix\" />")
+ .append(jQuery("<button type=\"button\" class=\"save\">save</button>").click(function() {
+ // save sub-element
+ // todo: validate
+ $this = jQuery(this);
+ $e = $this.closest(".element");
+
+ var objData = {};
+ // don't try to hide it: this is hardcoded and works for addresses only
+ objData.type = "address";
+ objData.textContent = $e.find("input.add_address").val();
+ objData._attributes = {};
+ objData._attributes.transform = $e.find(".add_transform").val();
+ objData._attributes.readonly = $e.find(".add_readonly:checked").val();
+
+ // remove this item and insert a new one instead
+ var elementDiv = createAddressEditorElement(objData);
+ $this.closest(".element").replaceWith(elementDiv);
+
+ }))
+ .append(jQuery("<button type=\"button\" class=\"cancel\">cancel</button>").click(function() {
+ // cancel edit of sub-element and return to previous values
+ $this = jQuery(this);
+ $this.closest(".element").removeClass("inedit").find(".editable").show();
+ $this.closest("div.edit").remove();
+ }))
+ .append(jQuery("<button type=\"button\" class=\"remove\">remove</button>").click(function() {
+ // remove this sub-element
+ $this = jQuery(this);
+ $this.closest(".element").remove();
+ }))
+ );
+ });
});
@@ -189,17 +335,19 @@
// we need to change the input-field accordingly to match
// what attributes we need
var val = jQuery(this).val();
+
+ // get all the info we need to edit this piece of work
var creator = design.getCreator(val);
- var attributes = creator.attributes;
- if (typeof attributes == "undefined") {
- alert("there's something wrong with the cable");
- return;
- }
+ var attributes = creator.attributes || {};
+ var elements = creator.elements || {};
+ // find old input-fields in the editor to remember those values ...
+ // this is need in case someone switches types while editing - and sure they want to keep their settings
var container = $("#addMaster div.inputs");
var values = $.extend({}, $("#addMaster").data("widgetdata"));
if (!$("#pages .inedit").is(".widget")) {
+ // this needs to be changed for the new settings-layout - it's completely broken right now!
// alte Werte zwischenspeichern
container.find(":input").each(function() {
if ($(this).val() != "") {
@@ -210,6 +358,8 @@
}
container.empty();
+ // we will need this variable later on to store our fieldset in.
+ var set;
if (typeof creator.content.type != "undefined" && creator.content.type == "string") {
var element = $("<div />").addClass("add_input").addClass("content")
@@ -227,138 +377,148 @@
delete element;
}
- $.each(attributes, function (index, e) {
- var element = $("<div />").addClass("add_input").addClass("attribute")
- .append($("<label />").attr("for", "add_" + index).html(index))
- .append($("<div class=\"input\" />"));
- var myElement = element.find("div.input");
+ if (false === jQuery.isEmptyObject(elements)) {
+ // we've got elements we need to addit :)
+ container.append(set = jQuery("<fieldset />").addClass("elements"));
+ jQuery.each(elements, function(index, e) {
+ var $line = $("<div />").addClass("add_input")
+ .append($("<label />").attr("for", "add_" + index).html(index))
+ .append($("<div class=\"input\" />"));
+ var $input = $line.find("div.input");
- switch (e.type) {
- case "address":
- // appearantly we were unable to load the list of addresses from the server
- // we will provide an input-field instead
- myElement.append($("<input id=\"add_" + index + "\" />"));
- if (typeof values[index] != "undefined") {
- // pre-set the value
- myElement.find(":input").val(values[index]);
- }
+ switch (e.type) {
+ case "address":
+ // create a fake input-element to store our data later on
+ $input.append(jQuery("<input type=\"hidden\" id=\"add_" + index + "\" class=\"multi address\" />"));
- if (typeof addressesCache != undefined && addressesCache != false) {
- var input = myElement.find("input");
- input.attr("disabled", "disabled");
- myElement.append($("<input type=\"checkbox\" name=\"enable_" + e.type + "\" checked=\"checked\" />")
- .change(function() {
- if ($(this).attr("checked")) {
- input.attr("disabled", "disabled");
- myElement.find("select").show();
- } else {
- input.removeAttr("disabled");
- myElement.find("select").hide();
- }
- })
- );
- myElement.append($("<br />"));
- myElement.append($("<select id=\"add_" + index + "\" />")
- .append($("<option />").attr("value", "").html("-")));
+ // create the real inputs-thingy-thing
+ $input.append('<div><div class="add_element">+</div><div class="multi_element address" /></div>');
+ $input.find(".add_element").click(function() {
+ // insert a new, empty sub-element
+ var objData = {};
+ // don't try to hide it: this is hardcoded and works for addresses only
+ objData.type = "address";
+ objData.textContent = "";
+ objData._attributes = {};
+ objData._attributes.transform = "";
+ objData._attributes.readonly = false;
- myElement.find("select:first").append(getAddressesObject());
-
- myElement.find("select").bind("change", function() {
- // on changing the address, the coresponding datatype-field is
- // automagically set
- var name = $(this).attr("id");
- var dptFieldName = name.replace(/_?address$/i, "_datatype");
- var dpt = $(this).find("option:selected").attr("class").replace(/[^dpt_\d+\.\d+]*/, "").replace(/^dpt_/, "");
- if ($("#addMaster #" + dptFieldName).is("input")) {
- $("#addMaster div.inputs #" + dptFieldName).val(dpt);
- } else if ($("#addMaster #" + dptFieldName).is("select")) {
- $("#addMaster #" + dptFieldName).find("option[value=" + dpt + "]").attr("selected", "selected");
- }
+ var elementDiv = createAddressEditorElement(objData);
+ $input.find("div.multi_element").append(elementDiv);
});
- if (typeof values[index] != "undefined") {
- myElement.find("option[value=" + values[index] + "]").attr("selected", "selected");
+ if (typeof values._elements != "undefined"
+ && typeof values._elements[index] != "undefined") {
+ $.each(values._elements[index], function(i, e) {
+ var elementDiv = createAddressEditorElement(e);
+ $input.find("div.multi_element").append(elementDiv);
+ });
}
+ break;
+ default:
+ // add an unknown element (e.g. the label)
+ if (e.multi == false) {
+ // this element can appear only once
+ $input.append(jQuery("<input type=\"text\" id=\"add_" + index + "\" />"));
- }
- break;
- case "datatype":
- if (typeof dptCache == undefined || dptCache == false) {
- // appearantly we were unable to load the list of datatypes from the server
- // we will provide an input-field instead
- myElement.append($("<input id=\"add_" + index + "\" />"));
- if (typeof values[index] != "undefined") {
- // pre-set the value
- myElement.find(":input").val(values[index]);
+ if (typeof values._elements != "undefined"
+ && typeof values._elements[index] != "undefined") {
+ $.each(values._elements[index], function(i, e) {
+ $input.find("input").val(values._elements[index][0].textContent);
+ });
+ }
+ } else {
+ // handling for "if an element can appear more than once"
+ // TODO: needs to be coded once someone wants to use it :)
}
- } else {
- myElement.append($("<select id=\"add_" + index + "\" />")
+ break;
+ }
+
+ // remember how to name and how to validate this input
+ $line.find(":input")
+ .data("name", index)
+ .data("required", e.required)
+ .data("type", e.type);
+
+ // add this "line" to the editor
+ set.append($line);
+ delete $line;
+ });
+ }
+
+ if (false === jQuery.isEmptyObject(attributes)) {
+ // we've got attributes to addit :)
+ container.append(set = jQuery("<fieldset />").addClass("attributes"));
+ $.each(attributes, function (index, e) {
+ var $line = $("<div />").addClass("add_input")
+ .append($("<label />").attr("for", "add_" + index).html(index))
+ .append($("<div class=\"input\" />"));
+ var $input = $line.find("div.input");
+
+ switch (e.type) {
+ case "mapping":
+ $input.append($("<select id=\"add_mapping\" />")
.append($("<option />").attr("value", "").html("-")));
+ jQuery.each(mappings, function(i, tmp) {
+ $input.find("select#add_mapping").append($("<option />").attr("value", i).html(i));
+ });
- myElement.find("select:first").append(getDPTObject());
-
- if (typeof values[index] != "undefined") {
- myElement.find("option[value=" + values[index] + "]").attr("selected", "selected");
+ if (typeof values._attributes != "undefined"
+ && typeof values._attributes[index] != "undefined") {
+ $input.find("option[value=" + values._attributes[index] + "]").attr("selected", "selected");
}
- }
- break;
+ break;
- case "mapping":
- myElement.append($("<select id=\"add_mapping\" />")
- .append($("<option />").attr("value", "").html("-")));
- jQuery.each(mappings, function(i, tmp) {
- myElement.find("select#add_mapping").append($("<option />").attr("value", i).html(i));
- });
+ case "styling":
+ $input.append($("<select id=\"add_styling\" />")
+ .append($("<option />").attr("value", "").html("-")));
+ jQuery.each(stylings, function(i, tmp) {
+ $input.find("select#add_styling").append($("<option />").attr("value", i).html(i));
+ });
- if (typeof values[index] != "undefined") {
- myElement.find("option[value=" + values[index] + "]").attr("selected", "selected");
- }
+ if (typeof values._attributes != "undefined"
+ && typeof values._attributes[index] != "undefined") {
+ $input.find("option[value=" + values._attributes[index] + "]").attr("selected", "selected");
+ }
- break;
-
- case "styling":
- myElement.append($("<select id=\"add_styling\" />")
- .append($("<option />").attr("value", "").html("-")));
- jQuery.each(stylings, function(i, tmp) {
- myElement.find("select#add_styling").append($("<option />").attr("value", i).html(i));
- });
+ break;
+ case "datatype":
+ break;
+ default:
+ $input.append($("<input type=\"text\" id=\"add_" + index + "\" />"));
- if (typeof values[index] != "undefined") {
- myElement.find("option[value=" + values[index] + "]").attr("selected", "selected");
- }
+ if (typeof values._attributes != "undefined"
+ && typeof values._attributes[index] != "undefined") {
+ $input.find("input").val(values._attributes[index]);
+ }
- break;
- case "datatype":
- break;
- default:
- myElement.append($("<input type=\"text\" id=\"add_" + index + "\" />"));
+ break;
+ }
- if (typeof values[index] != "undefined") {
- myElement.find("input").val(values[index]);
- }
+ if ($line.find("select")[0]) {
+ var select = $line.find("select");
+ select.change(function() {
+ // update the input-field
+ jQuery(this).parent().find("input").val(jQuery(this).val());
+ })
+ }
- break;
- }
+ $line.find(":input")
+ .data("name", index)
+ .data("required", e.required)
+ .data("type", e.type);
- if (element.find("select")[0]) {
- var select = element.find("select");
- select.change(function() {
- // update the input-field
- jQuery(this).parent().find("input").val(jQuery(this).val());
- })
- }
+ set.append($line);
+ delete $line;
+ });
+ }
- element.find(":input")
- .data("name", index)
- .data("required", e.required)
- .data("type", e.type);
-
- container.append(element);
- delete element;
- });
})
.end()
+ /*******************
+ * Speichervorgang *
+ *******************/
.find("#add_submit").click(function() {
// Daten aus den Eingabefeldner übernehmen
// einfach alle rein - wir haben ja nur die passenden Felder
@@ -391,16 +551,45 @@
dataObject.textContent = text;
}
-
var error = false;
- // alte Werte zwischenspeichern
- container.find(":input:visible").not("[name^=enable_]").each(function() {
- var name;
- if ($(this).closest("div.add_input").hasClass("attribute")) {
- name = $(this).data("name");
+ // get the settings for all sub-elements
+ container.find("fieldset.elements :input").each(function() {
+ var name = $(this).data("name");
+
+ if (!$(this).is(".multi")) {
+ if ($(this).val() != "") {
+ // validating
+ if (false === isInputValid($(this).val(), $(this).data("type"))) {
+ alert(lingua("value_invalid", name));
+ // do not save
+ error = true;
+ }
+ dataObject.append($("<" + name + " />").append($(this).val()));
+ } else if ($(this).data("required") === true) {
+ // do not save
+ alert(lingua("value_required", name));
+ error = true;
+ }
+ } else {
+ // multi-element-input
+ if ($(this).is(".address")) {
+ $elements = jQuery(this).closest("div.input").find(".multi_element .element");
+ $elements.each(function (index, e) {
+ $address = $("<address />")
+ .attr("transform", $(e).data("transform"))
+ .attr("readonly", $(e).data("readonly") == true ? "true" : "false")
+ .append($(e).data("address"));
+ dataObject.append($address);
+ });
+ }
}
+ });
+ // get the settings for all attributes
+ container.find("fieldset.attributes :input").each(function() {
+ var name = $(this).data("name");
+
if ($(this).val() != "") {
// validating
if (false === isInputValid($(this).val(), $(this).data("type"))) {
@@ -414,7 +603,7 @@
alert(lingua("value_required", name));
error = true;
}
- })
+ });
if (error !== false) {
return;
@@ -523,8 +712,41 @@
myObj._type = e.data("nodeName");
myObj.textContent = e.data("textContent");
- $.extend(myObj, e.data("attributes"));
+ myObj._attributes = e.data("configData").attributes;
+ if (e.data("configData").elements) {
+ // Sub-Elements must be processed differently.
+ var myElements = {};
+ $.each(e.data("configData").elements, function (index, elementGroup) {
+ $.each(elementGroup, function (index, element) {
+ var myElement = {};
+ element = jQuery(element).get(0);
+ switch (element.nodeName) {
+ case "address":
+ myElement._type = "address";
+ myElement.textContent = element.textContent;
+
+ myElement._attributes = {};
+
+ myElement._attributes.transform = jQuery(element).attr("transform");
+ myElement._attributes.readonly = jQuery(element).attr("readonly");
+ break;
+ default:
+ // mostly labels
+ myElement._type = element.nodeName;
+ myElement.textContent = element.textContent;
+ break;
+ }
+ if (typeof(myElements[element.nodeName]) == "undefined") {
+ myElements[element.nodeName] = [];
+ }
+ myElements[element.nodeName].push(myElement);
+ });
+ });
+ // add it to the object-to-be-saved
+ myObj._elements = myElements;
+ }
+
if (e.is(".pagelink")) {
// it's a page, we need to dive in
// eine Sub-Seite
@@ -606,7 +828,7 @@
$.each(addresses, function (i, address) {
element.find("optgroup:last")
.append($("<option />").attr("value", address.address)
- .addClass("dpt_" + address.dpt)
+ .addClass("dpt_DPT:" + address.dpt)
.html(address.name)
)
});
@@ -625,10 +847,26 @@
return cachedDPTObject.clone();
}
- element = $("<select />");
+ var element = $("<select />");
+ var lastMajor = "";
+
$.each(dptCache, function(i, dptDefinition) {
- element.append($("<option />").attr("value", dptDefinition.dpt)
+ var myMajor = lastMajor;
+ var t = dptDefinition.dpt.match(/^([0-9]+)\./);
+ if (typeof (t[1]) != "undefined") {
+ myMajor = t[1];
+ }
+
+ if (lastMajor != myMajor) {
+ if (element.is("optgroup")) {
+ element = element.closest("select");
+ }
+ element.append($("<optgroup />").attr("label", "DPT " + myMajor));
+ lastMajor = myMajor;
+ }
+
+ element.find("optgroup:last").append($("<option />").attr("value", "DPT:" + dptDefinition.dpt)
.html("" + dptDefinition.dpt + ": " + dptDefinition.name)
);
});
@@ -636,4 +874,28 @@
cachedDPTObject = element.children();
return cachedDPTObject;
+}
+
+/**
+ * Create a sub-element for the multi-editor to edit an address-entry.
+ */
+function createAddressEditorElement(element) {
+ var elementDiv = jQuery("<div class=\"element clearfix\" />");
+ elementDiv.append("<div class=\"title\" />")
+ .append("<div class=\"value editable\" />")
+ .append("<div class=\"transform editable\" />")
+ .append("<div class=\"readonly editable\" />");
+ //myDiv.find(".title").append();
+ var t = getAddressesObject();
+ elementDiv.find(".title").append(t.find("option[value=" + element.textContent + "]").text());
+ elementDiv.find(".value").append(element.textContent);
+ elementDiv.find(".transform").append(element._attributes.transform);
+ elementDiv.find(".readonly").append(element._attributes.readonly == "true" ? "readonly" : "")
+
+ elementDiv.data("transform", element._attributes.transform)
+ .data("readonly", element._attributes.readonly == "true" ? true : false)
+ .data("address", element.textContent);
+
+ return elementDiv;
+
}
\ No newline at end of file
Modified: CometVisu/trunk/visu/edit_config.html
===================================================================
--- CometVisu/trunk/visu/edit_config.html 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/edit_config.html 2011-02-05 22:51:25 UTC (rev 282)
@@ -15,6 +15,8 @@
<script src="designs/structure_pure.js" type="text/javascript"></script>
<script src="designs/structure_custom.js" type="text/javascript"></script>
<script src="lib/templateengine.js" type="text/javascript"></script>
+ <script src="transforms/transform_default.js" type="text/javascript"></script>
+ <script src="transforms/transform_knx.js" type="text/javascript"></script>
<script src="edit/visuconfig_edit.js" type="text/javascript"></script>
<script src="edit/json2.js" type="text/javascript"></script>
<style type="text/css">
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2011-02-05 22:21:56 UTC (rev 281)
+++ CometVisu/trunk/visu/lib/templateengine.js 2011-02-05 22:51:25 UTC (rev 282)
@@ -237,13 +237,11 @@
$("#pages").triggerHandler("done");
}
-function create_pages( page, path )
-{
- var retval;
- retval = (design.creators[ page.nodeName ]) ?
- design.creators[ page.nodeName ].create( page, path ) :
- design.creators[ 'unknown' ].create( page, path ) ;
+function create_pages( page, path ) {
+ var creator = design.getCreator(page.nodeName);
+ var retval = creator.create(page, path);
+
node = $(page).get(0);
var attributes = {};
if (typeof node.attributes != "undefined") {
@@ -256,7 +254,23 @@
$.extend(attributes, node);
}
- retval.data("attributes", attributes)
+ var configData = {attributes: {}, elements: {}}
+ if (typeof creator.attributes != "undefined") {
+ $.each(creator.attributes, function (index, e) {
+ if ($(page).attr(index)) {
+ configData.attributes[index] = $(page).attr(index);
+ }
+ });
+ }
+
+ if (typeof creator.elements != "undefined") {
+ $.each(creator.elements, function (index, e) {
+ var elements = $(page).find(index);
+ configData.elements[index] = elements;
+ });
+ }
+
+ retval.data("configData", configData)
.data("path", path)
.data("nodeName", page.nodeName)
.data("textContent", page.textContent);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ma...@us...> - 2011-02-05 22:22:03
|
Revision: 281
http://openautomation.svn.sourceforge.net/openautomation/?rev=281&view=rev
Author: makki1
Date: 2011-02-05 22:21:56 +0000 (Sat, 05 Feb 2011)
Log Message:
-----------
add DS2413 (testing ci)
Modified Paths:
--------------
PyWireGate/trunk/owfs_connector/sensors.ini
Modified: PyWireGate/trunk/owfs_connector/sensors.ini
===================================================================
--- PyWireGate/trunk/owfs_connector/sensors.ini 2011-02-05 20:59:08 UTC (rev 280)
+++ PyWireGate/trunk/owfs_connector/sensors.ini 2011-02-05 22:21:56 UTC (rev 281)
@@ -47,6 +47,11 @@
cycle = 1
interfaces = PIO.A,PIO.B,sensed.A,sensed.B,latch.ALL,latch.BYTE,set_alarm
+[DS2413]
+# dual switch /PIO
+cycle = 1
+interfaces = PIO.A,PIO.B,sensed.A,sensed.B,latch.ALL,latch.BYTE,set_alarm
+
[DS2408]
# 8x switch / IO, family 29
# PIO.[0-7] if used as output
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|