Files
BeWoPlaner/BeWoPlanerMobil/Scripts/view-scripts/report.js
2020-11-09 17:55:01 +01:00

299 lines
12 KiB
JavaScript

function initializeYearAndMonths() {
var begin = moment(new Date()).date(1);
for (var i = begin.year(); i > begin.year() - 10; i--) {
var option = new Option(i, i);
$("#year-select").append(option);
}
var first = moment(new Date(begin.year(), 0, 1));
for(var j = 0; j < 12; j++) {
var option2 = new Option(first.format("MMMM"), j + 1);
$("#month-select").append(option2);
first.add(1, "month");
}
$("#month-select").val(moment(new Date()).month());
calculateDays();
}
function initializeReportView() {
checkForExistingSignature();
initializeYearAndMonths();
qbFilterSelectionChange();
filterCheckBoxChange();
}
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 initializeReportSignature() {
$("#report-form-container").hide();
$("#report-signature-container").addClass("d-block");
var customer = $("#customers-drop-down option:selected").text();
var month = $("#month-select option:selected").text();
var year = $("#year-select option:selected").text();
$("#report-info-column").html("Unterschrift für erbrachte Leistungen von " + customer + " im " + month + " " + year);
resizeCanvas("#report-sketch-pad", "#report-canvas-row");
var canvas = document.getElementById("report-sketch-pad");
var signaturePad = new SignaturePad(canvas, { backgroundColor: "rgba(255, 255, 255, 0)" });
var saveButton = document.getElementById("save-report-signature-btn");
var clearButton = document.getElementById("clear-report-canvas-btn");
var cancelButton = document.getElementById("cancel-report-signature-btn");
saveButton.addEventListener("click", function(event) {
var clonedCanvas = trimCanvas(cloneCanvas(document.getElementById("report-sketch-pad")));
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() {
showSpinner();
var test = getValidateEmployeeSignatureUrl();
$.get(test).done(function(result) {
// Falls true bisherige Unterschrift ersetzen
if(result === undefined || result === null) {
logError("employee signature validation result is undefined");
return;
}
if(result === "True") {
showWarningMessageBox("Speichern",
"Für " + month + " " + year + " existiert bereits eine oder mehrere Mitarbeiterunterschriften. Möchten Sie sie ersetzen?",
function() {
var url = getCreateEmployeeSignatureForServiceOverviewUrl();
$.post(url, { base64SignatureString: dataUrl }).done(function(json) {
hideSpinner();
if (isEmptyOrSpaces(json)) {
$("#signature-container").removeClass("d-block");
$("#main-container, #checkbox-container").show();
showMessagePopupWithCallback("Unterschrift",
"Die Unterschrift wurde erfolgreich gespeichert.",
function() {
showSpinner();
location.reload();
},
true);
} else {
showMessagePopup("Fehler", json);
signaturePad.clear();
}
});
},
false);
} else {
var url = getCreateEmployeeSignatureForServiceOverviewUrl();
$.post(url, { base64SignatureString: dataUrl }).done(function(json) {
hideSpinner();
if(isEmptyOrSpaces(json)) {
$("#signature-container").removeClass("d-block");
$("#main-container, #checkbox-container").show();
showMessagePopupWithCallback("Unterschrift", "Die Unterschrift wurde erfolgreich gespeichert.", function() {
showSpinner();
location.reload();
}, true);
} else {
showMessagePopup("Fehler", json);
signaturePad.clear();
}
});
}
});
}, false);
});
clearButton.addEventListener("click", function(event) {
signaturePad.clear();
});
cancelButton.addEventListener("click", function(event) {
showMessagePopupWithCallback("Unterschrift", "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?",
function() {
$("#report-signature-container").removeClass("d-block");
$("#report-form-container").show();
signaturePad.clear();
//TODO: Notwendigkeit prüfen
//$.get(getResetSignatureImageUrl());
}, false);
});
}
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(result1) {
if (result1!=null && result1.length > 1) {
var jason = $.parseJSON(result1);
if (jason === true) {
var customerOid = $("#customers-drop-down option:selected").val();
var monthName = $("#month-select option:selected").text();
var url = getCheckForEmployeeSignatureUrl();
$.get(url, { customerOidString: customerOid, monthString: month, yearString: year },
function(result) {
if(result === null || result === undefined || result.length <= 1) {
return;
}
var hasSignatures = $.parseJSON(result);
if(hasSignatures === true) {
$("#warning-message-container").removeClass("d-none");
$("#warning-message-container").addClass("d-block");
$("#warning-message-container").html("Für " + monthName + " " + year + " existiert bereits eine Mitarbeiterunterschrift.");
} else {
$("#warning-message-container").empty();
$("#warning-message-container").removeClass("d-block");
$("#warning-message-container").addClass("d-none");
}
}
);
}
}
});
}
function qbFilterSelectionChange() {
/*
* 0: Für alle Klienten
* 1: Für Klienten meiner Teams
* 2: Für meine Klienten
* 3: Klienten auswählen
* 4: Team auswählen
*/
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 filterCheckBoxChange() {
var changeFiltersUrl = getChangeFiltersUrl();
var isEmployeeSelected = $("#selected-employee-cb").is(":checked");
var isOrganisationSelected = $("#selected-organisation-cb").is(":checked");
var isCategorySelected = $("#selected-category-cb").is(":checked");
var employeeOid = isEmployeeSelected ? $("#employee-select option:selected").val() : null;
var organisationOid = isOrganisationSelected ? $("#organisation-select option:selected").val() : null;
var categoryOid = isCategorySelected ? $("#category-select option:selected").val() : null;
$.get(changeFiltersUrl,
{
employeeOidStr: employeeOid,
organisationOidStr: organisationOid,
categoryOidStr: categoryOid
});
}