diff --git a/js/thread-stats.js b/js/thread-stats.js index db804f1f..ecdf527a 100644 --- a/js/thread-stats.js +++ b/js/thread-stats.js @@ -2,112 +2,129 @@ * thread-stats.js * - Adds statistics of the thread below the posts area * - Shows ID post count beside each postID on hover - * + * * Usage: * $config['additional_javascript'][] = 'js/jquery.min.js'; * $config['additional_javascript'][] = 'js/thread-stats.js'; */ + if (active_page == 'thread') { -$(document).ready(function(){ - //check if page uses unique ID - var IDsupport = ($('.poster_id').length > 0); - var thread_id = (document.location.pathname + document.location.search).split('/'); - thread_id = thread_id[thread_id.length -1].split('+')[0].split('.')[0]; - - $('.clear').before('
'); - - var el = $('#thread_stats'); - el.prepend('Page ?'); - if (IDsupport){ - el.prepend('0 UIDs | '); - } - el.prepend('0 images | '); - el.prepend('| 0 replies | '); - delete el; - function update_thread_stats(){ - var op = $('#thread_'+ thread_id).find('div.post.op:not(.post-hover):not(.inline)').first(); - var replies = $('#thread_'+ thread_id).find('div.post.reply:not(.post-hover):not(.inline)'); - // post count - $('#thread_stats_posts').text(replies.length); - // image count - $('#thread_stats_images').text(replies.filter(function(){ - return $(this).find('> .files').text().trim() != false; - }).length); - // unique ID count + $(document).ready(function() { + // Check if page uses unique ID. + let IDsupport = ($('.poster_id').length > 0); + let thread_id = (document.location.pathname + document.location.search).split('/'); + thread_id = thread_id[thread_id.length -1].split('+')[0].split('.')[0]; + + $('.clear').before('
'); + + let el = $('#thread_stats'); + el.prepend('Page ?'); if (IDsupport) { - var opID = op.find('> .intro > .poster_id').text(); - var ids = {}; - replies.each(function(){ - var cur = $(this).find('> .intro > .poster_id'); - var curID = cur.text(); - if (ids[curID] === undefined) { - ids[curID] = 0; - } - ids[curID]++; - }); - if (ids[opID] === undefined) { - ids[opID] = 0; - } - ids[opID]++; - var cur = op.find('>.intro >.poster_id'); - cur.find('+.posts_by_id').remove(); - cur.after(' ('+ ids[cur.text()] +')'); - replies.each(function(){ - cur = $(this).find('>.intro >.poster_id'); - cur.find('+.posts_by_id').remove(); - cur.after(' ('+ ids[cur.text()] +')'); - }); - var size = function(obj) { - var size = 0, key; - for (key in obj) { - if (obj.hasOwnProperty(key)) size++; - } - return size; - }; - $('#thread_stats_uids').text(size(ids)); + el.prepend('0 UIDs | '); } - $.getJSON('//'+ document.location.host +'/'+ board_name +'/threads.json', function(data){ - var found, page = '???'; - for (var i=0;data[i];i++){ - var threads = data[i].threads; - for (var j=0; threads[j]; j++){ - if (parseInt(threads[j].no) == parseInt(thread_id)) { - page = data[i].page +1; - found = true; + el.prepend('0 images | '); + el.prepend('| 0 replies | '); + delete el; + + function update_thread_stats() { + let op = $('#thread_' + thread_id).find('div.post.op:not(.post-hover):not(.inline)').first(); + let replies = $('#thread_' + thread_id).find('div.post.reply:not(.post-hover):not(.inline)'); + // Post count. + $('#thread_stats_posts').text(replies.length); + // Image count. + $('#thread_stats_images').text(replies.filter(function() { + return $(this).find('> .files').text().trim() != false; + }).length); + // Unique ID count. + if (IDsupport) { + let opID = op.find('> .intro > .poster_id').text(); + let ids = {}; + replies.each(function() { + let cur = $(this).find('> .intro > .poster_id'); + let curID = cur.text(); + if (ids[curID] === undefined) { + ids[curID] = 0; + } + ids[curID]++; + }); + if (ids[opID] === undefined) { + ids[opID] = 0; + } + ids[opID]++; + let cur = op.find('>.intro >.poster_id'); + cur.find('+.posts_by_id').remove(); + cur.after(' (' + ids[cur.text()] + ')'); + replies.each(function() { + cur = $(this).find('>.intro >.poster_id'); + cur.find('+.posts_by_id').remove(); + cur.after(' (' + ids[cur.text()] + ')'); + }); + let size = function(obj) { + let size = 0 + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + size++; + } + } + return size; + }; + $('#thread_stats_uids').text(size(ids)); + } + $.getJSON('//' + document.location.host + '/' + board_name + '/threads.json', function(data) { + let found; + let page = '???'; + let threadId = parseInt(thread_id); + for (let i = 0; data[i]; i++) { + let threads = data[i].threads; + for (let j = 0; threads[j]; j++) { + if (parseInt(threads[j].no) === threadId) { + page = data[i].page +1; + found = true; + break; + } + } + if (found) { break; } } - if (found) break; - } - $('#thread_stats_page').text(page); - if (!found) $('#thread_stats_page').css('color','red'); - else $('#thread_stats_page').css('color',''); - }); - } - // load the current page the thread is on. - // uses ajax call so it gets loaded on a delay (depending on network resources available) - var thread_stats_page_timer = setInterval(function(){ - $.getJSON('//'+ document.location.host +'/'+ board_name +'/threads.json', function(data){ - var found, page = '???'; - for (var i=0;data[i];i++){ - var threads = data[i].threads; - for (var j=0; threads[j]; j++){ - if (parseInt(threads[j].no) == parseInt(thread_id)) { - page = data[i].page +1; - found = true; + let threadStatsPage = $('#thread_stats_page'); + threadStatsPage.text(page); + if (!found) { + threadStatsPage.css('color', 'red'); + } else { + threadStatsPage.css('color', ''); + } + }); + } + + // Load the current page the thread is on. + // Uses ajax call so it gets loaded on a delay (depending on network resources available). + setInterval(function() { + $.getJSON('//' + document.location.host + '/' + board_name + '/threads.json', function(data) { + let found; + let page = '???'; + for (let i = 0; data[i]; i++) { + let threads = data[i].threads; + for (let j = 0; threads[j]; j++) { + if (parseInt(threads[j].no) == parseInt(thread_id)) { + page = data[i].page +1; + found = true; + break; + } + } + if (found) { break; } } - if (found) break; - } - $('#thread_stats_page').text(page); - if (!found) $('#thread_stats_page').css('color','red'); - else $('#thread_stats_page').css('color',''); - }); - },30000); + $('#thread_stats_page').text(page); + if (!found) $('#thread_stats_page').css('color','red'); + else $('#thread_stats_page').css('color',''); + }); + }, 30000); + $('body').append(''); update_thread_stats(); $('#update_thread').click(update_thread_stats); - $(document).on('new_post',update_thread_stats); -}); + $(document).on('new_post', update_thread_stats); + }); }