mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-18 16:53:38 +00:00
97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
|
/** @namespace $.SickGear.Root */
|
||
|
|
||
|
var dev = !1,
|
||
|
logInfo = dev && console.info.bind(window.console) || function (){},
|
||
|
logErr = dev && console.error.bind(window.console) || function (){};
|
||
|
|
||
|
var p_id = 0;
|
||
|
|
||
|
$(function () {
|
||
|
ajaxConsumer.checkLoadNotifications();
|
||
|
});
|
||
|
|
||
|
var baseUrl = function () {
|
||
|
return $.SickGear.Root;
|
||
|
};
|
||
|
|
||
|
var reloading = false
|
||
|
|
||
|
var ajaxConsumer = function () {
|
||
|
var that = this;
|
||
|
that.timeoutId = 0;
|
||
|
that.pollInterval = 100;
|
||
|
logInfo('init ajaxConsumer');
|
||
|
|
||
|
return {
|
||
|
checkLoadNotifications : function () {
|
||
|
logInfo('ajaxConsumer.checkLoadNotifications()');
|
||
|
$.getJSON({
|
||
|
url: baseUrl() + '/get_message',
|
||
|
timeout: 15000 // timeout request after 15 secs
|
||
|
})
|
||
|
.done(function (data) {
|
||
|
uiUpdateComplete(data.message);
|
||
|
})
|
||
|
.fail(function (jqXHR, textStatus, errorThrown) {
|
||
|
if (404 === jqXHR.status && !reloading) {
|
||
|
reloading = true;
|
||
|
putMsg('Finished loading. Reloading page');
|
||
|
location.reload();
|
||
|
}
|
||
|
that.pollInterval = 500;
|
||
|
})
|
||
|
.always(function (jqXHR, textStatus) {
|
||
|
clearTimeout(that.timeoutId);
|
||
|
if (!reloading){
|
||
|
if (that.pollInterval)
|
||
|
that.timeoutId = setTimeout(ajaxConsumer.checkLoadNotifications, that.pollInterval);
|
||
|
logInfo(that.pollInterval ? '^-- ' + that.pollInterval/1000 + 's to next work' : '^-- no more work');
|
||
|
logInfo('====');
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
}();
|
||
|
|
||
|
function putMsg(msg) {
|
||
|
var loading = '.loading-step', lastStep$ = $(loading).filter(':last');
|
||
|
if (msg !== unescape(lastStep$.attr('data-message'))) {
|
||
|
lastStep$.clone().insertAfter(lastStep$);
|
||
|
|
||
|
var result$ = lastStep$.find('.result');
|
||
|
lastStep$.find('.spinner').addClass('hide');
|
||
|
if (!lastStep$.find('.count').text().length) {
|
||
|
result$.removeClass('hide');
|
||
|
} else {
|
||
|
result$.addClass('hide');
|
||
|
}
|
||
|
lastStep$ = $(loading).filter(':last');
|
||
|
lastStep$.attr('data-message', escape(msg));
|
||
|
lastStep$.find('.desc').text(msg + ': ');
|
||
|
lastStep$.find('.count').text('');
|
||
|
lastStep$.find('.spinner').removeClass('hide');
|
||
|
lastStep$.find('.result').addClass('hide');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function uiUpdateComplete(data) {
|
||
|
$.each(data, function (i, msg) {
|
||
|
var loading = '.loading-step';
|
||
|
if (msg.msg === 'Process-id') {
|
||
|
if (p_id !== msg.progress) {
|
||
|
p_id = msg.progress;
|
||
|
$('.loading-step:not(:first)').remove();
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
if (i >= $(loading).length) {
|
||
|
putMsg(msg.msg);
|
||
|
}
|
||
|
if (-1 !== msg.progress) {
|
||
|
var loading$ = $(loading + '[data-message="' + escape(msg.msg) + '"]');
|
||
|
loading$.find('.spinner, .result').addClass('hide');
|
||
|
loading$.find('.count').text(msg.progress);
|
||
|
}
|
||
|
});
|
||
|
}
|