Files
BeWoPlaner/BeWoPlanerMobil/Scripts/view-scripts/scheduler.js
Lyndon Jetten 24b7869d13 Mobilversion:
Kalender:
    "+"-Button bei Bildschirmen, die breiter als 768px sind

Fat-Client:
  A+, A-, Vollbild und Textbausteinzugriff dem ServiceRecordEditView hinzugefügt
2020-07-16 18:50:34 +02:00

258 lines
9.0 KiB
JavaScript

function resetInsertAppointmentForm() {
$.get(getResetSelectedAppointmentUrl())
.always(function() {
if($(window).width() < 768) {
hideAppointmentForm();
}
});
$("#scheduler-start-time, #scheduler-end-time, #subject, #location, #notice").val("");
$("#scheduler-start-date, #scheduler-end-date").val(moment().format("DD.MM.YYYY"));
$("#resources-popup input:checked").each(function() {
$(this).prop("checked", false);
});
$("#selected-resources-list").empty();
}
function submitInsertAppointmentForm() {
showSpinner();
validateAppointmentForm();
}
function submitSchedulerDateForm() {
showSpinner();
$("#scheduler-date-form").submit();
}
function validateAppointmentForm() {
var startTimePicker = $("#scheduler-start-time-picker");
var startDatePicker = $("#scheduler-start-date-picker");
var endTimePicker = $("#scheduler-end-time-picker");
var endDatePicker = $("#scheduler-end-date-picker");
var isStartTimeInputEmpty = isEmptyOrSpaces($("#scheduler-start-time").val());
var isEndTimeInputEmpty = isEmptyOrSpaces($("#scheduler-end-time").val());
var isStartDateInputEmpty = isEmptyOrSpaces($("#scheduler-start-date").val());
var isEndDateInputEmpty = isEmptyOrSpaces($("#scheduler-end-date").val());
startTimePicker.datetimepicker("show");
startTimePicker.datetimepicker("hide");
startDatePicker.datetimepicker("show");
startDatePicker.datetimepicker("hide");
endTimePicker.datetimepicker("show");
endTimePicker.datetimepicker("hide");
endDatePicker.datetimepicker("show");
endDatePicker.datetimepicker("hide");
var startTime = startTimePicker.datetimepicker("date");
var endTime = endTimePicker.datetimepicker("date");
var startDate = startDatePicker.datetimepicker("date");
var endDate = endDatePicker.datetimepicker("date");
var a = startDate === undefined || startDate === null || !startDate.isValid();
var b = endDate === undefined || endDate === null || !endDate.isValid();
var c = startTime === undefined || startTime === null || !startTime.isValid();
var d = endTime === undefined || endTime === null || !endTime.isValid();
if(a || b || c || d || isStartDateInputEmpty || isStartTimeInputEmpty || isEndTimeInputEmpty || isEndDateInputEmpty) {
hideSpinner();
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">Die Zeit- und/oder Datumsangaben sind nicht korrekt.</div>');
showMessagePopup("Fehler");
$("#scheduler-start-time, #scheduler-end-time").val("");
return;
}
if(endDate.isValid() === false) {
endDate = startDate.clone();
}
startDate = startDate.hours(startTime.hours());
startDate = startDate.minutes(startTime.minutes());
endDate = endDate.hours(endTime.hours());
endDate = endDate.minutes(endTime.minutes());
if(endDate.isBefore(startDate)) {
hideSpinner();
$("#messagePopup .modal-body").html('<div class="alert alert-danger" role="alert">Das Startdatum muss vor dem Enddatum liegen.</div>');
showMessagePopup("Fehler");
return;
}
var selectedOids = [];
var oidString = "";
$("#resources-popup input:checked").each(function() {
var id = $(this).attr("id");
selectedOids.push(id.split("-")[0]);
});
for(var i = 0; i < selectedOids.length; i++) {
oidString += selectedOids[i] + ",";
}
$.get(getCheckResourcesAvailabilityUrl(), { start: startDate.format("DD.MM.YYYY HH:mm"), end: endDate.format("DD.MM.YYYY HH:mm"), resourceOids: oidString }).done(function(result) {
if(result === undefined || result === null || result.length === 0) {
return;
}
if (result.length > 1) {
try {
var unavailableResources = $.parseJSON(result);
var resourceCount = 0;
var names = "";
$.each(unavailableResources, function(index, resource) {
if (names.length > 1) {
names += ", ";
}
resourceCount++;
names += resource.Name;
});
var unavailableResourcesMessage;
if(resourceCount > 0) {
if(resourceCount > 1) {
unavailableResourcesMessage = "Einige der ausgewählten Ressourcen (" + names + ") sind zum gewählten Zeitpunkt nicht verfügbar.";
} else {
unavailableResourcesMessage = "Eine der ausgewählten Ressourcen (" + names + ") ist zum gewählten Zeitpunkt nicht verfügbar.";
}
hideSpinner();
$("#messagePopup .modal-body").html('<div class="alert alert-warning" role="alert">' + unavailableResourcesMessage + "<br/><br/>Möchten Sie trotzdem speichern?</div>");
showMessagePopup("Fehler");
showMessagePopupWithCallback("Überschneidung",
null,
function() {
$("#messagePopup .modal-body").html();
showSpinner();
insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
});
return;
}
} catch(error) {
console.log("%c" + error.message, "color:red;");
hideSpinner();
return;
}
}
insertOrUpdateAppointment(startDate.format("DD.MM.YYYY"), endDate.format("DD.MM.YYYY"), startDate.format("HH:mm"), endDate.format("HH:mm"));
});
}
function insertOrUpdateAppointment(formattedStartDate, formattedEndDate, formattedStartTime, formattedEndTime) {
$.get(
getCheckForOverlappingAppointmentsUrl(),
{
startDateRaw: formattedStartDate,
endDateRaw: formattedEndDate,
startTimeRaw: formattedStartTime,
endTimeRaw: formattedEndTime
}
).done(function(result) {
var isOverlapping = $.parseJSON(result);
if(isOverlapping === true) {
hideSpinner();
$("#messagePopup .modal-body").html('<div class="alert alert-warning" role="alert">Dieser Termin überschneidet sich mit einem anderen bereits existierenden Termin.<br/> Möchten Sie ihn wirklich speichern?</div>');
showMessagePopupWithCallback("Überschneidung",
null,
function() {
$("#messagePopup .modal-body").html();
showSpinner();
$("#insert-appointment-form").submit();
});
} else {
$("#insert-appointment-form").submit();
}
});
}
function hideAppointmentForm() {
$("#form-container").addClass("d-none d-sm-none");
}
function showAppointmentForm() {
$("#form-container").removeClass("d-none d-sm-none");
}
function toggleAppointmentForm() {
var isVisible = $("#form-container").css("display") === "block";
if (isVisible) {
hideAppointmentForm();
} else {
showAppointmentForm();
}
}
function changeResourceSelection() {
var selectedOids = [];
var oidString = "";
$("#resources-popup input:checked").each(function() {
var id = $(this).attr("id");
selectedOids.push(id.split("-")[0]);
});
for (var i = 0; i < selectedOids.length; i++) {
oidString += selectedOids[i] + ",";
}
$.get(getSelectResourcesForAppointmentUrl(), { resourceOids: oidString }).done(updateSelectedResourceList);
}
function updateSelectedResourceList(jsonResult) {
var list = $("#selected-resources-list");
list.empty();
if (isEmptyOrSpaces(jsonResult)) {
return;
}
var resourceList = $.parseJSON(jsonResult);
$.each(resourceList, function(index, customListItem) {
var html =
"<div class='list-group-item' id='relation-item-" + customListItem.ResourceOid + "'>" +
"<div class='row'>" +
"<div class='col my-auto'>" +
"<i class='fas fa-cubes text-bewo-resource mr-2'></i>" + customListItem.Name +
"</div>" +
"<div class='col-auto my-auto'>" +
"<button type='button' class='btn btn-primary' onclick='removeSelectedResource(" + customListItem.ResourceOid + ")'>" +
"<span class='fas fa-times-circle'></span>" +
"</button>" +
"</div>" +
"</div>" +
"</div>";
list.append(html);
});
}
function removeSelectedResource(resourceOid) {
$("#relation-item-" + resourceOid).remove();
var checkbox = $("#" + resourceOid + "-checkbox");
if (checkbox.length) {
checkbox.prop("checked", false);
}
changeResourceSelection();
}