// Das sind die Javascript-Funktionen fuer die FACOUS-Datenbank
// blala von Pat 2021 ...
htmlForm = false;
diaWaitForForm = 0;
wurdeGeaendert = false;
function openAddMg() {
var dia = document.getElementById('dialog');
if ( (dia.safeClose) && (!dia.safeClose()) ) return false;
dia.safeClose = safeClose;
document.getElementById('dialogbg').style.visibility = 'visible';
dia.innerHTML = '\
FACOUS-/Schneckenpost-Mitgliederverwaltung
\
\
\
\
\
';
document.getElementById('nosave_back').onclick = doAbort;
document.getElementById('titel').onchange = formularGeaendert;
document.getElementById('vorname').onchange = formularGeaendert;
document.getElementById('nachname').onchange = formularGeaendert;
wurdeGeaendert = false;
document.getElementById('add_forward').onclick = doAddMg;
}
function doAddMg() {
var inpTitel = document.getElementById('titel');
var inpVorname = document.getElementById('vorname');
var inpNachname = document.getElementById('nachname');
inpTitel.value = trim(inpTitel.value);
inpVorname.value = trim(inpVorname.value);
inpNachname.value = trim(inpNachname.value);
if ((inpVorname.value == '') || (inpNachname.value == '')) {
alert('Bitte vervollständigen den Namen');
return;
}
dataJob = {
job : 'add',
Titel : ''
};
getTextFromForm(dataJob, 'titel', 'Titel');
getTextFromForm(dataJob, 'vorname', 'VORNAME');
getTextFromForm(dataJob, 'nachname', 'NACHNAME');
//console.log(dataJob);
//jsonString = JSON.stringify(dataJob);
fetch('/cgi-bin/jobFacous.py', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(dataJob)
})
.then(response => response.json())
.then(data => {
//console.log('Success:', data);
rewriterow(data, true);
openEditor(data.MITGLIED_ID, data);
})
.catch(error => {
console.error('Error:', error);
});
document.getElementById('dialogbg').style.visibility = 'hidden';
document.getElementById('dialog').innerHTML = '';
wurdeGeaendert = false;
}
function openEditor(mitglied_id, data) {
var dia;
if (mitglied_id<=0) return;
if (diaWaitForForm>0) return;
dia = document.getElementById('dialog');
if ( (dia.safeClose) && (!dia.safeClose()) ) return false;
dia.safeClose = safeClose;
document.getElementById('dialogbg').style.visibility = 'visible';
if (!htmlForm) {
diaWaitForForm = mitglied_id;
getHtmlForm('/FACOUS_DB/Form_Template.html');
return;
}
dia.innerHTML = htmlForm;
butAbort = document.getElementById('nosave_back');
butAbort.onclick = doAbort;
butSave = document.getElementById('save_back');
butSave.onclick = doSave;
butSave.mitgliedId = 0;
if (data) {
fillForm(data);
return;
}
fetch('/cgi-bin/Python_FACOUS_MitgliedDaten.py?mitglied_id='+ mitglied_id)
.then(response => response.json())
.then(data => { fillForm(data); })
.catch(error => alert('Es liegt ein Netzwerk- oder Serverfehler2 vor.'));
//.catch(error => console.log(error.name + ":" + error.message));
}
function getHtmlForm(url) {
fetch(url)
.then(response => response.text())
.then(text => { importForm(text) })
.catch(error => alert('Es liegt ein Netzwerk- oder Serverfehler1 vor.'));
}
function importForm(text) {
// strip Header and Body-Tag
htmlForm = text.replace(/^.*?\s*/is, '').replace(/\s*<\/body>.*$/is, '');
if (diaWaitForForm>0) {
var mitglied_id=diaWaitForForm;
diaWaitForForm = 0;
openEditor(mitglied_id);
}
}
function safeClose() {
if (!wurdeGeaendert) return true;
return confirm('Achtung, Daten wurden geändert und gehen nun verloren.');
}
function doAbort() {
if (!safeClose()) return;
document.getElementById('dialogbg').style.visibility = 'hidden';
document.getElementById('dialog').innerHTML = '';
wurdeGeaendert = false;
}
function doSave() {
var mitgliedID = document.getElementById('save_back').mitgliedId
dataJob = {
job : 'change',
MITGLIED_ID : mitgliedID
};
getTextFromForm(dataJob, 'titel', 'Titel');
getTextFromForm(dataJob, 'vorname', 'VORNAME');
getTextFromForm(dataJob, 'nachname', 'NACHNAME');
getTextFromForm(dataJob, 'strasse', 'STRASSE');
getTextFromForm(dataJob, 'plz', 'PLZ');
getTextFromForm(dataJob, 'ort', 'ORT');
getTextFromForm(dataJob, 'land', 'LAND');
getTextFromForm(dataJob, 'email', 'E_MAIL');
getTextFromForm(dataJob, 'tel_privat', 'TEL_PRIVAT');
getTextFromForm(dataJob, 'mobil', 'MOBIL');
getTextFromForm(dataJob, 'tel_buero', 'TEL_BUERO');
getTextFromForm(dataJob, 'fach_beruf', 'FACH_BERUF');
getTextFromForm(dataJob, 'geburtsdatum', 'GEB_DAT');
getTextFromForm(dataJob, 'facous_eintr_bearb', 'BEARB_EINT_FACOUS');
getTextFromForm(dataJob, 'facous_austr_bearb', 'BEARB_AUSTR_FACOUS');
getTextFromForm(dataJob, 'orch_instr', 'INSTRUMENT');
getCheckedFromForm(dataJob, 'per_hp', 'HAUSPOST');
getCheckedFromForm(dataJob, 'schneckenpost', 'Schnecken');
getCheckedFromForm(dataJob, 'facous_activ', 'AKTIV_FACOUS');
getCheckedFromForm(dataJob, 'chor_activ', 'AKTIV_CHOR');
getCheckedFromForm(dataJob, 'orch_activ', 'AKTIV_ORCH');
getSelectFromForm(dataJob, 'chor_stimme', 'STIMME');
getTextFromForm(dataJob, 'geburtsdatum', 'GEB_DAT');
getTextFromForm(dataJob, 'facous_eintritt', 'EINTR_FACOUS');
getTextFromForm(dataJob, 'facous_austritt', 'AUSTRITT_FACOUS');
//console.log(dataJob);
//jsonString = JSON.stringify(dataJob);
fetch('/cgi-bin/jobFacous.py', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(dataJob)
})
.then(response => response.json())
.then(data => {
//console.log('Success:', data);
rewriterow (data, false);
})
.catch(error => {
console.error('Error:', error);
});
document.getElementById('dialogbg').style.visibility = 'hidden';
document.getElementById('dialog').innerHTML = '';
wurdeGeaendert = false;
}
function fillForm(data) {
//alert('habe daten von mitglied-id: '+ data.MITGLIED_ID + ' erhalte.');
document.getElementById('save_back').mitgliedId = data.MITGLIED_ID;
setTextToForm('titel', data.Titel);
//document.getElementById('titel').value = data.Titel;
setTextToForm('vorname', data.VORNAME);
//document.getElementById('vorname').value = data.VORNAME;
setTextToForm('nachname', data.NACHNAME);
//document.getElementById('nachname').value = data.NACHNAME;
setTextToForm('strasse', data.STRASSE);
//document.getElementById('strasse').value = data.STRASSE;
setTextToForm('plz', data.PLZ);
//document.getElementById('plz').value = data.PLZ;
setTextToForm('ort', data.ORT);
//document.getElementById('ort').value = data.ORT;
setTextToForm('land', data.LAND);
//document.getElementById('land').value = data.LAND;
setTextToForm('email', data.E_MAIL);
//document.getElementById('email').value = data.E_MAIL;
setCheckboxToForm('per_hp', data.HAUSPOST);
//document.getElementById('per_hp').checked = (data.HAUSPOST!=0);
setTextToForm('tel_privat', data.TEL_PRIVAT);
//document.getElementById('tel_privat').value = data.TEL_PRIVAT;
setTextToForm('mobil', data.MOBIL);
//document.getElementById('mobil').value = data.MOBIL;
setTextToForm('tel_buero', data.TEL_BUERO);
//document.getElementById('tel_buero').value = data.TEL_BUERO;
setTextToForm('fach_beruf', data.FACH_BERUF);
//document.getElementById('fach_beruf').value = data.FACH_BERUF;
setTextToForm('geburtsdatum', data.GEB_DAT);
//document.getElementById('geburtsdatum').value = data.GEB_DAT;
setCheckboxToForm('schneckenpost', data.Schnecken);
//document.getElementById('schneckenpost').checked = (data.Schnecken!=0);
setCheckboxToForm('facous_activ', data.AKTIV_FACOUS);
//document.getElementById('facous_activ').checked = (data.AKTIV_FACOUS!=0);
setTextToForm('facous_eintritt', data.EINTR_FACOUS);
//document.getElementById('facous_eintritt').value = data.EINTR_FACOUS;
setTextToForm('facous_eintr_bearb', data.BEARB_EINT_FACOUS);
//document.getElementById('facous_eintr_bearb').value = data.BEARB_EINT_FACOUS;
setTextToForm('facous_austritt', data.AUSTRITT_FACOUS);
//document.getElementById('facous_austritt').value = data.AUSTRITT_FACOUS ;
setTextToForm('facous_austr_bearb', data.BEARB_AUSTR_FACOUS);
//document.getElementById('facous_austr_bearb').value = data.BEARB_AUSTR_FACOUS;
setCheckboxToForm('chor_activ', data.AKTIV_CHOR);
//document.getElementById('chor_activ').checked = (data.AKTIV_CHOR!=0);
setSelectToForm('chor_stimme', data.STIMME);
//document.getElementById('chor_stimme').value = data.STIMME;
setCheckboxToForm('orch_activ', data.AKTIV_ORCH);
//document.getElementById('orch_activ').checked = (data.AKTIV_ORCH!=0);
setTextToForm('orch_instr', data.INSTRUMENT);
//document.getElementById('orch_instr').value = data.INSTRUMENT;
wurdeGeaendert = false;
}
function setTextToForm(formFeldName, dataFeld) {
var field = document.getElementById(formFeldName);
field.value = dataFeld;
field.onchange = formularGeaendert;
field.geaendert = false;
}
function setCheckboxToForm(formFeldName, dataFeld) {
var field = document.getElementById(formFeldName);
field.checked = (dataFeld!=0);
field.onchange = formularGeaendert;
field.geaendert = false;
}
function setSelectToForm(formFeldName, dataFeld) {
var field = document.getElementById(formFeldName);
var i;
for (i=0; i';
}
var tds = tr.children;
tds[0].innerHTML = data.Titel;
tds[1].innerHTML = data.VORNAME;
tds[2].innerHTML = data.NACHNAME;
tds[3].innerHTML = data.STRASSE;
tds[4].innerHTML = data.PLZ;
tds[5].innerHTML = data.ORT;
tds[6].innerHTML = data.LAND;
tds[7].innerHTML = (data.HAUSPOST)?'HAUSPOST':'';
tds[8].innerHTML = data.E_MAIL;
}
function trim(s) {
if (s==null) return '';
return s.replace(/^\s+/, '').replace(/\s+$/, '');
}