From 36320c40b34c4f18496518203330fbb705cf6610 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sat, 15 Oct 2016 19:55:15 +0200 Subject: Global view scroll top --- p/scripts/global_view.js | 1 + 1 file changed, 1 insertion(+) diff --git a/p/scripts/global_view.js b/p/scripts/global_view.js index f1b9c8ad4..de0b9cb9f 100644 --- a/p/scripts/global_view.js +++ b/p/scripts/global_view.js @@ -26,6 +26,7 @@ function load_panel(link) { // Sans ça, si l'on scroll en lisant une catégorie par exemple, // en en ouvrant une autre ensuite, on se retrouve au même point de scroll $("#panel").scrollTop(0); + $(window).scrollTop(0); $('#panel').on('click', '#nav_menu_read_all button, #bigMarkAsRead', function () { console.log($(this).attr("formaction")); -- cgit v1.2.3 From ce14841cc05e500819c0cdb2c594be8b44e91e2d Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 16 Oct 2016 12:31:13 +0200 Subject: Scroll as read for Global view + throttle event https://github.com/FreshRSS/FreshRSS/issues/1317 https://github.com/FreshRSS/FreshRSS/pull/1309 --- p/scripts/main.js | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/p/scripts/main.js b/p/scripts/main.js index b3531e884..400abf947 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -449,26 +449,22 @@ function auto_share(key) { } } -function inMarkViewport(flux, box_to_follow) { - var bottom = flux.offset().top + flux.height(), - windowTop = box_to_follow.scrollTop(); - return bottom < windowTop + 40; -} - function init_posts() { - var box_to_follow = $(window); - if (context.current_view === 'global') { - box_to_follow = $("#panel"); - } + var box_to_follow = context.current_view === 'global' ? $("#panel") : $(window); if (context.auto_mark_scroll) { + var lastScroll = 0; //Throttle box_to_follow.scroll(function () { - $('.not_read:visible').each(function () { - var $this = $(this); - if (inMarkViewport($this, box_to_follow)) { - mark_read($this, true); - } - }); + if (lastScroll + 500 < Date.now()) { + lastScroll = Date.now(); + $('.not_read:visible').each(function () { + var $this = $(this), + minTop = (context.current_view === 'global') ? box_to_follow.offset().top : box_to_follow.scrollTop(); + if ($this.offset().top + $this.height() < minTop + 40) { + mark_read($this, true); + } + }); + } }); } -- cgit v1.2.3 From eb88fee64bccfacbb8b1f5d84ba833d3a8286aa0 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Sun, 16 Oct 2016 15:10:21 +0200 Subject: Scroll performance Fewer events, and ensure an event is fired after the end of the scroll. https://github.com/FreshRSS/FreshRSS/pull/1309 --- p/scripts/main.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/p/scripts/main.js b/p/scripts/main.js index 400abf947..47d651d5b 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -449,21 +449,31 @@ function auto_share(key) { } } +function scrollAsRead(box_to_follow) { + var minTop = 40 + (context.current_view === 'global' ? box_to_follow.offset().top : box_to_follow.scrollTop()); + $('.not_read:visible').each(function () { + var $this = $(this); + if ($this.offset().top + $this.height() < minTop) { + mark_read($this, true); + } + }); +} + function init_posts() { var box_to_follow = context.current_view === 'global' ? $("#panel") : $(window); if (context.auto_mark_scroll) { - var lastScroll = 0; //Throttle + var lastScroll = 0, //Throttle + timerId = 0; box_to_follow.scroll(function () { + window.clearTimeout(timerId); if (lastScroll + 500 < Date.now()) { lastScroll = Date.now(); - $('.not_read:visible').each(function () { - var $this = $(this), - minTop = (context.current_view === 'global') ? box_to_follow.offset().top : box_to_follow.scrollTop(); - if ($this.offset().top + $this.height() < minTop + 40) { - mark_read($this, true); - } - }); + scrollAsRead(box_to_follow); + } else { + timerId = window.setTimeout(function() { + scrollAsRead(box_to_follow); + }, 500); } }); } -- cgit v1.2.3