diff -r 80040858c006 -r 7b76d97e3051 client/js/main.js --- a/client/js/main.js Tue Feb 21 22:46:45 2012 +0100 +++ b/client/js/main.js Tue Feb 21 22:47:19 2012 +0100 @@ -2,6 +2,13 @@ myTweetSource, myQueueManager; +var columnCounts, + onlineTweets = [], + dumpIsPaused = false; + +var MAX_TWEETS_BEFORE_DUMP = 20, + TWEETS_TO_DUMP_AT_ONCE = 10; + function updateLastTweetList() { var _filtered = myTweetSource.afterDate(startHour), _txtFilter = $("#btv-cp-champ-filtre").val(), @@ -9,6 +16,17 @@ if (_txtFilter.length > 1) { _filtered = _filtered.search(_txtFilter); _reFilter = regexpFromText(_txtFilter); + for (var _i = 0; _i < onlineTweets.length; _i++) { + if (onlineTweets[_i].text.search(_reFilter) == -1) { + $('#'+onlineTweets[_i].id_str).fadeTo(250, 0.1); + } else { + $('#'+onlineTweets[_i].id_str).fadeTo(250, 1); + } + } + } else { + for (var _i = 0; _i < onlineTweets.length; _i++) { + $('#'+onlineTweets[_i].id_str).fadeTo(250, 1); + } } $('#btv-cp-liste-tweets-tout').html( _filtered.reverse().slice(0,20).map(function(_t) { @@ -29,15 +47,16 @@ var _t = myTweetSource.tweetById(tweetId); if (_t) { $("#btv-cp-liste-tweets-selection").prepend( - '
  • ' - + _t.created_at.match(/\d+:\d+:\d+/)[0] - + ' @' - + _t.from_user - + ' ' - + _t.text - + '
  • ' + '
  • ' + + _t.created_at.match(/\d+:\d+:\d+/)[0] + + ' @' + + _t.from_user + + ' ' + + _t.text + + '
    ' + + '
  • ' ); } } @@ -59,7 +78,41 @@ } } +function showTooltip(_t, _x, _y) { + $("#btv-tooltip").html('

    ' + + _t.from_user + + ' (' + + _t.from_user_name + +')

    ' + + _t.text + +'

    ').show().css({ + "left": _x + "px", + "top": _y + "px", + }) +} + +function hideTooltip() { + $("#btv-tooltip").hide(); +} + +function showControlPanel() { + $("#btv-cp-container").dequeue().animate({ + "left": 0 + }); +} + +function hideControlPanel() { + $("#btv-cp-container").dequeue().animate({ + "left": "-315px" + }); +} + $(function() { + columnCounts = columnKeywords.map(function() { + return 0; + }) setInterval(function() { var _t = Math.floor((new Date() - startHour)/1000), _s = _t % 60, @@ -102,13 +155,39 @@ } } if (_cat != -1) { - if (_cat == 2) { - console.log(_t.text); + _t.cat = _cat; + columnCounts[_cat]++; + onlineTweets.push(_t); + createBallTweetForce(_t); + if (!dumpIsPaused) { + for (var _i = 0; _i < columnCounts.length; _i++) { + if (columnCounts[_cat] > MAX_TWEETS_BEFORE_DUMP) { + var toDel = onlineTweets.splice(0,TWEETS_TO_DUMP_AT_ONCE); + + for (var _j = 0; _j < toDel.length; _j++) { + var _id = toDel[_j].id_str; + world.DestroyBody(b2bod[_id]); + + $('#'+_id).fadeTo(500, 0, function() { + $(this).remove(); + }); + } + + // Regenerate column counts + columnCounts = columnKeywords.map(function() { + return 0; + }); + for (var _k = 0; _k < onlineTweets.length; _k++) { + columnCounts[onlineTweets[_k].cat]++; + } + break; + } + } } - _t.cat = _cat; - createBallTweetForce(_t); } -}); + }); + + $("#btv-cp-container").mouseover(showControlPanel).mouseout(hideControlPanel); $("#btv-cp-champ-filtre").keyup(function() { updateLastTweetList(); @@ -130,4 +209,14 @@ $(this).removeClass("btv-cp-status-play"); } }); + $("#btv-cp-cont-pause-aval").click(function() { + dumpIsPaused = !dumpIsPaused + if (dumpIsPaused) { + $(this).removeClass("btv-cp-status-pause"); + $(this).addClass("btv-cp-status-play"); + } else { + $(this).addClass("btv-cp-status-pause"); + $(this).removeClass("btv-cp-status-play"); + } + }); }); \ No newline at end of file