Advertisement
didkoslawow

Untitled

Apr 6th, 2023
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const input = document.getElementById('location');
  2. const button = document.getElementById('submit');
  3.  
  4. const forecastDiv = document.getElementById('forecast');
  5. const currentDiv = document.getElementById('current');
  6.  
  7. const baseUrl = 'http://localhost:3030/jsonstore/forecaster/';
  8.  
  9. button.addEventListener('click', attachEvents);
  10.  
  11. const conditions = {
  12.     Sunny: '\u2600',
  13.     'Partly sunny': '⛅',
  14.     Overcast: '☁',
  15.     Rain: '☂',
  16.     Degrees: '°',
  17.   };
  18.  
  19. async function attachEvents() {
  20.   const location = input.value;
  21.  
  22.   //Creating html elements
  23.   const oneDayDiv = document.createElement('div');
  24.   const symbolSpan = document.createElement('span');
  25.   const conditionSpan = document.createElement('span');
  26.   const locationSpan = document.createElement('span');
  27.   const degreesSpan = document.createElement('span');
  28.   const weatherSpan = document.createElement('span');
  29.  
  30.   const threeDayDiv = document.createElement('div');
  31.  
  32.  
  33.   //Adding attributes to html elements
  34.   oneDayDiv.classList.add('forecasts');
  35.   symbolSpan.classList.add('condition');
  36.   symbolSpan.classList.add('symbol');
  37.   conditionSpan.classList.add('condition');
  38.   locationSpan.classList.add('forecast-data');
  39.   degreesSpan.classList.add('forecast-data');
  40.   weatherSpan.classList.add('forecast-data');
  41.  
  42.   try {
  43.     const response = await fetch(baseUrl + 'locations/');
  44.     const data = await response.json();
  45.  
  46.     const targetLocation = data.find(x => x.name === location);
  47.  
  48.     const locationCode = targetLocation.code;
  49.  
  50.     const currentConditions = await fetch(baseUrl + 'today/' + locationCode);
  51.     const currentConditionsData = await currentConditions.json();
  52.  
  53.     const threeDayForecast = await fetch(baseUrl + 'upcoming/' + locationCode);
  54.     const threeDayForecastData = await threeDayForecast.json();
  55.  
  56.     forecastDiv.style.display = 'block';
  57.  
  58.     //Populate html elements and append them to DOM
  59.     symbolSpan.textContent = conditions[currentConditionsData.forecast.condition];
  60.     oneDayDiv.appendChild(symbolSpan);
  61.  
  62.     locationSpan.innerText = currentConditionsData.name;
  63.     degreesSpan.innerText = `${currentConditionsData.forecast.low}${conditions.Degrees}/${currentConditionsData.forecast.high}${conditions.Degrees}`;
  64.     weatherSpan.innerText = currentConditionsData.forecast.condition;
  65.  
  66.     conditionSpan.appendChild(locationSpan);
  67.     conditionSpan.appendChild(degreesSpan);
  68.     conditionSpan.appendChild(weatherSpan);
  69.     oneDayDiv.appendChild(conditionSpan);
  70.     currentDiv.appendChild(oneDayDiv);
  71.    
  72.   } catch (error) {
  73.  
  74.   }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement