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
|
autoUpdate ident gethtml ms_delay ms_startdelay = do
|
||||||
let delay = show ms_delay
|
let delay = show ms_delay
|
||||||
let startdelay = show ms_startdelay
|
let startdelay = show ms_startdelay
|
||||||
|
addScript $ StaticR longpolling_js
|
||||||
$(widgetFile "longpolling")
|
$(widgetFile "longpolling")
|
||||||
|
|
||||||
{- A display of currently running and queued transfers.
|
{- 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 @@
|
||||||
|
// longpolling for #{ident}
|
||||||
// Uses long-polling to update a div with id=#{ident}
|
function poller#{ident}() {
|
||||||
// The gethtml route should return a new div, with the same id.
|
if (longpoll('@{gethtml}', '#{ident}')) {
|
||||||
//
|
setTimeout(poller#{ident}, #{delay});
|
||||||
// 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});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}());
|
}
|
||||||
|
(function( $ ) {
|
||||||
$(document).bind('ready.app', function() {
|
$(document).bind('ready.app', function() {
|
||||||
setTimeout($.LongPoll#{ident}.send, #{show startdelay});
|
setTimeout(poller#{ident}, #{startdelay});
|
||||||
});
|
});
|
||||||
|
|
||||||
})( jQuery );
|
})( jQuery );
|
||||||
|
|
Loading…
Reference in a new issue