rewrote longpolling, trying to avoid duplication
does not work though. stupid JS
This commit is contained in:
parent
d1358cc96f
commit
502bc5d5f8
3 changed files with 51 additions and 52 deletions
|
@ -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.
|
||||
|
|
41
static/longpolling.js
Normal file
41
static/longpolling.js
Normal file
|
@ -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 );
|
||||
}
|
|
@ -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 );
|
||||
|
|
Loading…
Reference in a new issue