summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
Diffstat (limited to 'static')
-rwxr-xr-xstatic/index.html3
-rwxr-xr-xstatic/pichat.js77
2 files changed, 55 insertions, 25 deletions
diff --git a/static/index.html b/static/index.html
index 0ed1671..df36408 100755
--- a/static/index.html
+++ b/static/index.html
@@ -1,5 +1,6 @@
</html><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
+ <script type="text/javascript" src="/static/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="static/sha1.js"></script>
<script type="text/javascript" src="static/home.js"></script>
<script type="text/javascript" src="static/background.js"></script>
@@ -231,4 +232,4 @@ onchange="this.beenchanged = true;"/>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/static/pichat.js b/static/pichat.js
index 559e775..eb0b76f 100755
--- a/static/pichat.js
+++ b/static/pichat.js
@@ -28,10 +28,17 @@ function buildMsgContent(content) {
}
}
-function buildMessageDiv(msg) {
+var SpinnerImage = '<img class="spinner" src="/static/spinner.gif" />';
+
+function buildMessageDiv(msg, isLoading) {
var nick = escapeHtml(msg.nick);
- return '<div class="msgDiv"><b><a href="/u/' + nick + ' ">' + nick + '</a>: </b>'
- + buildMsgContent(msg.content) + '</div>';
+ var msgId = 'msg-' + msg.msg_id || 0;
+ var spinnerHtml = isLoading ? SpinnerImage : '';
+ return '<div class="msgDiv" id="' + msgId + '">'
+ + '<b><a href="/u/' + nick + ' ">' + nick + '</a>: </b>'
+ + buildMsgContent(msg.content)
+ + spinnerHtml
+ + '</div>';
}
function buildGrowlDataAndPopDatShit(msg) {
@@ -43,12 +50,14 @@ function buildGrowlDataAndPopDatShit(msg) {
function buildUserDiv(user) {
if (user.avatar) {
- return '<div class="username"><a href="/u/' + escapeHtml(user.nick) + '">' +
- '<img src="' + user.avatar + '" width="50" height="50">' +
- escapeHtml(user.nick) + '</a></div>';
+ return '<div class="username">'
+ + '<a href="/u/' + escapeHtml(user.nick) + '" target="_blank">'
+ + '<img src="' + user.avatar + '" width="50" height="50">'
+ + escapeHtml(user.nick) + '</a></div>';
} else {
- return '<div class="username"><a href="/u/' + escapeHtml(user.nick) + '">' +
- escapeHtml(user.nick) + '</a></div>';
+ return '<div class="username">'
+ + '<a href="/u/' + escapeHtml(user.nick) + '" target="_blank">'
+ + escapeHtml(user.nick) + '</a></div>';
}
}
@@ -69,11 +78,14 @@ function submitMessage() {
PostedMessages.push(content);
$('#msgInput').val('');
- updateUI([{ 'nick': Nick, 'content': content}], null);
+ var msg = { 'nick': Nick, 'content': content };
+ var div = addNewMessage(msg, true);
- var onSuccess = function(json) {};
- var onError = function(resp, textStatus, errorThrown) {
- $('#msgInput, #msgSubmit').removeAttr('disabled');
+ var onSuccess = function(json) {
+ div.find('.spinner').remove();
+ };
+ var onError = function(resp, textStatus, errorThrown) {
+ div.remove();
handleMsgError(resp);
};
@@ -109,26 +121,40 @@ function delayedScrollToBottom(delay) {
setTimeout(scrollToBottom, delay, $('#messageList')[0]);
}
+function addNewMessages(msgs) {
+ var wasScrolledToBottom = isScrolledToBottom($('#messageList')[0]);
+ var msgStr = $.map(msgs, buildMessageDiv).join('');
+ $('#messageList').append(msgStr);
+
+ if (wasScrolledToBottom) { delayedScrollToBottom(500); }
+}
+
+function addNewMessage(msg, isLoading) {
+ var wasScrolledToBottom = isScrolledToBottom($('#messageList')[0]);
+ var msgStr = buildMessageDiv(msg, isLoading);
+ var div = $(msgStr).appendTo('#messageList');
+ if (wasScrolledToBottom) { delayedScrollToBottom(500); }
+ return div;
+}
+
+function setUserList(users) {
+ $("#userList").html($.map(users, buildUserDiv).join(''));
+}
+
function updateUI(msgs, users) {
- if (window['growlize'] && msgs !== null) {
- $.map(msgs, buildGrowlDataAndPopDatShit)
- }
- else if (msgs !== null) {
- var msgStr = $.map(msgs, buildMessageDiv).join('');
- var wasScrolledToBottom = isScrolledToBottom($('#messageList')[0]);
- $('#messageList').append(msgStr);
-
- if (wasScrolledToBottom) {
- delayedScrollToBottom(500);
- }
+ if (window['growlize'] && msgs && msgs.length > 0) {
+ $.map(msgs, buildGrowlDataAndPopDatShit)
+ } else if (msgs && msgs.length > 0) {
+ addNewMessages(msgs);
}
if (users !== null) {
- $("#userList").html($.map(users, buildUserDiv).join(''));
+ setUserList(users);
}
}
// A duplicate message is a message that was likely to have
// originated from this browser.
+// TODO: replace w/ msg_id checks.
function isDuplicateMessage(m) {
if (m.nick != Nick || $.inArray(m.content, PostedMessages) == -1) {
return false;
@@ -242,3 +268,6 @@ function growl(user, msg) {
text: msg
});
}
+
+// TODO
+function favoriteImage() {}; \ No newline at end of file