diff --git a/javascript/BrokenExternalLinksReport.js b/javascript/BrokenExternalLinksReport.js
index 5b3c853..c6d84c9 100644
--- a/javascript/BrokenExternalLinksReport.js
+++ b/javascript/BrokenExternalLinksReport.js
@@ -1,13 +1,14 @@
(function($) {
$.entwine('ss', function($) {
$('#externalLinksReport').entwine({
+ PollTimeout: null,
onclick: function() {
- $(this).start();
+ this.start();
},
onmatch: function() {
// poll the current job and update the front end status
$('#externalLinksReport').hide();
- $(this).poll(0);
+ this.poll();
},
start: function() {
// initiate a new job
@@ -15,10 +16,12 @@
$('#ReportHolder').text('Running report 0%');
$('#ReportHolder').append('');
$('#externalLinksReport').hide();
- $.ajax({url: "admin/externallinks/start", async: true, timeout: 3000 });
- $(this).poll(1);
+ $.ajax({url: "admin/externallinks/start", async: false, timeout: 3000 });
+ this.poll();
},
- poll: function(start) {
+ poll: function() {
+ var self = this;
+
$.ajax({
url: "admin/externallinks/getJobStatus",
async: true,
@@ -47,11 +50,14 @@
.text('Running report ' + completed + '/' + total + ' (' + percent.toFixed(2) + '%)')
.append('');
}
-
+
// Ensure the regular poll method is run
- if(!start) {
- setTimeout(function() { $('#externalLinksReport').poll(0); }, 1000);
+ // kill any existing timeout
+ if(self.getPollTimeout() !== null) {
+ clearTimeout(self.getPollTimeout());
}
+
+ self.setPollTimeout(setTimeout(function() { $('#externalLinksReport').poll(); }, 1000));
},
error: function(e) {
if(typeof console !== 'undefined') console.log(e);