web/res/metadataplayer.polemic/src/js/polemic.js
changeset 259 bc17d1af15ab
parent 229 74c9ddc3640b
child 266 bb7a2f8202b9
--- a/web/res/metadataplayer.polemic/src/js/polemic.js	Fri Aug 19 17:53:30 2011 +0200
+++ b/web/res/metadataplayer.polemic/src/js/polemic.js	Sun Aug 28 11:48:30 2011 +0200
@@ -18,10 +18,16 @@
 */
 // CHART TIMELINE / VERSION PROTOTYPE  ::
 
-
+	var RAWTweets;
+	var userPol   = new Array();
+	var userNoPol = new Array();
+	var numberOfTweet = 0;
+	var Users;
+	var TweetPolemic;
 	var yMax	  		= config.height; 
 	var PaperSlider;
-	var  heightOfChart;
+	var heightOfChart;
+	var tweets  = new Array();
 	// Make and define the Raphael area
 	//var paper = Raphael(document.getElementById(config.target),config.width, config.height);
 		
@@ -41,7 +47,7 @@
 		var colors  = new Array("","#1D973D","#C5A62D","#CE0A15","#036AAE","#585858");
 		
 		// array 
-		var tweets  = new Array();
+		//var tweets  = new Array();
 		var element = new Array();
 		var cluster = new Array();
 		var frames  = new Array(frameLenght);
@@ -91,21 +97,31 @@
 		
 		// Refactoring (parametere) ************************************************************
 		// color translastion
+		var qTweet_0  =0;
+		var qTweet_Q  =0;
+		var qTweet_REF=0;
+		var qTweet_OK =0;
+		var qTweet_KO =0;
 		function colorTranslation(value){
 			if(value == "Q"){
+				qTweet_Q+=1;
 				return 2;
 			}else if(value =="REF"){
+				qTweet_REF+=1;
 				return 4;
 			}else if(value =="OK"){
+				qTweet_OK+=1;
 				return 1;
 			}else if(value =="KO"){
+				qTweet_KO+=1;
 				return 3;
 			}else if(value ==""){
+				qTweet_0+=1;
 				return 5;
 			}
 		}
 		
-		
+
 		// Refactoring (parametere) ************************************************************
 		// load tweets send in parameters 
 		__IriSP.jQuery.ajax({
@@ -121,16 +137,25 @@
 		    if(typeof(view.annotation_types) !== "undefined" && view.annotation_types.length > 1) {
 		    	tweet_annot_type = view.annotation_types[1];
 		    }
-			
+			RAWTweets = json.annotations;
 			
 			__IriSP.jQuery.each(json.annotations, function(i,item) {
 				
 				var MyTime  = Math.floor(item.begin/duration*lineSize);
 				var Myframe = Math.floor(MyTime/lineSize*frameLenght);
 
-				if (typeof(item.meta) !== "undefined" && typeof(item.meta["id-ref"]) !== "undefined" && item.meta["id-ref"] === tweet_annot_type) {
-					if (item.content['polemics'] != undefined && item.content['polemics'][0] != null) {
+				if (typeof(item.meta) !== "undefined" 
+					&& typeof(item.meta["id-ref"]) !== "undefined"
+					&& item.meta["id-ref"] === tweet_annot_type) {
 						
+					var MyTJson = JSON.parse(item.meta['dc:source']['content']);
+					
+						if (item.content['polemics'] != undefined 
+						&& item.content['polemics'][0] != null) {
+						
+						
+					//console.log(item.meta['dc:source']['content']);
+					
 							for(var j=0; j<item.content['polemics'].length; j++){
 									
 									tweets[numberOfTweet] = {
@@ -139,9 +164,13 @@
 												yIndicator:MyTime,
 												yframe:Myframe,
 												title:item.content['title'],
-												timeframe:item.begin
+												timeframe:item.begin,
+												userId: MyTJson.id,
+												userScreenName: MyTJson.screen_name,
+												tsource:MyTJson
 												};
 									numberOfTweet+=1;
+									
 							}
 					}
 					else {
@@ -152,7 +181,11 @@
 									yIndicator:MyTime,
 									yframe:Myframe,
 									title:item.content['title'],
-									timeframe:item.begin
+									timeframe:item.begin,
+									userId: MyTJson.id,
+									userScreenName: MyTJson.screen_name,
+									tsource:MyTJson
+									
 						};
 						numberOfTweet+=1;
 					}
@@ -162,13 +195,203 @@
 					//trace("tweet qualification = ","null");
 				}
 			});	
-			trace("======= ",numberOfTweet);
+			
 		   DrawTweets ();
+		   if(numberOfTweet>0){Report();}
 		   
 		  }
 		 });
