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

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,
@ -49,9 +52,12 @@
}
// 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);