--- a/web/res/metadataplayer.polemic/src/js/polemic.js Sun Mar 04 14:13:39 2012 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,589 +0,0 @@
-/*
- *
- * 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 RAWTweets;
- var userPol = new Array();
- var userNoPol = new Array();
- var userst = new Array();
- var numberOfTweet = 0;
- var Users;
- var TweetPolemic;
- var yMax = config.height;
- var PaperSlider;
- var heightOfChart;
- var tweets = new Array();
- // 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
- 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({
- dataType: "jsonp",
- url:config.metadata,
- success : function(json){
- trace("load","");
- // get current view (the first ???)
- view = json.views[0];
-
- // the tweets are by definition of the second annotation type
- tweet_annot_type = null;
- 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) {
-
- 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] = {
- id:i,
- qualification:colorTranslation(item.content['polemics'][j]),
- yIndicator:MyTime,
- yframe:Myframe,
- title:item.content['title'],
- timeframe:item.begin,
- userId: MyTJson.id,
- userScreenName: MyTJson.screen_name,
- tsource:MyTJson
- };
- numberOfTweet+=1;
-
- }
- }
- else {
- //trace("k = ",i);
- tweets[numberOfTweet] = {
- id:i,
- qualification:colorTranslation(""),
- yIndicator:MyTime,
- yframe:Myframe,
- title:item.content['title'],
- timeframe:item.begin,
- userId: MyTJson.id,
- userScreenName: MyTJson.screen_name,
- tsource:MyTJson
-
- };
- numberOfTweet+=1;
- }
-
- }
- else {
- //trace("tweet qualification = ","null");
- }
- });
-
- 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);
- }
- }
- console.log(JSON.stringify(tweetClient));
- }
- 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++) {
- 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:[]
- });
- }
- }else{
- var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userPol);
- if(searchKeyValueArrayTest==true){
- myUser = userNoPol.push({
- userId: tweets[i].userId,
- userScreenName: tweets[i].userScreenName,
- tweets:[]
- });
- }
- }
-
- var searchKeyValueArrayTest = searchKeyValueArray('userId',tweets[i].userId,userst);
- //console.log(searchKeyValueArrayTest);
- if(searchKeyValueArrayTest==true){
- //console.log("ici");
- myUser = userst.push({
- userId: tweets[i].userId,
- userScreenName: tweets[i].userScreenName,
- tweetsNP:[],
- tweetsSP:[],
- ecartNP:null,
- ecartSP:null
- });
- if(tweets[i].qualification!=5){
- userst[myUser-1].tweetsNP.push(tweets);
- }else {
- userst[myUser-1].tweetsSP.push(tweets);
- }
- }else{
- if(tweets[searchKeyValueArrayTest].qualification!=5){
- userst[searchKeyValueArrayTest].tweetsNP.push(tweets);
- }else {
- userst[searchKeyValueArrayTest].tweetsSP.push(tweets);
- }
- }
- }
-
- moyenneDeTweetsNPparUsers = (numberOfTweet-qTweet_0)/userNoPol.length
- moyenneDeTweetsSPparUsers = (numberOfTweet-qTweet_0)/userPol.length
- sommeDeMesCarreSP=0;
- sommeDeMesCarreNP=0;
- for(var i=0; i<userst.length; i++) {
- myEcartSP = Math.pow(userst[i].tweetsSP.length-moyenneDeTweetsSPparUsers,2);
- userst[i].ecartSP=myEcartSP;
- sommeDeMesCarreSP+=myEcartSP;
-
- myEcartNP = Math.pow(userst[i].tweetsNP.length-moyenneDeTweetsNPparUsers,2);
- userst[i].ecartNP=myEcartNP;
- sommeDeMesCarreNP+=myEcartNP;
- }
- varianceSP = sommeDeMesCarreSP/userst.length
- varianceNP = sommeDeMesCarreNP/userst.length
-
- SommeVariances = varianceNP + varianceSP;
-
- EcartTypeSP = Math.sqrt(varianceSP);
- EcartTypeNP = Math.sqrt(varianceNP);
-
- SommeEcart = EcartTypeSP + EcartTypeNP;
-
-
-
-
- console.log("user SP : "+userPol.length);
- console.log("user nSP : "+userNoPol.length);
- console.log("nbrTP / user SP : "+round2Dec(moyenneDeTweetsSPparUsers));
- console.log("nbrT / user nSP : "+round2Dec(moyenneDeTweetsNPparUsers));
- console.log("varianceSP : "+round2Dec(varianceSP));
- console.log("varianceNP : "+round2Dec(varianceNP));
- console.log("EcartTypeSP : "+round2Dec(EcartTypeSP));
- console.log("EcartTypeNP : "+round2Dec(EcartTypeNP));
-
- }
- function Report(){
- console.log("_______________________________");
- console.log("Total de tweets : "+numberOfTweet)
- console.log("Total de tweets P : "+(numberOfTweet-qTweet_0)+" "+ pourcent((numberOfTweet-qTweet_0),numberOfTweet)+" %")
- console.log("accord : "+qTweet_OK+" "+pourcent(qTweet_OK,numberOfTweet)+" %");
- console.log("desaccord : "+qTweet_KO+" "+pourcent(qTweet_KO,numberOfTweet)+" %");
- console.log("question : "+qTweet_Q+" "+pourcent(qTweet_Q,numberOfTweet)+" %");
- console.log("reference : "+qTweet_REF+" "+pourcent(qTweet_REF,numberOfTweet)+" %");
- console.log("sans polemic : "+qTweet_0+" "+pourcent(qTweet_0,numberOfTweet)+" %");
- numberUserUsePolemic();
- tweetsStats();
- }
- // 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();
- _gaq.push(['_trackPageview', location.pathname + location.search + location.hash+"/#!/MetaDatPlayer.PT.mouseover(time:"+this.time+",id:"+this.id+")"]);
- }).mouseout(function () {
- //this.attr({stroke:"#00","stroke-width":0.1});
- _gaq.push(['_trackPageview', location.pathname + location.search + location.hash+"/#!/MetaDatPlayer.PT.mouseout(time:"+this.time+",id:"+this.id+")"]);
- }).mousedown(function () {
- __IriSP.MyApiPlayer.seek(this.time/1000);
- _gaq.push(['_trackPageview', location.pathname + location.search + location.hash+"/#!/MetaDatPlayer.PT.mousedown(time:"+this.time+",id:"+this.id+")"]);
- });
- __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 = (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:"#fc00ff",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();
- }
- Report();
- }
-
-
- jQuery(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();
- _gaq.push(['_trackPageview', location.pathname + location.search + location.hash+"!!MetaDatPlayer.PT.mouseover("+this.time+","+this.id+")"]);
-
- }else{
- if (typeof(__IriSP) !== 'undefined' && typeof(__IriSP.jQuery) === 'function') {
- __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;
- });
-
-
- }
-
- jQuery(document).ready(function() {
- if (typeof(__IriSP) !== 'undefined' && typeof(__IriSP.jQuery) === 'function') {
- __IriSP.jQuery("#tip").hide();
- }
- });
\ No newline at end of file