Files
BeWoPlaner/BeWoPlanerMobil/Scripts/view-scripts/report.js

314 lines
10 KiB
JavaScript

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 += '<div class="row justify-content-md-center mt-2">' +
'<div class="col">' +
'<img src="' + signature + '" class="img-fluid mx-auto d-block"/>' +
"</div>" +
"</div>";
});
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);
}
}