|
@@ -1,86 +1,81 @@
|
|
|
// AJAX-Funktionen für Vorgang- und Zeitraumauswahl
|
|
// AJAX-Funktionen für Vorgang- und Zeitraumauswahl
|
|
|
|
|
|
|
|
-// AJAX-Funktion für Vorgangsauswahl - MIT DEBUG LOGGING
|
|
|
|
|
|
|
+// Hilfsfunktion um die aktuelle Base-URL zu ermitteln
|
|
|
|
|
+function getBaseUrl() {
|
|
|
|
|
+ const currentPath = window.location.pathname;
|
|
|
|
|
+ if (currentPath.includes('/miete')) {
|
|
|
|
|
+ return '/miete';
|
|
|
|
|
+ } else if (currentPath.includes('/hhm-einkommen')) {
|
|
|
|
|
+ return '/hhm-einkommen';
|
|
|
|
|
+ }
|
|
|
|
|
+ // Default fallback
|
|
|
|
|
+ return '/hhm-einkommen';
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// AJAX-Funktion für Vorgangsauswahl
|
|
|
function changeLeftVorgang(newLeftVorgangId) {
|
|
function changeLeftVorgang(newLeftVorgangId) {
|
|
|
- console.log('🚀 changeLeftVorgang aufgerufen mit:', newLeftVorgangId);
|
|
|
|
|
-
|
|
|
|
|
const currentLeftVorgangId = document.getElementById('leftVorgangId').value;
|
|
const currentLeftVorgangId = document.getElementById('leftVorgangId').value;
|
|
|
- console.log('📊 Aktueller leftVorgangId:', currentLeftVorgangId);
|
|
|
|
|
|
|
|
|
|
// Prüfen ob bereits der ausgewählte Vorgang
|
|
// Prüfen ob bereits der ausgewählte Vorgang
|
|
|
if (currentLeftVorgangId === newLeftVorgangId) {
|
|
if (currentLeftVorgangId === newLeftVorgangId) {
|
|
|
- console.log('⚠️ Gleicher Vorgang bereits ausgewählt, überspringe');
|
|
|
|
|
return; // Nichts zu tun
|
|
return; // Nichts zu tun
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Loading-Zustand anzeigen
|
|
// Loading-Zustand anzeigen
|
|
|
showLoadingState();
|
|
showLoadingState();
|
|
|
- console.log('⏳ Loading-Zustand angezeigt');
|
|
|
|
|
|
|
|
|
|
// Parameter sammeln
|
|
// Parameter sammeln
|
|
|
const leftJson = document.getElementById('leftJson').value;
|
|
const leftJson = document.getElementById('leftJson').value;
|
|
|
const rightJson = document.getElementById('rightJson').value;
|
|
const rightJson = document.getElementById('rightJson').value;
|
|
|
const rightZeitraumId = document.getElementById('rightZeitraumId').value;
|
|
const rightZeitraumId = document.getElementById('rightZeitraumId').value;
|
|
|
- const personId = document.getElementById('currentPersonId').value;
|
|
|
|
|
-
|
|
|
|
|
- console.log('📋 Request Parameter:');
|
|
|
|
|
- console.log(' leftJson length:', leftJson ? leftJson.length : 'null');
|
|
|
|
|
- console.log(' rightJson length:', rightJson ? rightJson.length : 'null');
|
|
|
|
|
- console.log(' rightZeitraumId:', rightZeitraumId);
|
|
|
|
|
- console.log(' personId:', personId);
|
|
|
|
|
- console.log(' newLeftVorgangId:', newLeftVorgangId);
|
|
|
|
|
|
|
+ const personId = document.getElementById('currentPersonId') ? document.getElementById('currentPersonId').value : null;
|
|
|
|
|
|
|
|
// AJAX-Request senden
|
|
// AJAX-Request senden
|
|
|
const formData = new FormData();
|
|
const formData = new FormData();
|
|
|
formData.append('leftJson', leftJson);
|
|
formData.append('leftJson', leftJson);
|
|
|
formData.append('rightJson', rightJson);
|
|
formData.append('rightJson', rightJson);
|
|
|
formData.append('rightZeitraumId', rightZeitraumId);
|
|
formData.append('rightZeitraumId', rightZeitraumId);
|
|
|
- formData.append('personId', personId);
|
|
|
|
|
|
|
+ if (personId) {
|
|
|
|
|
+ formData.append('personId', personId);
|
|
|
|
|
+ }
|
|
|
formData.append('newLeftVorgangId', newLeftVorgangId);
|
|
formData.append('newLeftVorgangId', newLeftVorgangId);
|
|
|
|
|
|
|
|
- console.log('🌐 Sende AJAX-Request an /hhm-einkommen/api/vorgang-change');
|
|
|
|
|
|
|
+ const baseUrl = getBaseUrl();
|
|
|
|
|
+ const apiUrl = baseUrl + '/api/vorgang-change';
|
|
|
|
|
|
|
|
- fetch('/hhm-einkommen/api/vorgang-change', {
|
|
|
|
|
|
|
+ fetch(apiUrl, {
|
|
|
method: 'POST',
|
|
method: 'POST',
|
|
|
body: formData
|
|
body: formData
|
|
|
})
|
|
})
|
|
|
.then(response => {
|
|
.then(response => {
|
|
|
- console.log('📡 Response erhalten:', response.status, response.statusText);
|
|
|
|
|
if (!response.ok) {
|
|
if (!response.ok) {
|
|
|
throw new Error('Netzwerk-Antwort war nicht ok: ' + response.status);
|
|
throw new Error('Netzwerk-Antwort war nicht ok: ' + response.status);
|
|
|
}
|
|
}
|
|
|
return response.json();
|
|
return response.json();
|
|
|
})
|
|
})
|
|
|
.then(data => {
|
|
.then(data => {
|
|
|
- console.log('✅ Erfolgreiche Antwort:', data);
|
|
|
|
|
// Erfolgreiche Antwort verarbeiten
|
|
// Erfolgreiche Antwort verarbeiten
|
|
|
updateAfterVorgangChange(data);
|
|
updateAfterVorgangChange(data);
|
|
|
hideLoadingState();
|
|
hideLoadingState();
|
|
|
- console.log('🔄 UI erfolgreich aktualisiert');
|
|
|
|
|
})
|
|
})
|
|
|
.catch(error => {
|
|
.catch(error => {
|
|
|
- console.error('❌ Fehler beim Ändern des Vorgangs:', error);
|
|
|
|
|
|
|
+ console.error('Fehler beim Ändern des Vorgangs:', error);
|
|
|
hideLoadingState();
|
|
hideLoadingState();
|
|
|
alert('Fehler beim Ändern des Vorgangs: ' + error.message + '. Bitte versuchen Sie es erneut.');
|
|
alert('Fehler beim Ändern des Vorgangs: ' + error.message + '. Bitte versuchen Sie es erneut.');
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// AJAX-Funktion für Zeitraumauswahl - MIT DEBUG LOGGING
|
|
|
|
|
|
|
+// AJAX-Funktion für Zeitraumauswahl
|
|
|
function changeLeftZeitraum(newLeftZeitraumId) {
|
|
function changeLeftZeitraum(newLeftZeitraumId) {
|
|
|
- console.log('🚀 changeLeftZeitraum aufgerufen mit:', newLeftZeitraumId);
|
|
|
|
|
-
|
|
|
|
|
const currentLeftZeitraumId = document.getElementById('leftZeitraumId').value;
|
|
const currentLeftZeitraumId = document.getElementById('leftZeitraumId').value;
|
|
|
- console.log('📊 Aktueller leftZeitraumId:', currentLeftZeitraumId);
|
|
|
|
|
|
|
|
|
|
// Prüfen ob bereits der ausgewählte Zeitraum
|
|
// Prüfen ob bereits der ausgewählte Zeitraum
|
|
|
if (currentLeftZeitraumId === newLeftZeitraumId) {
|
|
if (currentLeftZeitraumId === newLeftZeitraumId) {
|
|
|
- console.log('⚠️ Gleicher Zeitraum bereits ausgewählt, überspringe');
|
|
|
|
|
return; // Nichts zu tun
|
|
return; // Nichts zu tun
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Loading-Zustand anzeigen
|
|
// Loading-Zustand anzeigen
|
|
|
showLoadingState();
|
|
showLoadingState();
|
|
|
- console.log('⏳ Loading-Zustand angezeigt');
|
|
|
|
|
|
|
|
|
|
// AJAX-Request senden
|
|
// AJAX-Request senden
|
|
|
const formData = new FormData();
|
|
const formData = new FormData();
|
|
@@ -88,31 +83,32 @@ function changeLeftZeitraum(newLeftZeitraumId) {
|
|
|
formData.append('rightJson', document.getElementById('rightJson').value);
|
|
formData.append('rightJson', document.getElementById('rightJson').value);
|
|
|
formData.append('leftVorgangId', document.getElementById('leftVorgangId').value);
|
|
formData.append('leftVorgangId', document.getElementById('leftVorgangId').value);
|
|
|
formData.append('rightZeitraumId', document.getElementById('rightZeitraumId').value);
|
|
formData.append('rightZeitraumId', document.getElementById('rightZeitraumId').value);
|
|
|
- formData.append('personId', document.getElementById('currentPersonId').value);
|
|
|
|
|
|
|
+ const personId = document.getElementById('currentPersonId') ? document.getElementById('currentPersonId').value : null;
|
|
|
|
|
+ if (personId) {
|
|
|
|
|
+ formData.append('personId', personId);
|
|
|
|
|
+ }
|
|
|
formData.append('newLeftZeitraumId', newLeftZeitraumId);
|
|
formData.append('newLeftZeitraumId', newLeftZeitraumId);
|
|
|
|
|
|
|
|
- console.log('🌐 Sende AJAX-Request an /hhm-einkommen/api/zeitraum-change');
|
|
|
|
|
|
|
+ const baseUrl = getBaseUrl();
|
|
|
|
|
+ const apiUrl = baseUrl + '/api/zeitraum-change';
|
|
|
|
|
|
|
|
- fetch('/hhm-einkommen/api/zeitraum-change', {
|
|
|
|
|
|
|
+ fetch(apiUrl, {
|
|
|
method: 'POST',
|
|
method: 'POST',
|
|
|
body: formData
|
|
body: formData
|
|
|
})
|
|
})
|
|
|
.then(response => {
|
|
.then(response => {
|
|
|
- console.log('📡 Response erhalten:', response.status, response.statusText);
|
|
|
|
|
if (!response.ok) {
|
|
if (!response.ok) {
|
|
|
throw new Error('Netzwerk-Antwort war nicht ok: ' + response.status);
|
|
throw new Error('Netzwerk-Antwort war nicht ok: ' + response.status);
|
|
|
}
|
|
}
|
|
|
return response.json();
|
|
return response.json();
|
|
|
})
|
|
})
|
|
|
.then(data => {
|
|
.then(data => {
|
|
|
- console.log('✅ Erfolgreiche Antwort:', data);
|
|
|
|
|
// Erfolgreiche Antwort verarbeiten
|
|
// Erfolgreiche Antwort verarbeiten
|
|
|
updateAfterZeitraumChange(data);
|
|
updateAfterZeitraumChange(data);
|
|
|
hideLoadingState();
|
|
hideLoadingState();
|
|
|
- console.log('🔄 UI erfolgreich aktualisiert');
|
|
|
|
|
})
|
|
})
|
|
|
.catch(error => {
|
|
.catch(error => {
|
|
|
- console.error('❌ Fehler beim Ändern des Zeitraums:', error);
|
|
|
|
|
|
|
+ console.error('Fehler beim Ändern des Zeitraums:', error);
|
|
|
hideLoadingState();
|
|
hideLoadingState();
|
|
|
alert('Fehler beim Ändern des Zeitraums: ' + error.message + '. Bitte versuchen Sie es erneut.');
|
|
alert('Fehler beim Ändern des Zeitraums: ' + error.message + '. Bitte versuchen Sie es erneut.');
|
|
|
});
|
|
});
|
|
@@ -123,12 +119,16 @@ function selectPersonAjax(personId) {
|
|
|
const currentPersonId = document.getElementById('currentPersonId');
|
|
const currentPersonId = document.getElementById('currentPersonId');
|
|
|
|
|
|
|
|
// Prüfen ob bereits die ausgewählte Person
|
|
// Prüfen ob bereits die ausgewählte Person
|
|
|
- if (currentPersonId.value === personId) {
|
|
|
|
|
|
|
+ if (currentPersonId && currentPersonId.value === personId) {
|
|
|
return; // Nichts zu tun
|
|
return; // Nichts zu tun
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Loading-Zustand anzeigen
|
|
// Loading-Zustand anzeigen
|
|
|
const detailsTitle = document.getElementById('person-details-title');
|
|
const detailsTitle = document.getElementById('person-details-title');
|
|
|
|
|
+ if (!detailsTitle) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
const originalTitle = detailsTitle.innerHTML;
|
|
const originalTitle = detailsTitle.innerHTML;
|
|
|
detailsTitle.innerHTML = 'Details werden geladen...';
|
|
detailsTitle.innerHTML = 'Details werden geladen...';
|
|
|
|
|
|
|
@@ -141,7 +141,10 @@ function selectPersonAjax(personId) {
|
|
|
formData.append('rightZeitraumId', document.getElementById('rightZeitraumId').value);
|
|
formData.append('rightZeitraumId', document.getElementById('rightZeitraumId').value);
|
|
|
formData.append('personId', personId);
|
|
formData.append('personId', personId);
|
|
|
|
|
|
|
|
- fetch('/hhm-einkommen/api/person-details', {
|
|
|
|
|
|
|
+ const baseUrl = getBaseUrl();
|
|
|
|
|
+ const apiUrl = baseUrl + '/api/person-details';
|
|
|
|
|
+
|
|
|
|
|
+ fetch(apiUrl, {
|
|
|
method: 'POST',
|
|
method: 'POST',
|
|
|
body: formData
|
|
body: formData
|
|
|
})
|
|
})
|
|
@@ -156,7 +159,9 @@ function selectPersonAjax(personId) {
|
|
|
updatePersonDetails(data);
|
|
updatePersonDetails(data);
|
|
|
|
|
|
|
|
// Aktuelle Person aktualisieren
|
|
// Aktuelle Person aktualisieren
|
|
|
- currentPersonId.value = personId;
|
|
|
|
|
|
|
+ if (currentPersonId) {
|
|
|
|
|
+ currentPersonId.value = personId;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// Person-Selected-Klasse aktualisieren
|
|
// Person-Selected-Klasse aktualisieren
|
|
|
updateSelectedPersonRow(personId);
|
|
updateSelectedPersonRow(personId);
|
|
@@ -175,10 +180,19 @@ function selectPersonAjax(personId) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function showLoadingState() {
|
|
function showLoadingState() {
|
|
|
|
|
+ // Verschiedene Loading-Zustände je nach Seite
|
|
|
const detailsTitle = document.getElementById('person-details-title');
|
|
const detailsTitle = document.getElementById('person-details-title');
|
|
|
- detailsTitle.innerHTML = 'Daten werden geladen...';
|
|
|
|
|
|
|
+ if (detailsTitle) {
|
|
|
|
|
+ detailsTitle.innerHTML = 'Daten werden geladen...';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Alternativ für Miete-Seite könnte ein anderer Loading-Indikator verwendet werden
|
|
|
|
|
+ const mieteContainer = document.querySelector('.miete-container');
|
|
|
|
|
+ if (mieteContainer && !detailsTitle) {
|
|
|
|
|
+ // Miete-spezifischer Loading-Zustand
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function hideLoadingState() {
|
|
function hideLoadingState() {
|
|
|
- // Loading-Zustand wird durch updatePersonDetails überschrieben
|
|
|
|
|
|
|
+ // Loading-Zustand wird durch entsprechende Update-Funktionen überschrieben
|
|
|
}
|
|
}
|