Advertisement
differen71

Untitled

Dec 16th, 2023
803
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const baseURL = 'http://localhost:3030/jsonstore/tasks/';
  3.     const foodField = document.getElementById('food');
  4.     const timeField = document.getElementById('time');
  5.     const caloriesField = document.getElementById('calories');
  6.     const addMealBtn = document.getElementById('add-meal');
  7.     const editMealBtn = document.getElementById('edit-meal');
  8.     const loadMealsBtn = document.getElementById('load-meals');
  9.     const mealsList = document.getElementById('list');
  10.  
  11.     mealsList.innerHTML = '';
  12.  
  13.     loadMealsBtn.addEventListener('click', loadMeals)
  14.  
  15.  
  16.     async function loadMeals() {
  17.  
  18.         mealsList.innerHTML = '';
  19.  
  20.         const response = await fetch(baseURL);
  21.         const allData = await response.json();
  22.  
  23.         for (const meal of Object.values(allData)) {
  24.             let mealContainer = document.createElement('div');
  25.             mealContainer.classList = ['meal'];
  26.  
  27.             let h2FoodTypeElement = document.createElement('h2');
  28.             h2FoodTypeElement.textContent = meal.food
  29.             let h3TimeElement = document.createElement('h3');
  30.             h3TimeElement.textContent = meal.time;
  31.             let h3CaloriesElement = document.createElement('h3');
  32.             h3CaloriesElement.textContent = meal.calories;
  33.  
  34.             mealContainer.appendChild(h2FoodTypeElement);
  35.             mealContainer.appendChild(h3TimeElement);
  36.             mealContainer.appendChild(h3CaloriesElement);
  37.  
  38.             let buttonsContainer = document.createElement('div');
  39.             buttonsContainer.id = 'meal-buttons';
  40.  
  41.             let changeMealBtn = document.createElement('button');
  42.             changeMealBtn.classList = ['change-meal'];
  43.             changeMealBtn.textContent = 'Change'
  44.             changeMealBtn.addEventListener('click', async () => {
  45.                 foodField.value = meal.food;
  46.                 timeField.value = meal.time;
  47.                 caloriesField.value = meal.calories;
  48.  
  49.                 addMealBtn.disabled = true;
  50.                 editMealBtn.disabled = false;
  51.  
  52.                 mealsList.removeChild(mealContainer);
  53.  
  54.                 editMealBtn.addEventListener('click', (e) => {
  55.                     e.preventDefault();
  56.  
  57.                     meal.food = foodField.value;
  58.                     meal.time = timeField.value;
  59.                     meal.calories = caloriesField.value;
  60.  
  61.                     fetch(baseURL + meal._id, {
  62.                         method: 'PUT',
  63.                         body: JSON.stringify(meal)
  64.                     })
  65.                     loadMeals();
  66.  
  67.                     editMealBtn.disabled = true;
  68.                     addMealBtn.disabled = false;
  69.                 })
  70.             })
  71.  
  72.             let deleteMealBtn = document.createElement('button');
  73.             deleteMealBtn.textContent = 'Delete';
  74.             deleteMealBtn.classList = ['delete-meal'];
  75.             deleteMealBtn.addEventListener('click', async () => {
  76.                 await fetch(baseURL + meal._id, {
  77.                     method: 'DELETE',
  78.                 });
  79.                 loadMeals();
  80.             })
  81.  
  82.             buttonsContainer.appendChild(changeMealBtn);
  83.             buttonsContainer.appendChild(deleteMealBtn);
  84.  
  85.             mealContainer.appendChild(buttonsContainer);
  86.  
  87.             mealsList.appendChild(mealContainer);
  88.  
  89.         }
  90.         editMealBtn.disabled = true;
  91.     }
  92.  
  93.     addMealBtn.addEventListener('click', async () => {
  94.         let mealObj = {
  95.             food: foodField.value,
  96.             calories: caloriesField.value,
  97.             time: timeField.value,
  98.         }
  99.  
  100.         await fetch(baseURL, {
  101.             method: 'POST',
  102.             body: JSON.stringify(mealObj)
  103.         });
  104.  
  105.         foodField.value = '';
  106.         timeField.value = '';
  107.         caloriesField.value = '';
  108.  
  109.         loadMeals();
  110.     })
  111.  
  112. }
  113.  
  114. solve();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement