Browse Source

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

Andrew Dolgov 10 years ago
parent
commit
6e35a862dd
5 changed files with 61 additions and 12 deletions
  1. 11 1
      feedlist.js
  2. 6 2
      functions.php
  3. BIN
      images/indicator_tiny.gif
  4. 11 0
      tt-rss.css
  5. 33 9
      viewfeed.js

+ 11 - 1
feedlist.js

@@ -315,7 +315,17 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
 		} else {
 
 			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, {

+ 6 - 2
functions.php

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

BIN
images/indicator_tiny.gif


+ 11 - 0
tt-rss.css

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

+ 33 - 9
viewfeed.js

@@ -106,18 +106,23 @@ function headlines_callback2(transport, feed_cur_page) {
 			}
 		}
 
+		var ll = $('FLL-' + feed_id);
+
 		if (!is_cat) {
 			var feedr = $("FEEDR-" + feed_id);
 			if (feedr && !feedr.className.match("Selected")) {	
 				feedr.className = feedr.className + "Selected";
 			} 
+			if (feedr && ll) feedr.removeChild(ll);
 		} else {
 			var feedr = $("FCAT-" + feed_id);
 			if (feedr && !feedr.className.match("Selected")) {	
 				feedr.className = feedr.className + "Selected";
 			} 
+			if (feedr && ll) feedr.removeChild(ll);
+
 		}
-	
+
 		var f = $("headlines-frame");
 		try {
 			if (feed_cur_page == 0) { 
@@ -363,6 +368,19 @@ function article_callback2(transport, id, feed_id) {
 
 			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...");
 
 			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);
 			}
 
-			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);	
 
@@ -491,7 +502,20 @@ function view(id, feed_id, skip_history) {
 
 		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) {