Skip to content

Commit

Permalink
live-index.js: load new thread functionality; bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
czaks committed Aug 10, 2014
1 parent e1d99e6 commit 48c1de6
Showing 1 changed file with 49 additions and 28 deletions.
77 changes: 49 additions & 28 deletions js/live-index.js
Expand Up @@ -13,33 +13,69 @@
*
*/

if (active_page == 'index' && (""+document.location).match(/\/(index\.html)?(\?|$)/))
if (active_page == 'index' && (""+document.location).match(/\/(index\.html)?(\?|$|#)/))
+function() {
// Make jQuery respond to reverse()
$.fn.reverse = [].reverse;

var board_name = (""+document.location).match(/\/([^\/])\/[^/]*$/)[1];

var handle_one_thread = function() {
$(this).find("br.clear").before("<div class='new-posts'>"+_("No new posts.")+"</div>")
if ($(this).find(".new-posts").length <= 0) {
$(this).find("br.clear").before("<div class='new-posts'>"+_("No new posts.")+"</div>");
}
};

$(function() {
$("hr:first").before("<hr /><div class='new-threads'>"+_("No new threads.")+"</div>");

$('div[id^="thread_"]').each(handle_one_thread);

setInterval(function() {
$.getJSON(configRoot+board_name+"/0.json", function(j) {
var new_threads = 0;

j.threads.forEach(function(t) {
var s_thread = $("#thread_"+t.posts[0].no);

if (s_thread.length) {
var my_posts = s_thread.find(".post.reply").length;

var omitted_posts = s_thread.find(".omitted");
if (omitted_posts.length) {
omitted_posts = omitted_posts.html().match("^[^0-9]*([0-9]+)")[1]|0;
my_posts += omitted_posts;
}

my_posts -= t.posts[0].replies|0;
my_posts *= -1;
update_new_posts(my_posts, s_thread);
}
else {
new_threads++;
}
});

update_new_threads(new_threads);
});
}, 1000);
});

$(document).on("new_post", function(e, post) {
if (!$(post).hasClass("reply")) {
handle_one_thread.bind(post);
handle_one_thread.call(post);
}
});

var update_new_threads = function(i) {
var msg = i ?
fmt(_("There are {0} new threads."), [i]) :
(fmt(_("There are {0} new threads."), [i]) + " <a href='javascript:void(0)'>"+_("Click to expand")+"</a>.") :
_("No new threads.");

if ($(".new-threads").html() != msg)
if ($(".new-threads").html() != msg) {
$(".new-threads").html(msg);
$(".new-threads a").click(fetch_new_threads);
}
};

var update_new_posts = function(i, th) {
Expand All @@ -53,32 +89,17 @@ if (active_page == 'index' && (""+document.location).match(/\/(index\.html)?(\?|
}
};

setInterval(function() {
$.getJSON(configRoot+board_name+"/0.json", function(j, x, r) {
var new_threads = 0;

j.threads.forEach(function(t) {
var s_thread = $("#thread_"+t.posts[0].no);

if (s_thread.length) {
var my_posts = s_thread.find(".post.reply").length;

var omitted_posts = s_thread.find(".omitted");
if (omitted_posts.length) {
omitted_posts = omitted_posts.html().match("^[^0-9]*([0-9]+)")[1]|0;
my_posts += omitted_posts;
}

my_posts -= t.posts[0].replies|0;
my_posts *= -1;
update_new_posts(my_posts, s_thread);
var fetch_new_threads = function() {
$.get(""+document.location, function(data) {
$(data).find('div[id^="thread_"]').reverse().each(function() {
if ($("#"+$(this).attr("id")).length) {
// okay, the thread is there
}
else {
new_threads++;
var thread = $(this).insertBefore('div[id^="thread_"]:first');
$(document).trigger("new_post", this);
}
});

update_new_threads(new_threads);
});
}, 2000);
};
}();

0 comments on commit 48c1de6

Please sign in to comment.