From 0e18636fe6302f134312c4dcc82d6768626d4d32 Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Mon, 5 May 2014 19:28:07 +0100 Subject: [PATCH 1/5] Move the magic numbers out to variables --- js/auto-reload.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/js/auto-reload.js b/js/auto-reload.js index 34acca90..40fa58a6 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -27,6 +27,18 @@ $(document).ready(function(){ var poll_interval; + // number of ms to wait before reloading + var poll_interval_delay; + + // If at the bottom of the page, reload more quickly. + var poll_interval_mindelay_bottom = 3000; + var poll_interval_mindelay_top = 10000; + + poll_interval_delay = poll_interval_mindelay_bottom; + + // Upon scrolling to the bottom, reload very quickly. + var poll_interval_shortdelay = 100; + var end_of_page = false; var new_posts = 0; @@ -81,7 +93,11 @@ $(document).ready(function(){ }); clearTimeout(poll_interval); - poll_interval = setTimeout(poll, end_of_page ? 3000 : 10000); + + poll_interval_delay = end_of_page + ? poll_interval_mindelay_bottom + : poll_interval_mindelay_top; + poll_interval = setTimeout(poll, poll_interval_delay); }; $(window).scroll(function() { @@ -94,10 +110,10 @@ $(document).ready(function(){ } clearTimeout(poll_interval); - poll_interval = setTimeout(poll, 100); + poll_interval = setTimeout(poll, poll_interval_shortdelay); end_of_page = true; }).trigger('scroll'); - poll_interval = setTimeout(poll, 3000); + poll_interval = setTimeout(poll, poll_interval_delay); }); From 91a3016d27ab3644d677333d0130366f3b0d68a6 Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Mon, 5 May 2014 19:29:19 +0100 Subject: [PATCH 2/5] Increase the poll_interval_delay when there are no posts --- js/auto-reload.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/js/auto-reload.js b/js/auto-reload.js index 40fa58a6..2cbdd7e8 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -94,9 +94,15 @@ $(document).ready(function(){ clearTimeout(poll_interval); - poll_interval_delay = end_of_page - ? poll_interval_mindelay_bottom - : poll_interval_mindelay_top; + // If there are no new posts, double the delay. Otherwise set it to the min. + if(new_posts == 0) { + poll_interval_delay *= 2; + } else { + poll_interval_delay = end_of_page + ? poll_interval_mindelay_bottom + : poll_interval_mindelay_top; + } + poll_interval = setTimeout(poll, poll_interval_delay); }; From 97cfec836bcb60a3f781ea459100a9610aac6f2a Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Mon, 5 May 2014 19:30:59 +0100 Subject: [PATCH 3/5] Add a maximum reload delay --- js/auto-reload.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/js/auto-reload.js b/js/auto-reload.js index 2cbdd7e8..3159bfd1 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -36,6 +36,9 @@ $(document).ready(function(){ poll_interval_delay = poll_interval_mindelay_bottom; + // Don't take longer than this to reload. + var poll_interval_maxdelay = 600000; + // Upon scrolling to the bottom, reload very quickly. var poll_interval_shortdelay = 100; @@ -97,6 +100,11 @@ $(document).ready(function(){ // If there are no new posts, double the delay. Otherwise set it to the min. if(new_posts == 0) { poll_interval_delay *= 2; + + // Don't increase the delay beyond the maximum + if(poll_interval_delay > poll_interval_maxdelay) { + poll_interval_delay = poll_interval_maxdelay; + } } else { poll_interval_delay = end_of_page ? poll_interval_mindelay_bottom From 54fdd54e8953c49fc2360af082f8ba3c4f5fc2a2 Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Mon, 5 May 2014 20:51:51 +0100 Subject: [PATCH 4/5] Make the delays configurable in settings.js --- js/auto-reload.js | 20 ++++++++------------ js/settings.js | 12 ++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/js/auto-reload.js b/js/auto-reload.js index 3159bfd1..fa856bd9 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -27,20 +27,16 @@ $(document).ready(function(){ var poll_interval; - // number of ms to wait before reloading - var poll_interval_delay; - - // If at the bottom of the page, reload more quickly. - var poll_interval_mindelay_bottom = 3000; - var poll_interval_mindelay_top = 10000; - poll_interval_delay = poll_interval_mindelay_bottom; + // Grab the settings + var settings = new script_settings('auto-reload'); + var poll_interval_mindelay_bottom = settings.get('min_delay_bottom', 3000); + var poll_interval_mindelay_top = settings.get('min_delay_top', 10000); + var poll_interval_maxdelay = settings.get('max_delay', 600000); + var poll_interval_shortdelay = settings.get('quick_delay', 100); - // Don't take longer than this to reload. - var poll_interval_maxdelay = 600000; - - // Upon scrolling to the bottom, reload very quickly. - var poll_interval_shortdelay = 100; + // number of ms to wait before reloading + var poll_interval_delay = poll_interval_mindelay_bottom; var end_of_page = false; diff --git a/js/settings.js b/js/settings.js index 6db9df9f..cb6bf770 100644 --- a/js/settings.js +++ b/js/settings.js @@ -51,3 +51,15 @@ tb_settings['wpaint'] = { // Canvas height height: 250 }; + +// auto-reload.js +tb_settings['auto-reload'] = { + // Minimum delay before reloading the page when at the bottom + min_delay_bottom: 3000, + // Minimum delay before reloading the page when not at the bottom + min_delay_top: 10000, + // Maximum delay before reloading the page + max_delay: 600000, + //Delay to wait before reloading when the user scrolls to the bottom + quick_delay: 100 +}; From abaf80fd8ae1b7eea39894339e2af76e7d6c82d3 Mon Sep 17 00:00:00 2001 From: Michael Walker Date: Mon, 5 May 2014 20:54:40 +0100 Subject: [PATCH 5/5] Reset the delay to the minimum upon focussing the window (configurable) --- js/auto-reload.js | 7 +++++++ js/settings.js | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/js/auto-reload.js b/js/auto-reload.js index fa856bd9..4a872024 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -56,6 +56,13 @@ $(document).ready(function(){ $(window).focus(function() { window_active = true; recheck_activated(); + + // Reset the delay if needed + if(settings.get('reset_focus', true)) { + poll_interval_delay = end_of_page + ? poll_interval_mindelay_bottom + : poll_interval_mindelay_top; + } }); $(window).blur(function() { window_active = false; diff --git a/js/settings.js b/js/settings.js index cb6bf770..02d5658d 100644 --- a/js/settings.js +++ b/js/settings.js @@ -61,5 +61,7 @@ tb_settings['auto-reload'] = { // Maximum delay before reloading the page max_delay: 600000, //Delay to wait before reloading when the user scrolls to the bottom - quick_delay: 100 + quick_delay: 100, + // Reset the delay to the minimum upon focussing the window. + reset_focus: true };