src/js/widgets/polemicWidget.js
branchpopcorn-port
changeset 189 1a7bd51e7e46
parent 188 f1f4b1e44456
child 190 46d34e01c9b0
equal deleted inserted replaced
188:f1f4b1e44456 189:1a7bd51e7e46
   151 					
   151 					
   152 						if (item.content['polemics'] != undefined 
   152 						if (item.content['polemics'] != undefined 
   153 						&& item.content['polemics'][0] != null) {
   153 						&& item.content['polemics'][0] != null) {
   154 						
   154 						
   155 						
   155 						
   156 					//console.log(item.meta['dc:source']['content']);
       
   157 					
       
   158 							for(var j=0; j<item.content['polemics'].length; j++){
   156 							for(var j=0; j<item.content['polemics'].length; j++){
   159 									
   157 									
   160 									this.tweets[numberOfTweet] = {
   158 									this.tweets[numberOfTweet] = {
   161 												id:i,
   159 												id:i,
   162 												qualification:colorTranslation(item.content['polemics'][j]),
   160 												qualification:colorTranslation(item.content['polemics'][j]),
   190 					
   188 					
   191 				} 
   189 				} 
   192 			};	
   190 			};	
   193 			
   191 			
   194 		   DrawTweets.call (this); // FIXME: ugly.
   192 		   DrawTweets.call (this); // FIXME: ugly.
   195 		   if(numberOfTweet>0){Report();}
       
   196 		   
   193 		   
   197 		  };		 
   194 		  };			
   198 		
   195 
   199 		function pourcent(value,max){
       
   200 			var myPourcentage = Math.round(value/max*1000)/10;
       
   201 			return myPourcentage;
       
   202 			
       
   203 		}
       
   204 		function round2Dec(value){
       
   205 			var myValueRounded =  Math.round(value*100)/100;
       
   206 			return myValueRounded
       
   207 		}
       
   208 		
       
   209 
       
   210 		function searchKeyValueArray(mykey,myvalue,myarray){
       
   211 			for(var i=0; i<myarray.length; i++) {
       
   212 				if(myarray[i][mykey]==myvalue){
       
   213 					return i;
       
   214 					console.log("trouvé !");
       
   215 				}
       
   216 			}
       
   217 			return true;
       
   218 		}
       
   219 		
       
   220 		var tweetConversationel   = new Array();
       
   221 		var tweetConversationelSP = 0;
       
   222 		var tweetClient		  	  = new Array();
       
   223 		var tweetRetweet		  = new Array();
       
   224 		var maxRetweet
       
   225 		function tweetRetweetCount(mytweet){
       
   226 			tweet = mytweet.tsource
       
   227 			var retweetIsHere = false;
       
   228 			var myRT =	{
       
   229 				   			id:'',
       
   230 							tweet:tweet,
       
   231 							total:1,
       
   232 							SPtraine:''
       
   233 						} 
       
   234 			if(tweet.retweet_count>0){
       
   235 				for(var i=0; i<tweetRetweet.length; i++){
       
   236 					if(tweetRetweet[i].id==myRT.id){
       
   237 						myRT = tweetRetweet[i];
       
   238 						retweetIsHere=true;
       
   239 					}
       
   240 				}
       
   241 				
       
   242 				if (mytweet.qualification==5){
       
   243 					myTclient.numberNsp+=1;
       
   244 				}else{
       
   245 					myTclient.numberSp+=1;
       
   246 				}
       
   247 				
       
   248 				if(retweetIsHere==false){
       
   249 					tweetRetweet.push(myRT);
       
   250 				}else{
       
   251 					myRT.total+=1;	
       
   252 				}
       
   253 
       
   254 			}
       
   255 		}
       
   256 		function tweetRetweetReport(tweet){
       
   257 			
       
   258 		}
       
   259 		function tweetClientCount(tweet){
       
   260 			var myTclient =	{
       
   261 							client:tweet.tsource.source,
       
   262 							numberNsp:0,
       
   263 							numberSp:0,
       
   264 							total:1,
       
   265 							}
       
   266 			var clientIsHere = false;
       
   267 			for(var i=0; i<tweetClient.length; i++) {
       
   268 				if (tweetClient[i].client==tweet.tsource.source){
       
   269 					clientIsHere = true;
       
   270 					myTclient = tweetClient[i];
       
   271 				}
       
   272 			}
       
   273 			if (tweet.qualification==5){
       
   274 				myTclient.numberNsp+=1;
       
   275 			}else{
       
   276 				myTclient.numberSp+=1;
       
   277 			}
       
   278 			if(clientIsHere==false){
       
   279 				tweetClient.push(myTclient);
       
   280 			}else{
       
   281 				myTclient.total+=1
       
   282 			}
       
   283 		}
       
   284 		function tweetClientSort(a,b){
       
   285 			return (a.total < b.total)?1:-1;
       
   286 		}
       
   287 		function tweetClientReport(){
       
   288 			tweetClient.sort(tweetClientSort);
       
   289 			console.log("_______________________________");
       
   290 			for(var i=0; i<tweetClient.length; i++) {
       
   291 				if(tweetClient[i].total>1){
       
   292 					console.log("t: "+tweetClient[i].total+" / sp :"+tweetClient[i].numberSp+" : "+tweetClient[i].client);
       
   293 				}
       
   294 			}
       
   295 			console.log(JSON.stringify(tweetClient));
       
   296 		}
       
   297 		function conversationalCount(tweet){
       
   298 			if(tweet.tsource.entities.user_mentions.length>2){
       
   299 				if (tweet.qualification!=5){
       
   300 					tweetConversationelSP+=1;
       
   301 				}
       
   302 				var myTc = {
       
   303 							polemique:tweet.qualification,
       
   304 							user_mentions:tweet.tsource.entities.user_mentions,
       
   305 							tsource:tweet
       
   306 							}
       
   307 				tweetConversationel.push(myTc);
       
   308 			}
       
   309 		}
       
   310 		function conversationalReport(){
       
   311 			console.log("_______________________________");
       
   312 			console.log("tweets conversationel    : "+tweetConversationel.length);
       
   313 			console.log("tweets conversationel sp : "+pourcent(tweetConversationelSP,tweetConversationel.length));
       
   314 			console.log("tweets conversationel nsp: "+pourcent(tweetConversationel.length-tweetConversationelSP,tweetConversationel.length));
       
   315 		}
       
   316 		function tweetsStats(){
       
   317 			for(var i=0; i<this.tweets.length; i++) {
       
   318 					conversationalCount(this.tweets[i])
       
   319 					tweetClientCount(this.tweets[i]);
       
   320 					//tweetRetweetCount(tweets[i]);
       
   321 			}	
       
   322 			conversationalReport();
       
   323 			tweetClientReport();
       
   324 		}		
       
   325 		function numberUserUsePolemic(){
       
   326 			
       
   327 			for(var i=0; i<this.tweets.length; i++) {
       
   328 				if (this.tweets[i].qualification!=5){
       
   329 					var searchKeyValueArrayTest = searchKeyValueArray('userId', this.tweets[i].userId,userPol);
       
   330 					if(searchKeyValueArrayTest==true){
       
   331 						myUser = userPol.push({
       
   332 											userId: this.tweets[i].userId,
       
   333 											userScreenName: this.tweets[i].userScreenName,
       
   334 											tweets:[]
       
   335 											});
       
   336 					}
       
   337 				}else{
       
   338 					var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol);
       
   339 					if(searchKeyValueArrayTest==true){
       
   340 						myUser = userNoPol.push({
       
   341 											userId: tweets[i].userId,
       
   342 											userScreenName: tweets[i].userScreenName,
       
   343 											tweets:[]
       
   344 											});
       
   345 					}
       
   346 				}
       
   347 				
       
   348 				var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userst);
       
   349 				//console.log(searchKeyValueArrayTest);
       
   350 				if(searchKeyValueArrayTest==true){
       
   351 					//console.log("ici");
       
   352 					myUser = userst.push({
       
   353 										userId: tweets[i].userId,
       
   354 										userScreenName: tweets[i].userScreenName,
       
   355 										tweetsNP:[],
       
   356 										tweetsSP:[],
       
   357 										ecartNP:null,
       
   358 										ecartSP:null
       
   359 								 		});
       
   360 					if(this.tweets[i].qualification!=5){
       
   361 							userst[myUser-1].tweetsNP.push(tweets);
       
   362 					}else {
       
   363 							userst[myUser-1].tweetsSP.push(tweets);
       
   364 					}
       
   365 				}else{
       
   366 					if(this.tweets[searchKeyValueArrayTest].qualification!=5){
       
   367 						userst[searchKeyValueArrayTest].tweetsNP.push(this.tweets);
       
   368 					}else {
       
   369 						userst[searchKeyValueArrayTest].tweetsSP.push(this.tweets);
       
   370 					}	
       
   371 				}	
       
   372 			}
       
   373 			
       
   374 			moyenneDeTweetsNPparUsers = (numberOfTweet-qTweet_0)/userNoPol.length
       
   375 			moyenneDeTweetsSPparUsers = (numberOfTweet-qTweet_0)/userPol.length
       
   376 			sommeDeMesCarreSP=0;
       
   377 			sommeDeMesCarreNP=0;			
       
   378 			for(var i=0; i<userst.length; i++) {
       
   379 				myEcartSP = Math.pow(userst[i].tweetsSP.length-moyenneDeTweetsSPparUsers,2);
       
   380 				userst[i].ecartSP=myEcartSP;
       
   381 				sommeDeMesCarreSP+=myEcartSP;
       
   382 				
       
   383 				myEcartNP = Math.pow(userst[i].tweetsNP.length-moyenneDeTweetsNPparUsers,2);
       
   384 				userst[i].ecartNP=myEcartNP;
       
   385 				sommeDeMesCarreNP+=myEcartNP;
       
   386 			}
       
   387 			varianceSP	= sommeDeMesCarreSP/userst.length
       
   388 			varianceNP	= sommeDeMesCarreNP/userst.length
       
   389 			
       
   390 			SommeVariances = varianceNP + varianceSP;
       
   391 			
       
   392 			EcartTypeSP = Math.sqrt(varianceSP);
       
   393 			EcartTypeNP = Math.sqrt(varianceNP);
       
   394 			
       
   395 			SommeEcart = EcartTypeSP + EcartTypeNP;
       
   396 			
       
   397 
       
   398 			
       
   399 			
       
   400 			console.log("user  SP	       	: "+userPol.length);
       
   401 			console.log("user  nSP  	   	: "+userNoPol.length);
       
   402 			console.log("nbrTP / user SP   	: "+round2Dec(moyenneDeTweetsSPparUsers));
       
   403 			console.log("nbrT  / user nSP  	: "+round2Dec(moyenneDeTweetsNPparUsers));
       
   404 			console.log("varianceSP	  	: "+round2Dec(varianceSP));
       
   405 			console.log("varianceNP	  	: "+round2Dec(varianceNP));
       
   406 			console.log("EcartTypeSP	  	: "+round2Dec(EcartTypeSP));
       
   407 			console.log("EcartTypeNP	  	: "+round2Dec(EcartTypeNP));
       
   408 			
       
   409 		}
       
   410 		function Report(){
       
   411 			console.log("_______________________________");
       
   412 			console.log("Total de tweets   	: "+numberOfTweet)
       
   413 			console.log("Total de tweets P 	: "+(numberOfTweet-qTweet_0)+" 	"+ pourcent((numberOfTweet-qTweet_0),numberOfTweet)+" %")
       
   414 			console.log("accord       		: "+qTweet_OK+" 	"+pourcent(qTweet_OK,numberOfTweet)+" %");
       
   415 			console.log("desaccord    		: "+qTweet_KO+" 	"+pourcent(qTweet_KO,numberOfTweet)+" %");
       
   416 			console.log("question     		: "+qTweet_Q+" 	"+pourcent(qTweet_Q,numberOfTweet)+" %");
       
   417 			console.log("reference    		: "+qTweet_REF+" 	"+pourcent(qTweet_REF,numberOfTweet)+" %");
       
   418 			console.log("sans polemic 		: "+qTweet_0+" 	"+pourcent(qTweet_0,numberOfTweet)+" %");
       
   419 			// numberUserUsePolemic();
       
   420 			// tweetsStats.call(this); //fixme: ugly
       
   421 		}
       
   422 		// tweet Drawing (in raphael) 
   196 		// tweet Drawing (in raphael) 
   423 		function DrawTweets (){
   197 		function DrawTweets (){
   424 		// GROUPES TWEET ============================================
   198 		// GROUPES TWEET ============================================
   425 		// Count nbr of cluster and tweet in a frame an save int in "frames"
   199 		// Count nbr of cluster and tweet in a frame an save int in "frames"
   426 			numberOfTweet = this.tweets.length;
   200 			numberOfTweet = this.tweets.length;
   532 		}
   306 		}
   533 		
   307 		
   534 		if(typeof(PaperSlider) !== 'undefined' ) {
   308 		if(typeof(PaperSlider) !== 'undefined' ) {
   535 			PaperSlider.toFront();
   309 			PaperSlider.toFront();
   536 		}
   310 		}
   537 		Report.call(this);
       
   538 	}
   311 	}
   539 
   312 
   540 	
   313 	
   541 	// jQuery(document).mousemove(function(e){
   314 	// jQuery(document).mousemove(function(e){
   542 		// if (over){
   315 		// if (over){