tweetcast/nodejs-bis/client/js/script.js
changeset 385 886bfa7441d0
parent 380 b3f66379fed7
child 390 239f91ac1f31
--- a/tweetcast/nodejs-bis/client/js/script.js	Mon Nov 21 11:46:37 2011 +0100
+++ b/tweetcast/nodejs-bis/client/js/script.js	Tue Nov 22 13:25:43 2011 +0100
@@ -27,13 +27,15 @@
     tlBuffer = '',
     relHover = [],
     wheelDelta = 0,
+    scrollEnabled = false,
+    scrollExtent = 8000 - 452,
+    lastScrollPos = 0,
     rx_url = /https?:\/\/[0-9a-zA-Z\.%\/-_]+/g,
     rx_word = /[^ \.&;,'"!\?\d\(\)\+\[\]\\\…\-«»:\/]{3,}/g,
     stop_list = [ 'and', 'avec', 'aux', 'car', 'comme', 'dans', 'donc', 'des', 'elle', 'est', 'être', 'eux', 'ils', 'les', 'leur', 'leurs', 'mes', 'mon', 'tes', 'ton', 'notre', 'nos', 'nous', 'ont', 'pas', 'que', 'qui', 'sont', 'the', 'une', 'votre', 'vos', 'vous' ];
 
 function getColor(annotation, lum) {
-//    console.log(annotations[annotation].h, annotations[annotation].s, lum, Raphael.hsl(annotations[annotation].h, annotations[annotation].s, lum))
-    return Raphael.hsl(annotations[annotation].colors.h, annotations[annotation].colors.s, lum);
+    return Raphael.hsl2rgb(annotations[annotation].colors.h, annotations[annotation].colors.s, lum);
 }
 
 function arc(source, target) {
@@ -260,7 +262,7 @@
     if (tweet.annotations.length) {
         html += '<div class="annotations">';
         for (var i in tweet.annotations) {
-            html += '<div class="annotation" style="width:' + (100/tweet.annotations.length) + '%; background:' + getColor(tweet.annotations[i], (className == 'icons' ? .4 : .8)) + '"></div>';
+            html += '<div class="annotation" style="width:' + (100/tweet.annotations.length) + '%; background:' + getColor(tweet.annotations[i], (className == 'icons' ? .4 : .8)).hex + '"></div>';
         }
         html += '</div>';
     }
@@ -436,6 +438,7 @@
 }
 
 function updateDisplay() {
+
     var p = twCx.position,
         l = twCx.tweets.length,
         lines = 0,
@@ -444,18 +447,8 @@
         tweetsOnDisplay = [],
         localWords = {};
     
-    if (p == 0) {
-        $("#downbutton").addClass("inactive");
-    } else {
-        $("#downbutton").removeClass("inactive");
-    }
-    
-    if (p == l-1) {
-        $("#upbutton").addClass("inactive");
-    } else {
-        $("#upbutton").removeClass("inactive");
-    }
-    
+    lastScrollPos = Math.floor( scrollExtent * ( 1 - ( p / twCx.tweets.length ) ) );
+    $("#scrollcont").scrollTop(lastScrollPos);
     
     function pushTweet(tp, className) {
         if (tp < l && tp >= 0) {
@@ -557,8 +550,13 @@
                 maxann = tab[j].annotations[k];
             }
         }
-        var coul = (ann == "default" ? '' : ' background: ' + getColor(ann, 1 - .4 * ( tab[j].annotations[ann] / tab[j].freq ) ) + ';"'),
-            fontsize = Math.floor( ( 12 + Math.sqrt( tab[j].score - minfreq ) * echfreq ) );
+        if (ann == "default") {
+            var coul = '';
+        } else {
+            var c = getColor(ann, .4),
+                coul = "background: rgba(" + [ Math.floor(c.r), Math.floor(c.g), Math.floor(c.b), ( tab[j].annotations[ann] / tab[j].freq )].join(',') + ")";
+        }
+        var fontsize = Math.floor( ( 12 + Math.sqrt( tab[j].score - minfreq ) * echfreq ) );
         html += '<span style="padding: 2px; line-height: ' + (8 + fontsize) + 'px; font-size: ' + fontsize + 'px;' + coul + '">' + tab[j].word + '</span> ';
     }
     $("#motscles").html(html);
@@ -630,7 +628,7 @@
             var l = twCx.tlOnDisplay[i].displayData[j].length;
             if (l > 0) {
                 tlPaper.rect( twCx.deltaX + n * twCx.scaleX, posY, l * twCx.scaleX, twCx.scaleY )
-                    .attr({"stroke" : "none", "fill" : getColor(j, .4) });
+                    .attr({"stroke" : "none", "fill" : getColor(j, .4).hex });
                 n += l;
             }
         }
@@ -770,9 +768,13 @@
         twCx.tlMouseClicked = false;
         twCx.tlMouseMoved = false;
     });
-    $("#scrollcont").scroll(function(evt) {
-        var p = Math.floor( twCx.tweets.length * ( 1 - $(this).scrollTop() / 9548 ) );
-        goToPos(p);
-    })
+    setInterval(function() {
+        var sc = $("#scrollcont");
+        if (sc.scrollTop() != lastScrollPos) {
+            var p = Math.floor( twCx.tweets.length * ( 1 - sc.scrollTop() / scrollExtent ) );
+            goToPos(p);
+        }
+        
+    }, 100)
 });