// работа с элементами управления // объект для удобного получения элементов // controls - элементы управления // при обращении к атрибуту объекта вызывается // нужная функция для поиска элемента export const controls = { table: document.querySelector("#games-table tbody"), form: document.getElementById("games-form"), lineId: document.getElementById("items-line-id"), genresType: document.getElementById("genre"), price: document.getElementById("price"), name: document.getElementById("name"), image: document.getElementById("image"), imagePreview: document.getElementById("image-preview"), }; // Дефолтное превью export const imagePlaceholder = "placeholder.jpg"; // функция создания option для select export function createGenresOption(name, value = "", isSelected = false) { const option = document.createElement("option"); option.value = value || ""; option.selected = isSelected; option.text = name; return option; } // функция создания ячейки (колонки) таблицы с кнопками удаления/редактирования function createTableButtons(text1, text2, callback1, callback2, styleOfCOlumn) { const button1 = document.createElement("button"); button1.setAttribute('class', 'btn_for_game_main_page'); button1.onclick = () => { callback1(); // вызывается переданная функция }; button1.innerHTML = text1; const button2 = document.createElement("button"); button2.setAttribute('class', 'btn_for_game_main_page'); button2.onclick = () => { callback2(); // вызывается переданная функция }; button2.innerHTML = text2; const td = document.createElement("td"); td.setAttribute('class', styleOfCOlumn); td.appendChild(button1); td.appendChild(button2); return td; } // функция создания ячейки (колонки) таблицы с фотографией игры function createTableColumnWithImage(imageSrc, styleOfImage, styleOfColumn) { const td = document.createElement("td"); td.setAttribute('class', styleOfColumn); const img = document.createElement("img"); img.setAttribute('src', imageSrc); img.setAttribute('class', styleOfImage); td.appendChild(img); return td; } // функция создания ячейки (колонки) таблицы с названием и ценой игры function createTableColumnWithSeveralTexts(text1, text2, style1, style2, styleOfColumn) { const td = document.createElement("td"); const a = document.createElement("a"); a.setAttribute('class', style1); a.innerHTML = text1; // ССЫЛКА-ЗАГЛУШКА НА СТРАНИЦУ С ИНФОЙ ОБ ИГРЕ ДЛЯ КАЖДОЙ ИГРЫ a.href = "./dark_nights_page.html"; // Создание абзаца с ценой игры const p = document.createElement("p"); p.setAttribute('class', style2); // eslint-disable-next-line prefer-template const fullPrice = text2 + ' руб.'; p.innerHTML = fullPrice; td.setAttribute('class', styleOfColumn); // Добавление названия игры в ячейку td.appendChild(a); // Добавление цены игры в ячейку td.appendChild(p); return td; } // функция создания ячейки (колонки) таблицы с жанром игры function createTableColumnWithGenre(value, style, styleOfCOlumn) { const td = document.createElement("td"); const p = document.createElement("p"); p.innerHTML = value; p.setAttribute('class', style); td.setAttribute('class', styleOfCOlumn); td.appendChild(p); return td; } // Создание строки с игрой при обновлении данных export async function createTableRow(item, editPageCallback, deleteCallback) { console.log(item); const row = document.createElement("tr"); row.id = `line-${item.id}`; // ПЕРВЫЙ СТОЛБЕЦ С ФОТКОЙ ИГРЫ. Передаю само фото, стиль для неё и для столбца row.appendChild(createTableColumnWithImage(item.image, 'img-fluid w-100 h-100', 'align-middle p-0 cell1_main_page')); // ВТОРОЙ СТОЛБЕЦ С НАЗВАНИЕМ ИГРЫ, ЦЕНОЙ. Передаю название, цену, стили для них и столбца row.appendChild(createTableColumnWithSeveralTexts(item.name, item.price, 'nav-link active name_of_game_main_page', 'price_of_game_main_page', 'align-middle p-0 cell2_main_page')); // ТРЕТИЙ СТОБЕЦ С ЖАНРОМ ИГРЫ row.appendChild(createTableColumnWithGenre(item.genres.name, 'genre_of_game_main_page', 'align-middle p-0')); // ЧЕТВЁРТЫЙ СТОЛБЕЦ С 2 КНОПКАМИ row.appendChild(createTableButtons("изменить", "удалить", editPageCallback, deleteCallback, 'text-center align-middle p-0')); return row; }