fix view() being called twice on every headline click, experimental progress indicators for feedlist/headlines

This commit is contained in:
Andrew Dolgov 2009-10-07 14:22:44 +04:00
parent 449cba7c38
commit 6e35a862dd
5 changed files with 61 additions and 12 deletions

View File

@ -315,7 +315,17 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
} else { } else {
if (!page_offset) { if (!page_offset) {
notify_progress("Loading, please wait...", true); var feedr = $('FEEDR-' + feed);
if (feedr) {
var ll = document.createElement('img');
ll.src = 'images/indicator_tiny.gif';
ll.className = 'hlLoading';
ll.id = 'FLL-' + feed;
feedr.appendChild(ll);
}
} }
new Ajax.Request(query, { new Ajax.Request(query, {

View File

@ -5119,11 +5119,11 @@
# truncate_string($line["feed_title"],30)."</a>&nbsp;</td>"; # truncate_string($line["feed_title"],30)."</a>&nbsp;</td>";
# } else { # } else {
print "<td onclick='view($id,$feed_id)' class='hlContent$hlc_suffix' valign='middle'>"; print "<td onclick='view($id,$feed_id)' class='hlContent$hlc_suffix' valign='middle' id='HLC-$id'>";
print "<a id=\"RTITLE-$id\" print "<a id=\"RTITLE-$id\"
href=\"" . htmlspecialchars($line["link"]) . "\" href=\"" . htmlspecialchars($line["link"]) . "\"
onclick=\"return view($id,$feed_id);\">" . onclick=\"return false\">" .
$line["title"]; $line["title"];
if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) { if (get_pref($link, 'SHOW_CONTENT_PREVIEW')) {
@ -5147,6 +5147,10 @@
</span>"; </span>";
} }
} }
// print "<img id='HLL-$id' class='hlLoading'
// src='images/indicator_tiny.gif' style='display : none'>";
print "</td>"; print "</td>";
# } # }

BIN
images/indicator_tiny.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

View File

@ -105,6 +105,12 @@ div.postReply span.author {
font-size : 12px; font-size : 12px;
} }
ul.feedList img.hlLoading {
margin-left : 5px;
vertical-align : middle;
height : 10px;
}
ul.feedList { ul.feedList {
list-style-type : none; list-style-type : none;
margin : 5px 5px 5px 0px; margin : 5px 5px 5px 0px;
@ -915,6 +921,11 @@ table.headlinesList span.hlLabelRef, div.cdmHeader span.hlLabelRef {
white-space: nowrap; white-space: nowrap;
} }
table.headlinesList img.hlLoading {
margin-left : 5px;
vertical-align : middle;
}
table.headlinesList td.hlFeedIcon { table.headlinesList td.hlFeedIcon {
width : 25px; width : 25px;
text-align : center; text-align : center;

View File

@ -106,16 +106,21 @@ function headlines_callback2(transport, feed_cur_page) {
} }
} }
var ll = $('FLL-' + feed_id);
if (!is_cat) { if (!is_cat) {
var feedr = $("FEEDR-" + feed_id); var feedr = $("FEEDR-" + feed_id);
if (feedr && !feedr.className.match("Selected")) { if (feedr && !feedr.className.match("Selected")) {
feedr.className = feedr.className + "Selected"; feedr.className = feedr.className + "Selected";
} }
if (feedr && ll) feedr.removeChild(ll);
} else { } else {
var feedr = $("FCAT-" + feed_id); var feedr = $("FCAT-" + feed_id);
if (feedr && !feedr.className.match("Selected")) { if (feedr && !feedr.className.match("Selected")) {
feedr.className = feedr.className + "Selected"; feedr.className = feedr.className + "Selected";
} }
if (feedr && ll) feedr.removeChild(ll);
} }
var f = $("headlines-frame"); var f = $("headlines-frame");
@ -363,6 +368,19 @@ function article_callback2(transport, id, feed_id) {
if (!transport_error_check(transport)) return; if (!transport_error_check(transport)) return;
var ll = $('LL-' + id);
var content = $('HLC-' + id);
if (ll && content) content.removeChild(ll);
if (id != last_requested_article) {
debug("requested article id is out of sequence, aborting");
return;
}
active_real_feed_id = feed_id;
active_post_id = id;
debug("looking for articles to cache..."); debug("looking for articles to cache...");
var articles = transport.responseXML.getElementsByTagName("article"); var articles = transport.responseXML.getElementsByTagName("article");
@ -380,13 +398,6 @@ function article_callback2(transport, id, feed_id) {
cache_inject(a_id, articles[i].firstChild.nodeValue); cache_inject(a_id, articles[i].firstChild.nodeValue);
} }
if (id != last_requested_article) {
debug("requested article id is out of sequence, aborting");
return;
}
active_real_feed_id = feed_id;
active_post_id = id;
showArticleInHeadlines(id); showArticleInHeadlines(id);
@ -491,7 +502,20 @@ function view(id, feed_id, skip_history) {
if (!cached_article) { if (!cached_article) {
notify_progress("Loading, please wait...", true); // notify_progress("Loading, please wait...", true);
var content = $('HLC-' + id);
if (content && !$('LL-' + id)) {
var ll = document.createElement('img');
ll.src = 'images/indicator_tiny.gif';
ll.className = 'hlLoading';
ll.id = 'LL-' + id;
content.appendChild(ll);
}
} else if (cached_article && article_is_unread) { } else if (cached_article && article_is_unread) {