Kalender:
"+"-Button bei Bildschirmen, die breiter als 768px sind
Fat-Client:
A+, A-, Vollbild und Textbausteinzugriff dem ServiceRecordEditView hinzugefügt
258 lines
9.0 KiB
JavaScript
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();
|
|
} |