$(document).ready(() => { if (!window.canManage()) { Utils.showToast("У вас недостаточно прав", "error"); setTimeout(() => (window.location.href = "/"), 1500); return; } const pathParts = window.location.pathname.split("/"); const genreId = parseInt(pathParts[pathParts.length - 2]); if (!genreId || isNaN(genreId)) { Utils.showToast("Некорректный ID жанра", "error"); setTimeout(() => (window.location.href = "/"), 1500); return; } let originalGenre = null; let genreBooks = []; const $form = $("#edit-genre-form"); const $loader = $("#loader"); const $dangerZone = $("#danger-zone"); const $nameInput = $("#genre-name"); const $submitBtn = $("#submit-btn"); const $submitText = $("#submit-text"); const $loadingSpinner = $("#loading-spinner"); const $deleteModal = $("#delete-modal"); const $successModal = $("#success-modal"); Promise.all([ Api.get(`/api/genres/${genreId}`), Api.get(`/api/genres/${genreId}/books`), ]) .then(([genre, booksData]) => { originalGenre = genre; genreBooks = booksData.books || booksData || []; document.title = `Редактирование: ${genre.name} | LiB`; populateForm(genre); renderGenreBooks(genreBooks); $loader.addClass("hidden"); $form.removeClass("hidden"); $dangerZone.removeClass("hidden"); }) .catch((error) => { console.error(error); Utils.showToast("Жанр не найден", "error"); setTimeout(() => (window.location.href = "/"), 1500); }); function populateForm(genre) { $nameInput.val(genre.name); updateCounter(); } function updateCounter() { $("#name-counter").text(`${$nameInput.val().length}/100`); } $nameInput.on("input", updateCounter); function renderGenreBooks(books) { const $container = $("#genre-books-container"); $container.empty(); $("#books-count").text(books.length > 0 ? `(${books.length})` : ""); if (books.length === 0) { $container.html(`