|
From: <ma...@us...> - 2012-03-17 23:39:03
|
Revision: 729
http://openautomation.svn.sourceforge.net/openautomation/?rev=729&view=rev
Author: mayerch
Date: 2012-03-17 23:38:56 +0000 (Sat, 17 Mar 2012)
Log Message:
-----------
Add initial support for widgets in 3d space (currently: only the info widget)
Modified Paths:
--------------
CometVisu/trunk/visu/designs/structure_pure.js
CometVisu/trunk/visu/lib/templateengine.js
CometVisu/trunk/visu/visu_config_2d3d.xml
JSFloorPlan/trunk/src/jsfloorplan.js
Modified: CometVisu/trunk/visu/designs/structure_pure.js
===================================================================
--- CometVisu/trunk/visu/designs/structure_pure.js 2012-03-11 21:52:15 UTC (rev 728)
+++ CometVisu/trunk/visu/designs/structure_pure.js 2012-03-17 23:38:56 UTC (rev 729)
@@ -196,7 +196,7 @@
container.data( 'address', address );
}
$( childs ).each( function(i){
- container.append( create_pages( childs[i], path + '_' + i, flavour ) );
+ container.append( create_pages( childs[i], path + '_' + i, flavour, type ) );
} );
var subpage = $( '<div class="page" id="' + path + '" style="'+pstyle+';"/>' );
subpage.append(container);
@@ -228,14 +228,18 @@
{
case 'azimut':
element.data().JSFloorPlan3D.setState('currentAzimut', value, true);
+ element.trigger( 'update3d', element.data().JSFloorPlan3D );
break;
case 'elevation':
element.data().JSFloorPlan3D.setState('currentElevation', value, true);
+ element.trigger( 'update3d', element.data().JSFloorPlan3D );
break;
case 'floor':
- element.data().JSFloorPlan3D.moveToRoom( value, false, true, true );
+ element.data().JSFloorPlan3D.moveToRoom( value, false, true, true, function(){
+ element.trigger( 'update3d', element.data().JSFloorPlan3D );
+ });
break;
default:
@@ -346,26 +350,30 @@
});
this.addCreator('info', {
- create: function( page, path ) {
- var $p = $(page);
- var layout = $p.find('layout')[0];
+ create: function( element, path, flavour, type ) {
+ var $e = $(element);
+ var layout = $e.find('layout')[0];
var style = layout ? 'style="' + extractLayout( layout ) + '"' : '';
var ret_val = $('<div class="widget clearfix info" ' + style + ' />');
- ret_val.setWidgetLayout($p).makeWidgetLabel($p);
- var address = makeAddressList($p);
+ //type == '3d' && ret_val.data( extractLayout3d( layout ) ).bind( 'update3d', this.update3d );
+ type == '3d' && $(document).bind( 'update3d', {element: ret_val, layout: extractLayout3d( layout )}, this.update3d );
+ ret_val.setWidgetLayout($e).makeWidgetLabel($e);
+ var address = makeAddressList($e);
+
var actor = '<div class="actor"><div class="value">-</div></div>';
var $actor = $(actor).data({
'address' : address,
- 'format' : $p.attr('format'),
- 'mapping' : $p.attr('mapping'),
- 'styling' : $p.attr('styling')
+ 'format' : $e.attr('format'),
+ 'mapping' : $e.attr('mapping'),
+ 'styling' : $e.attr('styling')
});
for( var addr in address ) $actor.bind( addr, this.update );
ret_val.append( $actor );
return ret_val;
},
update: defaultUpdate,
+ update3d: defaultUpdate3d,
attributes: {
format: { type: 'format', required: false },
mapping: { type: 'mapping', required: false },
@@ -1400,6 +1408,16 @@
return value;
}
+function defaultUpdate3d( e, data, passedElement )
+{
+ //var element = passedElement || $(this);
+ var l = e.data.layout;
+ var pos = data.building2screen( new THREE.Vector3( l.x, l.y, l.z ) );
+ e.data.element.css( 'left', pos.x + 'px' );
+ e.data.element.css( 'top' , pos.y + 'px' );
+ //console.log( e, data, e.data, pos.x, pos.y );
+}
+
function extractLayout( layout )
{
var ret_val = 'position:absolute;';
@@ -1409,3 +1427,12 @@
return ret_val;
}
+function extractLayout3d( layout )
+{
+ var ret_val = {};
+ if( layout.getAttribute('x' ) ) ret_val.x = layout.getAttribute('x' );
+ if( layout.getAttribute('y' ) ) ret_val.y = layout.getAttribute('y' );
+ if( layout.getAttribute('z' ) ) ret_val.z = layout.getAttribute('z' );
+ if( layout.getAttribute('floor') ) ret_val.floor = layout.getAttribute('floor');
+ return ret_val;
+}
\ No newline at end of file
Modified: CometVisu/trunk/visu/lib/templateengine.js
===================================================================
--- CometVisu/trunk/visu/lib/templateengine.js 2012-03-11 21:52:15 UTC (rev 728)
+++ CometVisu/trunk/visu/lib/templateengine.js 2012-03-17 23:38:56 UTC (rev 729)
@@ -341,10 +341,10 @@
$("#pages").triggerHandler("done");
}
-function create_pages( page, path, flavour ) {
+function create_pages( page, path, flavour, type ) {
var creator = design.getCreator(page.nodeName);
- var retval = creator.create(page, path, flavour);
+ var retval = creator.create(page, path, flavour, type);
node = $(page).get(0);
var attributes = {};
Modified: CometVisu/trunk/visu/visu_config_2d3d.xml
===================================================================
--- CometVisu/trunk/visu/visu_config_2d3d.xml 2012-03-11 21:52:15 UTC (rev 728)
+++ CometVisu/trunk/visu/visu_config_2d3d.xml 2012-03-17 23:38:56 UTC (rev 729)
@@ -79,6 +79,10 @@
</info>
</page>
<page name="3D Demo" type="3d" backdrop="floorplan_demo.xml" azimut="12/7/53" elevation="12/7/54" floor="12/7/51">
+ <info format="%.2f">
+ <layout x="3.5" y="3.7" z="1.0"/>
+ <address transform="DPT:5.001" type="">12/7/53</address>
+ </info>
<slide min="0" max="6.283185307179586">
<layout x="0px" y="570px" width="600px" />
<label>Azimut</label>
Modified: JSFloorPlan/trunk/src/jsfloorplan.js
===================================================================
--- JSFloorPlan/trunk/src/jsfloorplan.js 2012-03-11 21:52:15 UTC (rev 728)
+++ JSFloorPlan/trunk/src/jsfloorplan.js 2012-03-17 23:38:56 UTC (rev 729)
@@ -1351,7 +1351,7 @@
* @param {Room} room
* @return {THREE.Vector3} Target
*/
- this.moveToRoom = function( floor, room, hideOtherFloors, animate )
+ this.moveToRoom = function( floor, room, hideOtherFloors, animate, callback )
{
var target = new THREE.Vector3();
var dist;
@@ -1391,6 +1391,7 @@
for( ; f >= 0; f-- ) self.hideFloor( f, f == floor );
}
self.render();
+ if( callback !== undefined ) callback();
}, animate );
showStates.showFloor = floor;
return target;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|