Advertisement
bebo231312312321

Untitled

Jun 28th, 2023
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function attachEvents() {
  2.     const getWeathBtn = document.querySelector('#submit');
  3.     const userInput = document.querySelector('#location');
  4.     const forecastDiv = document.querySelector('#forecast');
  5.  
  6.     const currentDiv = document.querySelector('#current')
  7.     const upcomingDiv = document.querySelector('#upcoming')
  8.  
  9.     let symbolDict = {
  10.         'Sunny': '&#x2600',
  11.         'Partly sunny': '&#x26C5',
  12.         'Overcast': '&#x2601',
  13.         'Rain': '&#x2614',
  14.         'Degrees': '°'
  15.     }
  16.    
  17.     const urlLocations = `http://localhost:3030/jsonstore/forecaster/locations`;
  18.  
  19.     getWeathBtn.addEventListener('click', getWeatherHandler)
  20.     async function getWeatherHandler(e){
  21.         e.preventDefault()
  22.         try{
  23.            
  24.         const response = await fetch(urlLocations);
  25.         if (!response.ok){
  26.             throw new Error();
  27.         }
  28.         const data = await response.json();
  29.         let wantedCity = data.find(obj => obj.name == userInput.value);
  30.         if(wantedCity == undefined) throw new Error()
  31.         document.querySelector('#forecast').style.display = "block";
  32.         let code  = wantedCity.code;
  33.         const currentLocUrl = `http://localhost:3030/jsonstore/forecaster/today/${code}`;
  34.  
  35.         let currentResponse = await fetch(currentLocUrl);
  36.         let currentData = await currentResponse.json();
  37.  
  38.         let symbol = symbolDict[currentData.forecast.condition];
  39.  
  40.         let divForecasts = document.createElement('div');
  41.         divForecasts.classList.add("forecasts");
  42.  
  43.  
  44.         let symbolSpan = document.createElement('span');
  45.         symbolSpan.setAttribute('class', 'condition symbol');
  46.         symbolSpan.innerHTML = symbol;
  47.  
  48.         let spanCondition = document.createElement('span');
  49.         spanCondition.setAttribute('class', 'condition');
  50.         let span1 = document.createElement('span');
  51.         span1.setAttribute('class', 'forecast-data');
  52.         span1.innerHTML = currentData.name;
  53.         spanCondition.appendChild(span1);
  54.  
  55.         let span2 = document.createElement('span');
  56.         span2.setAttribute('class', 'forecast-data');
  57.         span2.innerHTML = `${currentData.forecast.low}${symbolDict['Degrees']}/${currentData.forecast.high}${symbolDict['Degrees']}`;
  58.         spanCondition.appendChild(span2);
  59.  
  60.         let span3 = document.createElement('span');
  61.         span3.setAttribute('class', 'forecast-data');
  62.         span3.innerHTML = currentData.forecast.condition;
  63.         spanCondition.appendChild(span3)
  64.  
  65.         divForecasts.appendChild(symbolSpan);
  66.         divForecasts.appendChild(spanCondition);
  67.         currentDiv.appendChild(divForecasts);
  68.  
  69.        
  70.         const upcomingLocUrl = `http://localhost:3030/jsonstore/forecaster/upcoming/${code}`;
  71.        
  72.         let threeDaysResponse = await fetch(upcomingLocUrl);
  73.         let threeDaysData = await threeDaysResponse.json();
  74.  
  75.         let divForecasts2 = document.createElement('div');
  76.         divForecasts2.classList.add("forecast-info");
  77.  
  78.         threeDaysData.forecast.forEach((dataElem) =>{
  79.  
  80.             let symbol = symbolDict[dataElem.condition];
  81.             let symbolSpan = document.createElement('span');
  82.             symbolSpan.setAttribute('class', 'symbol');
  83.             symbolSpan.innerHTML = symbol;
  84.  
  85.             let spanCondition = document.createElement('span');
  86.             spanCondition.setAttribute('class', 'upcoming');
  87.  
  88.             spanCondition.appendChild(symbolSpan);
  89.  
  90.             let span2 = document.createElement('span');
  91.             span2.setAttribute('class', 'forecast-data');
  92.             span2.innerHTML = `${dataElem.low}${symbolDict['Degrees']}/${dataElem.high}${symbolDict['Degrees']}`;
  93.             spanCondition.appendChild(span2);
  94.  
  95.             let span3 = document.createElement('span');
  96.             span3.setAttribute('class', 'forecast-data');
  97.             span3.innerHTML = dataElem.condition;
  98.             spanCondition.appendChild(span3)
  99.  
  100.            // spanCondition.appendChild(symbolSpan);
  101.             divForecasts2.appendChild(spanCondition);
  102.             upcomingDiv.appendChild(divForecasts2);
  103.         })
  104.  
  105.     }catch(err){
  106.       //  document.querySelector('#forecast').style.display = "block";
  107.         forecastDiv.innerHTML = 'Error';
  108.  
  109.     }
  110. }
  111.  
  112. }
  113.  
  114. attachEvents();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement