diff --git a/pms/static/src/feedback/action.js b/pms/static/src/feedback/action.js new file mode 100644 index 000000000..1de4aedb6 --- /dev/null +++ b/pms/static/src/feedback/action.js @@ -0,0 +1,244 @@ +var archiveMessages = { + ar: "هل ترغب حقاً في أرشفة كل التعليقات المحددة؟", + de: "Möchten Sie wirklich alle ausgewählten Rückmeldungen archivieren?", + es: "¿Realmente quieres archivar todas las retroalimentaciones seleccionadas?", + en: "Do you really want to archive all the selected feedbacks?", + fr: "Voulez-vous vraiment archiver tous les retours sélectionnés?", +}; + +var unarchiveMessages = { + ar: "هل ترغب حقاً في إلغاء الأرشفة عن كل التعليقات المحددة؟", + de: "Möchten Sie wirklich alle ausgewählten Rückmeldungen aus der Archivierung nehmen?", + es: "¿Realmente quieres desarchivar todas las retroalimentaciones seleccionadas?", + en: "Do you really want to unarchive all the selected feedbacks?", + fr: "Voulez-vous vraiment désarchiver tous les retours sélectionnés?", +}; + +var deleteMessages = { + ar: "هل ترغب حقاً في حذف كل التعليقات المحددة؟", + de: "Möchten Sie wirklich alle ausgewählten Rückmeldungen löschen?", + es: "¿Realmente quieres eliminar todas las retroalimentaciones seleccionadas?", + en: "Do you really want to delete all the selected feedbacks?", + fr: "Voulez-vous vraiment supprimer tous les retours sélectionnés?", +}; + +var norowMessages = { + ar: "لم يتم تحديد أي صفوف.", + de: "Es wurden keine Zeilen ausgewählt.", + es: "No se han seleccionado filas.", + en: "No rows have been selected.", + fr: "Aucune ligne n'a été sélectionnée.", +}; + + + $(".all-feedbacks").change(function (e) { + var is_checked = $(this).is(":checked"); + if (is_checked) { + $(".all-feedback-row").prop("checked", true); + } else { + $(".all-feedback-row").prop("checked", false); + } + }); + + $(".self-feedbacks").change(function (e) { + var is_checked = $(this).is(":checked"); + if (is_checked) { + $(".self-feedback-row").prop("checked", true); + } else { + $(".self-feedback-row").prop("checked", false); + } + }); + + $(".requested-feedbacks").change(function (e) { + var is_checked = $(this).is(":checked"); + if (is_checked) { + $(".requested-feedback-row").prop("checked", true); + } else { + $(".requested-feedback-row").prop("checked", false); + } +}); + + function getCookie(name) { + let cookieValue = null; + if (document.cookie && document.cookie !== "") { + const cookies = document.cookie.split(";"); + for (let i = 0; i < cookies.length; i++) { + const cookie = cookies[i].trim(); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === name + "=") { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; + } + + function getCurrentLanguageCode(callback) { + $.ajax({ + type: "GET", + url: "/employee/get-language-code/", + success: function (response) { + var languageCode = response.language_code; + callback(languageCode); // Pass the language code to the callback + }, + }); + } + + $("#archiveFeedback").click(function (e) { + e.preventDefault(); + + var languageCode = null; + getCurrentLanguageCode(function (code) { + languageCode = code; + var confirmMessage = archiveMessages[languageCode]; + var textMessage = norowMessages[languageCode]; + var checkedRows = $(".feedback-checkbox").filter(":checked"); + if (checkedRows.length === 0) { + Swal.fire({ + text: textMessage, + icon: "warning", + confirmButtonText: "Close", + }); + } else { + Swal.fire({ + text: confirmMessage, + icon: "info", + showCancelButton: true, + confirmButtonColor: "#008000", + cancelButtonColor: "#d33", + confirmButtonText: "Confirm", + }).then(function (result) { + if (result.isConfirmed) { + e.preventDefault(); + ids = []; + checkedRows.each(function () { + ids.push($(this).attr("id")); + }); + + $.ajax({ + type: "POST", + url: "/pms/feedback-bulk-archive?is_active=False", + data: { + csrfmiddlewaretoken: getCookie("csrftoken"), + ids: JSON.stringify(ids), + }, + success: function (response, textStatus, jqXHR) { + if (jqXHR.status === 200) { + location.reload(); // Reload the current page + } else { + // console.log("Unexpected HTTP status:", jqXHR.status); + } + }, + }); + } + }); + } + }); + }); + + $("#unArchiveFeedback").click(function (e) { + e.preventDefault(); + + var languageCode = null; + getCurrentLanguageCode(function (code) { + languageCode = code; + var confirmMessage = unarchiveMessages[languageCode]; + var textMessage = norowMessages[languageCode]; + var checkedRows = $(".feedback-checkbox").filter(":checked"); + if (checkedRows.length === 0) { + Swal.fire({ + text: textMessage, + icon: "warning", + confirmButtonText: "Close", + }); + } else { + Swal.fire({ + text: confirmMessage, + icon: "info", + showCancelButton: true, + confirmButtonColor: "#008000", + cancelButtonColor: "#d33", + confirmButtonText: "Confirm", + }).then(function (result) { + if (result.isConfirmed) { + e.preventDefault(); + ids = []; + checkedRows.each(function () { + ids.push($(this).attr("id")); + }); + + $.ajax({ + type: "POST", + url: "/pms/feedback-bulk-archive?is_active=True", + data: { + csrfmiddlewaretoken: getCookie("csrftoken"), + ids: JSON.stringify(ids), + }, + success: function (response, textStatus, jqXHR) { + if (jqXHR.status === 200) { + location.reload(); // Reload the current page + } else { + // console.log("Unexpected HTTP status:", jqXHR.status); + } + }, + }); + } + }); + } + }); + }); + + $("#deleteFeedback").click(function (e) { + e.preventDefault(); + + var languageCode = null; + getCurrentLanguageCode(function (code) { + languageCode = code; + var confirmMessage = deleteMessages[languageCode]; + var textMessage = norowMessages[languageCode]; + var checkedRows = $(".feedback-checkbox").filter(":checked"); + if (checkedRows.length === 0) { + Swal.fire({ + text: textMessage, + icon: "warning", + confirmButtonText: "Close", + }); + } else { + Swal.fire({ + text: confirmMessage, + icon: "error", + showCancelButton: true, + confirmButtonColor: "#008000", + cancelButtonColor: "#d33", + confirmButtonText: "Confirm", + }).then(function (result) { + if (result.isConfirmed) { + e.preventDefault(); + ids = []; + checkedRows.each(function () { + ids.push($(this).attr("id")); + }); + + $.ajax({ + type: "POST", + url: "/pms/feedback-bulk-delete", + data: { + csrfmiddlewaretoken: getCookie("csrftoken"), + ids: JSON.stringify(ids), + }, + success: function (response, textStatus, jqXHR) { + if (jqXHR.status === 200) { + location.reload(); // Reload the current page + } else { + // console.log("Unexpected HTTP status:", jqXHR.status); + } + }, + }); + + } + }); + } + }); + }); + \ No newline at end of file diff --git a/pms/static/src/okr/action.js b/pms/static/src/okr/action.js index 6e36336d0..51c6f0941 100644 --- a/pms/static/src/okr/action.js +++ b/pms/static/src/okr/action.js @@ -84,10 +84,7 @@ $("#archiveObjectives").click(function (e) { languageCode = code; var confirmMessage = archiveMessages[languageCode]; var textMessage = norowMessages[languageCode]; - var checkedRows = $(".all-objects-row").filter(":checked"); - if (checkedRows.length === 0) { - var checkedRows = $(".own-objects-row").filter(":checked"); - } + var checkedRows = $(".objective-checkbox").filter(":checked"); if (checkedRows.length === 0) { Swal.fire({ text: textMessage, @@ -139,10 +136,7 @@ $("#unArchiveObjectives").click(function (e) { languageCode = code; var confirmMessage = unarchiveMessages[languageCode]; var textMessage = norowMessages[languageCode]; - var checkedRows = $(".all-objects-row").filter(":checked"); - if (checkedRows.length === 0) { - var checkedRows = $(".own-objects-row").filter(":checked"); - } + var checkedRows = $(".objective-checkbox").filter(":checked"); if (checkedRows.length === 0) { Swal.fire({ text: textMessage, @@ -194,10 +188,7 @@ $("#deleteObjectives").click(function (e) { languageCode = code; var confirmMessage = deleteMessages[languageCode]; var textMessage = norowMessages[languageCode]; - var checkedRows = $(".all-objects-row").filter(":checked"); - if (checkedRows.length === 0) { - var checkedRows = $(".own-objects-row").filter(":checked"); - } + var checkedRows = $(".objective-checkbox").filter(":checked"); if (checkedRows.length === 0) { Swal.fire({ text: textMessage, diff --git a/pms/templates/feedback/feedback_list.html b/pms/templates/feedback/feedback_list.html index e11b2f595..d2da273e0 100644 --- a/pms/templates/feedback/feedback_list.html +++ b/pms/templates/feedback/feedback_list.html @@ -1,5 +1,6 @@ {% load i18n %} {% load basefilters %} +{% load static %} {% if messages %}