|
1 | | -document.addEventListener("DOMContentLoaded", function() { |
2 | | - const modal = document.getElementById("deleteConfirmationModal"); |
3 | | - const confirmDeleteBtn = document.getElementById("confirmDeleteBtn"); |
4 | | - const cancelDeleteBtn = document.getElementById("cancelDeleteBtn"); |
5 | | - const closeBtn = modal.querySelector(".modal-close-btn"); |
6 | | - const gameNameElement = document.getElementById("gameNameToDelete"); |
7 | | - const noGamesMessage = document.getElementById("no-games-message"); |
8 | | - const gamesGrid = document.querySelector(".my-saved-games-grid"); |
| 1 | +document.addEventListener('DOMContentLoaded', function () { |
| 2 | + const modal = document.getElementById('deleteConfirmationModal'); |
| 3 | + const confirmDeleteBtn = document.getElementById('confirmDeleteBtn'); |
| 4 | + const cancelDeleteBtn = document.getElementById('cancelDeleteBtn'); |
| 5 | + const closeBtn = modal.querySelector('.modal-close-btn'); |
| 6 | + const gameNameElement = document.getElementById('gameNameToDelete'); |
| 7 | + const noGamesMessage = document.getElementById('no-games-message'); |
| 8 | + const gamesGrid = document.querySelector('.my-saved-games-grid'); |
9 | 9 |
|
10 | 10 | let gameIdToDelete = null; |
11 | 11 | let gameCardElementToDelete = null; |
12 | 12 |
|
13 | 13 | // Функция для получения CSRF-токена |
14 | 14 | function getCookie(name) { |
15 | 15 | let cookieValue = null; |
16 | | - if (document.cookie && document.cookie !== "") { |
17 | | - const cookies = document.cookie.split(";"); |
| 16 | + if (document.cookie && document.cookie !== '') { |
| 17 | + const cookies = document.cookie.split(';'); |
18 | 18 | for (let i = 0; i < cookies.length; i++) { |
19 | 19 | const cookie = cookies[i].trim(); |
20 | | - if (cookie.substring(0, name.length + 1) === name + "=") { |
| 20 | + if (cookie.substring(0, name.length + 1) === (name + '=')) { |
21 | 21 | cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); |
22 | 22 | break; |
23 | 23 | } |
24 | 24 | } |
25 | 25 | } |
26 | 26 | return cookieValue; |
27 | 27 | } |
28 | | - const csrftoken = getCookie("csrftoken"); |
| 28 | + const csrftoken = getCookie('csrftoken'); |
29 | 29 |
|
30 | 30 | // Открытие модального окна |
31 | | - document.querySelectorAll(".delete-game-btn").forEach((button) => { |
32 | | - button.addEventListener("click", function(event) { |
| 31 | + document.querySelectorAll('.delete-game-btn').forEach(button => { |
| 32 | + button.addEventListener('click', function (event) { |
33 | 33 | event.preventDefault(); |
34 | 34 | event.stopPropagation(); |
35 | 35 |
|
36 | 36 | gameIdToDelete = this.dataset.gameId; |
37 | | - gameCardElementToDelete = this.closest(".saved-game-item-wrapper"); |
| 37 | + gameCardElementToDelete = this.closest('.saved-game-item-wrapper'); |
38 | 38 |
|
39 | | - const titleElement = gameCardElementToDelete.querySelector( |
40 | | - ".saved-game-card__title" |
41 | | - ); |
42 | | - gameNameElement.textContent = titleElement ? |
43 | | - titleElement.textContent.trim() : |
44 | | - "эту игру"; |
45 | | - |
46 | | - modal.style.display = "flex"; |
| 39 | + const titleElement = gameCardElementToDelete.querySelector('.saved-game-card__title'); |
| 40 | + gameNameElement.textContent = titleElement ? titleElement.textContent.trim() : 'эту игру'; |
| 41 | + |
| 42 | + modal.style.display = 'flex'; |
47 | 43 | }); |
48 | 44 | }); |
49 | 45 |
|
50 | 46 | // Закрытие модального окна |
51 | 47 | function closeModal() { |
52 | | - modal.style.display = "none"; |
| 48 | + modal.style.display = 'none'; |
53 | 49 | gameIdToDelete = null; |
54 | 50 | gameCardElementToDelete = null; |
55 | 51 | } |
56 | 52 |
|
57 | | - if (cancelDeleteBtn) cancelDeleteBtn.addEventListener("click", closeModal); |
58 | | - if (closeBtn) closeBtn.addEventListener("click", closeModal); |
59 | | - window.addEventListener("click", function(event) { |
| 53 | + if (cancelDeleteBtn) cancelDeleteBtn.addEventListener('click', closeModal); |
| 54 | + if (closeBtn) closeBtn.addEventListener('click', closeModal); |
| 55 | + window.addEventListener('click', function (event) { |
60 | 56 | if (event.target === modal) { |
61 | 57 | closeModal(); |
62 | 58 | } |
63 | 59 | }); |
64 | 60 |
|
65 | 61 | // Подтверждение удаления |
66 | 62 | if (confirmDeleteBtn) { |
67 | | - confirmDeleteBtn.addEventListener("click", function() { |
| 63 | + confirmDeleteBtn.addEventListener('click', function () { |
68 | 64 | if (!gameIdToDelete || !gameCardElementToDelete) return; |
69 | 65 |
|
70 | | - const deleteUrl = `/games/delete/${gameIdToDelete}/`; |
| 66 | + const deleteUrl = `/games/delete/${gameIdToDelete}/`; |
71 | 67 |
|
72 | 68 | fetch(deleteUrl, { |
73 | | - method: "DELETE", |
74 | | - headers: { |
75 | | - "X-CSRFToken": csrftoken, |
76 | | - }, |
77 | | - }) |
78 | | - .then((response) => { |
79 | | - if (response.ok) { |
80 | | - if (response.status === 204) { |
81 | | - return Promise.resolve({ |
82 | | - status: "success", |
83 | | - message: "Игра успешно удалена (204).", |
84 | | - }); |
85 | | - } |
86 | | - return response.json(); |
87 | | - } |
88 | | - return response.json().then((err) => { |
89 | | - throw new Error(err.message || "Не удалось удалить игру."); |
90 | | - }); |
91 | | - }) |
92 | | - .then((data) => { |
93 | | - if (data.status === "success") { |
94 | | - gameCardElementToDelete.remove(); |
95 | | - checkIfGamesExist(); |
96 | | - console.log(data.message || "Игра успешно удалена."); |
97 | | - closeModal(); |
98 | | - } else { |
99 | | - throw new Error( |
100 | | - data.message || "Ошибка при удалении игры на сервере." |
101 | | - ); |
| 69 | + method: 'DELETE', |
| 70 | + headers: { |
| 71 | + 'X-CSRFToken': csrftoken |
| 72 | + }, |
| 73 | + }) |
| 74 | + .then(response => { |
| 75 | + if (response.ok) { |
| 76 | + if (response.status === 204) { |
| 77 | + return Promise.resolve({ status: 'success', message: 'Игра успешно удалена (204).' }); |
102 | 78 | } |
103 | | - }) |
104 | | - .catch((error) => { |
105 | | - console.error("Ошибка при удалении игры:", error); |
106 | | - alert(`Ошибка: ${error.message}`); |
| 79 | + return response.json(); |
| 80 | + } |
| 81 | + return response.json().then(err => { throw new Error(err.message || 'Не удалось удалить игру.') }); |
| 82 | + }) |
| 83 | + .then(data => { |
| 84 | + if (data.status === 'success') { |
| 85 | + gameCardElementToDelete.remove(); |
| 86 | + checkIfGamesExist(); |
| 87 | + console.log(data.message || 'Игра успешно удалена.'); |
107 | 88 | closeModal(); |
108 | | - }); |
| 89 | + } else { |
| 90 | + throw new Error(data.message || 'Ошибка при удалении игры на сервере.'); |
| 91 | + } |
| 92 | + }) |
| 93 | + .catch(error => { |
| 94 | + console.error('Ошибка при удалении игры:', error); |
| 95 | + alert(`Ошибка: ${error.message}`); |
| 96 | + closeModal(); |
| 97 | + }); |
109 | 98 | }); |
110 | 99 | } |
111 | 100 |
|
112 | 101 | function checkIfGamesExist() { |
113 | 102 | if (gamesGrid && noGamesMessage) { |
114 | | - const remainingGames = gamesGrid.querySelectorAll( |
115 | | - ".saved-game-item-wrapper" |
116 | | - ).length; |
| 103 | + const remainingGames = gamesGrid.querySelectorAll('.saved-game-item-wrapper').length; |
117 | 104 | if (remainingGames === 0) { |
118 | | - noGamesMessage.style.display = "block"; |
| 105 | + noGamesMessage.style.display = 'block'; |
119 | 106 | } else { |
120 | | - noGamesMessage.style.display = "none"; |
| 107 | + noGamesMessage.style.display = 'none'; |
121 | 108 | } |
122 | 109 | } |
123 | 110 | } |
|
0 commit comments