integ/js/vs/_vs.token2.js
changeset 65 b13a409f01dc
parent 64 2937fe1ba865
child 66 a77532772aa4
--- a/integ/js/vs/_vs.token2.js	Mon May 06 14:57:50 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,601 +0,0 @@
-(function ($) {
-$.fn._vs.token = {
-
-    // alias for d3 color scale D3
-    colorRange:function(){},
-    
-    init:function(_this){
-      // Color scale import form d3 
-      // todo shape management
-      this.colorRange = _this.settings.chart.colorRange
-    },
-    ID:function(_this){
-      _this.settings.data.tokenPast+=1
-      return _this.settings.data.tokenPast
-    },
-    selectAll:function(_this,key,value){
-      // DRAFT VERSION writing select All ...... 
-      var result = []
-      var all    = false
-      result.flocculate  = function(){
-        var r=[]
-        result.forEach(function(i){
-          q = i.flocculate()
-          r.push(q)
-        })
-        return r
-      }
-      result.attr  = function(key,value,param){
-        var r=[]
-        result.forEach(function(i){
-          //console.log(key,value,param)
-          q = i.attr(key,value,param)
-          //console.log("q",q)
-          r.push(q)
-        })
-        return r
-      }
-      
-      result.b2dObj  = function(key,value,param){
-        var r=[]
-        result.forEach(function(i){
-          //console.log(key,value,param)
-          q = i.myobj
-          //console.log("q",q)
-          r.push(q)
-        })
-        return r
-      }
-
-      if(typeof(value) == "undefined" && typeof(key) == "undefined"){ 
-        all =true
-      }
-      
-      for (var i = _this.tokens.length - 1; i >= 0; i--) {
-        if(_this.tokens[i].attr(key) == value || all==true){
-          result.push(_this.tokens[i])
-       }
-      }
-        return result;
-    },
-
-    select:function(_this,key,value){
-      result = []
-      if(typeof(value) == "undefined" && typeof(key) == "undefined"){ 
-        return _this.tokens 
-      }else{
-        for (var i = _this.tokens.length - 1; i >= 0; i--) {
-          if(_this.tokens[i].attr(key) == value){
-            result.push(_this.tokens[i])
-            break;
-          }
-        }
-      }
-      if(typeof(result[0])=="undefined"){
-        return false
-      }else{
-        return result[0];
-      }
-    },
-
-
-    addToken:function (_this,element){
-     //default token setting  
-     var defaultTokenSetting ={
-        x:50,y:50, // positions
-        t:null,    // time 
-        category:1,// data category 
-        state:0,   // state 
-        /*
-         0 = Not Enter in the stage,
-         1 = suspension,
-         2 = floculation,
-         2 + n = _this.strata.list[n]
-        */
-
-        // Graphic Parameter
-        size:10,   fillStyle:'###',  strokeStyle:'rgba(0,0,0,0)', lineWidth:0, texture:undefined,
-        shape:{type:'round'}, // vertice, box, round, ?? svg path with json serialisation {}        
-        userdata:{},
-
-        // Interactions callbacks 
-        callback:{}, 
-        
-        // Physical parameters
-        phy:{ density:10,friction:0,restitution:0},
-        targets:[/*{x:null,y:null}*/],
-        elbow:{/*x:null,y:null*/}
-     }
-
-     var result = null;
-     var myobj = null
-     var token = {}
-     
-     token.toString = function() {
-         return "Token ID="+this.setting.ID;
-     }
-
-     //console.log(element)
-     if(typeof(element)=='undefined'){
-        token.setting = defaultTokenSetting
-        token.setting.ID = this.ID(_this)
-     } else {
-        token.setting   = element
-        if(typeof(token.setting.phy)    =='undefined') {token.setting.phy    = defaultTokenSetting.phy}
-        if(typeof(token.setting.t)      =='undefined') {token.setting.t      = _this.settings.stream.now}
-        if(typeof(token.setting.x)      =='undefined') {token.setting.x      = _this.settings.sedimentation.incoming.point[element.category].x+(Math.random()*2)}
-        if(typeof(token.setting.y)      =='undefined') {token.setting.y      = _this.settings.sedimentation.incoming.point[element.category].y+(Math.random()*2)}
-        if(typeof(token.setting.size)   =='undefined') {token.setting.size   = _this.settings.sedimentation.token.size.original}
-        if(typeof(token.setting.targets)=='undefined') {token.setting.targets=[]}
-        token.setting.ID = token.setting.ID = this.ID(_this)
-        if(typeof(token.setting.state)  =='undefined') {token.setting.state  = 0}
-        if(typeof(token.setting.shape)  =='undefined') {token.setting.shape  = defaultTokenSetting.shape }
-      }
-
-      token.myobj =  this.create(_this,token.setting)
-      //console.log("token.myobj",token.myobj)
-
-          token.flocculate = function(){
-            _this.tokens.indexOf(this)
-            _this.flocculate.destroyIt(_this,this)
-           return this
-          }
-
-          token.attr = function(key,value,param){
-            //console.log("attr",this.myobj)
-            if(typeof(value) == "undefined"){
-              if(typeof(this[key])!="undefined"){
-               return this[key]()
-              }else{
-               return this.myobj.m_userData[key]
-              }
-            }else{
-             if(typeof(this[key])!="undefined"){
-              this[key](value,param)
-             }else{
-              this.myobj.m_userData[key]=value
-            }
-           }
-           return this
-          }
-
-          token.callback = function(value,param){
-            if (!arguments.length){return this.myobj.m_userData.callback}
-            if (typeof(this.myobj.m_userData.callback[value])=="function"){
-              return this.myobj.m_userData.callback[value](param)
-            } else {
-              return function(param){console.log("callback undefined")}
-            }
-          }
-          
-          token.size = function(value){
-            //console.log(this.attr('state'))
-            if(this.myobj!=null && this.attr('state')<2){
-              if (!arguments.length){return this.myobj.m_shape.m_radius*this.myobj.m_userData.scale;}
-                this.myobj.m_shape.m_radius = value/this.myobj.m_userData.scale
-            }
-          }
-          token.b2dObj = function(){
-              if(this.myobj!=null && this.attr('state')<2){
-                return this.myobj
-              }
-          }
-      
-          token.texture = function(value){
-            if (!arguments.length){return this.myobj.m_userData.texture.img.src;}
-             console.log("texture",value)
-             this.myobj.m_userData.texture={}
-             this.myobj.m_userData.texture.img = new Image();
-             this.myobj.m_userData.texture.img.src = value
-          }
-
-      //console.log("token",token)
-      _this.tokens.push(token)
-      _this.decay.tokens.push(token)
-
-      // Execute suspension callback 
-      if(typeof(this.myobj.m_userData.callback)!="undefined"){
-        if(typeof(this.myobj.m_userData.callback.suspension)=="function"){
-           var t = _this.select('ID',token.setting.ID)
-           this.myobj.m_userData.callback.suspension(t)         
-        }
-      }
-
-     return token
-    },
-
-    // CREATE IS A TRY TO UNIFY TOKEN PRODUCTION
-    create:function(_this,token) {
-      //targetX,targetY, x, y,size,family
-      //console.log("create",token)
-      token.scale = scale = _this.settings.options.scale
-
-      //console.log("DBT")
-      var xPos              = token.x/scale+(Math.random()*0.1);
-      var yPos              = token.y/scale+(Math.random()*0.1);
-
-      // CREATE BALL
-      var fixDef            = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density      = 0.1;
-        fixDef.friction     = 0.0;
-        fixDef.restitution  = 0.0;
-        //console.log(token)
-
-        // round
-        if(token.shape.type == "round"){
-          fixDef.shape      = new Box2D.Collision.Shapes.b2CircleShape(token.size/scale);
-        // or polygon
-        }else if(token.shape.type == "polygons"){
-          //fixDef.shape      = new Box2D.Collision.Shapes.b2PolygonShape;
-          fixDef            = this.setPolygons(_this,token,fixDef)
-        }else if(token.shape.type == "box"){
-          fixDef.shape      = new Box2D.Collision.Shapes.b2PolygonShape;
-          //console.log(fixDef)
-          fixDef.shape.SetAsBox(token.shape.width/scale,token.shape.height/scale)
-        }
-
-      var bodyDef           = new Box2D.Dynamics.b2BodyDef;
-        bodyDef.type        = Box2D.Dynamics.b2Body.b2_dynamicBody;
-        bodyDef.position.x  = token.x/scale;//+(Math.random())
-        bodyDef.position.y  = token.y/scale;
-      
-      this.myobj = _this.world.CreateBody(bodyDef).CreateFixture(fixDef)
-
-      if(typeof(token.texture)!="undefined"){
-        token.texture.img = new Image();
-        token.texture.img.src = token.texture.src
-      }
-      
-      if(typeof(token.impulse)!="undefined"){
-        this.applyImpulse(this.myobj,token.impulse.angle,token.impulse.power);
-      }
-
-      if(typeof(token.fillStyle) =="undefined"){   token.fillStyle  = this.colorRange(token.category) }
-      //if(typeof(token.stokeStyle)=="undefined"){   token.stokeStyle = "#000"}//"rgba(0,0,0,0.5)" }
-      if(typeof(token.lineWidth) =="undefined"){   token.lineWidth  = 0 }
-      if(typeof(token.type)  =="undefined"){       token.type="token"   }
-      if(typeof(token.callback)  =="undefined"){   
-        token.callback = {}
-                   // {
-                   //      suspension:undefined,
-                   //      flocculation:undefined,
-                   //      draw:undefined,
-                   //      mouseover:undefined,
-                   //      mouseout:undefined,
-                   //      click:undefined
-                   //    }
-      }
-
-      this.myobj.m_userData       = token 
-      this.myobj.attr             = this.attr// function (){console.log(this)} 
-      this.myobj.m_userData.mouse = {}
-      this.myobj.m_userData.mouse.over        = false;
-      this.myobj.m_userData.mouse.down        = false;
-      this.myobj.m_userData.mouse.dragging    = false;
-      this.myobj.m_userData.mouse.statebefore = false;
-      this.myobj.m_userData.state = 1;  // now in the world
-
-      if(token.targets.length==0 && _this.settings.chart.type=="CircleLayout"){
-        token.targets[0]={
-                         x: _this.settings.sedimentation.incoming.target[token.category].x,
-                         y: _this.settings.sedimentation.incoming.target[token.category].y
-                  }
-      }
-
-      if(token.targets.length>0){
-        //console.log()
-        //CREATE JOIN MOUVEMENT TO TARGET
-        var md              = new _this.phy.b2MouseJointDef();
-        md.bodyA            = _this.world.GetGroundBody();
-        md.bodyB            = this.myobj.GetBody();
-        md.target.Set(xPos,yPos);
-        md.collideConnected = true;
-        md.maxForce         = 50 * this.myobj.GetBody().GetMass();
-        mouseJoint          = _this.world.CreateJoint(md);
-        mouseJoint.SetTarget(new _this.phy.b2Vec2(token.targets[0].x/scale, token.targets[0].y/scale));
-      }
-
-      // ADD INFO IN OBJECT
-      //categorys[family].value+=1;
-      //setTimeout(function(){mouseJoint.SetTarget(chart.position.x/scale, chart.position.y/scale)},1000);
-      //categorys[family].joins.push(mouseJoint); 
-    
-      return this.myobj;
-    },
-
-    applyImpulse:function(bodyId, degrees, power) {
-    var body = bodyId.GetBody();
-    body.ApplyImpulse(new Box2D.Common.Math.b2Vec2(Math.cos(degrees * (Math.PI / 180)) * power,
-                                 Math.sin(degrees * (Math.PI / 180)) * power),
-                                 body.GetWorldCenter());
-    },
-    
-
-    setPolygons:function (_this,token,fixDef){
-
-      fixDef.shape    = new Box2D.Collision.Shapes.b2PolygonShape;
-
-      if(token.shape.points==null){
-         token.shape.points = [{x: -1, y: -1}, {x: 1, y: -1}, {x: -1, y:-1},{x: 1, y:-1}]
-      };
-    
-      for (var i = 0; i < token.shape.points.length; i++) {
-          var vec = new Box2D.Common.Math.b2Vec2();
-          vec.Set(token.shape.points[i].x/scale, token.shape.points[i].y/scale);
-          token.shape.points[i] = vec;
-      }  
-
-      fixDef.shape.SetAsArray(token.shape.points, token.shape.points.length);
-      return fixDef;    
-    },
-
-
-    createDataBarBall:function (_this, x, y,size,family) { 
-      //console.log(Math.round(family)) ;
-      var fixDef = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density = 10.0;
-        fixDef.friction = 0.5;
-        fixDef.restitution = 0.2;
-        fixDef.shape = new Box2D.Collision.Shapes.b2CircleShape(size/_this.settings.options.scale);
-    
-      var bodyDef = new Box2D.Dynamics.b2BodyDef;
-        bodyDef.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
-        bodyDef.position.x = x/_this.settings.options.scale;//+(Math.random())
-        bodyDef.position.y = y/_this.settings.options.scale;
-    
-      var myobj = _this.world.CreateBody(bodyDef).CreateFixture(fixDef)
-      myobj.m_userData={type:"BarChartBall",
-                familyID:'family',
-                fillColor:this.colorRange(family)} //dynamiq
-      //console.log(myobj);
-      return myobj;
-    },
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    // ....................................................................
-    // OLD OLD OLD  Physicals elements 
-    // !!!!!!!!!!!!!!!!!!   Have to clean 
-    // ....................................................................
-
-    // !!!!!!!!!! To mix withe the one in piechart and bar chart ::: createBox
-    createBox:function (world, x, y, width, height, angle, fillColor, fixed) {
-      if (typeof(fixed) == 'undefined') fixed = true;
-       var fixDef       = new b2FixtureDef;
-      if (!fixed) fixDef.density = 100.0;
-       fixDef.friction    = 0.6;
-       fixDef.restitution   = 0.3;
-       
-       var bodyDef      = new b2BodyDef;
-       bodyDef.type     = b2Body.b2_staticBody;
-       bodyDef.angle    = angle ;//* b2Settings.b2_pi; 
-       fixDef.shape     = new b2PolygonShape;
-       fixDef.shape.SetAsBox(width/scale, height/scale);
-       bodyDef.position.Set(x/scale, y/scale);
-       var myobj        = world.CreateBody(bodyDef).CreateFixture(fixDef)
-       myobj.m_userData   = {type:"Wall",fillColor:fillColor}
-       console.log(myobj.m_userData)
-       return myobj;
-       
-    },
-    createBoxPie:function (world,axis, x, y, width, height, angle, fillColor) {
-      var bodyDef     = new b2BodyDef;
-        bodyDef.type    = Box2D.Dynamics.b2Body.b2_dynamicBody;
-      var fixDef      = new Box2D.Dynamics.b2FixtureDef;
-      fixDef.shape    = new b2PolygonShape;
-      fixDef.shape.SetAsBox(width/scale, height/scale);
-        fixDef.density      = 1000000.0;
-        fixDef.friction     = 0.5;
-        fixDef.restitution  = 0.2;
-        bodyDef.position.Set(x/scale, y/scale);
-      bodyDef.angle     = 0;
-      var myobj       = world.CreateBody(bodyDef).CreateFixture(fixDef);
-      myobj.m_userData  = {type:"Wall",fillColor:fillColor}
-    
-       return myobj;
-       
-    },
-    createBox0D:function (world, x, y, width, height, fixed) {
-      if (typeof(fixed) == 'undefined') fixed = true;
-      var boxSd = new b2BoxDef();
-      boxSd.restitution = -0.6;
-      boxSd.friction = .3;
-      if (!fixed) boxSd.density = 0.01;
-      boxSd.extents.Set(width, height);
-      var boxBd = new b2BodyDef();
-      boxBd.AddShape(boxSd);
-      boxBd.position.Set(x,y);
-      return world.CreateBody(boxBd)
-    },
-    createHiddenBox:function (world, x, y, width, height, fixed) {
-      if (typeof(fixed) == 'undefined') fixed = true;
-      var boxSd = new b2BoxDef();
-      boxSd.restitution = 0.6;
-      boxSd.friction = .3;
-      if (!fixed) boxSd.density = 1.0;
-      boxSd.extents.Set(width, height);
-      var boxBd = new b2BodyDef();
-      boxBd.AddShape(boxSd);
-      boxBd.position.Set(x,y);
-      var myObject = world.CreateBody(boxBd)
-      myObject.m_shapeList.visibility = 'hidden'; 
-      console.log(myObject);
-      return myObject
-      
-    },
-    createBigBall:function (world, x, y) { 
-      var fixDef           = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density     = 1000000.0;
-        fixDef.friction    = 0.5;
-        fixDef.restitution = 0.2;
-        fixDef.shape       = new Box2D.Collision.Shapes.b2CircleShape(20/30);
-    
-        var bodyDef      = new Box2D.Dynamics.b2BodyDef;
-      bodyDef.type     = Box2D.Dynamics.b2Body.b2_dynamicBody;
-        bodyDef.position.x = x;
-        bodyDef.position.y = y;
-      var myobj = world.CreateBody(bodyDef).CreateFixture(fixDef)
-      //console.log(myobj)
-      return myobj;
-    },
-    
-    /*
-    286
-        Create standard boxes of given height , width at x,y
-    287
-    */
-    
-    createPieBox:function (world, x, y, width, height,rotation,color, options){
-    
-      //default setting
-    
-     options = $.extend(true, {
-         'density':10000000.0 ,
-         'friction':1.0 ,
-         'restitution':0.2 ,
-         'linearDamping':0.0 ,
-         'angularDamping':0.0 ,
-         'gravityScale':0.0 ,
-         'type':b2Body.b2_dynamicBody
-     }, options);
-    
-    
-     var body_def       = new b2BodyDef();
-     var fix_def      = new b2FixtureDef;
-     fix_def.density    = options.density;
-     fix_def.friction     = options.friction;
-     fix_def.restitution  = options.restitution;
-     fix_def.shape      = new b2PolygonShape();
-     fix_def.shape.SetAsBox( width/scale , height/scale );
-     body_def.position.Set(x/scale , y/scale);
-     body_def.linearDamping = options.linearDamping;
-     body_def.angularDamping = options.angularDamping;
-     body_def.angle     = rotation;
-    
-     body_def.type      = options.type;
-     var b          = world.CreateBody( body_def );
-     var f          = b.CreateFixture(fix_def);
-     f.m_userData     = {type:"box",familyID:null,fillColor:color}
-    
-     return b;
-    
-    },
-
-    createDataBallTarget:function (world,targetX,targetY, x, y,size,family) {
-      //console.log("DBT")
-      var xPos              = x/scale+(Math.random()*0.1);
-      var yPos              = y/scale+(Math.random()*0.1);
-
-      // CREATE BALL
-      var fixDef            = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density      = 0.1;
-        fixDef.friction     = 0.0;
-        fixDef.restitution  = 0.0;
-        fixDef.shape        = new Box2D.Collision.Shapes.b2CircleShape(size/scale);
-        var bodyDef         = new Box2D.Dynamics.b2BodyDef;
-      bodyDef.type          = Box2D.Dynamics.b2Body.b2_dynamicBody;
-        bodyDef.position.x  = xPos;
-        bodyDef.position.y  = yPos;
-        var myobj           = world.CreateBody(bodyDef).CreateFixture(fixDef);
-      
-      //CREATE JOIN MOUVEMENT TO TARGET
-      var md                = new b2MouseJointDef();
-        md.bodyA            = world.GetGroundBody();
-        md.bodyB            = myobj.GetBody();
-        md.target.Set(xPos,yPos);
-        md.collideConnected = true;
-        md.maxForce         = 50* myobj.GetBody().GetMass();
-        mouseJoint          = world.CreateJoint(md);
-      mouseJoint.SetTarget(new b2Vec2(targetX/scale, targetY/scale));
-    
-      // ADD INFO IN OBJECT
-      myobj.m_userData  = {type:"PieBall",familyID:family,fillColor:colorScale(family)}
-      categorys[family].value+=1;
-      //setTimeout(function(){mouseJoint.SetTarget(chart.position.x/scale, chart.position.y/scale)},1000);
-      categorys[family].joins.push(mouseJoint); 
-    
-      return myobj;
-    },
-    
-    createDataBallPie:function (world,target, x, y,size,family) {
-      console.log(target)
-      var xPos = categorys[family].incomingPoint.x/scale+(Math.random()*2/scale);
-      var yPos = categorys[family].incomingPoint.y/scale;
-    
-      // CREATE BALL
-      var fixDef           = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density     = 0.1;
-        fixDef.friction    = 0.0;
-        fixDef.restitution = 0.0;
-        fixDef.shape       = new Box2D.Collision.Shapes.b2CircleShape(size/scale);
-    
-        var bodyDef = new Box2D.Dynamics.b2BodyDef;
-      bodyDef.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
-    
-        bodyDef.position.x = xPos;
-        bodyDef.position.y = yPos;
-    
-      // I need a distinct list with bodies (and not fixtures)
-      var myo = world.CreateBody(bodyDef);
-        myo.m_userData={type:"PieBall",familyID:family,fillColor:categorys[family].color}
-        
-        listBodies.push(myo);
-      var myobj = myo.CreateFixture(fixDef);
-      
-      //CREATE JOIN MOUVEMENT TO TARGET
-      var md = new b2MouseJointDef();
-        md.bodyA = world.GetGroundBody();
-        md.bodyB = myobj.GetBody();
-        md.target.Set(xPos,yPos);
-    
-        md.collideConnected = true;
-        md.maxForce = 100* myobj.GetBody().GetMass();
-        mouseJoint = world.CreateJoint(md);
-      mouseJoint.SetTarget(new b2Vec2(target.position.x/scale, target.position.y/scale));
-      
-      // ADD INFO IN OBJECT
-      myobj.m_userData={type:"PieBall",familyID:family,fillColor:colorScale(family)}
-      categorys[family].value+=1;
-      //setTimeout(function(){mouseJoint.SetTarget(chart.position.x/scale, chart.position.y/scale)},1000);
-    
-      return myobj;
-    },
-    
-    createDataBall:function (_this, x, y,size) { 
-      var fixDef      = new Box2D.Dynamics.b2FixtureDef;
-        fixDef.density    = 1.0;
-        fixDef.friction   = 0.5;
-        fixDef.restitution  = 0.2;
-        fixDef.shape    = new Box2D.Collision.Shapes.b2CircleShape(size/_this.settings.options.scale);
-    
-      var bodyDef = new Box2D.Dynamics.b2BodyDef;
-      bodyDef.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
-        bodyDef.position.x = x;//+(Math.random())
-        bodyDef.position.y = y;
-    
-      var myobj = _this.world.CreateBody(bodyDef).CreateFixture(fixDef)
-      myobj.m_userData={type:"PieBall",
-                familyID:'family',// add family ///
-                fillColor:"rgb(200,0,0)"}// add color 
-    
-      //console.log(myobj)
-      return myobj;
-    },
-
-}
-
-})(jQuery);