// модуль для работы с элементами управления // объект для удобного получения элементов // при обращении к атрибуту объекта вызывается // нужная функция для поиска элемента export const cntrls = { button: document.getElementById('items-add'), table: document.querySelector('#items-table tbody'), form: document.getElementById('items-form'), lineId: document.getElementById('items-line-id'), itemsType: document.getElementById('item'), author: document.getElementById('author'), name: document.getElementById('name'), name_book: document.getElementById('name_book'), price: document.getElementById('price'), isbn: document.getElementById('isbn'), image: document.getElementById('image'), text: document.getElementById('text'), imagePreview: document.getElementById('image-preview'), }; // Дефолтное превью export const imagePlaceholder = 'https://via.placeholder.com/200'; // функция создает тег option для select // // eslint-disable-next-line require-jsdoc export function createItemsOption(name, value = '', isSelected = false) { const option = document.createElement('option'); option.value = value || ''; option.selected = isSelected; option.text = name; return option; } // функция создает ссылку (a) для таблицы // содержимое тега a заполняется необходимой иконкой (icon) // при нажатии вызывается callback // ссылка "оборачивается" тегом td // // eslint-disable-next-line require-jsdoc function createTableAnchor(icon, callback) { const i = document.createElement('i'); i.classList.add('fa-solid', icon); const a = document.createElement('a'); a.href = '#'; a.appendChild(i); a.onclick = (event) => { // чтобы в URL не добавлялась решетка event.preventDefault(); event.stopPropagation(); callback(); }; const td = document.createElement('td'); td.appendChild(a); return td; } // функция создает колонку таблицы с текстом value // value // eslint-disable-next-line require-jsdoc function createTableColumn(value) { const td = document.createElement('td'); td.textContent = value; return td; } function createTableColumnImg(value) { const td = document.createElement('td'); td.appendChild(value); return td; } // функция создает строку таблицы // // index + 1 // item.items.name // parseFloat(item.price).toFixed(2)) // item.count // parseFloat(item.sum).toFixed(2)) // eslint-disable-next-line max-len // // eslint-disable-next-line max-len // // eslint-disable-next-line max-len // // // eslint-disable-next-line max-len, require-jsdoc export function createTableRow(item, index, editCallback, editPageCallback, deleteCallback) { const rowNumber = document.createElement('th'); rowNumber.scope = 'row'; rowNumber.textContent = index + 1; const row = document.createElement('tr'); row.id = `line-${item.id}`; row.appendChild(rowNumber); row.appendChild(createTableColumn(item.items.name)); row.appendChild(createTableColumn(item.name_book)); row.appendChild(createTableColumn(item.author)); row.appendChild(createTableColumn(item.isbn)); row.appendChild(createTableColumn(parseFloat(item.price).toFixed(2))); // Добавляем картинку в таблицу const img = document.createElement('img'); img.src = item.image; img.classList.add('small-image'); row.appendChild(createTableColumnImg(img)); // редактировать в модальном окне row.appendChild(createTableAnchor('fa-pencil', editCallback)); // редактировать на странице page-edit //row.appendChild(createTableAnchor('fa-pen-to-square', editPageCallback)); // удаление row.appendChild(createTableAnchor('fa-trash', deleteCallback)); return row; }