function initializeYearAndMonths() { calculateDays(); } function initializeReportView() { checkForExistingSignature(); calculateDays(); qbFilterSelectionChange(); } function calculateDays() { var month = $("#month-select option:selected").val(); var year = $("#year-select option:selected").val(); var monthInt = parseInt(month, 10) - 1; var begin = moment(new Date(year, monthInt, 1)).date(); var end = moment(new Date(year, monthInt, 1)).add(1, "months").add(-1, "days").date(); $("#start-day-select").empty(); $("#end-day-select").empty(); for (var i = begin; i <= end; i++) { var option = new Option(i, i); var option2 = new Option(i, i); $("#start-day-select").append(option); $("#end-day-select").append(option2); } $("#start-day-select").val(1); $("#end-day-select").val(end); var startDay = $("#start-day-select option:selected").val(); var endDay = $("#end-day-select option:selected").val(); if(startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull([month, year, startDay, endDay])) { return; } var changeDateSelectionUrl = getChangeDateSelectionUrl(); $.get(changeDateSelectionUrl, { startDayString: startDay, endDayString: endDay, monthString: month, yearString: year}); } function hideSigningParts(canSign) { try { if(!isUndefinedOrNull(canSign)) { if(canSign === false) { $(".signingContent").hide(); } else { $(".signingContent").show(); } } } catch(error) { showErrorPopup(error); } } function confirmReportSignatureCancellation() { showMessagePopupWithCallback("Unterschrift", "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?", function() { $("#report-signature-container").removeClass("d-block"); $("#report-form-container").show(); var canvas = document.getElementById("sketch-pad"); var context = canvas.getContext("2d"); context.clearRect(0, 0, canvas.width, canvas.height); }, false); } function onMonthOrYearChange() { calculateDays(); checkForExistingSignature(); } function checkForExistingSignature() { var month = $("#month-select option:selected").val(); var year = $("#year-select option:selected").val(); var startDay = $("#start-day-select option:selected").val(); var endDay = $("#end-day-select option:selected").val(); if(startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull([month, year, startDay, endDay])) { return; } var changeDateSelectionUrl = getChangeDateSelectionUrl(); $.get(changeDateSelectionUrl, { startDayString: startDay, endDayString: endDay, monthString: month, yearString: year }); } function qbFilterSelectionChange() { var selectedOption = $("#qb-filter-select option:selected").val(); switch(selectedOption) { case "3": $("#team-selection-container").removeClass("d-block"); $("#team-selection-container").addClass("d-none"); $("#customer-selection-container").removeClass("d-none"); $("#customer-selection-container").addClass("d-block"); break; case "4": $("#customer-selection-container").removeClass("d-block"); $("#customer-selection-container").addClass("d-none"); $("#team-selection-container").removeClass("d-none"); $("#team-selection-container").addClass("d-block"); break; default: $("#customer-selection-container, #team-selection-container").removeClass("d-block"); $("#customer-selection-container, #team-selection-container").addClass("d-none"); break; } var selectedFilterEnumUrl = getSetQbFilterEnumUrl(); $.get(selectedFilterEnumUrl, { filterEnumString: selectedOption}); } function onCustomerSelectionChange() { var url = getSetCustomerUrl(); var selectedCustomerOid = $("#customers-drop-down option:selected").val(); $.get(url, { customerOid: selectedCustomerOid}).done(function() { checkForExistingSignature(); }); } // Lädt die bisher geleisteten Unterschriften function getSignatures(signatureOidStrings, containerId) { try { showSpinner(); var container = $(containerId); container.html(""); $.get(getLoadConfirmationReceiptSignaturesUrl(), { oidsAsString: signatureOidStrings }).done(function(json) { if(isUndefinedOrNull(json) || !checkJson(json)) { if(!checkJson(json)) { hideSpinner(); logError("Ungültiges JSON in loadConfirmationReceiptSignatures. JSON: <" + json + ">"); } if(isUndefinedOrNull(json)) { logError("JSON ist undefined oder null in loadConfirmationReceiptSignatures"); } } logDebug("Gültiges JSON in loadConfirmationReceiptSignatures"); if(isEmptyOrSpaces(json)) { hideSpinner(); return; } var signatureList = $.parseJSON(json); var newHtml = ""; $.each(signatureList, function(index, signature) { newHtml += '
' + '
' + '' + "
" + "
"; }); container.append(newHtml); hideSpinner(); }); } catch(error) { showErrorPopup(error); } } function cancelSignature(canSign, signaturePad) { try { if (canSign === false) { hideSignatureContainer(canSign, signaturePad); signaturePad.clear(); return; } showMessagePopupWithCallback("Unterschrift", "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?", function() { hideSignatureContainer(canSign, signaturePad); signaturePad.clear(); }, false); } catch (error) { showErrorPopup(error); } } function hideSignatureContainer() { $("#report-signature-container-div").removeClass("d-block"); $("#overwriting-signature-alert").removeClass("d-block"); $("#report-form-container").show(); } function showSignaturePad(overwrite, signatureOidsString, canSign, cardBodyId, customerOid, numberOfEntries, customerName, timeSpan, isEmployeeSignature, employeeName) { try { cardHeaderButtonClick(cardBodyId); $("#report-form-container").hide(); $("#report-signature-container-div").addClass("d-block"); var plural = ""; if(!isEmptyOrSpaces(signatureOidsString) && signatureOidsString.includes(",")) { plural = "en"; } var entryCount = parseInt(numberOfEntries, 10); var leistungPlural = entryCount > 1 ? "en" : ""; var signatureGiverName = isEmployeeSignature ? employeeName : customerName; $("#report-info-column-h4").html("Unterschrift" + plural + " von " + signatureGiverName + " für " + numberOfEntries + " erbrachte Leistung" + leistungPlural + " von " + customerName + " (" + timeSpan + ")"); if(overwrite) { $("#overwriting-signature-alert").addClass("d-block"); } getSignatures(signatureOidsString, "#signature-container-div"); hideSigningParts(canSign); resizeCanvas("#report-sketch-pad-canvas", "#report-canvas-row-div"); var canvas = document.getElementById("report-sketch-pad-canvas"); var signaturePad = new SignaturePad(canvas, { backgroundColor: "rgba(255, 255, 255, 0)" }); var cancelButton = document.getElementById("cancel-report-signature-button"); var saveButton = document.getElementById("save-report-signature-button"); var clearButton = document.getElementById("clear-report-canvas-button"); cancelButton.addEventListener("click", function() { cancelSignature(canSign, signaturePad); }); saveButton.addEventListener("click", function() { saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad); }); clearButton.addEventListener("click", function() { signaturePad.clear(); }); } catch(error) { showErrorPopup(error); } } function saveSignature(customerOid, isEmployeeSignature, overwrite, signaturePad) { try { var clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("report-sketch-pad-canvas"))); var context = clonedCanvas.getContext("2d"); context.globalCompositeOperation = "destination-over"; context.fillStyle = "white"; context.fillRect(0, 0, clonedCanvas.width, clonedCanvas.height); var dataUrl = clonedCanvas.toDataURL("image/png"); showMessagePopupWithCallback( "Unterschrift speichern", "Mit dem Speichern der Unterschrift ist es nicht mehr möglich, die betroffenen Einträge der Zeiterfassung zu ändern.", function() { try { showSpinner(); var url = getCreateSignatureForServiceOverviewUrl(); $.post(url, { base64SignatureString: dataUrl, customerOidString: customerOid, isCustomerSignature: !isEmployeeSignature, overwrite: overwrite }).done(function(json) { hideSpinner(); if(isEmptyOrSpaces(json)) { showMessagePopupWithCallback("Unterschrift", "Die Unterschrift wurde erfolgreich gespeichert.", function() { showSpinner(); location.reload(); }, true); } else { showMessagePopup("Fehler", json); signaturePad.clear(); } }); } catch (innerEx) { showErrorPopup(innerEx); } }, false); } catch (ex) { showErrorPopup(ex); } }