/**
* Created by Roland on 2021/07/01.
* Updated for BIBB Layout 2024
*/
// CORPORATES
// Show blank screen to add new Corporate
function newCorporatesShow() {
var b = document.getElementById("newCorporateSave");
b.style.display='inline';
var c = document.getElementById("newCorporateDismiss");
c.style.display='inline';
document.getElementById("CorporateModifySave").style.display = 'none';
document.getElementById("new_term").disabled = false;
document.getElementById("new_type").disabled = false;
document.getElementById("new_scopenote").disabled = false;
// Relationen-Bereich verstecken bei neuer Körperschaft
document.getElementById("new_relation_label").style.display = 'none';
document.getElementById("newRelationCorporateDismiss").style.display = 'none';
showRelations(0,0,0);
var a = document.getElementById("relation_table");
if (a != undefined) {
document.getElementById("relation_table").style.display = 'none';
}
var e = document.getElementById("errorNewCorporate");
e.style.display = 'none';
$("#new_term").val("");
$("#new_scopenote").val("");
$("#NewCorporateModal").modal("show");
}
// Insert new corporate record
function CreateNewEntry(type) {
// get values
var term = $("#new_term").val();
term = term.trim();
var type = $("#new_type").val();
type = type.trim();
var detailtype = "";
var classification = "";
var scopenote = $("#new_scopenote").val();
scopenote = scopenote.trim();
if (term.length == 0) {
var a = document.getElementById("errorNewCorporate");
a.classList.add('alert-danger');
a.textContent = 'Bitte Körperschaft eingeben!';
a.style.display = 'block';
return;
}
var a = document.getElementById("errorNewCorporate");
a.classList.remove('alert-danger');
a.textContent = '';
a.style.display = 'none';
$.post("ajax/newCorporate.php", {
term : term,
type : type,
detailtype : detailtype,
classification: classification,
scopenote : scopenote
}, function (data, status) {
var dt = (typeof data === 'string') ? JSON.parse(data) : data;
var e = document.getElementById("errorNewCorporate");
if (dt['status'] == 200)
{
var AnchorID = dt["Anchor"];
var EntryID = dt["Entry"];
var LinkingID = dt["Linking"];
var b = document.getElementById("newCorporateSave");
b.style.display='none';
var c = document.getElementById("newCorporateDismiss");
c.style.display='none';
document.getElementById("new_term").disabled = true;
document.getElementById("new_type").disabled = true;
document.getElementById("new_scopenote").disabled = true;
$table.bootstrapTable('refresh');
e.classList.remove('alert-danger');
e.classList.add('alert-success');
e.textContent = 'Neue Körperschaft aufgenommen';
e.style.display = 'block';
// ID setzen für Relationen
$('#ID').val(AnchorID);
// Relationen-Bereich anzeigen nach Speichern
document.getElementById("new_relation_label").style.display = 'block';
document.getElementById("newRelationCorporateDismiss").style.display = 'inline';
showRelations(AnchorID,EntryID,LinkingID);
} else {
e.classList.remove('alert-success');
e.classList.add('alert-danger');
e.textContent = dt['message'];
e.style.display = 'block';
return;
}
});
}
// Show relations of a corporate record
function showRelations(Anchor,Entry,Linking)
{
$.get("ajax/getRelations.php", {
anchorID:Anchor,
authType:"Corporate"
},
function (data, status) {
if (status=="success")
{
$(".new_modal_content").html(data);
// Tabelle nur anzeigen wenn Relationen vorhanden
var relationTable = document.getElementById("relation_table");
if (relationTable) {
if (data && data.trim().length > 0) {
relationTable.style.display = 'block';
} else {
relationTable.style.display = 'none';
}
}
$("#NewCorporateModal").modal("show");
}
}
);
}
// create new relation for a corporate record
function CreateNewRelation(AnchorID, relationID, event) {
if (event) {
event.preventDefault();
event.stopPropagation();
}
console.log('🚀 CreateNewRelation:', { AnchorID, relationID });
try {
// Validierung
if (!AnchorID || !relationID) {
showError('Fehlende Parameter: AnchorID oder relationID');
return false;
}
var relationTypeElement = document.getElementById("new_relationtype");
if (!relationTypeElement) {
showError('Relationstyp-Element nicht gefunden');
return false;
}
var relationType = relationTypeElement.value;
if (!relationType || relationType.trim() === '') {
showError('Bitte wählen Sie einen Relationstyp aus');
return false;
}
// Loading anzeigen
showLoading();
$.ajax({
url: "ajax/writeNewRelation.php",
type: "POST",
data: {
AnchorID: AnchorID,
relationType: relationType,
relationID: relationID
},
dataType: "text",
timeout: 10000,
success: function(response) {
console.log("✅ Success! Response:", response);
try {
var data = JSON.parse(response);
if (data.error) {
showError('Serverfehler:
' + data.error);
return;
}
if (data.success === true) {
showSuccess('Neue Relation erfolgreich aufgenommen!');
if (typeof showRelations === 'function') {
setTimeout(function() {
showRelations(AnchorID, 0, 0);
}, 500);
}
resetForm();
} else {
showError('Unerwartete Antwort vom Server');
}
} catch (parseError) {
console.log("⚠️ Keine JSON-Antwort, prüfe Plain-Text");
if (response && response.length > 0 && !isNaN(response.trim())) {
showSuccess('Neue Relation erfolgreich aufgenommen! (ID: ' + response.trim() + ')');
if (typeof showRelations === 'function') {
setTimeout(function() {
showRelations(AnchorID, 0, 0);
}, 500);
}
resetForm();
} else {
showError('Unerwartete Antwort:
' +
'' + response.substring(0, 200) + '');
}
}
},
error: function(xhr, status, error) {
console.error("❌ AJAX Error:", { status, error, xhr });
var errorMessage = 'Fehler beim Speichern der Relation
';
if (xhr.status === 0) {
errorMessage += '❌ Keine Verbindung zum Server möglich
';
errorMessage += 'Prüfen Sie Ihre Internetverbindung';
} else if (xhr.status === 404) {
errorMessage += '❌ Datei nicht gefunden (404)
';
errorMessage += 'ajax/writeNewRelation.php existiert nicht';
} else if (xhr.status === 500) {
errorMessage += '❌ Interner Serverfehler (500)
';
if (xhr.responseText) {
errorMessage += 'Details anzeigen
' +
xhr.responseText.substring(0, 500) + '
';
errorMessage += 'Der Server hat nicht rechtzeitig geantwortet';
} else if (status === 'parsererror') {
errorMessage += '❌ Fehler beim Verarbeiten der Server-Antwort
';
errorMessage += 'Die Server-Antwort war ungültig';
} else {
errorMessage += '❌ ' + status + ' (' + xhr.status + ')';
if (error) {
errorMessage += '
' + error + '';
}
}
showError(errorMessage);
},
complete: function(xhr, status) {
console.log("🏁 Request abgeschlossen:", status);
if (status !== 'success') {
hideLoading();
}
}
});
return false;
} catch (e) {
hideLoading();
console.error("💥 Exception:", e);
showError('JavaScript-Fehler:
' + e.message);
return false;
}
}
function showError(message) {
var errorElement = document.getElementById("errorNewCorporate");
if (errorElement) {
errorElement.className = 'alert alert-danger';
errorElement.innerHTML = '' + message.replace(/\n/g, '
');
errorElement.style.display = 'block';
errorElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
setTimeout(function() {
fadeOutAlert();
}, 8000);
}
}
function showSuccess(message) {
var errorElement = document.getElementById("errorNewCorporate");
if (errorElement) {
errorElement.className = 'alert alert-success';
errorElement.innerHTML = '' + message;
errorElement.style.display = 'block';
errorElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
setTimeout(function() {
fadeOutAlert();
}, 3000);
}
}
function showWarning(message) {
var errorElement = document.getElementById("errorNewCorporate");
if (errorElement) {
errorElement.className = 'alert alert-warning';
errorElement.innerHTML = '' + message;
errorElement.style.display = 'block';
errorElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
setTimeout(function() {
fadeOutAlert();
}, 5000);
}
}
function showLoading() {
var errorElement = document.getElementById("errorNewCorporate");
if (errorElement) {
errorElement.className = 'alert alert-info';
errorElement.innerHTML = '