redesign for mulituser

change validation concept (client and server)
using entities
This commit is contained in:
Markus
2026-10-06 08:55:35 +02:00
parent 14e050e4ba
commit 995e2ec111
41 changed files with 2402 additions and 1223 deletions

View File

@@ -1,3 +1,11 @@
const renderAmount = function(data, _cell, _dataIndex, _cellIndex) {
var ret = (Number(data)<0)?'<span style="color:red;">':'<span>';
ret += new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(data);
ret += '</span>';
return ret;
}
var colBetrag = {
title: "Betrag",
orderable:false,
@@ -47,29 +55,6 @@ function alert(alertPlaceholder, message, type) {
alertPlaceholder.append(wrapper);
}
function deleteId(id, table) {
if (table == "scheduled")
cmnd = "deleteScheduled";
else
cmnd = "deleteBill";
$.ajax({
type: "POST",
url: "/Ajax/"+cmnd,
data: {"id" : id}, // serializes the form's elements.
success: function(data){
var ph = document.getElementById('alertbox');
alert(ph,"erfolgreich gelöscht",'success');
$('#'+table).DataTable().ajax.reload();
},
error: function(data){
var ph = document.getElementById('alertbox');
alert(ph,"Fehler beim löschen",'danger');
$('#'+table).DataTable().ajax.reload();
}
});
}
function formatDetails ( d ) {
details = '';
str='';
@@ -104,20 +89,22 @@ function formatDetails ( d ) {
// null
// ] )
// } );
function collapseDetails(element, table){
var tr = element.closest('tr');
var row = table.row( tr );
function collapseDetails(e,index){
console.log(e,index);
if ( row.child.isShown() ) {
// This row is already open - close it
row.child.hide();
tr.removeClass('shown');
}
else {
// Open this row
row.child( formatDetails(row.data()) ).show();
tr.addClass('shown');
}
var tr = e.closest('tr');
// var row = table.row( tr );
// if ( row.child.isShown() ) {
// // This row is already open - close it
// row.child.hide();
// tr.removeClass('shown');
// }
// else {
// // Open this row
// row.child( formatDetails(row.data()) ).show();
// tr.addClass('shown');
// }
}
function getId(ele, table) {
@@ -126,21 +113,28 @@ function getId(ele, table) {
return row.data().id;
}
$(document).ready(function(){
document.addEventListener("DOMContentLoaded", function(event) {
var myModal = document.getElementById('mymodal');
const modal = new bootstrap.Modal(myModal);
$("#modal_ok").click(function (e) {
modal.hide();
deleteId(myModal.getAttribute('data-bs-id'), myModal.getAttribute('data-bs-table'));
var myModalDelete = document.getElementById('mymodalDelete');
myModalDelete.addEventListener('show.bs.modal', function (event) {
var button = event.relatedTarget;
var id = button.getAttribute('data-bs-id');
let tab = button.closest('table').id; // table row ID
myModalDelete.setAttribute('data-bs-id',id);
myModalDelete.setAttribute('data-bs-table',tab);
var modalTitle = myModalDelete.querySelector('.modal-title');
modalTitle.textContent = 'Lösche Eintrag Nr. ' + id;
});
myModal.addEventListener('show.bs.modal', function (event) {
var button = event.relatedTarget;
table = button.closest('table').id; // table row ID
var id = button.getAttribute('data-bs-id');
let table = button.getAttribute('data-bs-table');
myModal.setAttribute('data-bs-id',id);
myModal.setAttribute('data-bs-table',table);
var modalTitle = myModal.querySelector('.modal-title');
modalTitle.textContent = 'Lösche Eintrag Nr. ' + id;
});
document.getElementById('modal_delete').addEventListener('click', deleteEntry );
});