BUG Indicator stuck on 0% until you refresh the page.

admin/externallinks/start is called, but asynchronously, so the poll()
call is never called immediately on start, you have to refresh the page
to get it to show.
This commit is contained in:
Sean Harvey 2014-08-13 14:55:47 +12:00
parent 606c801513
commit 65117b2599
1 changed files with 14 additions and 8 deletions

View File

@ -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('<span class="ss-ui-loading-icon"></span>');
$('#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('<span class="ss-ui-loading-icon"></span>');
}
// 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);