web/res/metadataplayer.polemic/src/js/polemic.js
changeset 133 9578d3ddce17
parent 123 1fa34184093b
child 202 2bf0fd3432bf
--- a/web/res/metadataplayer.polemic/src/js/polemic.js	Wed Apr 27 15:40:01 2011 +0200
+++ b/web/res/metadataplayer.polemic/src/js/polemic.js	Wed Apr 27 18:54:31 2011 +0200
@@ -1,311 +1,311 @@
-/* 
- * 	
- *	Copyright 2010 Institut de recherche et d'innovation 
- *	contributor(s) : Samuel Huron 
- *	 
- *	contact@iri.centrepompidou.fr
- *	http://www.iri.centrepompidou.fr 
- *	 
- *	This software is a computer program whose purpose is to show and add annotations on a video .
- *	This software is governed by the CeCILL-C license under French law and
- *	abiding by the rules of distribution of free software. You can  use, 
- *	modify and/ or redistribute the software under the terms of the CeCILL-C
- *	license as circulated by CEA, CNRS and INRIA at the following URL
- *	"http://www.cecill.info". 
- *	
- *	The fact that you are presently reading this means that you have had
- *	knowledge of the CeCILL-C license and that you accept its terms.
-*/
-// CHART TIMELINE / VERSION PROTOTYPE  ::
-
-
-	var yMax	  		= config.height; 
-	var PaperSlider;
-	var  heightOfChart;
-	// Make and define the Raphael area
-	//var paper = Raphael(document.getElementById(config.target),config.width, config.height);
-		
-	function ChartTimeLine (){
-	
-		// variable 
-		// yMax
-		var yCoef	  		= 2; 						// coef for height of 1 tweet 
-		var frameSize 		= 5; 						// frame size 
-		var margin 	  		= 1;						// marge between frame
-		var lineSize  		= config.width;				// timeline pixel width 
-		var nbrframes 		= lineSize/frameSize; 		// frame numbers
-		var numberOfTweet 	= 0;						// number of tweet overide later 
-		var duration  		= config.duration;			// timescale width 
-		var frameLenght 	= lineSize/frameSize;		// frame timescale	
-		var timeline;
-		var colors  = new Array("","#1D973D","#C5A62D","#CE0A15","#036AAE","#585858");
-		
-		// array 
-		var tweets  = new Array();
-		var element = new Array();
-		var cluster = new Array();
-		var frames  = new Array(frameLenght);
-		var slices  = new Array();
-		
-		
-		// Classes =======================================================================
-		var Frames = function(){
-			
-			var Myclusters;
-			var x;
-			var y;
-			var width;
-			var height;
-		};
-		Frames = function(json){
-			// make my clusters
-			// ou Frame vide 
-		};
-		Frames.prototype.draw = function(){
-		};
-		Frames.prototype.zoom = function(){
-		};
-		Frames.prototype.inside = function(){
-		};
-		var Clusters = function(){
-			var Object;
-			var yDist;
-			var x;
-			var y;
-			var width;
-			var height;
-		};
-		Clusters = function(json){
-			// make my object
-		};
-		var Tweet = function(){
-		};
-		// Classes =======================================================================
-		
-		// trace function 
-		var traceNum = 0;
-		function trace(msg,value){
-			traceNum += 1;
-			__IriSP.jQuery("<div>"+traceNum+" - "+msg+" : "+value+"</div>").appendTo("#output");
-		}
-		
-		// Refactoring (parametere) ************************************************************
-		// color translastion
-		function colorTranslation(value){
-			if(value == "Q"){
-				return 2;
-			}else if(value =="REF"){
-				return 4;
-			}else if(value =="OK"){
-				return 1;
-			}else if(value =="KO"){
-				return 3;
-			}else if(value ==""){
-				return 5;
-			}
-		}
-		
-		
-		// Refactoring (parametere) ************************************************************
-		// load tweets send in parameters 
-		__IriSP.jQuery.ajax({
-		  dataType: "jsonp",
-		  url:config.metadata,
-		  success : function(json){
-			trace("load","");
-				__IriSP.jQuery.each(json.annotations, function(i,item) {
-					
-					var MyTime  = Math.floor(item.begin/duration*lineSize);
-					var Myframe = Math.floor(MyTime/lineSize*frameLenght);
-
-					if (item.content['polemics'] != undefined) {
-						if (item.content['polemics'][0] != null) {
-							
-								for(var j=0; j<item.content['polemics'].length; j++){
-										
-										tweets[numberOfTweet] = {
-													id:i,
-													qualification:colorTranslation(item.content['polemics'][j]),
-													yIndicator:MyTime,
-													yframe:Myframe,
-													title:item.content['title'],
-													timeframe:item.begin
-													};
-										numberOfTweet+=1;
-								}
-						}else{
-							//trace("k = ",i);
-							tweets[numberOfTweet] = {
-										id:i,
-										qualification:colorTranslation(""),
-										yIndicator:MyTime,
-										yframe:Myframe,
-										title:item.content['title'],
-										timeframe:item.begin
-							};
-							numberOfTweet+=1;
-						}
-						
-					} else {
-						//trace("tweet qualification = ","null");
-					}
-				});	
-			trace("======= ",numberOfTweet);
-		   DrawTweets ();
-		   
-		  }
-		 });
-			
-
-		// tweet Drawing (in raphael) 
-		function DrawTweets (){
-		// GROUPES TWEET ============================================
-		// Count nbr of cluster and tweet in a frame an save int in "frames"
-			numberOfTweet = tweets.length;
-			for(var i=0; i<nbrframes; i++) {	
-				for(var j=0; j<numberOfTweet; j++) {	
-				
-					if (i==tweets[j].yframe){
-						
-						var k = tweets[j].qualification;
-						
-						// make array for frame cluster
-						if(frames[i]==undefined){
-							frames[i] = {id:i,
-										 qualifVol:new Array(),
-										 mytweetsID:new Array()
-										};
-						}
-						// add my tweet to frame
-						frames[i].mytweetsID.push(tweets[j]);
-						
-						// count opinion by frame
-						if( frames[i].qualifVol[k] == undefined){
-							frames[i].qualifVol[k] = 1;
-						}else{
-							frames[i].qualifVol[k] += 1;
-						}
-						
-					}
-				}
-			}
-		
-		// GROUPES TWEET ============================================		
-		// max of tweet by Frame 
-			var max = 0; 
-			for(var i=0; i<nbrframes; i++) {
-				var moy	= 0;
-				for (var j=0; j<6; j++){		
-					if (frames[i]!=undefined){
-						if (frames[i].qualifVol[j]!=undefined){
-							moy += frames[i].qualifVol[j];
-						}
-					}
-				}
-				//trace("frame "+i,moy);
-				if (moy>max){max=moy;}
-			}
-		
-			var tweetDrawed = new Array();
-			var TweetHeight = 5;
-			// DRAW  TWEETS ============================================
-			for(var i=0; i<nbrframes;i++) {
-				var addEheight = 5;
-				if (frames[i]!=undefined){
-					trace (i+" k=",frames[i].mytweetsID.length);
-					// by type 
-					for (var j=6; j>-1; j--){
-						if (frames[i].qualifVol[j]!=undefined){
-							// show tweet by type 
-							for (var k=0; k<frames[i].mytweetsID.length; k++){
-								if (frames[i].mytweetsID[k].qualification==j){
-									var y=config.heightmax-addEheight;
-									if(yMax>y){yMax=y;}
-									e = paper.rect( i*frameSize, 					// x
-													y,								// y
-													frameSize-margin,				// width
-													TweetHeight						// height
-													).attr({stroke:"#00","stroke-width":0.1,  fill: colors[j]});	
-									addEheight +=TweetHeight;
-									e.time= frames[i].mytweetsID[k].timeframe;
-									e.title= frames[i].mytweetsID[k].title;
-									e.mouseover(function () {
-										//this.attr({stroke:"#fff","stroke-width":5});
-										//this.toFront();
-									}).mouseout(function () {
-										//this.attr({stroke:"#00","stroke-width":0.1});	
-									}).mousedown(function () {
-										__IriSP.MyApiPlayer.seek(this.time/1000);
-									});
-									__IriSP.jQuery(e.node).attr('id', 't'+k+'');
-									__IriSP.jQuery(e.node).attr('title', frames[i].mytweetsID[k].title);
-									__IriSP.jQuery(e.node).attr('begin',  frames[i].mytweetsID[k].timeframe);
-									var tempPosition = {x:i*frameSize,y:config.heightmax-addEheight};
-									addTip(e.node, frames[i].mytweetsID[k].title,colors[j],tempPosition);
-									//frames[i].mytweetsID.pop();
-								}
-							}
-						}
-					}
-				}
-
-			}		
-			// DRAW UI :: resize border and bgd
-			heightOfChart 	= (yMax-(config.height-yMax));
-			PaperBackground = paper.rect(0,yMax,config.width,heightOfChart).attr({fill:"#fff","stroke-width":0.1,opacity: 0.1});	
-			PaperBorder 	= paper.rect(0,yMax,config.width,1).attr({fill:"#fff",stroke: "none",opacity: 1});	
-			PaperSlider 	= paper.rect(0,20,1,heightOfChart).attr({fill:"#fff",stroke: "none",opacity: 1});	
-			
-			// decalage 
-			tweetSelection = paper.rect(-100,-100,5,5).attr({fill:"#fff",stroke: "none",opacity: 1});	
-				
-			PaperSlider.toFront();
-			PaperBackground.toBack();
-		}
-		
-		if(typeof(PaperSlider) !== 'undefined' ) {
-			PaperSlider.toFront();
-		}
-	}
-
-	
-	$(document).mousemove(function(e){
-		if (over){
-			__IriSP.jQuery("#tip").css("left", e.pageX-106).css("top", e.pageY-160);
-			__IriSP.jQuery("#tipcolor").css("background-color", tipColor);
-			__IriSP.jQuery("#tiptext").text(tipText);
-			__IriSP.jQuery("#tip").show();
-		}else{
-			if (typeof(__IriSP) !== 'undefined' ) {
-			     __IriSP.jQuery("#tip").css("left", -10000).css("top", -100000);
-			     //tweetSelection.attr({x:-100,y:-100});
-			}
-		}
-	});
-	
-	var over 	 = false;
-	var tipText  = "";
-	var tipColor = "#efefef";
-	var tweetSelection;
-	var PaperSlider;
-	
-	// AddTip  ******************************************************************************
-	function addTip(node, txt,color,tempPosition){
-			__IriSP.jQuery(node).mouseover(function(){
-			   tipText = txt;
-			   //tip.hide();//fadeIn(0);
-			   tipColor = color;
-			   over = true;
-			   //tweetSelection.attr(tempPosition);
-			   //tweetSelection.toFront();
-			}).mouseout(function(){
-			   //tip.show()//tip.fadeOut(0);
-			   over = false;
-			});
-			
-
-	}
-	
-		$(document).ready(function() {
-			var tip 	 = __IriSP.jQuery("#tip").hide();
+/* 
+ * 	
+ *	Copyright 2010 Institut de recherche et d'innovation 
+ *	contributor(s) : Samuel Huron 
+ *	 
+ *	contact@iri.centrepompidou.fr
+ *	http://www.iri.centrepompidou.fr 
+ *	 
+ *	This software is a computer program whose purpose is to show and add annotations on a video .
+ *	This software is governed by the CeCILL-C license under French law and
+ *	abiding by the rules of distribution of free software. You can  use, 
+ *	modify and/ or redistribute the software under the terms of the CeCILL-C
+ *	license as circulated by CEA, CNRS and INRIA at the following URL
+ *	"http://www.cecill.info". 
+ *	
+ *	The fact that you are presently reading this means that you have had
+ *	knowledge of the CeCILL-C license and that you accept its terms.
+*/
+// CHART TIMELINE / VERSION PROTOTYPE  ::
+
+
+	var yMax	  		= config.height; 
+	var PaperSlider;
+	var  heightOfChart;
+	// Make and define the Raphael area
+	//var paper = Raphael(document.getElementById(config.target),config.width, config.height);
+		
+	function ChartTimeLine (){
+	
+		// variable 
+		// yMax
+		var yCoef	  		= 2; 						// coef for height of 1 tweet 
+		var frameSize 		= 5; 						// frame size 
+		var margin 	  		= 1;						// marge between frame
+		var lineSize  		= config.width;				// timeline pixel width 
+		var nbrframes 		= lineSize/frameSize; 		// frame numbers
+		var numberOfTweet 	= 0;						// number of tweet overide later 
+		var duration  		= config.duration;			// timescale width 
+		var frameLenght 	= lineSize/frameSize;		// frame timescale	
+		var timeline;
+		var colors  = new Array("","#1D973D","#C5A62D","#CE0A15","#036AAE","#585858");
+		
+		// array 
+		var tweets  = new Array();
+		var element = new Array();
+		var cluster = new Array();
+		var frames  = new Array(frameLenght);
+		var slices  = new Array();
+		
+		
+		// Classes =======================================================================
+		var Frames = function(){
+			
+			var Myclusters;
+			var x;
+			var y;
+			var width;
+			var height;
+		};
+		Frames = function(json){
+			// make my clusters
+			// ou Frame vide 
+		};
+		Frames.prototype.draw = function(){
+		};
+		Frames.prototype.zoom = function(){
+		};
+		Frames.prototype.inside = function(){
+		};
+		var Clusters = function(){
+			var Object;
+			var yDist;
+			var x;
+			var y;
+			var width;
+			var height;
+		};
+		Clusters = function(json){
+			// make my object
+		};
+		var Tweet = function(){
+		};
+		// Classes =======================================================================
+		
+		// trace function 
+		var traceNum = 0;
+		function trace(msg,value){
+			traceNum += 1;
+			__IriSP.jQuery("<div>"+traceNum+" - "+msg+" : "+value+"</div>").appendTo("#output");
+		}
+		
+		// Refactoring (parametere) ************************************************************
+		// color translastion
+		function colorTranslation(value){
+			if(value == "Q"){
+				return 2;
+			}else if(value =="REF"){
+				return 4;
+			}else if(value =="OK"){
+				return 1;
+			}else if(value =="KO"){
+				return 3;
+			}else if(value ==""){
+				return 5;
+			}
+		}
+		
+		
+		// Refactoring (parametere) ************************************************************
+		// load tweets send in parameters 
+		__IriSP.jQuery.ajax({
+		  dataType: "jsonp",
+		  url:config.metadata,
+		  success : function(json){
+			trace("load","");
+				__IriSP.jQuery.each(json.annotations, function(i,item) {
+					
+					var MyTime  = Math.floor(item.begin/duration*lineSize);
+					var Myframe = Math.floor(MyTime/lineSize*frameLenght);
+
+					if (item.content['polemics'] != undefined) {
+						if (item.content['polemics'][0] != null) {
+							
+								for(var j=0; j<item.content['polemics'].length; j++){
+										
+										tweets[numberOfTweet] = {
+													id:i,
+													qualification:colorTranslation(item.content['polemics'][j]),
+													yIndicator:MyTime,
+													yframe:Myframe,
+													title:item.content['title'],
+													timeframe:item.begin
+													};
+										numberOfTweet+=1;
+								}
+						}else{
+							//trace("k = ",i);
+							tweets[numberOfTweet] = {
+										id:i,
+										qualification:colorTranslation(""),
+										yIndicator:MyTime,
+										yframe:Myframe,
+										title:item.content['title'],
+										timeframe:item.begin
+							};
+							numberOfTweet+=1;
+						}
+						
+					} else {
+						//trace("tweet qualification = ","null");
+					}
+				});	
+			trace("======= ",numberOfTweet);
+		   DrawTweets ();
+		   
+		  }
+		 });
+			
+
+		// tweet Drawing (in raphael) 
+		function DrawTweets (){
+		// GROUPES TWEET ============================================
+		// Count nbr of cluster and tweet in a frame an save int in "frames"
+			numberOfTweet = tweets.length;
+			for(var i=0; i<nbrframes; i++) {	
+				for(var j=0; j<numberOfTweet; j++) {	
+				
+					if (i==tweets[j].yframe){
+						
+						var k = tweets[j].qualification;
+						
+						// make array for frame cluster
+						if(frames[i]==undefined){
+							frames[i] = {id:i,
+										 qualifVol:new Array(),
+										 mytweetsID:new Array()
+										};
+						}
+						// add my tweet to frame
+						frames[i].mytweetsID.push(tweets[j]);
+						
+						// count opinion by frame
+						if( frames[i].qualifVol[k] == undefined){
+							frames[i].qualifVol[k] = 1;
+						}else{
+							frames[i].qualifVol[k] += 1;
+						}
+						
+					}
+				}
+			}
+		
+		// GROUPES TWEET ============================================		
+		// max of tweet by Frame 
+			var max = 0; 
+			for(var i=0; i<nbrframes; i++) {
+				var moy	= 0;
+				for (var j=0; j<6; j++){		
+					if (frames[i]!=undefined){
+						if (frames[i].qualifVol[j]!=undefined){
+							moy += frames[i].qualifVol[j];
+						}
+					}
+				}
+				//trace("frame "+i,moy);
+				if (moy>max){max=moy;}
+			}
+		
+			var tweetDrawed = new Array();
+			var TweetHeight = 5;
+			// DRAW  TWEETS ============================================
+			for(var i=0; i<nbrframes;i++) {
+				var addEheight = 5;
+				if (frames[i]!=undefined){
+					trace (i+" k=",frames[i].mytweetsID.length);
+					// by type 
+					for (var j=6; j>-1; j--){
+						if (frames[i].qualifVol[j]!=undefined){
+							// show tweet by type 
+							for (var k=0; k<frames[i].mytweetsID.length; k++){
+								if (frames[i].mytweetsID[k].qualification==j){
+									var y=config.heightmax-addEheight;
+									if(yMax>y){yMax=y;}
+									e = paper.rect( i*frameSize, 					// x
+													y,								// y
+													frameSize-margin,				// width
+													TweetHeight						// height
+													).attr({stroke:"#00","stroke-width":0.1,  fill: colors[j]});	
+									addEheight +=TweetHeight;
+									e.time= frames[i].mytweetsID[k].timeframe;
+									e.title= frames[i].mytweetsID[k].title;
+									e.mouseover(function () {
+										//this.attr({stroke:"#fff","stroke-width":5});
+										//this.toFront();
+									}).mouseout(function () {
+										//this.attr({stroke:"#00","stroke-width":0.1});	
+									}).mousedown(function () {
+										__IriSP.MyApiPlayer.seek(this.time/1000);
+									});
+									__IriSP.jQuery(e.node).attr('id', 't'+k+'');
+									__IriSP.jQuery(e.node).attr('title', frames[i].mytweetsID[k].title);
+									__IriSP.jQuery(e.node).attr('begin',  frames[i].mytweetsID[k].timeframe);
+									var tempPosition = {x:i*frameSize,y:config.heightmax-addEheight};
+									addTip(e.node, frames[i].mytweetsID[k].title,colors[j],tempPosition);
+									//frames[i].mytweetsID.pop();
+								}
+							}
+						}
+					}
+				}
+
+			}		
+			// DRAW UI :: resize border and bgd
+			heightOfChart 	= (yMax-(config.height-yMax));
+			PaperBackground = paper.rect(0,yMax,config.width,heightOfChart).attr({fill:"#fff","stroke-width":0.1,opacity: 0.1});	
+			PaperBorder 	= paper.rect(0,yMax,config.width,1).attr({fill:"#fff",stroke: "none",opacity: 1});	
+			PaperSlider 	= paper.rect(0,20,1,heightOfChart).attr({fill:"#fff",stroke: "none",opacity: 1});	
+			
+			// decalage 
+			tweetSelection = paper.rect(-100,-100,5,5).attr({fill:"#fff",stroke: "none",opacity: 1});	
+				
+			PaperSlider.toFront();
+			PaperBackground.toBack();
+		}
+		
+		if(typeof(PaperSlider) !== 'undefined' ) {
+			PaperSlider.toFront();
+		}
+	}
+
+	
+	$(document).mousemove(function(e){
+		if (over){
+			__IriSP.jQuery("#tip").css("left", e.pageX-106).css("top", e.pageY-160);
+			__IriSP.jQuery("#tipcolor").css("background-color", tipColor);
+			__IriSP.jQuery("#tiptext").text(tipText);
+			__IriSP.jQuery("#tip").show();
+		}else{
+			if (typeof(__IriSP) !== 'undefined' ) {
+			     __IriSP.jQuery("#tip").css("left", -10000).css("top", -100000);
+			     //tweetSelection.attr({x:-100,y:-100});
+			}
+		}
+	});
+	
+	var over 	 = false;
+	var tipText  = "";
+	var tipColor = "#efefef";
+	var tweetSelection;
+	var PaperSlider;
+	
+	// AddTip  ******************************************************************************
+	function addTip(node, txt,color,tempPosition){
+			__IriSP.jQuery(node).mouseover(function(){
+			   tipText = txt;
+			   //tip.hide();//fadeIn(0);
+			   tipColor = color;
+			   over = true;
+			   //tweetSelection.attr(tempPosition);
+			   //tweetSelection.toFront();
+			}).mouseout(function(){
+			   //tip.show()//tip.fadeOut(0);
+			   over = false;
+			});
+			
+
+	}
+	
+		$(document).ready(function() {
+			var tip 	 = __IriSP.jQuery("#tip").hide();
 		});
\ No newline at end of file