// модуль для работы с элементами управления // объект для удобного получения элементов // при обращении к атрибуту объекта вызывается // нужная функция для поиска элемента 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"), name: document.getElementById("name"), price: document.getElementById("price"), count: document.getElementById("count"), image: document.getElementById("image"), imagePreview: document.getElementById("image-preview"), }; export const imagePlaceholder = "https://via.placeholder.com/200"; // функция создает ссылку (a) для таблицы // содержимое тега a заполняется необходимой иконкой (icon) // при нажатии вызывается callback // ссылка "оборачивается" тегом td // 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; } function createTableColumn(value) { const td = document.createElement("td"); td.textContent = value; return td; } function createImgColumn(value) { const td = document.createElement("td"); td.appendChild(value); return td; } export function createTableRow(item, index, editCallback, deleteCallback) { const rowNumber = document.createElement("th"); rowNumber.scope = "row"; rowNumber.textContent = index + 1; const row = document.createElement("tr"); row.id = `line-${item.id}`; const img = document.createElement("img"); if (item.image === undefined) { img.src = imagePlaceholder; } else { img.src = item.image; } img.style.width = "70px"; img.style.height = "70px"; row.appendChild(rowNumber); row.appendChild(createTableColumn(item.name)); row.appendChild(createTableColumn(parseFloat(item.price).toFixed(2))); row.appendChild(createTableColumn(item.count)); row.appendChild(createImgColumn(img)); // редактировать в модальном окне row.appendChild(createTableAnchor("fa-pencil", editCallback)); // удаление row.appendChild(createTableAnchor("fa-trash", deleteCallback)); return row; }