(function ($) {
$(function() {
// Ping Drupal for initial status of processes.
$.ajax({
type: 'GET',
url: '/admin/ultimate-cron/service/process-status',
data: '',
dataType: 'json',
success: function (result) {
// Drupal.settings.ultimate_cron.initial_processes = result.processes;
// Drupal.settings.ultimate_cron.processes = result.processes;
// setTimeout(&ultimateCronInitialProcess, 100);
}
});
// Setup progress counter
setInterval(function() {
var time = (new Date()).getTime() / 1000;
$.each(Drupal.settings.ultimate_cron.processes, function (name, process) {
if (process.exec_status == 2) {
var row = 'row-' + name;
var seconds = Math.round((time - Drupal.settings.ultimate_cron.skew) - process.start_stamp);
seconds = seconds < 0 ? 0 : seconds;
var formatted = (new Date(seconds * 1000)).toISOString().substring(11, 19);
if (process.progress > 0) {
var progress = Math.round(process.progress * 100);
formatted += ' (' + progress + '%)';
}
$('tr.' + row + ' td.ultimate-cron-admin-status-running').closest('tr.' + row).find('td.ultimate-cron-admin-end').html(formatted);
}
});
}, 1000);
});
Drupal.Nodejs.callbacks.nodejsBackgroundProcess = {
updateSkew: function (time) {
jsTime = (new Date()).getTime() / 1000;
Drupal.settings.ultimate_cron.skew = jsTime - time;
},
callback: function (message) {
var action = message.data.action;
if (
// action != 'locked' &&
action != 'claimed' &&
action != 'dispatch' &&
// action != 'remove' &&
action != 'setProgress' &&
action != 'ultimateCronStatus'
) {
return;
}
var process = message.data.background_process;
var ultimate_cron = message.data.ultimate_cron;
var regex = new RegExp('^' + Drupal.settings.ultimate_cron.handle_prefix);
var name = process.handle.replace(regex, '');
if (name == process.handle) {
return;
}
name = encodeURIComponent(name).replace(/%/, '_');
Drupal.settings.ultimate_cron.processes[name] = process;
var row = 'row-' + name;
switch (action) {
case 'dispatch':
this.updateSkew(message.data.timestamp);
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('class', 'ultimate-cron-admin-status ultimate-cron-admin-status-running');
$('tr.' + row + ' td.ultimate-cron-admin-start').html(ultimate_cron.start_stamp);
$('tr.' + row + ' td.ultimate-cron-admin-end').html(Drupal.t('Starting'));
$('tr.' + row + ' td.ultimate-cron-admin-status').html('' + Drupal.t('Starting') + '');
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('title', Drupal.t('Running on !service_host', {'!service_host': process.service_host ? process.service_host : Drupal.t('N/A')}));
var link = $('tr.' + row + ' td.ultimate-cron-admin-execute a');
link.attr('href', ultimate_cron.unlockURL);
link.attr('title', Drupal.t('Unlock'));
link.html('' + Drupal.t('Unlock') + '');
$('tr.' + row + ' td.ultimate-cron-admin-execute').attr('class', 'ultimate-cron-admin-unlock');
break;
case 'claimed':
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('class', 'ultimate-cron-admin-status ultimate-cron-admin-status-running');
$('tr.' + row + ' td.ultimate-cron-admin-start').html(ultimate_cron.start_stamp);
$('tr.' + row + ' td.ultimate-cron-admin-end').html('00:00:00');
$('tr.' + row + ' td.ultimate-cron-admin-status').html('' + Drupal.t('Running') + '');
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('title', Drupal.t('Running on !service_host', {'!service_host': process.service_host ? process.service_host : Drupal.t('N/A')}));
var link = $('tr.' + row + ' td.ultimate-cron-admin-execute a');
link.attr('href', ultimate_cron.unlockURL);
link.attr('title', Drupal.t('Unlock'));
link.html('' + Drupal.t('Unlock') + '');
$('tr.' + row + ' td.ultimate-cron-admin-execute').attr('class', 'ultimate-cron-admin-unlock');
break;
case 'setProgress':
this.updateSkew(message.data.timestamp);
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('class', 'ultimate-cron-admin-status ultimate-cron-admin-status-running');
$('tr.' + row + ' td.ultimate-cron-admin-start').html(ultimate_cron.start_stamp);
// $('tr.' + row + ' td.ultimate-cron-admin-end').html(ultimate_cron.progress);
$('tr.' + row + ' td.ultimate-cron-admin-status').html('' + Drupal.t('Running') + '');
// $('tr.' + row + ' td.ultimate-cron-admin-status').attr('title', Drupal.t('Running on !service_host', {'!service_host': process.service_host ? process.service_host : Drupal.t('N/A')}));
var link = $('tr.' + row + ' td.ultimate-cron-admin-execute a');
link.attr('href', ultimate_cron.unlockURL);
link.attr('title', Drupal.t('Unlock'));
link.html('' + Drupal.t('Unlock') + '');
$('tr.' + row + ' td.ultimate-cron-admin-execute').attr('class', 'ultimate-cron-admin-unlock');
break;
case 'ultimateCronStatus':
switch (parseInt(process.exec_status)) {
case 1:
message.data.action = 'dispatch';
return this.callback(message);
case 2:
message.data.action = 'setProgress';
return this.callback(message);
}
return;
default:
return;
}
var sel = location.hash.substring(1);
sel = sel ? sel : 'show-all';
$('a#ultimate-cron-' + sel).trigger('click');
}
};
Drupal.Nodejs.callbacks.nodejsProgress = {
callback: function (message) {
switch (message.data.action) {
case 'setProgress':
return Drupal.Nodejs.callbacks.nodejsBackgroundProcess.callback(message);
}
}
}
Drupal.Nodejs.callbacks.nodejsUltimateCron = {
callback: function (message) {
var action = message.data.action;
switch (action) {
case 'log':
var log = message.data.log;
var name = encodeURIComponent(log.name).replace(/%/, '_');
delete Drupal.settings.ultimate_cron.processes[name];
var row = 'row-' + name;
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('class', 'ultimate-cron-admin-status ultimate-cron-admin-status-' + log.formatted.severity);
$('tr.' + row + ' td.ultimate-cron-admin-status').html('' + log.severity + '');
$('tr.' + row + ' td.ultimate-cron-admin-status').attr('title', log.formatted.msg ? log.formatted.msg : Drupal.t('No errors'));
$('tr.' + row + ' td.ultimate-cron-admin-start').html(log.formatted.start_stamp);
$('tr.' + row + ' td.ultimate-cron-admin-start').attr('title', Drupal.t('Previous run started @ !timestamp', {'!timestamp': log.formatted.start_stamp}));
$('tr.' + row + ' td.ultimate-cron-admin-end').html(log.formatted.duration);
$('tr.' + row + ' td.ultimate-cron-admin-end').attr('title', Drupal.t('Previous run finished @ !timestamp', {'!timestamp': log.formatted.end_stamp}));
var link = $('tr.' + row + ' td.ultimate-cron-admin-unlock a');
link.attr('href', log.formatted.executeURL);
link.attr('title', Drupal.t('Run'));
link.html('' + Drupal.t('Run') + '');
$('tr.' + row + ' td.ultimate-cron-admin-unlock').attr('class', 'ultimate-cron-admin-execute');
break;
default:
return;
}
var sel = location.hash.substring(1);
sel = sel ? sel : 'show-all';
$('a#ultimate-cron-' + sel).trigger('click');
}
};
}(jQuery));