var currentRowId=1; var banktype = "bank-eu"; function renumberTableRows(){ var cur = document.getElementById("currency").value; var row_no=1; var table = document.getElementById("tabbody"); for (var i = 0, row; row = table.rows[i]; i++) { row.cells[0].innerHTML=row_no++; row.cells[4].innerHTML=cur; } return i; } function checkAllRows(){ var row_no=1; var table = document.getElementById("tabbody"); for (var i = 0, row; row = table.rows[i]; i++) { // row.cells[0].innerHTML=row_no++; // var f=1 var v =row.cells[f].firstElementChild.value; if ( !v ){ // Datum row.cells[f].firstElementChild.focus(); showAlert("Bitte gib ein gültiges Datum an!"); return false; } f=2; v =row.cells[f].firstElementChild.value; if ( !v ){ // Datum row.cells[f].firstElementChild.focus(); showAlert("Bitte gib ein Beschreibung ein!"); return false; } f=3; v =row.cells[f].firstElementChild.value; if ( !isFloat(v) ){ // Amount row.cells[f].firstElementChild.focus(); showAlert("Bitte gib einen gültigen Betrag ein!"); return false; } } return true; } function isMailable(){ var row_no=1; var table = document.getElementById("tabbody"); for (var i = 0, row; row = table.rows[i]; i++) { pdfs = row.cells[5].querySelector('input[name="file-count"]').value; if (pdfs==0) return false; } return true; } function isFloat(val) { var floatRegex = /^-?\d+(?:[.,]\d*?)?$/; if (!floatRegex.test(val)) return false; val = parseFloat(val); if (isNaN(val)) return false; return true; } function deleteTableRow(rowId){ var target = document.getElementById("upload-target"+rowId); // this.message = app.message; // var children = target.children; // delete all uploaded elements /* for (var i = 0; i < children.length; i++) { var tmp = children[i].getAttribute("data-id"); alert ("DEL"); alert (tmp); $K.ajax.post({ url: 'delete.php', data: 'id='+tmp, before: function(xhr) {}, success: function(response) {}, error: function(response) {} }); } */ // delete the row from table var element = document.getElementById("trow"+rowId); element.parentNode.removeChild(element); renumberTableRows(); } function countRows(){ return renumberTableRows(); } function showAlert(text) { $K.app.message.show( { message: `${text}`, position: 'centered', type: 'is-error' }); } function setTableRow(id) { var $node = $K.dom('#tabbody'); var element = document.createElement('tr'); element.setAttribute("id", "trow"+id); var e e = `<td>${a_date} <input type="hidden" name="date[${currentRowId}]" value="${a_date}" /></td>`; $node.append(element); element.innerHTML=(e); } function getUploadField(rid) { var e = $K.dom('#uploadfield'); var uf =`<div class="upload" data-kube="upload" data-type="file" data-multiple="true" data-target="#upload-target${rid}" data-url="upload.php?row=${rid}" data-url-remove="delete.php" data-progress="true" data-size="40" data-placeholder="drag!"> </div> <div id="upload-target${rid}" class="upload-target small"></div> </div> `; return uf; } function getRow(rid,num) { var cur = document.getElementById("currency").value; return "" + "<td>" + `${num}` +"</td>" + "<td>" + `<input name="date[${rid}]" value="" type="date" placeholder="Datum*"/>` + "</td>" + "<td>" + `<input name="desc[${rid}]" type="text" placeholder="Beschreibung"/>` + "</td>" + "<td>" + `<input name="amount[${rid}] type="text" placeholder="0.00"/>` + "</td>" + "<td style=\"vertical-align: middle\">" + cur // + // `<select name="currency[${rid}]" > // <option value="EUR">EUR</option> // <option value="USD">USD</option> // <option value="CHF">CHF</option> // <option value="XBT">XBT</option> // </select>` + "</td>" + "<td>" + getUploadField(rid) + "</td>" + `<td><span onclick="deleteTableRow(${rid})" class="close is-large"> </span></td>`; } var nextRid = 1 function addRow() { var $node = $K.dom('#tabbody'); var e = getRow(nextRid,1); var element = document.createElement('tr'); element.setAttribute("id", "trow"+nextRid); $node.append(element); element.innerHTML=(e); renumberTableRows(); nextRid++; } $K.add('module', 'kaform', { init: function(app, context) { this.app = app; this.message = app.message; }, // catch event onmessage: { tabs: { opened: function(sender) { console.log('Tab box is ',sender.getActiveBox().nodes[0]); banktype = sender.getActiveBox().nodes[0].attributes.id.value; console.log(banktype); // console.log(sender); // this.message.show({ message: 'My message' }); } } }, }); $K.init({ observer: true }); // startup is here // on startup clear session on server $K.ajax.get({ url: 'clear.php', data: '', // or key=value object before: function(xhr) {}, success: function(response) {}, error: function(response) {} }); function check_field(fieldid,message){ var f = document.getElementById(fieldid).value; if (! f.trim().length ) { document.getElementById(fieldid).focus(); showAlert(message) return false; } return true; } // add on table row //addTableRow(); // // // // function downloadDocument2(){ downloadDocument(true); } function downloadDocument1(){ downloadDocument(false); } function downloadDocument(mail) { if (!checkAllRows()) return; if (!check_field("projectid", "Bitte gib einen Projektnamen/Zweck der Reise an!")) return; if (!check_field("realname", "Bitte gib deinen Realnamen an!")) return; if (!check_field("email", "Bitte gib deinen E-Mail-Adresse an!")) return; if (banktype == "bank-eu"){ iban = document.getElementById('iban'); if (!IBAN.isValid(iban.value)){ document.getElementById("iban").focus(); showAlert("Bitte gib eine korrekte IBAN ein!"); return; } /* if (!document.getElementById('bic').value.trim().length){ document.getElementById("bic").focus(); showAlert("Bitte gib einen korrekte BIC an!"); return; } */ } if (banktype == "bank-paypal"){ ii = document.getElementById('paypal'); if (!document.getElementById('paypal').value.trim().length){ document.getElementById("paypal").focus(); showAlert("Bitte gib einen PayPal Account an!"); return; } } if (countRows()==0){ document.getElementById("add_issue").focus(); showAlert("Bitte füge mind. eine Auslage hinzu!"); return; } if (!document.getElementById("agree").checked){ document.getElementById("agree").focus(); showAlert("Bitte bestätige, dass du alle Angaben nach bestem Wissen und Gewissen gemacht hast!"); return; }; if (mail){ if (!isMailable()){ showAlert("Um den Antrag elektronisch direkt an WMDE zu schicken, muss jeder Position ein Beleg beigefügt sein."); return; } document.getElementById('sendmail').value="yes"; } else{ document.getElementById('sendmail').value="no"; } document.getElementById('banktype').value=banktype; document.getElementById("theform").submit(); } /* function checkIban() { iban = document.getElementById('iban'); if(IBAN.isValid(iban.value)) if( document.getElementById('eu').checked ) { if(IBAN.isValid(iban.value)) { if(iban.classList.contains('invalid')) iban.classList.remove('invalid'); iban.classList.add('valid'); } else { if(iban.classList.contains('valid')) iban.classList.remove('valid'); iban.classList.add('invalid'); } } else { if(iban.classList.contains('invalid')) iban.classList.remove('invalid'); if(iban.classList.contains('valid')) iban.classList.remove('valid'); } } */