From bf40c12408a6f6fd3183d54b47ef1fe9e19983d2 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 16:11:44 +0400 Subject: request_counters: force request 50% of the time to keep all counters updated --- js/feedlist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js') diff --git a/js/feedlist.js b/js/feedlist.js index 282e64b37..6f62de7b8 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -234,7 +234,7 @@ function request_counters(force) { var query = "?op=rpc&method=getAllCounters&seq=" + next_seq(); - if (!force) + if (!force && Math.random() >= 0.5) query = query + "&last_article_id=" + getInitParam("last_article_id"); console.log(query); -- cgit v1.2.3 From 5129d29d65f13323652c236c5990f3983a8ec555 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 16:47:25 +0400 Subject: reduce counters request minimum interval --- js/feedlist.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js') diff --git a/js/feedlist.js b/js/feedlist.js index 6f62de7b8..a9ee19c06 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -227,7 +227,7 @@ function request_counters(force) { var date = new Date(); var timestamp = Math.round(date.getTime() / 1000); - if (force || timestamp - counters_last_request > 15) { + if (force || timestamp - counters_last_request > 5) { console.log("scheduling request of counters..."); counters_last_request = timestamp; -- cgit v1.2.3 From 0a7b15207e71acfd219196ff3301f6730f77320f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 16:57:26 +0400 Subject: remove previous counter hacks; force request counters when there's no unread stuff left in current feed (e.g. finished reading) --- js/feedlist.js | 2 +- js/viewfeed.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'js') diff --git a/js/feedlist.js b/js/feedlist.js index a9ee19c06..b2aadab62 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -234,7 +234,7 @@ function request_counters(force) { var query = "?op=rpc&method=getAllCounters&seq=" + next_seq(); - if (!force && Math.random() >= 0.5) + if (!force) query = query + "&last_article_id=" + getInitParam("last_article_id"); console.log(query); diff --git a/js/viewfeed.js b/js/viewfeed.js index 1cdfdba3f..2f1ba24e0 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -325,7 +325,8 @@ function article_callback2(transport, id) { Element.show(dijit.byId("net-alert").domNode); } - request_counters(); + var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length + request_counters(unread_in_buffer == 0); headlines_scroll_handler($("headlines-frame")); @@ -1550,7 +1551,8 @@ function cdmClicked(event, id) { openArticleInNewWindow(id); } - request_counters(); + var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length + request_counters(unread_in_buffer == 0); } catch (e) { exception_error("cdmClicked"); -- cgit v1.2.3 From 3af9dbd350163a5761f58802cbca07a6d12f9206 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 18:44:45 +0400 Subject: cdmScrollToArticleId: use more natural scrolling --- js/viewfeed.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'js') diff --git a/js/viewfeed.js b/js/viewfeed.js index 2f1ba24e0..07af91a67 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1132,7 +1132,11 @@ function cdmScrollToArticleId(id) { if (!e || !ctr) return; - ctr.scrollTop = e.offsetTop; + if (e.offsetTop+e.offsetHeight > (ctr.scrollTop+ctr.offsetHeight) || + e.offsetTop < ctr.scrollTop) { + + ctr.scrollTop = e.offsetTop; + } } catch (e) { exception_error("cdmScrollToArticleId", e); -- cgit v1.2.3 From 104e5c6557707b13307802dd3b9c87d0209d4a92 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 22:27:49 +0400 Subject: moveToPost: implement more natural next/prev moving in combined mode --- js/viewfeed.js | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) (limited to 'js') diff --git a/js/viewfeed.js b/js/viewfeed.js index 07af91a67..6f88f7eac 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -549,13 +549,23 @@ function moveToPost(mode) { } if (mode == "next") { - if (next_id) { + if (next_id || active_post_id) { if (isCdmMode()) { - cdmExpandArticle(next_id); - cdmScrollToArticleId(next_id); + var article = $("RROW-" + active_post_id); + var ctr = $("headlines-frame"); - } else { + if (article && article.offsetTop + article.offsetHeight > + ctr.scrollTop + ctr.offsetHeight) { + + scrollArticle(ctr.offsetHeight/2); + + } else if (next_id) { + cdmExpandArticle(next_id); + cdmScrollToArticleId(next_id); + } + + } else if (next_id) { correctHeadlinesOffset(next_id); view(next_id, getActiveFeedId()); } @@ -563,11 +573,23 @@ function moveToPost(mode) { } if (mode == "prev") { - if (prev_id) { + if (prev_id || active_post_id) { if (isCdmMode()) { - cdmExpandArticle(prev_id); - cdmScrollToArticleId(prev_id); - } else { + + var article = $("RROW-" + active_post_id); + var prev_article = $("RROW-" + prev_id); + var ctr = $("headlines-frame"); + + if (article && article.offsetTop < ctr.scrollTop) { + scrollArticle(-ctr.offsetHeight/2); + } else if (prev_article && prev_article.offsetTop < ctr.scrollTop) { + cdmExpandArticle(prev_id); + scrollArticle(-ctr.offsetHeight/2); + } else if (prev_id) { + cdmExpandArticle(prev_id); + cdmScrollToArticleId(prev_id); + } + } else if (prev_id) { correctHeadlinesOffset(prev_id); view(prev_id, getActiveFeedId()); } -- cgit v1.2.3 From c22580b55f959c8deaebf9aa3a7895c7795df75d Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 22:48:43 +0400 Subject: implement classic next/prev article movement behavior, bind to ctrl-arrows --- js/tt-rss.js | 6 ++++++ js/viewfeed.js | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/tt-rss.js b/js/tt-rss.js index 530cb2931..7462d933d 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -604,6 +604,12 @@ function hotkey_handler(e) { case "prev_article": moveToPost('prev'); return false; + case "next_article_noscroll": + moveToPost('next', true); + return false; + case "prev_article_noscroll": + moveToPost('prev', true); + return false; case "search_dialog": search(); return ; diff --git a/js/viewfeed.js b/js/viewfeed.js index 6f88f7eac..20a3e2b16 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -514,7 +514,7 @@ function togglePub(id, client_only, no_effects, note) { } } -function moveToPost(mode) { +function moveToPost(mode, noscroll) { try { @@ -555,7 +555,7 @@ function moveToPost(mode) { var article = $("RROW-" + active_post_id); var ctr = $("headlines-frame"); - if (article && article.offsetTop + article.offsetHeight > + if (!noscroll && article && article.offsetTop + article.offsetHeight > ctr.scrollTop + ctr.offsetHeight) { scrollArticle(ctr.offsetHeight/2); @@ -580,9 +580,10 @@ function moveToPost(mode) { var prev_article = $("RROW-" + prev_id); var ctr = $("headlines-frame"); - if (article && article.offsetTop < ctr.scrollTop) { + if (!noscroll && article && article.offsetTop < ctr.scrollTop) { scrollArticle(-ctr.offsetHeight/2); - } else if (prev_article && prev_article.offsetTop < ctr.scrollTop) { + } else if (!noscroll && prev_article && + prev_article.offsetTop < ctr.scrollTop) { cdmExpandArticle(prev_id); scrollArticle(-ctr.offsetHeight/2); } else if (prev_id) { -- cgit v1.2.3 From 67cad82e60f8a2d9b479410babd98cae59c0bc2e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 27 Feb 2013 23:04:23 +0400 Subject: cdmExpandArticle: do not perform offset manipulation --- js/viewfeed.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'js') diff --git a/js/viewfeed.js b/js/viewfeed.js index 20a3e2b16..b8dc05aed 100644 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -1358,12 +1358,12 @@ function cdmExpandArticle(id) { Element.hide("CEXC-" + id); } - var new_offset = $("RROW-" + id).offsetTop; + /* var new_offset = $("RROW-" + id).offsetTop; $("headlines-frame").scrollTop += (new_offset-old_offset); if ($("RROW-" + id).offsetTop != old_offset) - $("headlines-frame").scrollTop = new_offset; + $("headlines-frame").scrollTop = new_offset; */ toggleUnread(id, 0, true); toggleSelected(id); -- cgit v1.2.3