transactions.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. let transactions = {
  2. transactions: [],
  3. display: function(){
  4. document.getElementById("filterTransactionsButton").onclick = ()=>{controller.openSidebar("transactionFilter")};
  5. document.getElementById("newTransactionButton").onclick = ()=>{controller.openSidebar("newTransaction")};
  6. if(this.transactions.length === 0){
  7. let from = new Date();
  8. from.setDate(from.getDate() - 30);
  9. from.setHours(0, 0, 0, 0);
  10. this.transactions = merchant.getTransactions(from, new Date());
  11. }
  12. this.populateTransactions();
  13. this.isPopulated = true;
  14. },
  15. populateTransactions: function(){
  16. let transactionsList = document.getElementById("transactionsList");
  17. let template = document.getElementById("transaction").content.children[0];
  18. while(transactionsList.children.length > 0){
  19. transactionsList.removeChild(transactionsList.firstChild);
  20. }
  21. let i = 0;
  22. while(i < this.transactions.length && i < 100){
  23. let transactionDiv = template.cloneNode(true);
  24. let transaction = this.transactions[i];
  25. transactionDiv.onclick = ()=>{
  26. controller.openSidebar("transactionDetails", transaction);
  27. transactionDiv.classList.add("active");
  28. }
  29. transactionsList.appendChild(transactionDiv);
  30. let totalRecipes = 0;
  31. let totalPrice = 0;
  32. for(let j = 0; j < transaction.recipes.length; j++){
  33. totalRecipes += transaction.recipes[j].quantity;
  34. totalPrice += transaction.recipes[j].recipe.price * transaction.recipes[j].quantity;
  35. }
  36. transactionDiv.children[0].innerText = transaction.date.toLocaleDateString();
  37. transactionDiv.children[1].innerText = `${totalRecipes} recipes sold`;
  38. transactionDiv.children[2].innerText = `$${totalPrice.toFixed(2)}`;
  39. i++;
  40. }
  41. }
  42. }
  43. module.exports = transactions;