| author | Raphael Velt <raph.velt@gmail.com> |
| Mon, 17 Oct 2011 17:40:58 +0200 | |
| changeset 325 | 7d9c576bfaac |
| parent 314 | 0f1e6ce19b6d |
| child 326 | c28048fb63b4 |
| permissions | -rw-r--r-- |
| 314 | 1 |
var socket, |
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
2 |
tweetData = { |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
3 |
"tweetcount" : 0, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
4 |
"position" : -1, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
5 |
"zoomLevel" : 3, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
6 |
"timeLevel" : 2 |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
7 |
} |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
8 |
zoomLevels = [ |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
9 |
{ |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
10 |
"description" : "160 tweets per page", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
11 |
"className" : "icons", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
12 |
"displayCount" : 160 |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
13 |
}, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
14 |
{ |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
15 |
"description" : "24 tweets per page", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
16 |
"className" : "quarter", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
17 |
"displayCount" : 24 |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
18 |
}, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
19 |
{ |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
20 |
"description" : "12 tweets per page", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
21 |
"className" : "half", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
22 |
"displayCount" : 12 |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
23 |
}, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
24 |
{ |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
25 |
"description" : "6 tweets per page", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
26 |
"className" : "full", |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
27 |
"displayCount" : 6 |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
28 |
} |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
29 |
]; |
| 314 | 30 |
|
31 |
function tweetToHtml(tweet) { |
|
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
32 |
html = '<li class="tweet ' + zoomLevels[tweetData.zoomLevel].className; |
| 314 | 33 |
for (var i in tweet.annotations) { |
34 |
html += ' a_' + tweet.annotations[i] |
|
35 |
} |
|
36 |
html += '" id="tweet_' + tweet.id + '">'; |
|
37 |
a_user = '<a href="http://twitter.com/' + tweet.user.screen_name + '" target="_blank" title="' + tweet.user.name + '">'; |
|
38 |
if (tweet.user.profile_image_url) { |
|
39 |
html += a_user + '<img class="tweet_profile_image" src="' + tweet.user.profile_image_url + '" /></a>'; |
|
40 |
} |
|
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
41 |
html += '<h4>' + a_user + '@' + tweet.user.screen_name + '</a></h4><p class="tweet_created_at">' + new Date(tweet.created_at).toLocaleTimeString() + '</p><p>'; |
| 314 | 42 |
lastend = 0; |
43 |
txt = ''; |
|
44 |
entities = []; |
|
45 |
for (var i in tweet.entities.hashtag) { |
|
46 |
entities.push({ |
|
47 |
"start" : tweet.entities.hashtag[i].indices[0], |
|
48 |
"end" : tweet.entities.hashtag[i].indices[1], |
|
49 |
"html" : '<a href="http://twitter.com/search?q=%23' + tweet.entities.hashtag[i].text + '" target="_blank">#' + tweet.entities.hashtag[i].text + '</a>' |
|
50 |
}); |
|
51 |
} |
|
52 |
for (var i in tweet.entities.urls) { |
|
53 |
entities.push({ |
|
54 |
"start" : tweet.entities.urls[i].indices[0], |
|
55 |
"end" : tweet.entities.urls[i].indices[1], |
|
56 |
"html" : '<a href="' + tweet.entities.urls[i].expanded_url + '" target="_blank">' + tweet.entities.urls[i].display_url + '</a>' |
|
57 |
}); |
|
58 |
} |
|
59 |
for (var i in tweet.entities.user_mentions) { |
|
60 |
entities.push({ |
|
61 |
"start" : tweet.entities.user_mentions[i].indices[0], |
|
62 |
"end" : tweet.entities.user_mentions[i].indices[1], |
|
63 |
"html" : '<a href="http://twitter.com/' + tweet.entities.user_mentions[i].screen_name + '" target="_blank" title="' + tweet.entities.user_mentions[i].name + '">@' + tweet.entities.user_mentions[i].screen_name + '</a>' |
|
64 |
}); |
|
65 |
} |
|
66 |
entities.sort(function(a, b) { return a.start - b.start }); |
|
67 |
for (var i in entities) { |
|
68 |
txt += tweet.text.substring(lastend, entities[i].start) + entities[i].html; |
|
69 |
lastend = entities[i].end; |
|
70 |
} |
|
71 |
txt += tweet.text.substring(lastend); |
|
72 |
html += txt + '</p></li>'; |
|
73 |
return html; |
|
74 |
} |
|
75 |
||
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
76 |
function getTweets() { |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
77 |
var to = tweetData.position + 1, |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
78 |
from = Math.max(0, to - zoomLevels[tweetData.zoomLevel].displayCount); |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
79 |
socket.emit('getTweets',{ "from": from, "to": to }); |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
80 |
} |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
81 |
|
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
82 |
function setZoom(level) { |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
83 |
tweetData.zoomLevel = Math.max(0, Math.min( zoomLevels.length - 1 , level ) ); |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
84 |
getTweets(); |
| 314 | 85 |
} |
86 |
||
87 |
$(document).ready(function() { |
|
88 |
socket = io.connect('http://' + S_IO_HOST + ':' + S_IO_PORT ); |
|
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
89 |
socket.on('tweetSummary', function (data) { |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
90 |
if (tweetData.position == tweetData.tweetcount - 1) { |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
91 |
tweetData.position = data.tweetcount - 1; |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
92 |
getTweets(); |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
93 |
} |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
94 |
tweetData.tweetcount = data.tweetcount; |
|
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
95 |
}); |
| 314 | 96 |
socket.on('tweets', function (data) { |
|
325
7d9c576bfaac
Some changes - added multi-zoom level on client
Raphael Velt <raph.velt@gmail.com>
parents:
314
diff
changeset
|
97 |
tweetData.tweetsOnDisplay = data; |
| 314 | 98 |
data.reverse(); |
99 |
html = ''; |
|
100 |
for (var i in data) { |
|
101 |
html += tweetToHtml(data[i]); |
|
102 |
} |
|
103 |
$("#tweetlist").html(html); |
|
104 |
}); |
|
105 |
}); |