Files
BeWoPlaner/BeWoPlanerMobil/Scripts/ownSoft-Scripts/utils/list-utils.js

83 lines
3.8 KiB
JavaScript

// Wird aufgerufen, wenn sich der Wert der CheckBox ändert.
function changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, checkBoxIdSuffix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids, allItemsCheckBoxId) {
try {
if(url === undefined || url === null) {
return;
}
const selectedItemOids = $(`#${popupId} .popup-list-item-container input:checked`).map(function () { return $(this).attr("id").split("-")[1]; }).get();
const allItemOids = $(`#${popupId} .popup-list-item-container input[type=checkbox]`).map(function () { return $(this).attr("id").split("-")[1]; }).get();
if(!isCustomer) {
$(`#my-teams-checkbox${allItemsCheckBoxSuffix}`).prop("checked", arrayContainsAllItems(selectedItemOids, teamMemberOids));
}
$(`#${allItemsCheckBoxId}`).prop("checked", arrayContainsAllItems(selectedItemOids, allItemOids));
$.get(url, { oidString: selectedItemOids.toString() }).done(function (jsonResult) {
updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids);
$("#one-day-scheduler-partial-container").load(filterAppointmentsUrl);
});
} catch(error) {
window.showErrorPopup(error);
}
}
// Wird aufgerufen, um die Liste mit den ausgewählten Objekten zu aktualisieren
function updateSelectedList(jsonResult, listId, itemIdPrefix, isCustomer, popupId, checkBoxIdSuffix, url, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids, allItemsCheckBoxId) {
try {
if(false === checkJson(jsonResult)) {
logWarning("updateSelectedList: Der zurückgegebene Wert ist kein gültiges JSON!");
hideSpinner();
return;
}
const listItems = parseJason(jsonResult);
var list = $(`#${listId}`);
list.empty();
var colorClass = "text-bewo-employee";
if(isCustomer === true) {
colorClass = "text-bewo-customers";
}
$.each(listItems, function (index, item) {
var oid;
if(isCustomer === true) {
oid = item.CustomerOid;
} else {
oid = item.EmployeeOid;
}
const id = itemIdPrefix + oid;
const removeParams = oid + ", '" + checkBoxIdSuffix + "', " + isCustomer + ", '" + url + "', '" + popupId + "', '" + listId + "', '" + itemIdPrefix + "', '" + filterAppointmentsUrl + "', '" + allItemsCheckBoxSuffix + "', " + teamMemberOids;
const html = `<div class="list-group-item my-auto" id="${id}"><div class="row"><div class="input-group"><div class="input-group-prepend"><i class='fas fa-user ${colorClass} h-100'></i></div><p class="form-control border-0 bg-transparent text-truncate">${item.LastName}, ${item.FirstName}</p><div class="input-group-append"><button class="btn btn-primary ficken" type="button" onclick="removeSelectedItem(${removeParams})"><span class='fas fa-times-circle'></span></button></div></div></div></div>`;
list.append(html);
});
} catch(error) {
window.showErrorPopup(error);
}
}
function removeSelectedItem(itemOid, itemSuffix, isCustomer, url, popupId, listId, itemIdPrefix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids, allItemsCheckBoxId) {
try {
const prefix = isCustomer ? "customer-" : "employee-";
const checkBox = $("#" + prefix + itemOid + itemSuffix);
if(checkBox.length) {
checkBox.prop("checked", false);
}
changeItemListSelection(url, popupId, listId, itemIdPrefix, isCustomer, itemSuffix, filterAppointmentsUrl, allItemsCheckBoxSuffix, teamMemberOids, allItemsCheckBoxId);
} catch(error) {
window.showErrorPopup(error);
}
}