summaryrefslogtreecommitdiff
path: root/static/longpolling.js
blob: 4e5f102f003083ed6aefdda81b4ca8d5ddaf7016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 );
}