// модуль для работы с элементами управления // объект для удобного получения элементов // при обращении к атрибуту объекта вызывается // нужная функция для поиска элемента export const cntrls = { container: document.getElementById("my-id-for-text"), 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"), name: document.getElementById("name"), price: document.getElementById("price"), count: document.getElementById("count"), discountsType: document.getElementById("discounts"), image: document.getElementById("image"), imagePreview: document.getElementById("image-preview"), }; // Дефолтное превью export const imagePlaceholder = "https://via.placeholder.com/200"; // функция создает тег option для select // 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 // 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 function createTableColumn(value) { const td = document.createElement("td"); td.textContent = value; return td; } 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(parseFloat(item.price).toFixed(2))); row.appendChild(createTableColumn(item.count)); row.appendChild(createTableColumn(item.discounts.name)); // редактировать в модальном окне row.appendChild(createTableAnchor("fa-pencil", editCallback)); // удаление row.appendChild(createTableAnchor("fa-trash", deleteCallback)); return row; } export function createTableRowOnIndex(item, index, editCallback, editPageCallback, deleteCallback) { console.log(item); const img = document.createElement("img"); img.classList.add("objects"); img.src = item.image; img.alt = "object"; img.style.display = "block"; img.style.marginLeft = "auto"; img.style.marginRight = "auto"; const name = document.createElement("div"); name.classList.add("caption"); name.innerText = item.items.name; name.style.padding = "0px"; name.style.marginBottom = "-10px"; const count = document.createElement("div"); count.classList.add("caption_count"); count.innerText = `${item.count} ${item.count == 1 ? 'штука' : item.count > 1 && item.count < 5 ? 'штуки' : 'штук'}`; count.style.padding = "0px"; count.style.marginBottom = "-10px"; const price = document.createElement("div"); price.classList.add("caption_2"); price.innerText = parseInt(item.price) + "₽"; price.style.padding = "0"; const a = document.createElement("a"); a.href = "page4.html"; a.style.textDecoration = "none"; const discounts = document.createElement("div"); discounts.classList.add("caption"); discounts.innerText = item.discounts.name; a.appendChild(img); a.appendChild(name); a.appendChild(count); a.appendChild(price); a.appendChild(discounts); const buttonsContainer = document.createElement("div"); buttonsContainer.style.display = "flex"; buttonsContainer.style.justifyContent = "center"; const editButton = createTableAnchor("fa-pencil", editCallback); const deleteButton = createTableAnchor("fa-trash", deleteCallback); deleteButton.style.marginLeft = "1.2vw"; buttonsContainer.appendChild(editButton); buttonsContainer.appendChild(deleteButton); buttonsContainer.style.marginTop = "-6px"; buttonsContainer.style.marginBottom = "10px"; a.appendChild(buttonsContainer); const div = document.createElement("div"); div.classList.add("col"); div.classList.add("clear-float"); div.appendChild(a); const uniqueId = `div-${index + 1}`; div.id = uniqueId; div.style.float = "left"; div.style.width = "33.33%"; div.style.boxSizing = "border-box"; return div; }