+		
+		function pourcent(value,max){
+			var myPourcentage = Math.round(value/max*1000)/10;
+			return myPourcentage;
 			
+		}
+		function round2Dec(value){
+			var myValueRounded =  Math.round(value*100)/100;
+			return myValueRounded
+		}
+		
 
+		function searchKeyValueArray(mykey,myvalue,myarray){
+			for(var i=0; i<myarray.length; i++) {
+				if(myarray[i][mykey]==myvalue){
+					return i;
+					console.log("trouvé !");
+				}
+			}
+			return true;
+		}
+		
+		var tweetConversationel   = new Array();
+		var tweetConversationelSP = 0;
+		var tweetClient		  	  = new Array();
+		var tweetRetweet		  = new Array();
+		var maxRetweet
+		function tweetRetweetCount(mytweet){
+			tweet = mytweet.tsource
+			var retweetIsHere = false;
+			var myRT =	{
+				   			id:'',
+							tweet:tweet,
+							total:1,
+							SPtraine:''
+						} 
+			if(tweet.retweet_count>0){
+				for(var i=0; i<tweetRetweet.length; i++){
+					if(tweetRetweet[i].id==myRT.id){
+						myRT = tweetRetweet[i];
+						retweetIsHere=true;
+					}
+				}
+				
+				if (mytweet.qualification==5){
+					myTclient.numberNsp+=1;
+				}else{
+					myTclient.numberSp+=1;
+				}
+				
+				if(retweetIsHere==false){
+					tweetRetweet.push(myRT);
+				}else{
+					myRT.total+=1;	
+				}
+
+			}
+		}
+		function tweetRetweetReport(tweet){
+			
+		}
+		function tweetClientCount(tweet){
+			var myTclient =	{
+							client:tweet.tsource.source,
+							numberNsp:0,
+							numberSp:0,
+							total:1,
+							}
+			var clientIsHere = false;
+			for(var i=0; i<tweetClient.length; i++) {
+				if (tweetClient[i].client==tweet.tsource.source){
+					clientIsHere = true;
+					myTclient = tweetClient[i];
+				}
+			}
+			if (tweet.qualification==5){
+				myTclient.numberNsp+=1;
+			}else{
+				myTclient.numberSp+=1;
+			}
+			if(clientIsHere==false){
+				tweetClient.push(myTclient);
+			}else{
+				myTclient.total+=1
+			}
+		}
+		function tweetClientSort(a,b){
+			return (a.total < b.total)?1:-1;
+		}
+		function tweetClientReport(){
+			tweetClient.sort(tweetClientSort);
+			console.log("_______________________________");
+			for(var i=0; i<tweetClient.length; i++) {
+				if(tweetClient[i].total>1){
+					console.log("t: "+tweetClient[i].total+" / sp :"+tweetClient[i].numberSp+" : "+tweetClient[i].client);
+				}
+			}
+		}
+		function conversationalCount(tweet){
+			if(tweet.tsource.entities.user_mentions.length>2){
+				if (tweet.qualification!=5){
+					tweetConversationelSP+=1;
+				}
+				var myTc = {
+							polemique:tweet.qualification,
+							user_mentions:tweet.tsource.entities.user_mentions,
+							tsource:tweet
+							}
+				tweetConversationel.push(myTc);
+			}
+		}
+		function conversationalReport(){
+			console.log("_______________________________");
+			console.log("tweets conversationel    : "+tweetConversationel.length);
+			console.log("tweets conversationel sp : "+pourcent(tweetConversationelSP,tweetConversationel.length));
+			console.log("tweets conversationel nsp: "+pourcent(tweetConversationel.length-tweetConversationelSP,tweetConversationel.length));
+		}
+		function tweetsStats(){
+			for(var i=0; i<tweets.length; i++) {
+					conversationalCount(tweets[i])
+					tweetClientCount(tweets[i]);
+					tweetRetweetCount(tweets[i]);
+			}	
+			conversationalReport();
+			tweetClientReport();
+		}		
+		function numberUserUsePolemic(){
+			
+			for(var i=0; i<tweets.length; i++) {
+			/*	
+				var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol);
+					myUser = {
+							  userId: tweets[i].userId,
+							  userScreenName: tweets[i].userScreenName,
+							  
+							  };
+
+				if(searchKeyValueArrayTest==true){
+					myUser = userPol.push({
+										userId: tweets[i].userId,
+										userScreenName: tweets[i].userScreenName,
+										tweets:[]
+										});
+						if (tweets[i].qualification!=5){
+							
+						}else{
+							
+						}
+					
+				}
+				
+			*/	
+				if (tweets[i].qualification!=5){
+					var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol);
+					if(searchKeyValueArrayTest==true){
+						myUser = userPol.push({
+											userId: tweets[i].userId,
+											userScreenName: tweets[i].userScreenName,
+											tweets:[]
+											});
+						//var myUTweets = myUser.tweets = new Array();
+						//myUTweets.push(tweets[i]);
+					}
+				}else{
+					var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol);
+					if(searchKeyValueArrayTest==true){
+						myUser = userNoPol.push({
+											userId: tweets[i].userId,
+											userScreenName: tweets[i].userScreenName,
+											tweets:[]
+											});
+					}
+				}
+			}
+			console.log("user  SP	       : "+userPol.length);
+			console.log("user  nSP  	   : "+userNoPol.length);
+			console.log("nbrTP / user SP   : "+round2Dec((numberOfTweet-qTweet_0)/userPol.length));
+			console.log("nbrT  / user nSP  : "+round2Dec((numberOfTweet-qTweet_0)/userNoPol.length));
+		}
+		function Report(){
+			console.log("_______________________________");
+			console.log("Total de tweets   : "+numberOfTweet)
+			console.log("Total de tweets P : "+(numberOfTweet-qTweet_0))
+			console.log("question     : "+pourcent(qTweet_Q,numberOfTweet)+" %");
+			console.log("reference    : "+pourcent(qTweet_REF,numberOfTweet)+" %");
+			console.log("accord       : "+pourcent(qTweet_OK,numberOfTweet)+" %");
+			console.log("desaccord    : "+pourcent(qTweet_KO,numberOfTweet)+" %");
+			console.log("sans polemic : "+pourcent(qTweet_0,numberOfTweet)+" %");
+			numberUserUsePolemic();
+			tweetsStats();
+		}
 		// tweet Drawing (in raphael) 
 		function DrawTweets (){
 		// GROUPES TWEET ============================================
@@ -220,6 +443,7 @@
 		
 			var tweetDrawed = new Array();
 			var TweetHeight = 5;
+			
 			// DRAW  TWEETS ============================================
 			for(var i=0; i<nbrframes;i++) {
 				var addEheight = 5;
@@ -278,6 +502,7 @@
 		if(typeof(PaperSlider) !== 'undefined' ) {
 			PaperSlider.toFront();
 		}
+		Report();
 	}