aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-07-30 18:01:41 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-07-30 18:01:41 -0400
commit502bc5d5f84a26bfd2ca700d8f90d78a81c7b1ac (patch)
tree113863fb55a035b57ef912f01ad974b01a829423
parentd1358cc96f2e719a90e2192a24e61c57ce9ed50c (diff)
rewrote longpolling, trying to avoid duplication
does not work though. stupid JS
-rw-r--r--Assistant/Threads/WebApp.hs1
-rw-r--r--static/longpolling.js41
-rw-r--r--templates/longpolling.julius61
3 files changed, 51 insertions, 52 deletions
diff --git a/Assistant/Threads/WebApp.hs b/Assistant/Threads/WebApp.hs
index e75870e0d..7b96665d3 100644
--- a/Assistant/Threads/WebApp.hs
+++ b/Assistant/Threads/WebApp.hs
@@ -146,6 +146,7 @@ autoUpdate :: Text -> Route WebApp -> Int -> Int -> Widget
autoUpdate ident gethtml ms_delay ms_startdelay = do
let delay = show ms_delay
let startdelay = show ms_startdelay
+ addScript $ StaticR longpolling_js
$(widgetFile "longpolling")
{- A display of currently running and queued transfers.
diff --git a/static/longpolling.js b/static/longpolling.js
new file mode 100644
index 000000000..4e5f102f0
--- /dev/null
+++ b/static/longpolling.js
@@ -0,0 +1,41 @@
+// Uses long-polling to update a div with a specified id,
+// by polling an url, which should return a new div, with the same id.
+
+connfails=0;
+
+connfailed=
+ '<div id="modal" class="modal fade">' +
+ ' <div class="modal-header">' +
+ ' <h3>git-annex has shut down</h3>' +
+ ' </div>' +
+ ' <div class="modal-body">' +
+ ' You can now close this browser window.' +
+ ' </div>' +
+ '</div>' ;
+
+function longpoll(url, divid) {
+ (function( $ ) {
+ $.ajax({
+ 'url': url,
+ 'dataType': 'html',
+ 'success': function(data, status, jqxhr) {
+ $('#' + divid).replaceWith(data);
+ connfails=0;
+ return 1;
+ },
+ 'error': function(jqxhr, msg, e) {
+ connfails=connfails+1;
+ if (connfails > 3) {
+ // blocked by many browsers
+ window.close();
+ $('#modal').replaceWith(connfailed);
+ $('#modal').modal('show');
+ return 0;
+ }
+ else {
+ return 1;
+ }
+ }
+ });
+ })( jQuery );
+}
diff --git a/templates/longpolling.julius b/templates/longpolling.julius
index 35205bd04..29e533c41 100644
--- a/templates/longpolling.julius
+++ b/templates/longpolling.julius
@@ -1,54 +1,11 @@
-
-// Uses long-polling to update a div with id=#{ident}
-// The gethtml route should return a new div, with the same id.
-//
-// Maximum update frequency is controlled by #{startdelay}
-// and #{delay}, both in milliseconds.
-
-connfails=0;
-
-connfailed=
- '<div id="modal" class="modal fade">' +
- ' <div class="modal-header">' +
- ' <h3>git-annex has shut down</h3>' +
- ' </div>' +
- ' <div class="modal-body">' +
- ' You can now close this browser window.' +
- ' </div>' +
- '</div>' ;
-
-(function( $ ) {
-
-$.LongPoll#{ident} = (function() {
- return {
- send : function() {
- $.ajax({
- 'url': '@{gethtml}',
- 'dataType': 'html',
- 'success': function(data, status, jqxhr) {
- $('##{ident}').replaceWith(data);
- setTimeout($.LongPoll#{ident}.send, #{show delay});
- numerrs=0;
- },
- 'error': function(jqxhr, msg, e) {
- connfails=connfails+1;
- if (connfails > 3) {
- // blocked by many browsers
- window.close();
- $('#modal').replaceWith(connfailed);
- $('#modal').modal('show');
- }
- else {
- setTimeout($.LongPoll#{ident}.send, #{show delay});
- }
- },
- });
- }
+// longpolling for #{ident}
+function poller#{ident}() {
+ if (longpoll('@{gethtml}', '#{ident}')) {
+ setTimeout(poller#{ident}, #{delay});
}
-}());
-
-$(document).bind('ready.app', function() {
- setTimeout($.LongPoll#{ident}.send, #{show startdelay});
-});
-
+}
+(function( $ ) {
+ $(document).bind('ready.app', function() {
+ setTimeout(poller#{ident}, #{startdelay});
+ });
})( jQuery );