--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/client/js/tweetanim.js Sun Feb 19 22:53:19 2012 +0100
@@ -0,0 +1,209 @@
+var tweetQueue = [];
+var isAnimating = false;
+var countTweets = 0;
+var isPlayingTweets = false; // auto start
+var SPEED_TWEETS = 10;
+var MAX_VOTES = 25;
+var DUMP_TWEETS = 10;
+var toDel = [];
+
+var current_tweet = null;
+var current_past_tweet = 0;
+
+var ts = [];
+
+var b = 0;
+
+var defaultTweet = {
+ created_at: "Sun, 19 Feb 2012 19:12:15 +0000",
+ date_value: 1329678735000,
+ from_user: "chateaudeau",
+ from_user_id: 164810536,
+ from_user_id_str: "164810536",
+ from_user_name: "Olivia Duchâteau",
+ geo: null,
+ id: 171311150900854800,
+ id_str: "171311150900854784",
+ iso_language_code: "fr",
+ profile_image_url: "http://a2.twimg.com/profile_images/1481618117/clip_image00212_normal.jpg",
+ profile_image_url_https: "https://si0.twimg.com/profile_images/1481618117/clip_image00212_normal.jpg",
+ source: "<a href="http://phnxapp.com" rel="nofollow">phnx</a>",
+ text: "RT @LeProf_Higgins: Le carton rouge à Sarkozy, on a eu l'idée avant MLP mais le mien sera rouge, puis rose, mais pas brun !",
+ to_user: null,
+ to_user_id: null,
+ to_user_id_str: null,
+ to_user_name: null,
+};
+
+var TweetAnim = {
+
+ init: function() {
+
+ var html = getDefaultTweet();
+ $('#tweet-container').fadeOut(0).html(html).fadeIn(2000, function() {
+ $(this).fadeOut(500, function() {
+ isPlayingTweets=true;
+ $(this).html("").fadeIn();
+ });
+ });
+
+
+
+ },
+ queueTweet: function(t) {
+ console.log("Queued " + t.text);
+ tweetQueue.push({t: t, anim: true});
+ $('#nbr-mesure-new').html(tweetQueue.length);
+ /*
+ if(tweetQueue.length>0)
+ document.getElementById('btn-tweet-next').style.visibility="visible";
+ */
+ },
+
+ shiftQueue: function() {
+ if(tweetQueue.length==0) {
+ $('#tweet-container').html(getDefaultTweet());
+ }
+ if((tweetQueue.length>0) && (!isAnimating)) {
+ countTweets++;
+ isAnimating = true;
+ var q = tweetQueue.shift();
+ this.showTweet(q.t, q.anim);
+
+ }
+
+ },
+
+ skipQueue: function() {
+
+ if((tweetQueue.length>0) && (current_tweet!=null)) {
+ countTweets++;
+ isAnimating = true;
+ $('#tweet_anim_'+ current_tweet.id_str).dequeue();
+ TweetAnim.animate(current_tweet, true);
+ var q = tweetQueue.shift();
+ this.showTweet(q.t, true);
+ }
+ },
+
+ showTweet: function(t, anim) {
+
+ var tweetId = "tweet_anim_" + t.id_str;
+ var imgId = "img_" + t.id_str;
+
+ if(anim)
+ current_tweet = t;
+
+ var htmlStr = "<div id='"+tweetId+"'><div class='tweet-bulle-avatar'>";
+ htmlStr += " <img class='tweet-img-avatar' src='"+t.profile_image_url+"' id='"+imgId+"'/>";
+ htmlStr += "</div>";
+ htmlStr += "<div class='tweet-preview-container'>";
+ htmlStr += " <span class='tweet-screen-name'><a target='_blank' href='http://twitter.com/intent/user?screen_name="+t.from_user+"'>"+t.from_user+"</a></span>";
+ htmlStr += " <span class='tweet-full-name'>"+t.from_user_name+"</span>";
+ htmlStr += " <div class='tweet-text'>"+t.text+"</div>";
+ htmlStr += " <div class='tweet-time'><a target='_blank' href='http://twitter.com/#!/" + t.from_user + "/status/" +t.id_str+"'>"+t.created_at+"</div>";
+ htmlStr += "</div>";
+
+ $('#tweet-container').html(htmlStr);
+ $('#nbr-mesure-show').html(countTweets);
+ $('#nbr-mesure-new').html(tweetQueue.length);
+ /*
+ if(tweetQueue.length>0)
+ document.getElementById('btn-tweet-next').style.visibility="visible";
+ else
+ document.getElementById('btn-tweet-next').style.visibility="hidden";
+*/
+
+ if(anim) {
+ TweetAnim.animate(t, true);
+
+ $('#'+tweetId).hover(function() {
+ $(this).stop(true, true).fadeIn();
+ }, function() {
+ TweetAnim.animate(t, true);
+ });
+ }
+ },
+
+ animate: function(t, doSshift) {
+ var tweetId = "tweet_anim_" + t.id_str;
+
+ t.cat = t.from_user_id%4;
+ createBallTweetForce(t);
+
+
+ // Pour expérimenter le balayage de tout le podium
+ //setInterval(function() {defaultTweet.cat = b%4; createBallTweetForce(defaultTweet); b++;}, 500);
+
+
+
+ isAnimating = false;
+ if(doSshift)
+ TweetAnim.shiftQueue();
+
+/*
+ toDel.push(t);
+ current_past_tweet = toDel.length;
+ ts[t.candidats[0]]++;
+ checkSilos();
+ */
+ }
+}
+
+
+function getDefaultTweet() {
+
+ var htmlStr = "<div class='tweet-bulle-avatar'>";
+ htmlStr += " <img class='tweet-img-avatar' src='img/avatar-icon.png' />";
+ htmlStr += " </div>";
+ htmlStr += " <div class='tweet-preview-container'>";
+ htmlStr += " <span class='tweet-screen-name'><a target='_blank' href='http://twitter.com/intent/user?screen_name=bubbleT2012'>Bubble T</a></span>";
+ htmlStr += " <span class='tweet-full-name'>tea or tweet ?</span>";
+ htmlStr += " <div class='tweet-text'>";
+ htmlStr += " <a href='http://www.twitter.com' target='blank'>";
+ htmlStr += " Pendant que les prochains tweets se chargent.</br>";
+ htmlStr += " Exprimez, vous aussi, vos opinions sur vos candidats favoris !</a>";
+ htmlStr += " </div>";
+ htmlStr += " <div class='tweet-time'>maintenant</div>";
+
+ return htmlStr;
+
+}
+
+function checkSilos() {
+
+ for(var j=0; j<ts.length; j++) {
+ if(ts[j]>MAX_VOTES) {
+ j=ts.length+1;
+ emptySilos();
+ }
+ }
+}
+
+
+function emptySilos() {
+
+ var toDel2 = [];
+ var m =0;
+
+ for(var k=0; k<DUMP_TWEETS; k++) {
+ world.DestroyBody(b2bod[toDel[k].id_str]);
+ $('#'+toDel[k].id_str).delay(10).hide("slow").queue(function() {
+ $(this).remove();
+ });
+ }
+
+ for(var h= 0; h < candidats.length; h++) {
+ ts[h] = 0;
+ }
+
+ for(var l=DUMP_TWEETS; l<toDel.length; l++) {
+ toDel2[l-DUMP_TWEETS] = toDel[l];
+ ts[toDel2[l-DUMP_TWEETS].candidats[0]]++;
+ }
+
+ toDel = toDel2;
+ current_past_tweet=toDel.length;
+}
+
+TweetAnim.init();