]> git.wh0rd.org Git - tt-rss.git/commitdiff
add some async counters handling
authorAndrew Dolgov <fox@madoka.spb.ru>
Fri, 24 Aug 2007 04:04:55 +0000 (05:04 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Fri, 24 Aug 2007 04:04:55 +0000 (05:04 +0100)
functions.js
modules/backend-rpc.php
viewfeed.js

index 0d839019934dd9f1c9dee79de7c33c4d90e2132d..da33ba42e286576d08a402a2fa0039df16d5970c 100644 (file)
@@ -712,7 +712,8 @@ function parse_counters(reply, scheduled_call) {
                                        }
 
                                        if (row_needs_hl) { 
-                                               new Effect.Highlight(feedr, {duration: 1, startcolor: "#fff7d5"});
+                                               new Effect.Highlight(feedr, {duration: 1, startcolor: "#fff7d5",
+                                                       queue: { position:'end', scope: 'EFQ-' + id, limit: 1 } } );
                                        }
                                } else {
                                        feedctr.className = "invisible";
@@ -790,6 +791,17 @@ function parse_counters_reply(xmlhttp, scheduled_call) {
 
 }
 
+function all_counters_callback2(transport) {
+       try {
+               debug("<b>all_counters_callback2 IN: " + transport + "</b>");
+               parse_counters_reply(transport);
+               debug("<b>all_counters_callback2 OUT: " + transport + "</b>");
+
+       } catch (e) {
+               exception_error("all_counters_callback2", e);
+       }
+}
+
 function all_counters_callback() {
        if (xmlhttp_rpc.readyState == 4) {
                try {
index 6d3ceedfd6a2781ab609add9ec9be94e75dc96cc..b54bd783a653bd4afeb6f8907ff07dd19c8a8b43 100644 (file)
 
                        print "<counters>";
 
+                       $omode = $_GET["omode"];
+        
+                       if (!$omode) $omode = "tflc";
+
+                       if (strchr($omode, "l")) getLabelCounters($link);
+
+                       if (strchr($omode, "c")) {                      
+                               if (get_pref($link, 'ENABLE_FEED_CATS')) {
+                                       getCategoryCounters($link);
+                               }
+                       }
+
                        if ($global_unread_caller != $global_unread) {
 
-                               $omode = $_GET["omode"];
-        
-                               if (!$omode) $omode = "tflc";
-        
-                               if (strchr($omode, "l")) getLabelCounters($link);
                                if (strchr($omode, "f")) getFeedCounters($link);
                                if (strchr($omode, "t")) getTagCounters($link);
-                               if (strchr($omode, "c")) {                      
-                                       if (get_pref($link, 'ENABLE_FEED_CATS')) {
-                                               getCategoryCounters($link);
-                                       }
-                               }
                        }
 
                        getGlobalCounters($link, $global_unread);
index 2984b4bc6c0437d687af863926cb0f20a73b2786..d9b2e22fecb5f3dce3710cade9356a40b091653a 100644 (file)
@@ -1,5 +1,4 @@
 var active_post_id = false;
-var _catchup_callback_func = false;
 var last_article_view = false;
 var active_real_feed_id = false;
 
@@ -33,6 +32,19 @@ function catchup_callback() {
        }
 }
 
+function catchup_callback2(transport, callback) {
+       try {
+               debug("catchup_callback2 " + transport + ", " + callback);
+               notify("");                     
+               all_counters_callback2(transport);
+               if (callback) {
+                       setTimeout(callback, 10);       
+               }
+       } catch (e) {
+               exception_error("catchup_callback2", e);
+       }
+}
+
 function headlines_callback() {
        if (xmlhttp.readyState == 4) {
                debug("headlines_callback");
@@ -376,11 +388,6 @@ function toggleMark(id, client_only, no_effects) {
 
        try {
 
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
-                       printLockingError();
-                       return;
-               }
-       
                var query = "backend.php?op=rpc&id=" + id + "&subop=mark";
        
                query = query + "&afid=" + getActiveFeedId();
@@ -443,9 +450,15 @@ function toggleMark(id, client_only, no_effects) {
                if (!client_only) {
                        debug(query);
 
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null);
+//                     xmlhttp_rpc.open("GET", query, true);
+//                     xmlhttp_rpc.onreadystatechange=all_counters_callback;
+//                     xmlhttp_rpc.send(null);
+
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
+
                }
 
        } catch (e) {
@@ -457,11 +470,6 @@ function togglePub(id, client_only, no_effects) {
 
        try {
 
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
-                       printLockingError();
-                       return;
-               }
-       
                var query = "backend.php?op=rpc&id=" + id + "&subop=publ";
        
                query = query + "&afid=" + getActiveFeedId();
@@ -522,9 +530,10 @@ function togglePub(id, client_only, no_effects) {
                new Ajax.Request(query); */
 
                if (!client_only) {
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null);
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
                }
 
        } catch (e) {
@@ -609,10 +618,6 @@ function moveToPost(mode) {
 
 function toggleUnread(id, cmode) {
        try {
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
-                       printLockingError();
-                       return;
-               }
        
                var row = document.getElementById("RROW-" + id);
                if (row) {
@@ -631,11 +636,12 @@ function toggleUnread(id, cmode) {
                        var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
                                param_escape(id) + "&cmode=" + param_escape(cmode);
 
-                       notify_progress("Loading, please wait...");
+//                     notify_progress("Loading, please wait...");
 
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null);
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
 
                }
 
@@ -647,10 +653,10 @@ function toggleUnread(id, cmode) {
 
 function selectionToggleUnread(cdm_mode, set_state, callback_func, no_error) {
        try {
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
+/*             if (!xmlhttp_ready(xmlhttp_rpc)) {
                        printLockingError();
                        return;
-               }
+               } */
        
                var rows;
 
@@ -705,13 +711,20 @@ function selectionToggleUnread(cdm_mode, set_state, callback_func, no_error) {
                        var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
                                param_escape(rows.toString()) + "&cmode=" + cmode;
 
-                       _catchup_callback_func = callback_func;
+//                     _catchup_callback_func = callback_func;
+
+                       debug(callback_func);
 
                        notify_progress("Loading, please wait...");
 
-                       xmlhttp_rpc.open("GET", query, true);
+/*                     xmlhttp_rpc.open("GET", query, true);
                        xmlhttp_rpc.onreadystatechange=catchup_callback;
-                       xmlhttp_rpc.send(null);
+                       xmlhttp_rpc.send(null); */
+
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       catchup_callback2(transport, callback_func); 
+                               } });
 
                }
 
@@ -722,10 +735,6 @@ function selectionToggleUnread(cdm_mode, set_state, callback_func, no_error) {
 
 function selectionToggleMarked(cdm_mode) {
        try {
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
-                       printLockingError();
-                       return;
-               }
        
                var rows;
                
@@ -751,15 +760,18 @@ function selectionToggleMarked(cdm_mode) {
 
                        query = query + "&afid=" + getActiveFeedId();
 
-                       if (tagsAreDisplayed()) {
+/*                     if (tagsAreDisplayed()) {
                                query = query + "&omode=tl";
                        } else {
                                query = query + "&omode=flc";
-                       }
+                       } */
+
+                       query = query + "&omode=lc";
 
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null);
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
 
                }
 
@@ -770,10 +782,6 @@ function selectionToggleMarked(cdm_mode) {
 
 function selectionTogglePublished(cdm_mode) {
        try {
-               if (!xmlhttp_ready(xmlhttp_rpc)) {
-                       printLockingError();
-                       return;
-               }
        
                var rows;
                
@@ -799,15 +807,18 @@ function selectionTogglePublished(cdm_mode) {
 
                        query = query + "&afid=" + getActiveFeedId();
 
-                       if (tagsAreDisplayed()) {
+/*                     if (tagsAreDisplayed()) {
                                query = query + "&omode=tl";
                        } else {
                                query = query + "&omode=flc";
-                       }
+                       } */
+
+                       query = query + "&omode=lc";
 
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null);
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
 
                }
 
@@ -1125,7 +1136,7 @@ function cdmWatchdog() {
 
                debug("cdmWatchdog, ids= " + ids.toString());
 
-               if (ids.length > 0 && xmlhttp_ready(xmlhttp_rpc)) {
+               if (ids.length > 0) {
 
                        for (var i = 0; i < ids.length; i++) {
                                var e = document.getElementById("RROW-" + ids[i]);
@@ -1137,9 +1148,10 @@ function cdmWatchdog() {
                        var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
                                param_escape(ids.toString()) + "&cmode=0";
 
-                       xmlhttp_rpc.open("GET", query, true);
-                       xmlhttp_rpc.onreadystatechange=all_counters_callback;
-                       xmlhttp_rpc.send(null); 
+                       new Ajax.Request(query, {
+                               onComplete: function(transport) { 
+                                       all_counters_callback2(transport); 
+                               } });
 
                }