diff --git a/leave/static/leave_request/action.js b/leave/static/leave_request/action.js index 26c2edf49..95006307d 100644 --- a/leave/static/leave_request/action.js +++ b/leave/static/leave_request/action.js @@ -38,11 +38,11 @@ var rejectLeaveRequests = { fr: "Vous souhaitez rejeter les demandes de congés sélectionnées ?", }; -var noRowMessages = { +var noRowLeaveMessages = { ar: "لم يتم تحديد أي صفوف.", de: "Es wurden keine Zeilen ausgewählt.", es: "No se han seleccionado filas.", - en: "No rows have been selected.", + en: "No rows have been selected to delete", fr: "Aucune ligne n'a été sélectionnée.", }; @@ -304,7 +304,7 @@ $("#leaveRequestsBulkApprove").click(function (e) { getCurrentLanguageCode(function (code) { languageCode = code; var confirmMessage = approveLeaveRequests[languageCode]; - var textMessage = noRowMessages[languageCode]; + var textMessage = noRowLeaveMessages[languageCode]; ids = JSON.parse($("#selectedLeaverequests").attr("data-ids")); if (ids.length === 0) { Swal.fire({ @@ -338,7 +338,7 @@ $("#idBulkRejectReason").click(function (e) { getCurrentLanguageCode(function (code) { languageCode = code; var confirmMessage = rejectLeaveRequests[languageCode]; - var textMessage = noRowMessages[languageCode]; + var textMessage = noRowLeaveMessages[languageCode]; ids = JSON.parse($("#selectedLeaverequests").attr("data-ids")); var rejectReason = $("#id_reject_reason").val(); if (ids.length === 0) { @@ -366,13 +366,13 @@ $("#idBulkRejectReason").click(function (e) { }); }); -$("#leaverequestbulkDelete").click(function (e) { +$("#leaveRequestBulkDelete").click(function (e) { e.preventDefault(); var languageCode = null; getCurrentLanguageCode(function (code) { languageCode = code; var confirmMessage = deleteLeaveRequestMessages[languageCode]; - var textMessage = noRowMessages[languageCode]; + var textMessage = noRowLeaveMessages[languageCode]; ids = []; ids.push($("#selectedLeaverequests").attr("data-ids")); ids = JSON.parse($("#selectedLeaverequests").attr("data-ids")); @@ -576,7 +576,7 @@ $("#userrequestbulkDelete").click(function (e) { getCurrentLanguageCode(function (code) { languageCode = code; var confirmMessage = deleteLeaveRequestMessages[languageCode]; - var textMessage = noRowMessages[languageCode]; + var textMessage = noRowLeaveMessages[languageCode]; ids = []; ids.push($("#selectedUserrequests").attr("data-ids")); ids = JSON.parse($("#selectedUserrequests").attr("data-ids")); diff --git a/leave/static/restrict_days/action.js b/leave/static/restrict_days/action.js index c9bd2bc83..753c93d3d 100644 --- a/leave/static/restrict_days/action.js +++ b/leave/static/restrict_days/action.js @@ -1,267 +1,273 @@ var rowMessages = { - ar: " تم الاختيار", - de: " Ausgewählt", - es: " Seleccionado", - en: " Selected", - fr: " Sélectionné", + ar: " تم الاختيار", + de: " Ausgewählt", + es: " Seleccionado", + en: " Selected", + fr: " Sélectionné", }; var deleteDaysMessages = { - ar: "هل تريد حقًا حذف جميع العطل المحددة؟", - de: "Möchten Sie wirklich alle ausgewählten Feiertage löschen?", - es: "¿Realmente quieres eliminar todas las vacaciones seleccionadas?", - en: "Do you really want to delete all the selected restrict days?", - fr: "Voulez-vous vraiment supprimer toutes les vacances sélectionnées?", + ar: "هل تريد حقًا حذف جميع العطل المحددة؟", + de: "Möchten Sie wirklich alle ausgewählten Feiertage löschen?", + es: "¿Realmente quieres eliminar todas las vacaciones seleccionadas?", + en: "Do you really want to delete all the selected restrict days?", + fr: "Voulez-vous vraiment supprimer toutes les vacances sélectionnées?", }; var noRowsDeleteMessages = { - ar: "لم تتم تحديد صفوف لحذف العطلات.", - de: "Es wurden keine Zeilen zum Löschen von Feiertagen ausgewählt.", - es: "No se han seleccionado filas para eliminar las vacaciones.", - en: "No rows are selected for deleting restrict days.", - fr: "Aucune ligne n'a été sélectionnée pour supprimer les vacances.", + ar: "لم تتم تحديد صفوف لحذف العطلات.", + de: "Es wurden keine Zeilen zum Löschen von Feiertagen ausgewählt.", + es: "No se han seleccionado filas para eliminar las vacaciones.", + en: "No rows are selected for deleting restrict days.", + fr: "Aucune ligne n'a été sélectionnée pour supprimer les vacances.", }; function getCurrentLanguageCode(callback) { - var languageCode = $("#main-section-data").attr("data-lang"); - var allowedLanguageCodes = ["ar", "de", "es", "en", "fr"]; - if (allowedLanguageCodes.includes(languageCode)) { - callback(languageCode); - } else { - $.ajax({ - type: "GET", - url: "/employee/get-language-code/", - success: function (response) { - var ajaxLanguageCode = response.language_code; - $("#main-section-data").attr("data-lang", ajaxLanguageCode); - callback( - allowedLanguageCodes.includes(ajaxLanguageCode) - ? ajaxLanguageCode - : "en" - ); - }, - error: function () { - callback("en"); - }, - }); - } + var languageCode = $("#main-section-data").attr("data-lang"); + var allowedLanguageCodes = ["ar", "de", "es", "en", "fr"]; + if (allowedLanguageCodes.includes(languageCode)) { + callback(languageCode); + } else { + $.ajax({ + type: "GET", + url: "/employee/get-language-code/", + success: function (response) { + var ajaxLanguageCode = response.language_code; + $("#main-section-data").attr("data-lang", ajaxLanguageCode); + callback( + allowedLanguageCodes.includes(ajaxLanguageCode) + ? ajaxLanguageCode + : "en" + ); + }, + error: function () { + callback("en"); + }, + }); + } } function makeDaysListUnique(list) { - return Array.from(new Set(list)); + return Array.from(new Set(list)); } function tickRestrictDaysCheckboxes() { - var ids = JSON.parse($("#selectedRestrictDays").attr("data-ids") || "[]"); - uniqueIds = makeDaysListUnique(ids); - toggleHighlight(uniqueIds); - click = $("#selectedRestrictDays").attr("data-clicked"); - if (click === "1") { - $(".all-restrict-days").prop("checked", true); - } - uniqueIds.forEach(function (id) { - $("#" + id).prop("checked", true); - }); - var selectedCount = uniqueIds.length; - getCurrentLanguageCode(function (code) { - languageCode = code; - var message = rowMessages[languageCode]; - if (selectedCount > 0) { - $("#unselectAllRestrictDays").css("display", "inline-flex"); - // $("#exportRestrictDays").css("display", "inline-flex"); - $("#showSelectedDays").css("display", "inline-flex"); - $("#showSelectedDays").text(selectedCount + " -" + message); - } else { - $("#unselectAllRestrictDays").css("display", "none "); - $("#showSelectedDays").css("display", "none"); - // $("#exportRestrictDays").css("display", "none"); + var ids = JSON.parse($("#selectedRestrictDays").attr("data-ids") || "[]"); + uniqueIds = makeDaysListUnique(ids); + toggleHighlight(uniqueIds); + click = $("#selectedRestrictDays").attr("data-clicked"); + if (click === "1") { + $(".all-restrict-days").prop("checked", true); } - }); + uniqueIds.forEach(function (id) { + $("#" + id).prop("checked", true); + }); + var selectedCount = uniqueIds.length; + getCurrentLanguageCode(function (code) { + languageCode = code; + var message = rowMessages[languageCode]; + if (selectedCount > 0) { + $("#unselectAllRestrictDays").css("display", "inline-flex"); + // $("#exportRestrictDays").css("display", "inline-flex"); + $("#showSelectedDays").css("display", "inline-flex"); + $("#showSelectedDays").text(selectedCount + " -" + message); + } else { + $("#unselectAllRestrictDays").css("display", "none "); + $("#showSelectedDays").css("display", "none"); + // $("#exportRestrictDays").css("display", "none"); + } + }); } function addingRestrictDayIds() { - var ids = JSON.parse($("#selectedRestrictDays").attr("data-ids") || "[]"); - var selectedCount = 0; - $(".all-restrict-days-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); - $(".all-restrict-days").prop("checked", false); - } - } - }); - ids = makeDaysListUnique(ids); - toggleHighlight(ids); - selectedCount = ids.length; - getCurrentLanguageCode(function (code) { - languageCode = code; - var message = rowMessages[languageCode]; - $("#selectedRestrictDays").attr("data-ids", JSON.stringify(ids)); - if (selectedCount === 0) { - $("#showSelectedDays").css("display", "none"); - // $("#exportRestrictDays").css("display", "none"); - $("#unselectAllRestrictDays").css("display", "none"); - } else { - $("#unselectAllRestrictDays").css("display", "inline-flex"); - // $("#exportRestrictDays").css("display", "inline-flex"); - $("#showSelectedDays").css("display", "inline-flex"); - $("#showSelectedDays").text(selectedCount + " - " + message); - } - }); + var ids = JSON.parse($("#selectedRestrictDays").attr("data-ids") || "[]"); + var selectedCount = 0; + $(".all-restrict-days-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); + $(".all-restrict-days").prop("checked", false); + } + } + }); + ids = makeDaysListUnique(ids); + toggleHighlight(ids); + selectedCount = ids.length; + getCurrentLanguageCode(function (code) { + languageCode = code; + var message = rowMessages[languageCode]; + $("#selectedRestrictDays").attr("data-ids", JSON.stringify(ids)); + if (selectedCount === 0) { + $("#showSelectedDays").css("display", "none"); + // $("#exportRestrictDays").css("display", "none"); + $("#unselectAllRestrictDays").css("display", "none"); + } else { + $("#unselectAllRestrictDays").css("display", "inline-flex"); + // $("#exportRestrictDays").css("display", "inline-flex"); + $("#showSelectedDays").css("display", "inline-flex"); + $("#showSelectedDays").text(selectedCount + " - " + message); + } + }); } function updateParentCheckbox() { - var parentTable = $(this).closest(".oh-sticky-table"); - var body = parentTable.find(".oh-sticky-table__tbody"); - var parentCheckbox = parentTable.find(".all-restrict-days"); - parentCheckbox.prop( - "checked", - body.find(".all-restrict-days-row:checked").length === - body.find(".all-restrict-days-row").length - ); - addingRestrictDayIds(); + var parentTable = $(this).closest(".oh-sticky-table"); + var body = parentTable.find(".oh-sticky-table__tbody"); + var parentCheckbox = parentTable.find(".all-restrict-days"); + parentCheckbox.prop( + "checked", + body.find(".all-restrict-days-row:checked").length === + body.find(".all-restrict-days-row").length + ); + addingRestrictDayIds(); } function toggleAllCheckboxes(e) { - var is_checked = $(this).is(":checked"); - if (is_checked) { - $(".all-restrict-days-row") - .prop("checked", true) - .closest(".oh-sticky-table__tr") - .addClass("highlight-selected"); - } else { - $(".all-restrict-days-row") - .prop("checked", false) - .closest(".oh-sticky-table__tr") - .removeClass("highlight-selected"); - } - addingRestrictDayIds(); + var is_checked = $(this).is(":checked"); + if (is_checked) { + $(".all-restrict-days-row") + .prop("checked", true) + .closest(".oh-sticky-table__tr") + .addClass("highlight-selected"); + } else { + $(".all-restrict-days-row") + .prop("checked", false) + .closest(".oh-sticky-table__tr") + .removeClass("highlight-selected"); + } + addingRestrictDayIds(); } function selectAllRestrictDays() { - $("#selectedRestrictDays").attr("data-clicked", 1); - $("#showSelectedDays").removeAttr("style"); - var savedFilters = JSON.parse(localStorage.getItem("savedFilters")); - var ajaxData = - savedFilters && savedFilters["filterData"] - ? { page: "all", filter: JSON.stringify(savedFilters["filterData"]) } - : { page: "all" }; - var ajaxUrl = - savedFilters && savedFilters["filterData"] - ? "/leave/restrict-day-select-filter" - : "/leave/restrict-day-select"; + $("#selectedRestrictDays").attr("data-clicked", 1); + $("#showSelectedDays").removeAttr("style"); + var savedFilters = JSON.parse(localStorage.getItem("savedFilters")); + var ajaxData = + savedFilters && savedFilters["filterData"] + ? { page: "all", filter: JSON.stringify(savedFilters["filterData"]) } + : { page: "all" }; + var ajaxUrl = + savedFilters && savedFilters["filterData"] + ? "/leave/restrict-day-select-filter" + : "/leave/restrict-day-select"; - $.ajax({ - url: ajaxUrl, - data: ajaxData, - type: "GET", - dataType: "json", - success: function (response) { - var restrictDayIds = response.restrict_day_ids; + $.ajax({ + url: ajaxUrl, + data: ajaxData, + type: "GET", + dataType: "json", + success: function (response) { + var restrictDayIds = response.restrict_day_ids; - if (!Array.isArray(restrictDayIds)) { - console.error("restrictDayIds is not an array:", restrictDayIds); - return; - } + if (!Array.isArray(restrictDayIds)) { + console.error("restrictDayIds is not an array:", restrictDayIds); + return; + } - restrictDayIds.forEach(function (dayId) { - $("#" + dayId).prop("checked", true); - }); + restrictDayIds.forEach(function (dayId) { + $("#" + dayId).prop("checked", true); + }); - var previousIds = $("#selectedRestrictDays").attr("data-ids") || "[]"; - var allIds = Array.from( - new Set([...restrictDayIds, ...JSON.parse(previousIds)]) - ); + var previousIds = $("#selectedRestrictDays").attr("data-ids") || "[]"; + var allIds = Array.from( + new Set([...restrictDayIds, ...JSON.parse(previousIds)]) + ); - $("#selectedRestrictDays").attr("data-ids", JSON.stringify(allIds)); + $("#selectedRestrictDays").attr("data-ids", JSON.stringify(allIds)); - var count = makeDaysListUnique(restrictDayIds); - tickRestrictDaysCheckboxes(count); - }, - error: function (xhr, status, error) { - console.error("Error:", error); - }, - }); + var count = makeDaysListUnique(restrictDayIds); + tickRestrictDaysCheckboxes(count); + }, + error: function (xhr, status, error) { + console.error("Error:", error); + }, + }); } function unselectAllRestrictDays() { - $("#selectedRestrictDays").attr("data-clicked", 0); + $("#selectedRestrictDays").attr("data-clicked", 0); - var savedFilters = JSON.parse(localStorage.getItem("savedFilters")); - var ajaxData = - savedFilters && savedFilters["filterData"] - ? { page: "all", filter: JSON.stringify(savedFilters["filterData"]) } - : { page: "all" }; - var ajaxUrl = - savedFilters && savedFilters["filterData"] - ? "/leave/restrict-day-select-filter" - : "/leave/restrict-day-select"; + var savedFilters = JSON.parse(localStorage.getItem("savedFilters")); + var ajaxData = + savedFilters && savedFilters["filterData"] + ? { page: "all", filter: JSON.stringify(savedFilters["filterData"]) } + : { page: "all" }; + var ajaxUrl = + savedFilters && savedFilters["filterData"] + ? "/leave/restrict-day-select-filter" + : "/leave/restrict-day-select"; - $.ajax({ - url: ajaxUrl, - data: ajaxData, - type: "GET", - dataType: "json", - success: function (response) { - var restrictDayIds = response.restrict_day_ids; - if (!Array.isArray(restrictDayIds)) { - console.error("restrict_day_ids is not an array:", restrictDayIds); - return; - } + $.ajax({ + url: ajaxUrl, + data: ajaxData, + type: "GET", + dataType: "json", + success: function (response) { + var restrictDayIds = response.restrict_day_ids; + if (!Array.isArray(restrictDayIds)) { + console.error("restrict_day_ids is not an array:", restrictDayIds); + return; + } - restrictDayIds.forEach(function (dayId) { - $("#" + dayId) - .prop("checked", false) - .closest(".oh-sticky-table__tr") - .removeClass("highlight-selected"); - }); - $(".all-restrict-days").prop("checked", false); + restrictDayIds.forEach(function (dayId) { + $("#" + dayId) + .prop("checked", false) + .closest(".oh-sticky-table__tr") + .removeClass("highlight-selected"); + }); + $(".all-restrict-days").prop("checked", false); - var previousIds = $("#selectedRestrictDays").attr("data-ids") || "[]"; - var remainingIds = JSON.parse(previousIds).filter( - (id) => !restrictDayIds.includes(id) - ); + var previousIds = $("#selectedRestrictDays").attr("data-ids") || "[]"; + var remainingIds = JSON.parse(previousIds).filter( + (id) => !restrictDayIds.includes(id) + ); - $("#selectedRestrictDays").attr("data-ids", JSON.stringify(remainingIds)); + $("#selectedRestrictDays").attr("data-ids", JSON.stringify(remainingIds)); - var count = makeDaysListUnique(remainingIds); - tickRestrictDaysCheckboxes(count); - }, - error: function (xhr, status, error) { - console.error("Error:", error); - }, - }); + var count = makeDaysListUnique(remainingIds); + tickRestrictDaysCheckboxes(count); + }, + error: function (xhr, status, error) { + console.error("Error:", error); + }, + }); } $("#bulkRestrictedDaysDelete").click(function (e) { - var languageCode = null; - getCurrentLanguageCode(function (code) { - languageCode = code; - var confirmMessage = deleteDaysMessages[languageCode]; - var textMessage = noRowsDeleteMessages[languageCode]; - ids = JSON.parse($("#selectedRestrictDays").attr("data-ids")); - if (ids.length === 0) { - Swal.fire({ - text: textMessage, - icon: "warning", - confirmButtonText: "Close", - }); - } else { - Swal.fire({ - text: confirmMessage, - icon: "question", - showCancelButton: true, - confirmButtonColor: "#008000", - cancelButtonColor: "#d33", - confirmButtonText: "Confirm", - }).then(function (result) { - if (result.isConfirmed) { - var hxVals = JSON.stringify(ids); - $("#bulkDeleteSpan").attr("hx-vals", `{"ids":${hxVals}}`); - $("#bulkDeleteSpan").click(); + var languageCode = null; + getCurrentLanguageCode(function (code) { + languageCode = code; + var confirmMessage = deleteDaysMessages[languageCode]; + var textMessage = noRowsDeleteMessages[languageCode]; + try { + var ids = JSON.parse($("#selectedRestrictDays").attr("data-ids")); + } catch (e) { + + var ids = []; } - }); - } - }); + if (ids.length === 0) { + Swal.fire({ + text: textMessage, + icon: "warning", + confirmButtonText: "Close", + }); + } else { + Swal.fire({ + text: confirmMessage, + icon: "question", + showCancelButton: true, + confirmButtonColor: "#008000", + cancelButtonColor: "#d33", + confirmButtonText: "Confirm", + }).then(function (result) { + if (result.isConfirmed) { + var hxVals = JSON.stringify(ids); + $("#bulkDeleteSpan").attr("hx-vals", `{"ids":${hxVals}}`); + $("#bulkDeleteSpan").click(); + $("#selectedRestrictDays").attr("data-ids", ""); + } + }); + } + }); }); diff --git a/leave/templates/leave/leave_assign/assign_view.html b/leave/templates/leave/leave_assign/assign_view.html index 36436300e..3997208a5 100644 --- a/leave/templates/leave/leave_assign/assign_view.html +++ b/leave/templates/leave/leave_assign/assign_view.html @@ -222,6 +222,7 @@ {% trans "Delete" %} diff --git a/leave/templates/leave/leave_request/request_view.html b/leave/templates/leave/leave_request/request_view.html index 4c8db016c..a4eac8f57 100644 --- a/leave/templates/leave/leave_request/request_view.html +++ b/leave/templates/leave/leave_request/request_view.html @@ -152,7 +152,7 @@ {% if perms.leave.delete_leaverequest or request.user|is_reportingmanager %}
-
+