integ/js/vs/_vs.chart.circlelayout.js
changeset 53 88666afffe6b
parent 28 84719280c84d
--- a/integ/js/vs/_vs.chart.circlelayout.js	Fri Apr 26 16:40:03 2013 +0200
+++ b/integ/js/vs/_vs.chart.circlelayout.js	Mon Apr 29 15:02:35 2013 +0200
@@ -1,331 +1,331 @@
-(function ($) {
-
-$.fn._vs.chart.CircleLayout = function(_this,fn,options) {
-
-  var mouseJointTest;
-  var csX;
-  var csY;
-  var treeLayout;
-  var initValue  = []; // Initiation des valeurs
-  var tdv        = 0;  // Incoming point
-  var _this;
-
-  this.init = function (_this,options){
-    console.log('Circle Layout Init')
-    this._this              = _this
-    gravity                 = new _this.phy.b2Vec2(0, 0);    // Zero gravity
-    _this.world.m_gravity   = gravity;
-    _this.chartPhySetup     = {grounds:[],wall:[]}
-    this.treeLayout         = _this.settings.chart.treeLayout;
-
-            for (var i=0; i<_this.settings.data.model.length; i++) {
-            _this.settings.data.strata[i][0].value = _this.settings.data.strata[i][0].initValue;
-            }
-
-    // process data distribution to form layout
-    for (var i = 0; i <_this.settings.data.model.length; i++) { 
-      //console.log("-->",_this.settings.data.model[i])
-      _this.settings.data.model[i].value=0
-      for (var j = 0; j <_this.settings.data.strata[i].length; j++) { 
-         //console.log("-->",_this.settings.data.strata[i][j].value)
-        _this.settings.data.model[i].value += _this.settings.data.strata[i][j].value
-      }
-      //console.log("-->",_this.settings.data.model[i].value)
-      initValue.push(_this.settings.data.model[i].value)
-      tdv += _this.settings.data.model[i].value
-    }
-
-    if(this.treeLayout){
-      console.log("ici")
-     this.setupBubbleChartPhysics(_this);
-    }else{
-     this.setupPieChartPhysics(_this);
-    }
-   
-  };
-
-  this.setupPieChartPhysics = function(_this){
-
-    console.log("w",_this.settings.width)
-    // Pivot drawing
-    var radius = _this.settings.chart.radius
-        csX    = _this.settings.chart.width/2+_this.settings.chart.x
-        csY    = _this.settings.chart.height/2+_this.settings.chart.y
-    var axis   = pivot(csX,csY,radius, _this.settings.chart.wallColor);
-  
-    //targets
-    for (var i = 0;  i< _this.settings.data.model.length; i++) {
-      _this.settings.sedimentation.incoming.target[i] = {x:csX,y:csY};
-    }
-
-    // Separation 
-    var wall   = []
-    var spacer = _this.settings.chart.spacer;
-  
-    // Incoming point
-    var p      = 0;
-
-    console.log("tdv",tdv)
-
-    if (tdv==0){
-      for (var i = 0; i <_this.settings.data.length; i++) { 
-        initValue[i] = 1;
-      }
-      tdv = initValue.length
-    }
-
-    for (var i = 0; i <initValue.length; i++) { 
-       v = initValue[i]
-       a2 = ((v/2+p)/tdv)*360-90
-       p += v
-       a = (p/tdv)*360-90
-       c = circularCoordinate(a2,radius*5,csX,csY)
-
-    // incomming point setup 
-       console.log(c)
-      _this.settings.sedimentation.incoming.point[i] = c 
-    
-    // Bounds Wall drawing
-    _this.chartPhySetup.grounds[i]= this.createBox(
-                  _this,
-                  csX,
-                  csY,
-                  spacer,
-                  radius,
-                  a,
-                  radius,
-                  'wall',
-                  _this.settings.chart.wallColor);
-    }
-    console.log("w",_this.settings.chart.width)
-
-  };
-
-  this.update = function(_this,options){
-    console.log("update")
-    var defaultOptions = {cat:0,r:0}
-    options.r-=90
-    var angle          = (options.r+90)*(Math.PI/180)
-
-    var c              = circularCoordinate(options.r,
-                                    _this.settings.chart.radius,
-                                    _this.settings.chart.width/2+_this.settings.chart.x,
-                                    _this.settings.chart.height/2+_this.settings.chart.y)
-   
-    if(_this.chartPhySetup.grounds[options.cat]!=null) {
-      var myBody = _this.chartPhySetup.grounds[options.cat].GetBody();
-      var myPos  = myBody.GetWorldCenter();
-      var myAngle= myBody.GetAngle()
-      //console.log(myAngle)
-      myPos.y    = c.y/ _this.settings.options.scale
-      myPos.x    = c.x/ _this.settings.options.scale
-      myAngle    = angle
-      myBody.SetPosition(myPos);
-      myBody.SetAngle(myAngle);      
-      //console.log(myBody)
-    }
-  }
-
-  // default token for stream 
-  this.token = function (_this,options){
-    var i = options;
-    //console.log(options)
-    var token = {
-              x:(_this.settings.sedimentation.incoming.point[i].x+(Math.random()*2)),
-              y:(_this.settings.sedimentation.incoming.point[i].y+(Math.random()*1)),
-              t:_this.now(),
-              size:_this.settings.sedimentation.token.size.original,
-              category:i,
-              phy:{
-                  density:10,
-                  friction:0,
-                  restitution:0
-              },
-              targets:[{
-                  //  bizare x/2 or x ...
-                  x: _this.settings.sedimentation.incoming.target[i].x,
-                  y: _this.settings.sedimentation.incoming.target[i].y
-              }]
-            }
-    return token; 
-  }
-
-  function circularCoordinate(degree,radius,posX,posY){
-      j = degree*Math.PI/180
-      var x = (Math.cos(j) * radius)+posX;
-      var y = (Math.sin(j) * radius)+posY;
-      var c = {x:x,y:y}
-      return c
-  }
-
-  function pivot (centerSceneX,centerSceneY,radius,color){
-    var scale           = _this.settings.options.scale
-    var fixDef          = new _this.phy.b2FixtureDef;
-
-    fixDef.density      = 1.0;
-    fixDef.friction     = 0.5;
-    fixDef.restitution  = 0.2;
-    var bodyDef         = new _this.phy.b2BodyDef;
-    fixDef.shape        = new _this.phy.b2CircleShape(radius/scale);
-    bodyDef.position.Set(centerSceneX/scale, centerSceneY/scale);
-
-    var axis            = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
-    axis.m_userData     = {type:"wall",familyID:null,fillStyle:color,strokeStyle:color,r:radius}
-    return  axis;
-  }
-
-  this.createBox = function (_this,x,y,w,h,a,r,type,color){
-     var scale          = _this.settings.options.scale
-     var fixDef         = new _this.phy.b2FixtureDef;
-     var c              = circularCoordinate(a,r,x,y)
-
-     fixDef.density     = 1.0;
-     fixDef.friction    = 0.5;
-     fixDef.restitution = 0.2;
-     
-     var bodyDef        = new _this.phy.b2BodyDef;
-     var angle          = (a+90)*(Math.PI/180)
-     bodyDef.angle      = angle;//a+80 ;
-     //create ground
-     bodyDef.type       = _this.phy.b2Body.b2_staticBody;
-     fixDef.shape       = new _this.phy.b2PolygonShape;
-     fixDef.shape.SetAsBox(w/scale, h/scale);
-     bodyDef.position.Set(c.x/scale,c.y/scale );
-     var box = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
-     box.m_userData = {type:type,fillStyle:color,w:w,h:h,r:r}
-     //console.log(box)
-     return box
-  }
-
-  this.getPosition = function(_this){
-    var result =[]
-    for (var i = 0; i < _this.chartPhySetup.grounds.length; i++) {
-      myElement = _this.chartPhySetup.grounds[i]
-      myBody    = myElement.GetBody();
-      //console.log(myBody.GetAngle())
-      result.push({
-        x:(myBody.GetWorldCenter().x* _this.settings.options.scale),
-        y:(myBody.GetWorldCenter().y* _this.settings.options.scale),
-        a:myBody.GetAngle(),
-        w:myElement.m_userData.w,
-        h:myElement.m_userData.h,
-        r:myElement.m_userData.r,
-      })
-    };  
-   return result 
-  }
-
-
-//  --------- --------- --------- --------- --------- --------- ---------
-// Bubble ---------
-  this.setupBubbleChartPhysics= function(_this){
-    console.log("setupBubbleChartPhysics")
-
-    var colSize = ( _this.settings.chart.width/ _this.settings.data.model.length)
-    var colBwid = _this.settings.chart.spacer
-    var colYpos = _this.settings.chart.height/2+_this.settings.y+colBwid
-    var Ypos    = 0;//chart.position.y;
-    var Xpos    = 0;//chart.position.x;
-    var NumCol  = _this.settings.chart.column;
-   // console.log(Xpos)
-   // console.log( _this.settings.width)
-
-  // array layout
-  for( var i = 0 ; i<_this.settings.data.model.length; i++) {
-      
-      Xpos =  _this.settings.chart.x+(i%NumCol*colBwid)+(colBwid/2)
-      Ypos =  _this.settings.chart.y+Math.floor(i/NumCol)*colBwid+(colBwid/2)
-      //console.log("- "+i+" x:"+Xpos+" y:"+Ypos);
-      _this.settings.sedimentation.incoming.target[i] = {x:Xpos,y:Ypos};
-      
-      pivot[i] = creatMyBubblePivot(Xpos,
-                                    Ypos,
-                                    _this.settings.chart.spacer,
-                                    i);
-
-      _this.settings.data.model[i].incomingPoint = {
-                                     x:Xpos,
-                                     y:Ypos
-                                   };
-      
-    }
-
-  }
-function creatMyBubblePivot(Xpos,Ypos,radius,id){
-   console.log("CreatMyBubblePivot",Xpos,Ypos,radius,id)
-   
-   var scale          = _this.settings.options.scale
-   var fixDef         = new _this.phy.b2FixtureDef;
-   var colorRange     = d3.scale.category10()
-
-    fixDef.density    = 10000;
-    fixDef.friction   = 0.0;
-    fixDef.restitution= 0.0;
-
-   var bodyDef        = new _this.phy.b2BodyDef;
-   fixDef.shape       = new _this.phy.b2CircleShape(radius*scale);
-   bodyDef.position.Set(Xpos/scale, Ypos/scale);
-
-   var axis           = _this.world.CreateBody( bodyDef);
-   var axisf          = axis.CreateFixture(fixDef);
-
-   console.log(id,colorRange(id))
-   axisf.m_userData   = {
-                         type:"BubblePivot",
-                         familyID:id,
-                         fillStyle:_this.settings.chart.wallColor
-                        }
-   console.log(id,axisf)
-
-   axisf.m_shape.m_radius = _this.settings.data.model[id].value/scale;
-   //console.log(Xpos,Ypos)
-   return axisf;
-}
-
-this.getPivotPosition =function (id){
-  
-  //console.log(_this.settings.data.model)
-
-  if(typeof(id)!="undefined"){
-    return this.pivot
-  } else{
-    var result=[];
-      for( var i = 0 ; i<_this.settings.data.model.length; i++) {
-        result.push(_this.settings.data.model[i])
-    }
-    return result
-  }
-}
-
-function updatePivotFixPosition(x,y,id){
-    var myBody        = pivot[id].GetBody();
-    myBody.SetPosition(new b2Vec2(x/scale, y/scale));
-    _this.settings.data.model[id].incomingPoint.x=x;
-    _this.settings.data.model[id].incomingPoint.y=y;
-    setFlowSpeed(speedFlow);
-
-}
-function setPivotPosition(x,y,id){
-    for( var i = 0 ; i<categorys[id].joins.length; i++) {
-      categorys[id].joins[i].SetTarget(new b2Vec2(x/scale, y/scale));
-    }
-}
-function setPivotRadius(r,id){
-    //nBodies[b].m_shape.m_radius
-    pivot[id].m_shape.m_radius=r;
-}
-
-
-// Bubble ---------
-//  --------- --------- --------- --------- --------- --------- ---------
-  if (typeof(fn)!=undefined){
-    var result = this[fn](_this,options);
-    if (typeof(result)!=undefined){
-      return result
-    }
-  }
-  
-}
-
-
-})(jQuery);
+(function ($) {
+
+$.fn._vs.chart.CircleLayout = function(_this,fn,options) {
+
+  var mouseJointTest;
+  var csX;
+  var csY;
+  var treeLayout;
+  var initValue  = []; // Initiation des valeurs
+  var tdv        = 0;  // Incoming point
+  var _this;
+
+  this.init = function (_this,options){
+    console.log('Circle Layout Init')
+    this._this              = _this
+    gravity                 = new _this.phy.b2Vec2(0, 0);    // Zero gravity
+    _this.world.m_gravity   = gravity;
+    _this.chartPhySetup     = {grounds:[],wall:[]}
+    this.treeLayout         = _this.settings.chart.treeLayout;
+
+            for (var i=0; i<_this.settings.data.model.length; i++) {
+            _this.settings.data.strata[i][0].value = _this.settings.data.strata[i][0].initValue;
+            }
+
+    // process data distribution to form layout
+    for (var i = 0; i <_this.settings.data.model.length; i++) { 
+      //console.log("-->",_this.settings.data.model[i])
+      _this.settings.data.model[i].value=0
+      for (var j = 0; j <_this.settings.data.strata[i].length; j++) { 
+         //console.log("-->",_this.settings.data.strata[i][j].value)
+        _this.settings.data.model[i].value += _this.settings.data.strata[i][j].value
+      }
+      //console.log("-->",_this.settings.data.model[i].value)
+      initValue.push(_this.settings.data.model[i].value)
+      tdv += _this.settings.data.model[i].value
+    }
+
+    if(this.treeLayout){
+      console.log("ici")
+     this.setupBubbleChartPhysics(_this);
+    }else{
+     this.setupPieChartPhysics(_this);
+    }
+   
+  };
+
+  this.setupPieChartPhysics = function(_this){
+
+    console.log("w",_this.settings.width)
+    // Pivot drawing
+    var radius = _this.settings.chart.radius
+        csX    = _this.settings.chart.width/2+_this.settings.chart.x
+        csY    = _this.settings.chart.height/2+_this.settings.chart.y
+    var axis   = pivot(csX,csY,radius, _this.settings.chart.wallColor);
+  
+    //targets
+    for (var i = 0;  i< _this.settings.data.model.length; i++) {
+      _this.settings.sedimentation.incoming.target[i] = {x:csX,y:csY};
+    }
+
+    // Separation 
+    var wall   = []
+    var spacer = _this.settings.chart.spacer;
+  
+    // Incoming point
+    var p      = 0;
+
+    console.log("tdv",tdv)
+
+    if (tdv==0){
+      for (var i = 0; i <_this.settings.data.length; i++) { 
+        initValue[i] = 1;
+      }
+      tdv = initValue.length
+    }
+
+    for (var i = 0; i <initValue.length; i++) { 
+       v = initValue[i]
+       a2 = ((v/2+p)/tdv)*360-90
+       p += v
+       a = (p/tdv)*360-90
+       c = circularCoordinate(a2,radius*5,csX,csY)
+
+    // incomming point setup 
+       console.log(c)
+      _this.settings.sedimentation.incoming.point[i] = c 
+    
+    // Bounds Wall drawing
+    _this.chartPhySetup.grounds[i]= this.createBox(
+                  _this,
+                  csX,
+                  csY,
+                  spacer,
+                  radius,
+                  a,
+                  radius,
+                  'wall',
+                  _this.settings.chart.wallColor);
+    }
+    console.log("w",_this.settings.chart.width)
+
+  };
+
+  this.update = function(_this,options){
+    console.log("update")
+    var defaultOptions = {cat:0,r:0}
+    options.r-=90
+    var angle          = (options.r+90)*(Math.PI/180)
+
+    var c              = circularCoordinate(options.r,
+                                    _this.settings.chart.radius,
+                                    _this.settings.chart.width/2+_this.settings.chart.x,
+                                    _this.settings.chart.height/2+_this.settings.chart.y)
+   
+    if(_this.chartPhySetup.grounds[options.cat]!=null) {
+      var myBody = _this.chartPhySetup.grounds[options.cat].GetBody();
+      var myPos  = myBody.GetWorldCenter();
+      var myAngle= myBody.GetAngle()
+      //console.log(myAngle)
+      myPos.y    = c.y/ _this.settings.options.scale
+      myPos.x    = c.x/ _this.settings.options.scale
+      myAngle    = angle
+      myBody.SetPosition(myPos);
+      myBody.SetAngle(myAngle);      
+      //console.log(myBody)
+    }
+  }
+
+  // default token for stream 
+  this.token = function (_this,options){
+    var i = options;
+    //console.log(options)
+    var token = {
+              x:(_this.settings.sedimentation.incoming.point[i].x+(Math.random()*2)),
+              y:(_this.settings.sedimentation.incoming.point[i].y+(Math.random()*1)),
+              t:_this.now(),
+              size:_this.settings.sedimentation.token.size.original,
+              category:i,
+              phy:{
+                  density:10,
+                  friction:0,
+                  restitution:0
+              },
+              targets:[{
+                  //  bizare x/2 or x ...
+                  x: _this.settings.sedimentation.incoming.target[i].x,
+                  y: _this.settings.sedimentation.incoming.target[i].y
+              }]
+            }
+    return token; 
+  }
+
+  function circularCoordinate(degree,radius,posX,posY){
+      j = degree*Math.PI/180
+      var x = (Math.cos(j) * radius)+posX;
+      var y = (Math.sin(j) * radius)+posY;
+      var c = {x:x,y:y}
+      return c
+  }
+
+  function pivot (centerSceneX,centerSceneY,radius,color){
+    var scale           = _this.settings.options.scale
+    var fixDef          = new _this.phy.b2FixtureDef;
+
+    fixDef.density      = 1.0;
+    fixDef.friction     = 0.5;
+    fixDef.restitution  = 0.2;
+    var bodyDef         = new _this.phy.b2BodyDef;
+    fixDef.shape        = new _this.phy.b2CircleShape(radius/scale);
+    bodyDef.position.Set(centerSceneX/scale, centerSceneY/scale);
+
+    var axis            = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
+    axis.m_userData     = {type:"wall",familyID:null,fillStyle:color,strokeStyle:color,r:radius}
+    return  axis;
+  }
+
+  this.createBox = function (_this,x,y,w,h,a,r,type,color){
+     var scale          = _this.settings.options.scale
+     var fixDef         = new _this.phy.b2FixtureDef;
+     var c              = circularCoordinate(a,r,x,y)
+
+     fixDef.density     = 1.0;
+     fixDef.friction    = 0.5;
+     fixDef.restitution = 0.2;
+     
+     var bodyDef        = new _this.phy.b2BodyDef;
+     var angle          = (a+90)*(Math.PI/180)
+     bodyDef.angle      = angle;//a+80 ;
+     //create ground
+     bodyDef.type       = _this.phy.b2Body.b2_staticBody;
+     fixDef.shape       = new _this.phy.b2PolygonShape;
+     fixDef.shape.SetAsBox(w/scale, h/scale);
+     bodyDef.position.Set(c.x/scale,c.y/scale );
+     var box = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
+     box.m_userData = {type:type,fillStyle:color,w:w,h:h,r:r}
+     //console.log(box)
+     return box
+  }
+
+  this.getPosition = function(_this){
+    var result =[]
+    for (var i = 0; i < _this.chartPhySetup.grounds.length; i++) {
+      myElement = _this.chartPhySetup.grounds[i]
+      myBody    = myElement.GetBody();
+      //console.log(myBody.GetAngle())
+      result.push({
+        x:(myBody.GetWorldCenter().x* _this.settings.options.scale),
+        y:(myBody.GetWorldCenter().y* _this.settings.options.scale),
+        a:myBody.GetAngle(),
+        w:myElement.m_userData.w,
+        h:myElement.m_userData.h,
+        r:myElement.m_userData.r,
+      })
+    };  
+   return result 
+  }
+
+
+//  --------- --------- --------- --------- --------- --------- ---------
+// Bubble ---------
+  this.setupBubbleChartPhysics= function(_this){
+    console.log("setupBubbleChartPhysics")
+
+    var colSize = ( _this.settings.chart.width/ _this.settings.data.model.length)
+    var colBwid = _this.settings.chart.spacer
+    var colYpos = _this.settings.chart.height/2+_this.settings.y+colBwid
+    var Ypos    = 0;//chart.position.y;
+    var Xpos    = 0;//chart.position.x;
+    var NumCol  = _this.settings.chart.column;
+   // console.log(Xpos)
+   // console.log( _this.settings.width)
+
+  // array layout
+  for( var i = 0 ; i<_this.settings.data.model.length; i++) {
+      
+      Xpos =  _this.settings.chart.x+(i%NumCol*colBwid)+(colBwid/2)
+      Ypos =  _this.settings.chart.y+Math.floor(i/NumCol)*colBwid+(colBwid/2)
+      //console.log("- "+i+" x:"+Xpos+" y:"+Ypos);
+      _this.settings.sedimentation.incoming.target[i] = {x:Xpos,y:Ypos};
+      
+      pivot[i] = creatMyBubblePivot(Xpos,
+                                    Ypos,
+                                    _this.settings.chart.spacer,
+                                    i);
+
+      _this.settings.data.model[i].incomingPoint = {
+                                     x:Xpos,
+                                     y:Ypos
+                                   };
+      
+    }
+
+  }
+function creatMyBubblePivot(Xpos,Ypos,radius,id){
+   console.log("CreatMyBubblePivot",Xpos,Ypos,radius,id)
+   
+   var scale          = _this.settings.options.scale
+   var fixDef         = new _this.phy.b2FixtureDef;
+   var colorRange     = d3.scale.category10()
+
+    fixDef.density    = 10000;
+    fixDef.friction   = 0.0;
+    fixDef.restitution= 0.0;
+
+   var bodyDef        = new _this.phy.b2BodyDef;
+   fixDef.shape       = new _this.phy.b2CircleShape(radius*scale);
+   bodyDef.position.Set(Xpos/scale, Ypos/scale);
+
+   var axis           = _this.world.CreateBody( bodyDef);
+   var axisf          = axis.CreateFixture(fixDef);
+
+   console.log(id,colorRange(id))
+   axisf.m_userData   = {
+                         type:"BubblePivot",
+                         familyID:id,
+                         fillStyle:_this.settings.chart.wallColor
+                        }
+   console.log(id,axisf)
+
+   axisf.m_shape.m_radius = _this.settings.data.model[id].value/scale;
+   //console.log(Xpos,Ypos)
+   return axisf;
+}
+
+this.getPivotPosition =function (id){
+  
+  //console.log(_this.settings.data.model)
+
+  if(typeof(id)!="undefined"){
+    return this.pivot
+  } else{
+    var result=[];
+      for( var i = 0 ; i<_this.settings.data.model.length; i++) {
+        result.push(_this.settings.data.model[i])
+    }
+    return result
+  }
+}
+
+function updatePivotFixPosition(x,y,id){
+    var myBody        = pivot[id].GetBody();
+    myBody.SetPosition(new b2Vec2(x/scale, y/scale));
+    _this.settings.data.model[id].incomingPoint.x=x;
+    _this.settings.data.model[id].incomingPoint.y=y;
+    setFlowSpeed(speedFlow);
+
+}
+function setPivotPosition(x,y,id){
+    for( var i = 0 ; i<categorys[id].joins.length; i++) {
+      categorys[id].joins[i].SetTarget(new b2Vec2(x/scale, y/scale));
+    }
+}
+function setPivotRadius(r,id){
+    //nBodies[b].m_shape.m_radius
+    pivot[id].m_shape.m_radius=r;
+}
+
+
+// Bubble ---------
+//  --------- --------- --------- --------- --------- --------- ---------
+  if (typeof(fn)!=undefined){
+    var result = this[fn](_this,options);
+    if (typeof(result)!=undefined){
+      return result
+    }
+  }
+  
+}
+
+
+})(jQuery);