Files
BeWoPlaner/BeWoPlanerMobil/Scripts/ownSoft-Scripts/view-scripts/main.js
Lyndon ec1b569dcd Ziele und Bewerten repariert
Abfrage bei Klick auf Neu oder Abbrechen beim Unterschriftenfeld und die Buttons sind normalgroß
2025-12-15 18:48:37 +01:00

514 lines
16 KiB
JavaScript

function selectSupportConcept(cb2ScOid) {
showSpinner();
$("#sb-cb2ScRelOid").val(cb2ScOid);
window.updateCbScRelOids("sb", cb2ScOid);
$("#selectSupportConceptForm").submit();
}
function checkJson(str) {
try {
JSON.parse(str);
} catch (error) {
return false;
}
return true;
}
function showAlertMessage(message) {
$("#form-alert").html(message);
$("#form-alert").show();
}
function resetCreateForm() {
$("#serviceRecordCreationForm").trigger("reset");
const test = $("#has-any-rating-types").val().toLowerCase() === "true";
if(test) {
$(".goal-rating-badge").text("Bewerten");
} else {
$(".goal-rating-badge").text("");
}
}
function submitSingleBookingForm() {
showSpinner();
validateForm($("#singleBookingForm"), "sb");
}
function submitGroupBookingEditForm() {
showSpinner();
validateForm($("#groupBookingEditingForm"), "gb");
}
function submitGroupBookingForm() {
showSpinner();
validateForm($("#groupBookingForm"), "gb");
}
function toggleGroupBookingForm() {
const isEnabled = $("#selected-cb2sc-list").children().length > 0;
changeGroupBookingFormEnableState(!isEnabled);
}
function changeMultiBookingFormEnableState(enableState) {
$(
"#mb-employees-button, " +
"#mb-category-select, " +
"#mb-leistung-select, " +
"#mb-start-date-input, " +
"#mb-end-date-input, " +
"#mb-start-time-input, " +
"#mb-end-time-input, " +
"#mb-duration-input, " +
"#mb-distance-input, " +
"textarea, " +
"#mb-reset-btn, " +
"#mb-create-btn, " +
"#mb-betrag," +
"#mb-textbausteine-btn, " +
"#mb-hours-minutes-dropdown-btn, " +
"#mb-marker-cb"
).prop("disabled", enableState);
}
function changeGroupBookingFormEnableState(enableState) {
$(
"#employees-button, " +
"#gb-category-select, " +
"#gb-leistung-select, " +
"#gb-start-date-input, " +
"#gb-end-date-input, " +
"#gb-start-time-input, " +
"#gb-end-time-input, " +
"#gb-duration-input, " +
"#gb-distance-input, " +
"textarea, " +
"#reset-button, " +
"#create-button, " +
"#gb-textbausteine-btn, " +
"#gb-hours-minutes-dropdown-btn, " +
"#gb-marker-cb, " +
"#gb-betrag"
).prop("disabled", enableState);
}
function changeSingleBookingFormEnableState(enableState) {
$(
"#employeesDropDown, " +
"#sb-category-select, " +
"#sb-leistung-select, " +
"#sb-start-date-input, " +
"#sb-end-date-input, " +
"#sb-start-time-input, " +
"#sb-end-time-input, " +
"#sb-duration-input, " +
"#sb-hours-minutes-dropdown-btn, " +
"#sb-distance-input, " +
"#sb-textbausteine-btn, " +
"#goals-button, " +
"textarea, " +
"#reset-button, " +
"#create-button, " +
"#statistics-button, " +
"#timeFrameSelect, " +
"#sb-marker-cb, " +
"#sb-betrag"
).prop("disabled", enableState);
}
function deleteServiceRecord(serviceRecordOid) {
showMessagePopupWithCallback("Eintrag löschen", "Sind Sie sicher, dass Sie den Eintrag löschen möchten?",
function() {
const url = window.getValidateServiceRecordDeletionUrl();
$.get(url, { serviceRecordOidString: serviceRecordOid }).done(function(result) {
if(result === "Error") {
hideSpinner();
showAlertMessageBox("Fehler", "Es ist ein Fehler aufgetreten", null, false);
return;
}
if(false === checkJson(result)) {
logWarning("deleteServiceRecord: Der zurückgegebene Wert ist kein gültiges JSON!");
hideSpinner();
return;
}
var form = $("#deletion-form");
if(result.length === 0) {
if(form.length !== 0) {
$("#oidHolder").val(serviceRecordOid);
showSpinner();
form.submit();
}
} else { // Meldungen
hideSpinner();
const validationResult = parseJason(result);
if(validationResult.Message === null) {
$("#oidHolder").val(serviceRecordOid);
showSpinner();
form.submit();
return;
}
$("#oidHolder").val(serviceRecordOid);
var kannTrotzdemGespeichertWerden = validationResult.KannTrotzdemGespeichertWerden;
const validationCallback = function() {
$("#messagePopup .modal-body").html();
if(kannTrotzdemGespeichertWerden) {
showSpinner();
form.submit();
}
};
if(kannTrotzdemGespeichertWerden) {
showWarningMessageBox("Fehler", validationResult.Message, validationCallback, false);
} else {
showAlertMessageBox("Fehler", validationResult.Message, validationCallback, false);
}
}
});
}, false);
}
function validateForm(form, prefix) {
if(form === undefined || form === null) {
hideSpinner();
return;
}
if(prefix === undefined || prefix === null) {
prefix = "";
}
let errorMessage = "";
const isNoticeMandatory = window.getIsDocumentationMandatory();
const isServiceRecordGoalMandatory = window.getIsServiceRecordGoalMandatory();
const numberOfNoticeTextareas = window.getNumberOfDokutypes();
const hasGoalsToChooseFrom = $("#goals-tree").length > 0;
var isValid = true;
if(isServiceRecordGoalMandatory && hasGoalsToChooseFrom) {
const selectedGoalOids = window.getCheckedGoalsAsArray();
if(selectedGoalOids.length === 0) {
hideSpinner();
showAlertMessageBox("Fehler",
"Sie müssen mindestens ein Ziel auswählen, bevor Sie speichern können.",
function() {
$("#messagePopup .modal-body").html();
},
true);
return;
}
}
if(isNoticeMandatory) {
if(numberOfNoticeTextareas === 0) {
var doku = $(`#${prefix}-doku-textarea-5`).val();
if(doku === undefined || doku === null) {
doku = "";
}
isValid = doku.length > 0;
} else {
for(var i = 0; i < numberOfNoticeTextareas; i++) {
var d = $(`#${prefix}-doku-textarea-${i}`).val();
if(d === undefined || d === null) {
d = "";
}
isValid = d.length > 0;
if(isValid) {
break;
}
}
}
if(isValid === false) {
errorMessage = `Bitte füllen Sie ${numberOfNoticeTextareas > 1 ? "mindestens ein" : "das"} Dokumentationsfeld aus.<br>`;
}
}
var startAndEndDates = getStartAndEndDate(prefix);
if(startAndEndDates === null && isValid) {
isValid = false;
errorMessage += "Die Datums- und / oder Zeitangaben sind nicht korrekt.<br>";
}
if(isValid === false) {
hideSpinner();
showAlertMessageBox("Fehler",
errorMessage,
function() {
$("#messagePopup .modal-body").html();
},
true);
return;
}
if(startAndEndDates !== null && isValid) {
var [start, end] = startAndEndDates;
if((start.getSeconds() !== 1 && end.getSeconds() !== 1) && (end.getTime() < start.getTime() || end.getTime() === start.getTime())) {
end.setDate(end.getDate() + 1);
}
var [doku1, doku2, doku3, doku4, doku5] = getDokuTexte(prefix);
var startTimeInput = $(`#${prefix}-start-time-input`);
var endTimeInput = $(`#${prefix}-end-time-input`);
const distance = $(`#${prefix}-distance-input`).val();
const marker = $(`#${prefix}-marker-cb`).is(":checked");
const serviceDescriptionOid = $(`#${prefix}-leistung-select`).find(":selected").val();
const duration = $(`#${prefix}-duration-input`).val();
const betrag = $(`#${prefix}-betrag`).val();
$("#srv-date").val(`${getDateAsString(start)}`);
$("#srv-end-date").val(`${getDateAsString(end)}`);
$("#srv-start").val(startTimeInput.val());
$("#srv-end").val(endTimeInput.val());
$("#srv-doku1").val(doku1);
$("#srv-doku2").val(doku2);
$("#srv-doku3").val(doku3);
$("#srv-doku4").val(doku4);
$("#srv-doku5").val(doku5);
$("#srv-distance").val(distance);
$("#srv-form-id").val(form.attr("id"));
$("#srv-marker").val(marker ? "on" : "off");
$("#srv-service-description").val(serviceDescriptionOid);
$("#srv-duration").val(duration);
$("#srv-betrag").val(betrag);
window.updateStartDate(prefix, $(`${prefix}-start-date-input`).val());
window.updateStartTime(prefix, $(`${prefix}-start-time-input`).val());
window.updateEndDate(prefix, $(`${prefix}-end-date-input`).val());
window.updateEndTime(prefix, $(`${prefix}-end-time-input`).val());
window.updateDistance(prefix, $(`${prefix}-distance-input`).val());
window.updateMarker(prefix, $(`${prefix}-marker-cb`).val());
window.updateServiceDescription(prefix, $(`${prefix}-service-description-${serviceDescriptionOid}`).val());
window.updateDuration(prefix, $(`${prefix}-duration-input`).val());
window.updateBetrag(prefix, $(`${prefix}-betrag`).val());
showSpinner();
$("#service-record-validation-form").submit();
}
}
function getDokuTexte(prefix) {
const noticeList = [null, null, null, null, null];
try {
const hasMultipleDokufelder = $(`#${prefix}-doku-textarea-5`).length === 0;
let dokufeldCounter = 0;
if(hasMultipleDokufelder) {
for(let i = 0; i < 5; i++) {
const dokufeld = $(`#${prefix}-doku-textarea-${i}`);
if(dokufeld.length > 0) {
noticeList[i] = dokufeld.val();
dokufeldCounter++;
}
}
} else {
noticeList[0] = $(`#${prefix}-doku-textarea-5`).val();
dokufeldCounter = 1;
}
} catch(error) {
window.showErrorPopup(error);
} finally {
return noticeList;
}
}
function showGoalRatingPopup(goalOid) {
try {
$("#goal-rating-popup").modal("show");
$("#goal-to-rate-oid").val(goalOid);
} catch (error) {
window.showErrorPopup(error);
}
}
function hideGoalRatingPopup() {
try {
$("#goal-rating-popup").modal("hide");
resetGoalRatingPopup();
} catch(error) {
window.showErrorPopup(error);
}
}
function checkChildNodes(parentOid) {
const rootElement = $(`#c-${parentOid}`);
const checkboxes = rootElement.find("input");
var isChecked = $(`#${parentOid}`).prop("checked") === true;
$.each(checkboxes, function(index, checkbox) {
const box = $(checkbox);
const id = box.attr("id");
if(!id !== parentOid) {
box.prop("checked", isChecked);
}
});
}
function validateDistanceInput() {
checkNumberInput("distance");
}
function checkNumberInput(inputId) {
const input = $(`#${inputId}`).val();
return /^\d+$/.test(input);
}
// Wird bei der Validierung des Formulars benutzt
function getStartAndEndDate(prefix) {
if(prefix === undefined || prefix === null) {
prefix = "";
}
const startDateInput = $(`#${prefix}-start-date-input`);
const endDateInput = $(`#${prefix}-end-date-input`);
const startTimeInput = $(`#${prefix}-start-time-input`);
const endTimeInput = $(`#${prefix}-end-time-input`);
return validateStartAndEndInputs(startDateInput, startTimeInput, endDateInput, endTimeInput, true);
}
function validateStartAndEndInputs(startDateInput, startTimeInput, endDateInput, endTimeInput, isServiceRecord) {
isServiceRecord = isServiceRecord ?? false;
const startDate = new Date(startDateInput.val());
const startTime = startTimeInput.val();
let endDate = new Date(endDateInput.val());
const endTime = endTimeInput.val();
if(endDateInput.length === 0) {
endDate = startDate;
}
const isStartDateValid = false === isNaN(startDate.getTime());
const isEndDateValid = false === isNaN(endDate.getTime());
if(isStartDateValid && startTime.length === 0 || isEndDateValid && endTime.length === 0) {
const startValue = `${getDateAsString(startDate)}T00:00:0${(isServiceRecord ? "1" : "0")}`;
const endValue = `${getDateAsString(endDate)}T00:00:0${(isServiceRecord ? "1" : "0")}`;
const newStartDate = new Date(startValue);
const newEndDate = new Date(endValue);
return [newStartDate, newEndDate];
}
const isStartTimeValid = startTime.length > 0;
const isEndTimeValid = endTime.length > 0;
if(false === isStartTimeValid || false === isStartDateValid || false === isEndTimeValid || false === isEndDateValid) {
return null;
}
return [combineDateAndTime(startDate, startTime, false), combineDateAndTime(endDate, endTime, false)];
}
function supportConceptSearchOnChange() {
try {
var text = $("#support-concept-search-input").val().toLowerCase();
const links = $(".blubb-test");
if (text.length === 0) {
links.show();
}
$.each(links,
function(index, item) {
const supportConcept = $(item);
if(supportConcept.find(".supportconcept-name-header").text().toLowerCase().includes(text)) {
supportConcept.show();
} else {
supportConcept.hide();
}
});
} catch (error) {
window.showErrorPopup(error);
}
}
function resetSupportConceptSearch() {
try {
$("#support-concept-search-input").val("");
$(".blubb-test").show();
} catch (error) {
window.showErrorPopup(error);
}
}
function getSignatureImage(serviceRecordOid, signatureOid) {
try {
const url = window.getGetSignatureImageUrl();
$.get(url, { serviceRecordOid: serviceRecordOid, signatureOid: signatureOid }).done(function(textAndImage) {
const text2Image = textAndImage.split(";");
const serviceRecordDescription = text2Image[0];
const imageData = text2Image[1] + ";" + text2Image[2];
$("#signature-text").html(serviceRecordDescription);
$("#signature-img").attr("src", imageData);
$("#signature-img-popup").modal("show");
});
} catch (error) {
window.showErrorPopup(error);
}
}
function setServiceDescription(id) {
try {
const url = window.getSetServiceDescriptionUrl();
const selectedOption = $(`#${id}`).find(":selected");
const selectedServiceDescription = selectedOption.val();
window.updateServiceDescription(id.split("-")[0], selectedServiceDescription);
$.get(url, {pServiceDescriptionOid: selectedServiceDescription});
} catch(error) {
window.showErrorPopup(error);
}
}