Merge pull request #7 from halkyon/indicator_fixes

BUG Indicator stuck on 0% until you refresh the page.
This commit is contained in:
Damian Mooyman 2014-08-13 17:36:12 +12:00
commit f2b4c7b7a2
1 changed files with 14 additions and 8 deletions

View File

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