let table; if (typeof hidesearch === "undefined") { var hidesearch; hidesearch = [100]; } if (typeof cstmdom === "undefined") { var cstmdom; cstmdom = "flBrtip"; } if (typeof columndefs === "undefined") { var columndefs; columndefs = ""; } if (typeof columnfilter === "undefined") { var columnfilter; columnfilter = ""; } if (typeof columnoptions === "undefined") { var columnoptions; columnoptions = ""; } $('#filterrow th').each(function (i) { let title = $('#datatable thead th').eq($(this).index()).text(); if (hidesearch.includes($(this).index())) { } else if (columnfilter.includes($(this).index())) { $(this).html(''); } else { $(this).html(''); } }); table = $('#datatable').DataTable({ responsive: true, "order": [[0, "desc"]], buttons: [ { extend: 'excelHtml5', text: 'XLSX Export', className: 'btn-success margina d-none d-lg-block', exportOptions: { columns: ['th:not(:last-child)'] } } ], columnDefs: [ columndefs ], "language": { "url": "/datatables/json/german.json?v1" }, orderCellsTop: true, stateSave: true, stateDuration: 60 * 60 * 24 * 30, "initComplete": function () { $('#datatable_filter').append(''); $('#clear_cookie').click(function () { $('#filterrow input').val(''); $('#filterrow select').val(''); table.search('').columns().search('').draw(); }); }, "dom": cstmdom, "ajax": { "url": requestUrl, "type": "POST", "data": function (d) { $('.display-calendar').each(function (index) { if ($(this).hasClass('active-calendar')) { d.datatype = $(this).data('datatype'); } }) d.dataweek = $('#dataweek').val(); d.datamonth = $('#datamonth').val(); d.datayear = $('#datayear').val(); }, "dataSrc": function (json) { $('#is-time').text(json.time.is); $('#must-time').text(json.time.must); $('#holidays').text(json.time.holidays); $('#plushours').text(json.time.plushours); if (json.time.AllHours!="00h:00m") { $('#AllHours-div').show(); $('#AllHours').text(json.time.AllHours); } if ($("#plushours").text().includes("-")) { $('#plushours-label').css('background-color', '#fda7a7'); } else { $('#plushours-label').css('background-color', '#d0fbd9'); } if (json.time.auto_workinghours == "1") { $('#auto-workinghours-button').show(); } return json.data; } }, "columns": [ { "data": { _: "date.date", "sort": "date.order" }, className: "text-nowrap" }, { "data": { _: "start.start", "sort": "start.order" }, className: "text-center" }, { "data": { _: "end.end", "sort": "end.order" }, className: "text-center" }, { "data": { _: "sum.sum", "sort": "sum.order" }, className: "text-center" }, { "data": { _: "category.category", "sort": "category.order" }, className: "" } , { "data": { _: "comment.comment", "sort": "comment.order" }, className: "text-left" }, { "data": { _: "edit.edit", "sort": "edit.order" }, className: "edit-td" } ] }); $('#filterrow').on('keyup', 'input', function () { table .column($(this).data('index')) .search(this.value) .draw(); }); $('#selectsearch').change(function () { table .column($(this).data('index')) .search(this.value) .draw(); }); let state = table.state.loaded(); if (state) { table.columns().eq(0).each(function (colIdx) { var colSearch = state.columns[colIdx].search; if (colSearch.search) { $('#filterrow').find("[data-index='" + colIdx + "']").val(colSearch.search); } }); table.draw(); } $(document).ready(function () { $(".select2").select2(); $("body").on("change", "#timerecordingCategory_id", function () { if (parseInt($(this).find(':selected').data('hourday')) === 2) { $("#endtime-div").hide(); $("#endtime-div").find('input').each(function () { $(this).prop("required", false); }); $("#enddate-div").show(); $("#enddate-div").find('input').each(function () { $(this).prop("required", true); $(this).prop("min", $('#date').val()); $(this).val($('#date').val()); }); $("#div-calc-overtime").hide(); } else if (parseInt($(this).find(':selected').data('hourday')) === 1 || parseInt($(this).find(':selected').data('hourday')) === 6) { if (parseInt($(this).find(':selected').data('hourday')) === 6) { $("#div-calc-overtime").show(); } else { $("#div-calc-overtime").hide(); } $("#endtime-div").show(); $("#endtime-div").find('input').each(function () { $(this).prop("required", true); $(this).prop("disabled", false); }); $("#enddate-div").hide(); $("#enddate-div").find('input').each(function () { $(this).prop("required", false); $(this).prop("min", ''); $(this).val(''); }) } else if (parseInt($(this).find(':selected').data('hourday')) === 3 || parseInt($(this).find(':selected').data('hourday')) === 4) { $("#endtime-div").hide(); $("#endtime-div").find('input').each(function () { $(this).prop("required", false); $(this).prop("disabled", true); }); $("#div-calc-overtime").hide(); $("#enddate-div").hide(); $("#enddate-div").find('input').each(function () { $(this).prop("required", false); $(this).prop("min", ''); $(this).val(''); }) } else if (parseInt($(this).find(':selected').data('hourday')) === 7) { $("#endtime-div").show(); $("#endtime-div").find('input').each(function () { $(this).prop("required", true); $(this).prop("disabled", false); }); $("#enddate-div").hide(); $("#enddate-div").find('input').each(function () { $(this).prop("required", false); $(this).prop("min", ''); $(this).val(''); }) $('#businesstrip_info').val(''); $('#businesstrip_info').show(); $('.car-div-car').show(); } if (parseInt($(this).find(':selected').data('comment')) === 1) { $('#comment').prop("required", true); } else { $('#comment').prop("required", false); } if (parseInt($(this).find(':selected').data('businesstrip')) === 1) { $('.businesstrip-div').show(); $('#businesstrip').prop("checked", false); $('#businesstrip_info').val(''); $('#businesstrip_info').hide(); $('.car-div').find('input').prop("required", false); $('.car-div').find('input').val(''); $('#timerecordingCar_id').val('').change(); $('.car-div').hide(); } else if (parseInt($(this).find(':selected').data('hourday')) === 7) { $('.businesstrip-div').show(); $('.businesstrip-check-div').hide(); $('#businesstrip').prop("checked", true); $('#businesstrip_info').show(); $('#businesstrip_info').prop('required', true); $('#homeoffice-div').hide(); } else { $('.businesstrip-div').hide(); $('#businesstrip').prop("checked", false); $('#businesstrip_info').val(''); $('#timerecordingCar_id').val('').change(); $('.car-div').find('input').prop("required", false); $('.car-div').find('input').val(''); $('.car-div').hide(); $('#businesstrip_info').hide(); } if (parseInt($(this).find(':selected').data('homeoffice')) === 1) { $('#homeoffice-div').show(); $('#homeoffice').prop("checked", false); } else { $('#homeoffice').prop("checked", false); $('#homeoffice-div').hide(); } }); $("body").on("change", "#date", function () { if ($('#enddate-div').css('display') === "block") { if ($('#date').val() > $('#enddate').val()) { $('#enddate').prop("min", $('#date').val()); $('#enddate').val($('#date').val()); } else { $('#enddate').prop("min", $('#date').val()); } } }); $("body").on("change", "#start", function () { if ($('#start').val() > $('#end').val()) { $('#end').val($('#start').val()); } $('#end').prop("min", $('#start').val()); }); $("body").on("change", "#start,#end,#date,#timerecordingCategory_id", function () { if (parseInt($('#timerecordingCategory_id').find(':selected').data('hourday')) === 6) { $.post(checkWorkinghoursUrl, { date: $.trim($('#date').val()), start: $.trim($('#start').val()), end: $.trim($('#end').val()), ajax: 1 }).done(function (data) { var result = $.parseJSON(data); if (result.state === "success") { $('#calc-overtime').html(result.message); } if (result.state === "error") { $('#calc-overtime').html('
' + result.error + '
'); } }); } }); $("body").on("click", ".edit-button", function () { $('#submit-button').hide().removeClass('btn-primary').addClass('btn-danger').show(); $('#submit-button').text('Ändern'); $('#cancel-button').show(); $('#timerecordingCategory_id').val($(this).data('category')).change(); $('#id').val($(this).data('id')); $('#date').val($(this).data('date')); $('#start').val($(this).data('start')); $('#end').val($(this).data('end')); $('#end').prop("min", $('#start').val()); $('#enddate').val($(this).data('enddate')); $('#enddate').prop("min", $('#date').val()); $('#comment').val($(this).data('comment')); if ($(this).data('businesstrip') == 1) { $('#businesstrip').prop("checked", true); $('#businesstrip_info').val($(this).data('businesstripinfo')); $('#businesstrip_info').show(); $('#businesstrip_info').prop('required', true); $('#homeoffice-div').hide(); $('#timerecordingCar_id').val('').change(); } if ($(this).data('homeoffice') == 1) { $('.businesstrip-div').hide(); $('#homeoffice').prop("checked", true); $('#homeoffice-div').show(); } if ($(this).data('car')) { $('#timerecordingCar_id').val($(this).data('car')).change(); if ($(this).data('mileagestart')) { $('.car-div').show(); $('.car-div').find('input').prop("required", true); $('#mileage_start').val($(this).data('mileagestart')); $('#mileage_end').val($(this).data('mileageend')); $('#mileage_end').prop("min", $(this).data('mileagestart')); } else { } } $('.alert-success').remove(); window.scrollTo(0, 0); }); $("body").on("click", "#cancel-button", function () { $('#submit-button').hide().removeClass('btn-danger').addClass('btn-primary').show(); $('#submit-button').text('Speichern'); $('#cancel-button').hide(); $('#id').val(''); $('.businesstrip-div').hide(); $('#businesstrip').prop("checked", false); $('#businesstrip_info').val(''); $('#businesstrip_info').hide(); $('#businesstrip_info').prop("required", false); $('#homeoffice').prop("checked", false); $('.car-div').hide(); $('.car-div').find('input').val(''); $('.car-div').find('input').prop("required", false); $('#timerecordingCar_id').val('').change(); $('#timerecordingCategory_id').change(); }); $("body").on("change", "#dataweek,#datamonth,#datayear", function () { table.ajax.reload(); }); $("body").on("click", ".display-calendar", function () { $('.display-calendar').each(function (index) { $(this).removeClass('active-calendar'); }); $(this).addClass('active-calendar'); if ($(this).data('datatype') == "1") { $('#dataweek-col').show(); $('#dynamictime-div').show(); $('#datamonth-col').hide(); $('#datayear-col').hide(); } else if ($(this).data('datatype') == "2") { $('#datamonth-col').show(); $('#dynamictime-div').show(); $('#dataweek-col').hide(); $('#datayear-col').hide(); } else if ($(this).data('datatype') == "3") { $('#datayear-col').show(); $('#dynamictime-div').hide(); $('#datamonth-col').hide(); $('#dataweek-col').hide(); } $(".select2").select2(); table.ajax.reload(); }); $("body").on("click", "#businesstrip", function () { if ($(this).prop('checked') == true) { $('#businesstrip_info').show(); $('#businesstrip_info').prop('required', true); $('#homeoffice').prop('checked', false); $('#homeoffice-div').hide(); $('.car-div-car').show(); $.each($('#timerecordingCar_id option'), function (index, value) { if ($(this).data('user') == $('#id').data('userid')) { $('#timerecordingCar_id').val($(this).val()).change(); } }); } else { $('#businesstrip_info').hide(); $('#businesstrip_info').val(''); $('#businesstrip_info').prop('required', false); $('#timerecordingCategory_id').change(); } }); $("body").on("click", "#homeoffice", function () { if ($(this).prop('checked') == true) { $('#businesstrip').prop('checked', false); $('.businesstrip-div').hide(); $('#timerecordingCar_id').val(''); $('.car-div').find('input').prop("required", false); $('.car-div').find('input').val(''); $('.car-div').hide(); $('#businesstrip_info').hide(); $('#businesstrip_info').val(''); $('#businesstrip_info').prop('required', false); } else { $('#timerecordingCategory_id').change(); } }); $("body").on("click", "#auto-workinghours-button", function () { var timestamp = $('#dataweek').val() * 1000 const date = new Date(timestamp); var day = date.getDay(), diff = date.getDate() - day + (day == 0 ? -6 : 1); diff = date.getDate() - day + (day == 0 ? -6 : 1); var monday = new Date(date.setDate(diff)); monday = monday.getTime(); monday = new Date(monday); monday = monday.toLocaleDateString('de-DE'); //last day of week var sunday = new Date(date.setDate(diff + 6)); sunday = sunday.getTime(); sunday = new Date(sunday); sunday = sunday.toLocaleDateString('de-DE'); if (confirm('Sollen die Arbeitszeiten von ' + monday + ' bis ' + sunday + ' automatisch eingetragen werden?')) { $.post(autoWorkinghoursUrl, { dataweek: $.trim($('#dataweek').val()), ajax: 1 }).done(function (data) { table.ajax.reload(); }); } }); $("body").on("change", "#timerecordingCar_id", function () { if ($('#timerecordingCar_id').val() == "") { $('.car-div').find('input').prop("required", false); $('.car-div').find('input').val(''); $('.car-div').hide(); $('.car-div-car').show(); } else { $('.car-div').show(); $('.car-div').find('input').prop("required", true); $('#mileage_start').val($(this).find(':selected').data('mileagenow')); $('#mileage_end').prop("min", $('#mileage_start').val()); } }); $("body").on("change", "#mileage_start", function () { $('#mileage_end').prop("min", $('#mileage_start').val()); }); $("body").on("click", ".delete-item", function () { if (confirm('Buchung wirklich löschen?')) { $.post(deleteUrl, { id: $.trim($(this).data('id')), ajax: 1 }).done(function (data) { table.ajax.reload(); }); } }); $('form').submit(function (e) { e.preventDefault(); $('#alert-box').remove(); var businesstrip = false; var homeoffice = false; var car = false; if ($('#businesstrip').prop('checked') == true) { businesstrip = 1; } if ($('#homeoffice').prop('checked') == true) { homeoffice = 1; } if ($.trim($('#timerecordingCar_id').val())) { car = 1; } $.post(insertUrl, { id: $.trim($('#id').val()), timerecordingCategory_id: $.trim($('#timerecordingCategory_id').val()), date: $.trim($('#date').val()), enddate: $.trim($('#enddate').val()), start: $.trim($('#start').val()), end: $.trim($('#end').val()), comment: $.trim($('#comment').val()), businesstrip: businesstrip, businesstrip_info: $.trim($('#businesstrip_info').val()), timerecordingCar_id: $.trim($('#timerecordingCar_id').val()), mileage_start: $.trim($('#mileage_start').val()), mileage_end: $.trim($('#mileage_end').val()), homeoffice: homeoffice, hourday: $.trim($('#timerecordingCategory_id').find(':selected').data('hourday')), ajax: 1 }).done(function (data) { var result = $.parseJSON(data); if (result.state === "success") { $('.wrapper .container-fluid').prepend(`
Erfolgreich
` + result.message + `
`); if ($.trim($('#mileage_start').val())) { $('#timerecordingCar_id').find(':selected').data('mileagenow', $.trim($('#mileage_end').val())); } if (car == 1) { $('#timerecordingCar_id').val('').change(); } } if (result.state === "error") { $('.wrapper .container-fluid').prepend(`
Fehler
` + result.error + `
`); } $('#submit-button').hide().removeClass('btn-danger').addClass('btn-primary').show(); $('#submit-button').text('Speichern'); $('#cancel-button').hide(); $('#id').val(''); table.ajax.reload(); }); }); $('#timerecordingCategory_id').change(); }) ;