OpenXE/classes/Modules/SystemTemplates/www/js/systemtemplates.js
2021-05-21 08:49:41 +02:00

382 lines
13 KiB
JavaScript

var SystemTemplatesModule = function ($) {
'use strict';
/**
* @type {{readStatus: readStatus, init: init, setTemplateCache: setTemplateCache, runLoadTemplate:
* runLoadTemplate, getCacheTemplateValue: (function(string): *), isInitialized: boolean, storage:
* {$systemTemplatesDialog: null}, initDialog: initDialog, initLoadTemplate: initLoadTemplate,
* showTemplateInfo: showTemplateInfo, setInterval: (function(): number), reloadUrl: reloadUrl, registerEvents:
* registerEvents}}
*/
var me = {
isInitialized: false,
storage: {
$dialog: null,
$confirmResetWithWrittenUsernameDialog: null
},
/**
* @return void
*/
init: function () {
if (me.isInitialized === true) {
return;
}
me.storage.$dialog = $('#system-templates-dialog');
me.storage.$confirmResetWithWrittenUsernameDialog = $('#system-templates-confirm-reset-with-written-username');
if (me.storage.$dialog.length === 0) {
throw 'Could not initialize DataTableLabelsUi. Required elements are missing.';
}
me.initDialog();
me.registerEvents();
me.isInitialized = true;
},
/**
* @return {void}
*/
initDialog: function () {
me.storage.$dialog.dialog({
modal: true,
bgiframe: true,
closeOnEscape: false,
minWidth: 650,
maxHeight: 700,
autoOpen: false,
buttons: {
ABBRECHEN: {
id: 'cancel-recovery-btn',
text: 'ABBRECHEN',
click: function () {
$(this).dialog('close');
}
},
SPEICHERN: {
text: 'DATEN LÖSCHEN',
id: 'run-recovery-btn',
click: function () {
$(this).dialog('close');
me.storage.$confirmResetWithWrittenUsernameDialog.dialog('open');
}
}
},
open: function (event, ui) {
},
close: function (event, ui) {
}
});
me.storage.$confirmResetWithWrittenUsernameDialog.dialog({
modal: true,
bgiframe: true,
closeOnEscape: false,
minWidth: 650,
maxHeight: 700,
autoOpen: false,
buttons: {
ABBRECHEN: {
id: 'cancel-reset-confirmation',
text: 'ABBRECHEN',
click: function () {
$(this).dialog('close');
}
},
SPEICHERN: {
text: 'DATEN LÖSCHEN',
id: 'run-reset',
click: function () {
$(this).dialog('close');
var iTid = parseInt(me.getCacheTemplateValue('tid'));
me.confirmWrittenUserForReset(iTid);
}
}
},
open: function (event, ui) {
},
close: function (event, ui) {
}
});
},
/**
* @return {void}
*/
registerEvents: function () {
// LOAD TEMPLATE
$('.load-template-badge').on('click', function (e) {
e.preventDefault();
var fieldId = $(this).data('id');
if (me.hasProcessStarterEnabled() === true) {
me.initLoadTemplate(fieldId);
} else {
me.showProcessStarterMissingError();
}
});
// LOAD TEMPLATE INFO
$('.load-template-info').on('click', function (e) {
e.preventDefault();
var fieldId = $(this).data('id');
me.showTemplateInfo(fieldId);
});
},
/**
*
* @param {number} id
*/
showTemplateInfo: function (id) {
//console.log('DUMMY' + id);
//@TODO implement Show Info
},
/**
* @return {boolean}
*/
hasProcessStarterEnabled: function () {
var $templateModalStorage = $('#system-templates-dialog');
return parseInt($templateModalStorage.data('ps')) === 1;
},
/**
* @return {void}
*/
showProcessStarterMissingError: function () {
var message = 'Es sieht so aus, als ob der Prozessstarter Cronjob nicht regelmäßig ' +
'ausgeführt wird! Bitte aktivieren Sie diesen ' +
'(<a href="http://helpdesk.wawision.de/doku.php?id=entwickler:grundinstallation#einrichten_des_heartbeat-cronjobs_optional" target="_blank">Link zu Helpdesk</a>)!';
me.storage.$dialog.dialog('open');
$('#run-recovery-btn').hide();
$('#bck-message').addClass('error').html(message);
},
/**
* Initiates SystemTemplates loading
*
* @param {number} id
* @return {void}
*/
initLoadTemplate: function (id) {
var tmpId = parseInt(id);
if (isNaN(tmpId) || (tmpId <= 0 && tmpId !== -1)) {
return;
}
me.setTemplateCache('tid', id);
if ($('#run-recovery-btn').prop('disabled')) {
$('#run-recovery-btn').prop('disabled', false);
}
if ($('#run-recovery-btn').css('display') === 'none') {
$('#run-recovery-btn').show();
}
// Check Meta
$.ajax({
url: 'index.php?module=systemtemplates&action=load&cmd=check-meta',
data: {id: tmpId},
method: 'post',
dataType: 'json',
beforeSend: function () {
App.loading.open();
},
success: function (data) {
me.storage.$dialog.dialog('open');
if (data.status === false) {
$('#systemTemplatesModalTimer').addClass('hide').loadingOverlay('remove');
if (data.missing_file) {
$('#run-recovery-btn').prop('disabled', true);
$('#run-recovery-btn').hide();
setTimeout(function () {
me.storage.$dialog.dialog('close');
}, 5000);
$('#bck-message').addClass('error').html(data.message_missing_file);
return;
}
$('#bck-message').addClass('error').html(data.message);
} else {
$('#bck-message').addClass('warning').html(data.message);
}
},
error: function ($xhr, textStatus, errorThrown) {
alert('Template konnte nicht geladen werden');
}
});
console.log('RunLoad DUMMY' + id);
},
/**
*
* @param {string} data
* @param {number} value
* @param {string} value
*/
setTemplateCache: function (data, value) {
$('#system-templates-dialog').attr('data-' + data, value);
},
/**
* Runs System Templates loading
*
* @param {number} id
*/
runLoadTemplate: function (id) {
$('#run-recovery-btn').prop('disabled', true);
var refreshId = me.setInterval();
me.setTemplateCache('refreshId', refreshId);
// run recovery
$('#systemTemplatesModalTimer').removeClass('hide').loadingOverlay('show').dialog({
modal: true, minWidth: 1200, resizable: false, closeOnEscape: false,
dialogClass: 'no-titlebar',
open: function (event, ui) {
$('.ui-dialog-titlebar').hide();
$('#systemTemplatesModalTimer').css({'overflow': 'hidden'});
}
});
},
/**
*Reloads current page with parameter message
* @param {string} msg
*/
reloadUrl: function (msg) {
window.location.href = 'index.php?module=systemtemplates&action=list&msg=' + msg;
},
/**
* @return {void}
*/
readStatus: function () {
var fileName = me.getCacheTemplateValue('filename');
var sData = {};
if (fileName != null) {
sData = {'file_name': fileName};
}
$.ajax({
url: 'index.php?module=systemtemplates&action=readstatus',
data: sData,
method: 'post',
dataType: 'json',
success: function (data) {
if (data.finished === true) {
var refreshId = me.getCacheTemplateValue('refreshId');
clearInterval(refreshId);
me.reloadUrl(data.message);
return;
}
if ($('.template-status-message').length > 0) {
if ($('.template-status-message').hasClass('hide')) {
$('.template-status-message').removeClass('hide');
}
if (data.finished === false && $('#live-status').length > 0) {
$('#live-status').html($.trim(data.message) + ' ...');
}
} else {
$('#systemTemplatesModalTimer div.loading-back').after(
'<div class="template-status-message hide"><p id="live-status"></p></div>');
}
//console.log(data);
},
error: function ($xhr, textStatus, errorThrown) {
var interValId = me.getCacheTemplateValue('refresh');
var genericErrorMsg = me.getCacheTemplateValue('generic_error');
if (interValId) {
clearInterval(interValId);
}
me.reloadUrl(genericErrorMsg);
}
});
},
/**
* @return {number} refreshId
*/
setInterval: function () {
return setInterval(function () {
me.readStatus();
}, 5000);
},
/**
* @param {string} data
* @return {string}|{null}
*/
getCacheTemplateValue: function (data) {
return typeof $('#system-templates-dialog').data(data) !== 'undefined' ? $('#system-templates-dialog').data(
data) : null;
},
/**
* @param {number} id
*/
confirmWrittenUserForReset: function(id){
$.ajax({
url: 'index.php?module=systemtemplates&action=load&cmd=confirm-username',
data: {
id: id,
username: $('#username-confirmation').val()
},
method: 'post',
dataType: 'json',
beforeSend: function() {
App.loading.open();
},
success: function(data) {
if(data.status){
App.loading.close();
me.resetToFactorySettings(id);
}else{
alert(data.message);
}
}
});
},
/**
*
* @param {number} id
*/
resetToFactorySettings: function(id){
$.ajax({
url: 'index.php?module=systemtemplates&action=load&cmd=reset-to-factory-settings',
data: {id: id},
method: 'post',
dataType: 'json',
success: function (data) {
if (data.status) {
alert(data.message);
me.runLoadTemplate(id);
clearInterval(refreshId);
me.reloadUrl(data.message);
}else{
alert(data.message);
}
me.setTemplateCache('generic_error', data.generic_error);
},
error: function ($xhr, textStatus, errorThrown) {
alert('Template konnte nicht geladen werden');
}
});
}
};
return {
init: me.init
};
}(jQuery);
$(function () {
if ($('#system-templates-dialog').length > 0) {
SystemTemplatesModule.init();
}
});