var pagination_current = 1; var limit = 50; var pagination_end = 10 var item; document.addEventListener('DOMContentLoaded', async function() { item = await getItem(item_id); let transactions = await getTransactions() replenishTransactionsTable(transactions) updatePaginationElement() }) async function populateTransactionReceipt(transaction) { document.getElementById('trans_barcode').innerHTML = transaction.barcode document.getElementById('trans_database_id').innerHTML = transaction.id document.getElementById('trans_timestamp').innerHTML = transaction.timestamp document.getElementById('trans_name').innerHTML = transaction.name document.getElementById('trans_type').innerHTML = transaction.transaction_type document.getElementById('trans_qty').innerHTML = transaction.quantity document.getElementById('trans_description').innerHTML = transaction.description document.getElementById('trans_user').innerHTML = transaction.user_id let receiptTableBody = document.getElementById('receiptTableBody') receiptTableBody.innerHTML = "" for(let key in transaction.data){ let tableRow = document.createElement('tr') let keyCell = document.createElement('td') keyCell.innerHTML = key let valueCell = document.createElement('td') valueCell.innerHTML = transaction.data[key] tableRow.append(keyCell, valueCell) receiptTableBody.append(tableRow) } } async function inspectTransactions(id) { let transaction = await getTransaction(id) await populateTransactionReceipt(transaction) UIkit.modal(document.getElementById("transactionModal")).show(); } async function replenishTransactionsTable(transactions) { let transactionsTableBody = document.getElementById("transactionsTableBody") transactionsTableBody.innerHTML = "" for(let i = 0; i < transactions.length; i++){ let tableRow = document.createElement('tr') let timestampCell = document.createElement('td') timestampCell.innerHTML = transactions[i].timestamp let barcodeCell = document.createElement('td') barcodeCell.innerHTML = transactions[i].barcode let nameCell = document.createElement('td') nameCell.innerHTML = transactions[i].name let typeCell = document.createElement('td') typeCell.innerHTML = transactions[i].transaction_type let qtyCell = document.createElement('td') qtyCell.innerHTML = transactions[i].quantity let descriptionCell = document.createElement('td') descriptionCell.innerHTML = transactions[i].description let userCell = document.createElement('td') userCell.innerHTML = transactions[i].user_id tableRow.append( timestampCell, barcodeCell, nameCell, typeCell, qtyCell, descriptionCell, userCell ) tableRow.onclick = async function() { await inspectTransactions(transactions[i].id) } transactionsTableBody.append(tableRow) } } async function getItem(id) { const url = new URL('/items/getItem', window.location.origin); url.searchParams.append('id', id); const response = await fetch(url); data = await response.json(); item = data.item; return item; } async function getTransaction(id) { const url = new URL('/items/getTransaction', window.location.origin); url.searchParams.append('id', id); const response = await fetch(url); data = await response.json(); let transaction = data.transaction; return transaction; } async function getTransactions(){ const url = new URL('/items/getTransactions', window.location.origin); url.searchParams.append('page', pagination_current); url.searchParams.append('limit', limit); url.searchParams.append('logistics_info_id', item.logistics_info_id) const response = await fetch(url); data = await response.json(); pagination_end = data.end let transactions = data.transactions; return transactions; } async function setPage(page) { pagination_current = page let transactions = await getTransactions() replenishTransactionsTable(transactions) updatePaginationElement() } async function updatePaginationElement() { let paginationElement = document.getElementById("paginationElement"); paginationElement.innerHTML = ""; // previous let previousElement = document.createElement('li') if(pagination_current<=1){ previousElement.innerHTML = ``; previousElement.classList.add('uk-disabled'); }else { previousElement.innerHTML = ``; } paginationElement.append(previousElement) //first let firstElement = document.createElement('li') if(pagination_current<=1){ firstElement.innerHTML = `1`; firstElement.classList.add('uk-disabled'); }else { firstElement.innerHTML = `1`; } paginationElement.append(firstElement) // ... if(pagination_current-2>1){ let firstDotElement = document.createElement('li') firstDotElement.classList.add('uk-disabled') firstDotElement.innerHTML = `…`; paginationElement.append(firstDotElement) } // last if(pagination_current-2>0){ let lastElement = document.createElement('li') lastElement.innerHTML = `${pagination_current-1}` paginationElement.append(lastElement) } // current if(pagination_current!=1 && pagination_current != pagination_end){ let currentElement = document.createElement('li') currentElement.innerHTML = `