(function () { let db; const request = indexedDB.open("PtryLndDB_favorites", 1); const storeName = "favorites"; request.onupgradeneeded = function (event) { db = event.target.result; if (!db.objectStoreNames.contains(storeName)) { var objectStore = db.createObjectStore(storeName, { keyPath: "poemId" }); } }; request.onerror = function (event) { console.error("IndexedDB error:", event.target.errorCode); }; request.onsuccess = function (event) { db = event.target.result; readData('sortByDate'); }; function readData(sortType) { const transaction = db.transaction([storeName], "readonly"); const store = transaction.objectStore(storeName); const request = store.getAll(); request.onerror = function (event) { console.log("Ошибка при чтении данных", event); }; request.onsuccess = function (event) { const poems = event.target.result; // Это ваш список ID fetchData(poems, sortType); }; } function fetchData(poemsList, sortType) { fetch('user-favorites-poems-fetch', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ poems: poemsList, sortType: sortType }), }) //.then(response => response.json()) .then(response => response.text()) .then(data => displayData(data)) .catch((error) => { console.error('Ошибка при запросе к серверу:', error); alert("Ошибка: " + error); }); } function displayData(data) { const userFavoritesPoems = document.getElementById("userFavoritesPoems"); userFavoritesPoems.innerHTML = ''; // hidde message userFavoritesPoems.innerHTML = data; // -- Daten mit Animation anzeigen /* #container { transition: height 0.5s ease - out, opacity 0.5s ease; opacity: 0; // Изначально контейнер скрыт } */ // Плавное появление контента requestAnimationFrame(() => { userFavoritesPoems.style.opacity = 1; userFavoritesPoems.style.height = 'auto'; // или конкретная высота, если известна }); // ... } // -- Remove All let btnRemoveAllFavorites = document.getElementById('btnRemoveAllFavorites'); btnRemoveAllFavorites.addEventListener('click', btnRemoveAllFavorites_click); function btnRemoveAllFavorites_click() { removeAllFavorites(); readData('sortByDate'); } function removeAllFavorites() { // Создание транзакции с правами на запись var transaction = db.transaction([storeName], "readwrite"); // Получение доступа к объектному хранилищу var objectStore = transaction.objectStore(storeName); // Удаление всех записей из объектного хранилища var clearRequest = objectStore.clear(); clearRequest.onsuccess = function (event) { // Успешное удаление всех записей console.log("All records deleted from store"); }; clearRequest.onerror = function (event) { // Обработка ошибок при удалении записей console.error("Clear request error: " + event.target.errorCode); alert("Ошибка во время удаления записей: " + event.target.errorCode); }; //// Закрытие базы данных после завершения транзакции //transaction.oncomplete = function (event) { //db.close(); //}; } // -- Sorting document.getElementById('action_sortByDate').addEventListener('click', e => { sorting_click('sortByDate'); }); document.getElementById('action_sortByAuthor').addEventListener('click', e => {sorting_click('sortByAuthor'); }); document.getElementById('action_sortByTitle').addEventListener('click', e => { sorting_click('sortByTitle'); }); function sorting_click(sortType) { readData(sortType); } // -- Обработка нажатия на "Удалить из избранных" // конейнер где будут содержаться загружаемые элементы
let userFavoritesPoems = document.getElementById("userFavoritesPoems"); userFavoritesPoems.addEventListener('click', userFavoritesPoems_click); function userFavoritesPoems_click(e) { const targetA = e.target.closest('a[href="#removeFavorite"]'); // Проверяем, что клик был совершен именно по ссылке 'Удалить из избранных' if (targetA) { e.preventDefault(); // Предотвратить стандартное действие для ссылки const poemId = targetA.getAttribute('data'); // Найти ближайший родительский элемент
const article = targetA.closest('article.entry'); if (article) { // Здесь ваш код для обработки удаления, например: console.log('Удаление статьи:', article); removeFavoriteByPoemId(poemId); // удалить элемент из DOM article.remove(); } } } function removeFavoriteByPoemId(poemId) { // Открытие транзакции var transaction = db.transaction([storeName], 'readwrite'); var objectStore = transaction.objectStore(storeName); // Удаление записи var deleteRequest = objectStore.delete(poemId); deleteRequest.onsuccess = function (event) { // Обработка успешного удаления записи console.log('Запись успешно удалена.'); // alert('Запись успешно удалена.'); }; deleteRequest.onerror = function (event) { // Обработка ошибок при удалении записи console.error('Ошибка при удалении записи:', event.target.errorCode); }; } })()