##// END OF EJS Templates
Fixed bumplimit, now it will be shown when 0 posts left
Fixed bumplimit, now it will be shown when 0 posts left

File last commit:

r365:b1a9afb3 thread_autoupdate
r372:41f4ba23 thread_autoupdate
Show More
thread_update.js
102 lines | 2.9 KiB | application/javascript | JavascriptLexer
/*
@licstart The following is the entire license notice for the
JavaScript code in this page.
Copyright (C) 2013 neko259
The JavaScript code in this page is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this page.
*/
var THREAD_UPDATE_DELAY = 10000;
var loading = false;
var lastUpdateTime = null;
function blink(node) {
var blinkCount = 2;
var blinkDelay = 250;
var nodeToAnimate = node;
for (var i = 0; i < blinkCount; i++) {
nodeToAnimate = nodeToAnimate.fadeOut(blinkDelay).fadeIn(blinkDelay);
}
}
function updateThread() {
if (loading) {
return;
}
loading = true;
var threadPosts = $('div.thread').children('.post');
var lastPost = threadPosts.last();
var threadId = threadPosts.first().attr('id');
var diffUrl = '/api/diff_thread/' + threadId + '/' + lastUpdateTime + '/';
$.getJSON(diffUrl)
.success(function(data) {
var addedPosts = data.added;
for (var i = 0; i < addedPosts.length; i++) {
var postText = addedPosts[i];
var post = $(postText);
post.appendTo(lastPost.parent());
addRefLinkPreview(post[0]);
lastPost = post;
blink(post);
}
var updatedPosts = data.updated;
for (var i = 0; i < updatedPosts.length; i++) {
var postText = updatedPosts[i];
var post = $(postText);
var postId = post.attr('id');
var oldPost = $('div.thread').children('.post[id=' + postId + ']');
oldPost.replaceWith(post);
addRefLinkPreview(post[0]);
blink(post);
}
// TODO Process updated and deleted posts
lastUpdateTime = data.last_update;
loading = false;
})
.error(function(data) {
// TODO Show error message that server is unavailable?
loading = false;
});
}
function initAutoupdate() {
loading = false;
lastUpdateTime = $('.metapanel').attr('data-last-update');
setInterval(updateThread, THREAD_UPDATE_DELAY);
}