537 lines
19 KiB
JavaScript
537 lines
19 KiB
JavaScript
tickLeaverequestsCheckboxes();
|
|
function makeLeaverequestsListUnique(list) {
|
|
return Array.from(new Set(list));
|
|
}
|
|
|
|
tickUserrequestsCheckboxes();
|
|
function makeUserrequestsListUnique(list) {
|
|
return Array.from(new Set(list));
|
|
}
|
|
|
|
|
|
|
|
// ---------------------------------------
|
|
// LEAVE REQUEST
|
|
// ---------------------------------------
|
|
|
|
function tickLeaverequestsCheckboxes() {
|
|
var ids = JSON.parse($("#selectedLeaverequests").attr("data-ids") || "[]");
|
|
uniqueIds = makeLeaverequestsListUnique(ids);
|
|
toggleHighlight(uniqueIds);
|
|
click = $("#selectedLeaverequests").attr("data-clicked");
|
|
if (click === "1") {
|
|
$(".all-leave-requests").prop("checked", true);
|
|
}
|
|
uniqueIds.forEach(function (id) {
|
|
$("#" + id).prop("checked", true);
|
|
});
|
|
var selectedCount = uniqueIds.length;
|
|
if (selectedCount > 0) {
|
|
$("#unselectAllLeaverequests").css("display", "inline-flex");
|
|
$("#exportLeaverequests").css("display", "inline-flex");
|
|
$("#selectedShowLeaverequests").css("display", "inline-flex");
|
|
$("#selectedShowLeaverequests").text(selectedCount + " -" + i18nMessages.selected);
|
|
} else {
|
|
$("#selectedShowLeaverequests").css("display", "none");
|
|
$("#exportLeaverequests").css("display", "none");
|
|
$("#unselectAllLeaverequests").css("display", "none");
|
|
}
|
|
}
|
|
|
|
function addingLeaverequestsIds() {
|
|
var ids = JSON.parse($("#selectedLeaverequests").attr("data-ids") || "[]");
|
|
var selectedCount = 0;
|
|
|
|
$(".all-leave-requests-row").each(function () {
|
|
if ($(this).is(":checked")) {
|
|
ids.push(this.id);
|
|
} else {
|
|
var index = ids.indexOf(this.id);
|
|
if (index > -1) {
|
|
ids.splice(index, 1);
|
|
}
|
|
}
|
|
});
|
|
|
|
ids = makeLeaverequestsListUnique(ids);
|
|
selectedCount = ids.length;
|
|
|
|
$("#selectedLeaverequests").attr("data-ids", JSON.stringify(ids));
|
|
if (selectedCount === 0) {
|
|
$("#selectedShowLeaverequests").css("display", "none");
|
|
$("#exportLeaverequests").css("display", "none");
|
|
$("#unselectAllLeaverequests").css("display", "none");
|
|
} else {
|
|
$("#unselectAllLeaverequests").css("display", "inline-flex");
|
|
$("#exportLeaverequests").css("display", "inline-flex");
|
|
$("#selectedShowLeaverequests").css("display", "inline-flex");
|
|
$("#selectedShowLeaverequests").text(selectedCount + " - " + i18nMessages.selected);
|
|
}
|
|
|
|
}
|
|
|
|
function selectAllLeaverequests() {
|
|
$("#selectedLeaverequests").attr("data-clicked", 1);
|
|
$("#selectedShowLeaverequests").removeAttr("style");
|
|
var savedFilters = JSON.parse(localStorage.getItem("savedFilters"));
|
|
|
|
if (savedFilters && savedFilters["filterData"] !== null) {
|
|
var filter = savedFilters["filterData"];
|
|
$.ajax({
|
|
url: "/leave/leave-request-select-filter",
|
|
data: { page: "all", filter: JSON.stringify(filter) },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", true);
|
|
}
|
|
$("#selectedLeaverequests").attr(
|
|
"data-ids",
|
|
JSON.stringify(employeeIds)
|
|
);
|
|
|
|
count = makeLeaverequestsListUnique(employeeIds);
|
|
tickLeaverequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
} else {
|
|
$.ajax({
|
|
url: "/leave/leave-request-select",
|
|
data: { page: "all" },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", true);
|
|
}
|
|
var previousIds = $("#selectedLeaverequests").attr("data-ids");
|
|
$("#selectedLeaverequests").attr(
|
|
"data-ids",
|
|
JSON.stringify(
|
|
Array.from(new Set([...employeeIds, ...JSON.parse(previousIds)]))
|
|
)
|
|
);
|
|
count = makeLeaverequestsListUnique(employeeIds);
|
|
tickLeaverequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
}
|
|
}
|
|
|
|
function unselectAllLeaverequests() {
|
|
$("#selectedLeaverequests").attr("data-clicked", 0);
|
|
$.ajax({
|
|
url: "/leave/leave-request-select",
|
|
data: { page: "all", filter: "{}" },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", false);
|
|
$(".all-leave-requests").prop("checked", false);
|
|
}
|
|
var ids = JSON.parse(
|
|
$("#selectedLeaverequests").attr("data-ids") || "[]"
|
|
);
|
|
uniqueIds = makeLeaverequestsListUnique(ids);
|
|
toggleHighlight(uniqueIds);
|
|
$("#selectedLeaverequests").attr("data-ids", JSON.stringify([]));
|
|
|
|
count = [];
|
|
tickLeaverequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
}
|
|
|
|
function exportLeaverequests() {
|
|
var currentDate = new Date().toISOString().slice(0, 10);
|
|
|
|
ids = [];
|
|
ids = JSON.parse($("#selectedLeaverequests").attr("data-ids"));
|
|
Swal.fire({
|
|
text: i18nMessages.downloadExcel,
|
|
icon: "question",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/leave/leave-requests-info-export",
|
|
data: {
|
|
ids: JSON.stringify(ids),
|
|
},
|
|
dataType: "binary",
|
|
xhrFields: {
|
|
responseType: "blob",
|
|
},
|
|
success: function (response) {
|
|
const file = new Blob([response], {
|
|
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
});
|
|
const url = URL.createObjectURL(file);
|
|
const link = document.createElement("a");
|
|
link.href = url;
|
|
link.download = "Leave_requests" + currentDate + ".xlsx";
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
},
|
|
error: function (xhr, textStatus, errorThrown) {
|
|
console.error("Error downloading file:", errorThrown);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function createLeaveReport() {
|
|
var currentDate = new Date().toISOString().slice(0, 10);
|
|
Swal.fire({
|
|
text: gettext("Do you wish to create a Leave Report?"),
|
|
icon: "question",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
$.ajax({
|
|
type: "GET",
|
|
url: "/leave/create-leave-report",
|
|
dataType: "binary",
|
|
xhrFields: {
|
|
responseType: "blob",
|
|
},
|
|
success: function (response) {
|
|
const file = new Blob([response], {
|
|
type: "application/pdf",
|
|
});
|
|
const url = URL.createObjectURL(file);
|
|
const link = document.createElement("a");
|
|
link.href = url;
|
|
link.download = "LeaveRequestReport" + currentDate + ".pdf";
|
|
document.body.appendChild(link);
|
|
link.click();
|
|
},
|
|
error: function (xhr, textStatus, errorThrown) {
|
|
console.error("Error downloading file:", errorThrown);
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#leaveRequestsBulkApprove").click(function (e) {
|
|
ids = JSON.parse($("#selectedLeaverequests").attr("data-ids"));
|
|
if (ids.length === 0) {
|
|
Swal.fire({
|
|
text: i18nMessages.noRowsSelected,
|
|
icon: "warning",
|
|
confirmButtonText: i18nMessages.close,
|
|
});
|
|
} else {
|
|
Swal.fire({
|
|
text: i18nMessages.confirmBulkApprove,
|
|
icon: "question",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
var hxVals = JSON.stringify(ids);
|
|
$("#bulkApproveSpan").attr("hx-vals", `{"ids":${hxVals}}`);
|
|
$("#bulkApproveSpan").click();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
$("#idBulkRejectReason").click(function (e) {
|
|
e.preventDefault();
|
|
ids = JSON.parse($("#selectedLeaverequests").attr("data-ids"));
|
|
var rejectReason = $("#id_reject_reason").val();
|
|
if (ids.length === 0) {
|
|
Swal.fire({
|
|
text: i18nMessages.noRowsSelected,
|
|
icon: "warning",
|
|
confirmButtonText: i18nMessages.close,
|
|
});
|
|
} else {
|
|
Swal.fire({
|
|
text: gettext("Do you want to reject the selected leave requests?"),
|
|
icon: "question",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
var data = JSON.stringify({ "request_ids": ids, "reason": rejectReason })
|
|
$("#bulkRejectSpan").attr("hx-vals", data);
|
|
$("#bulkRejectSpan").click();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
$("#leaveRequestBulkDelete").click(function (e) {
|
|
e.preventDefault();
|
|
ids = [];
|
|
ids.push($("#selectedLeaverequests").attr("data-ids"));
|
|
ids = JSON.parse($("#selectedLeaverequests").attr("data-ids"));
|
|
if (ids.length === 0) {
|
|
Swal.fire({
|
|
text: i18nMessages.noRowsSelected,
|
|
icon: "warning",
|
|
confirmButtonText: i18nMessages.close,
|
|
});
|
|
} else {
|
|
Swal.fire({
|
|
text: i18nMessages.confirmBulkDelete,
|
|
icon: "error",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
e.preventDefault();
|
|
ids = [];
|
|
ids.push($("#selectedLeaverequests").attr("data-ids"));
|
|
ids = JSON.parse($("#selectedLeaverequests").attr("data-ids"));
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/leave/leave-request-bulk-delete",
|
|
data: {
|
|
csrfmiddlewaretoken: getCookie("csrftoken"),
|
|
ids: JSON.stringify(ids),
|
|
},
|
|
success: function (response, textStatus, jqXHR) {
|
|
if (jqXHR.status === 200) {
|
|
location.reload();
|
|
} else {
|
|
}
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// ---------------------------------------
|
|
// USER LEAVE
|
|
// ---------------------------------------
|
|
|
|
function tickUserrequestsCheckboxes() {
|
|
var ids = JSON.parse($("#selectedUserrequests").attr("data-ids") || "[]");
|
|
uniqueIds = makeUserrequestsListUnique(ids);
|
|
toggleHighlight(uniqueIds);
|
|
click = $("#selectedUserrequests").attr("data-clicked");
|
|
if (click === "1") {
|
|
$(".all-user-requests").prop("checked", true);
|
|
}
|
|
uniqueIds.forEach(function (id) {
|
|
$("#" + id).prop("checked", true);
|
|
});
|
|
var selectedCount = uniqueIds.length;
|
|
if (selectedCount > 0) {
|
|
$("#unselectAllUserrequests").css("display", "inline-flex");
|
|
$("#exportUserrequests").css("display", "inline-flex");
|
|
$("#selectedShowUserrequests").css("display", "inline-flex");
|
|
$("#selectedShowUserrequests").text(selectedCount + " -" + i18nMessages.selected);
|
|
} else {
|
|
$("#unselectAllUserrequests").css("display", "none");
|
|
$("#exportUserrequests").css("display", "none");
|
|
$("#selectedShowUserrequests").css("display", "none");
|
|
}
|
|
}
|
|
|
|
function addingUserrequestsIds() {
|
|
var ids = JSON.parse($("#selectedUserrequests").attr("data-ids") || "[]");
|
|
var selectedCount = 0;
|
|
|
|
$(".all-user-requests-row").each(function () {
|
|
if ($(this).is(":checked")) {
|
|
ids.push(this.id);
|
|
} else {
|
|
var index = ids.indexOf(this.id);
|
|
if (index > -1) {
|
|
ids.splice(index, 1);
|
|
}
|
|
}
|
|
});
|
|
|
|
ids = makeUserrequestsListUnique(ids);
|
|
selectedCount = ids.length;
|
|
|
|
$("#selectedUserrequests").attr("data-ids", JSON.stringify(ids));
|
|
if (selectedCount === 0) {
|
|
$("#unselectAllUserrequests").css("display", "none");
|
|
$("#selectedShowUserrequests").css("display", "none");
|
|
$("#exportUserrequests").css("display", "none");
|
|
} else {
|
|
$("#exportUserrequests").css("display", "inline-flex");
|
|
$("#unselectAllUserrequests").css("display", "inline-flex");
|
|
$("#selectedShowUserrequests").css("display", "inline-flex");
|
|
$("#selectedShowUserrequests").text(selectedCount + " - " + i18nMessages.selected);
|
|
}
|
|
}
|
|
|
|
function selectAllUserrequests() {
|
|
$("#selectedUserrequests").attr("data-clicked", 1);
|
|
$("#selectedShowUserrequests").removeAttr("style");
|
|
var savedFilters = JSON.parse(localStorage.getItem("savedFilters"));
|
|
|
|
if (savedFilters && savedFilters["filterData"] !== null) {
|
|
var filter = savedFilters["filterData"];
|
|
$.ajax({
|
|
url: "/leave/user-request-select-filter",
|
|
data: { page: "all", filter: JSON.stringify(filter) },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", true);
|
|
}
|
|
$("#selectedUserrequests").attr(
|
|
"data-ids",
|
|
JSON.stringify(employeeIds)
|
|
);
|
|
|
|
count = makeUserrequestsListUnique(employeeIds);
|
|
tickUserrequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
} else {
|
|
$.ajax({
|
|
url: "/leave/user-request-select",
|
|
data: { page: "all" },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", true);
|
|
}
|
|
var previousIds = $("#selectedUserrequests").attr("data-ids");
|
|
$("#selectedUserrequests").attr(
|
|
"data-ids",
|
|
JSON.stringify(
|
|
Array.from(new Set([...employeeIds, ...JSON.parse(previousIds)]))
|
|
)
|
|
);
|
|
count = makeUserrequestsListUnique(employeeIds);
|
|
tickUserrequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
}
|
|
}
|
|
|
|
function unselectAllUserrequests() {
|
|
$("#selectedUserrequests").attr("data-clicked", 0);
|
|
$.ajax({
|
|
url: "/leave/user-request-select",
|
|
data: { page: "all", filter: "{}" },
|
|
type: "GET",
|
|
dataType: "json",
|
|
success: function (response) {
|
|
var employeeIds = response.employee_ids;
|
|
for (var i = 0; i < employeeIds.length; i++) {
|
|
var empId = employeeIds[i];
|
|
$("#" + empId).prop("checked", false);
|
|
$(".all-user-requests").prop("checked", false);
|
|
}
|
|
var ids = JSON.parse($("#selectedUserrequests").attr("data-ids") || "[]");
|
|
var uniqueIds = makeListUnique(ids);
|
|
toggleHighlight(uniqueIds);
|
|
$("#selectedUserrequests").attr("data-ids", JSON.stringify([]));
|
|
|
|
count = [];
|
|
tickUserrequestsCheckboxes(count);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
console.error("Error:", error);
|
|
},
|
|
});
|
|
}
|
|
|
|
$("#userrequestbulkDelete").click(function (e) {
|
|
e.preventDefault();
|
|
|
|
ids = [];
|
|
ids.push($("#selectedUserrequests").attr("data-ids"));
|
|
ids = JSON.parse($("#selectedUserrequests").attr("data-ids"));
|
|
if (ids.length === 0) {
|
|
Swal.fire({
|
|
text: i18nMessages.noRowsSelected,
|
|
icon: "warning",
|
|
confirmButtonText: i18nMessages.close,
|
|
});
|
|
} else {
|
|
Swal.fire({
|
|
text: i18nMessages.confirmBulkDelete,
|
|
icon: "error",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#008000",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: i18nMessages.confirm,
|
|
cancelButtonText: i18nMessages.cancel,
|
|
}).then(function (result) {
|
|
if (result.isConfirmed) {
|
|
e.preventDefault();
|
|
ids = [];
|
|
ids.push($("#selectedUserrequests").attr("data-ids"));
|
|
ids = JSON.parse($("#selectedUserrequests").attr("data-ids"));
|
|
$.ajax({
|
|
type: "POST",
|
|
url: "/leave/user-request-bulk-delete",
|
|
data: {
|
|
csrfmiddlewaretoken: getCookie("csrftoken"),
|
|
ids: JSON.stringify(ids),
|
|
},
|
|
success: function (response, textStatus, jqXHR) {
|
|
if (jqXHR.status === 200) {
|
|
location.reload();
|
|
} else {
|
|
}
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|