|  | @@ -39,6 +39,7 @@
 | 
	
		
			
				|  |  |      var _p_velocity_factor = 0.5;
 | 
	
		
			
				|  |  |      var _m_pos = {x:0, y:0};
 | 
	
		
			
				|  |  |      var _node_hover_id = -1;
 | 
	
		
			
				|  |  | +    var _node_opened_id = -1;
 | 
	
		
			
				|  |  |      var _$entrees_block = $('#block-edlpentreesblock');
 | 
	
		
			
				|  |  |      var _$entrees_block_termlinks = $('a.term-link', _$entrees_block);
 | 
	
		
			
				|  |  |      var _node_pop_up;
 | 
	
	
		
			
				|  | @@ -176,6 +177,7 @@
 | 
	
		
			
				|  |  |        this.e_color = 'e_col_'+this.entrees[Math.floor(Math.random(this.entrees.length))];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        this.hover = false;
 | 
	
		
			
				|  |  | +      this.opened = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // physics
 | 
	
		
			
				|  |  |        this.p = _physics.makeParticle(this.mass, this.x, this.y);
 | 
	
	
		
			
				|  | @@ -267,6 +269,14 @@
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        Node.prototype.open = function(){
 | 
	
		
			
				|  |  | +          this.opened = true;
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Node.prototype.close = function(){
 | 
	
		
			
				|  |  | +          this.opened = false;
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          Node.prototype.draw = function(){
 | 
	
		
			
				|  |  |            // carre plein
 | 
	
		
			
				|  |  |            // clouleur aléatoire ds les entrees
 | 
	
	
		
			
				|  | @@ -280,6 +290,13 @@
 | 
	
		
			
				|  |  |            // _ctx.fillStyle = !this.p.resting() ? edlp_vars[this.e_color] : 'rgb(0, 0, 0)';
 | 
	
		
			
				|  |  |            _ctx.fillStyle = edlp_vars[this.e_color];
 | 
	
		
			
				|  |  |            _ctx.fillRect(this.x - this.r,this.y - this.r,this.r*2,this.r*2);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if(this.opened){
 | 
	
		
			
				|  |  | +            _ctx.lineWidth = '1px';
 | 
	
		
			
				|  |  | +            _ctx.strokeStyle = 'rgb(255,0,0)';
 | 
	
		
			
				|  |  | +            _ctx.strokeRect(this.x - this.r-3,this.y - this.r-3,this.r*2+6,this.r*2+6);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |            _ctx.closePath();
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -288,13 +305,6 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        // this.init();
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    //     ____  __               _
 | 
	
		
			
				|  |  | -    //    / __ \/ /_  __  _______(_)_________
 | 
	
		
			
				|  |  | -    //   / /_/ / __ \/ / / / ___/ / ___/ ___/
 | 
	
		
			
				|  |  | -    //  / ____/ / / / /_/ (__  ) / /__(__  )
 | 
	
		
			
				|  |  | -    // /_/   /_/ /_/\__, /____/_/\___/____/
 | 
	
		
			
				|  |  | -    //             /____/
 | 
	
		
			
				|  |  |      // TODO: we may convert a lot of computation into a web worker https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers
 | 
	
		
			
				|  |  |      function checkParticulesCollisions(){
 | 
	
		
			
				|  |  |        // pre create vars to save memory;
 | 
	
	
		
			
				|  | @@ -354,6 +364,19 @@
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // show opened audio node
 | 
	
		
			
				|  |  | +    function openNode(id){
 | 
	
		
			
				|  |  | +      closeNode();
 | 
	
		
			
				|  |  | +      _node_opened_id = id;
 | 
	
		
			
				|  |  | +      _nodes[id].open();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    function closeNode(){
 | 
	
		
			
				|  |  | +      if(_node_opened_id != -1){
 | 
	
		
			
				|  |  | +        _nodes[_node_opened_id].close();
 | 
	
		
			
				|  |  | +        _node_opened_id = -1;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      //     ______                 __
 | 
	
		
			
				|  |  |      //    / ____/   _____  ____  / /______
 | 
	
		
			
				|  |  |      //   / __/ | | / / _ \/ __ \/ __/ ___/
 | 
	
	
		
			
				|  | @@ -385,11 +408,15 @@
 | 
	
		
			
				|  |  |                  },
 | 
	
		
			
				|  |  |                };
 | 
	
		
			
				|  |  |                _$canvas.trigger(event);
 | 
	
		
			
				|  |  | +              openNode(_node_hover_id);
 | 
	
		
			
				|  |  |              }else{
 | 
	
		
			
				|  |  |                // console.log('corpus : click on map');
 | 
	
		
			
				|  |  |                _$canvas.trigger('corpus-cliked-on-map');
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .on('audio-node-closed', function(e){
 | 
	
		
			
				|  |  | +          closeNode();
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        _$entrees_block_termlinks.on('click', function(event) {
 |