Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function attachEvents() {
  2.     let weatherCodes = {
  3.       Sunny: '☀',
  4.       'Partly sunny': '⛅',
  5.       Overcast: '☁',
  6.       Rain: '☂'
  7.     };
  8.     document.querySelector('#submit').addEventListener('click', catchTheWeather);
  9.     document.querySelector('#forecast').style.display = 'block';
  10.    
  11.     function printError() {
  12.         if(document.querySelector('.forecast-info')){
  13.             document.querySelector('.forecast-info').remove();
  14.         }
  15.         if(document.querySelector('.forecasts')){
  16.             document.querySelector('.forecasts').remove();
  17.         }
  18.       let divForecasts = document.createElement('span');
  19.       divForecasts.setAttribute('class', 'forecasts');
  20.       divForecasts.textContent = 'Error!';
  21.       document.querySelector('#current').appendChild(divForecasts);
  22.     }
  23.    
  24.     async function catchTheWeather() {
  25.       let location = document.querySelector('#location').value;
  26.       location = location.toLowerCase();
  27.       if (
  28.         location === 'london' ||
  29.         location === 'new york' ||
  30.         location === 'barcelona'
  31.       ) {
  32.           if(location === 'new york'){
  33.               location = 'ny';
  34.           }
  35.         const response = await fetch(
  36.           `https://judgetests.firebaseio.com/forecast/today/${location}.json`
  37.         );
  38.         const data = await response.json();
  39.         let weatherType = data.forecast.condition;
  40.         let currentLocation = data.name;
  41.         let degreece = `${data.forecast.low}°/${data.forecast.high}°`;
  42.         createCurrentCondition(weatherType, currentLocation, degreece);
  43.  
  44.         let responseForFutherWeather = await fetch(`https://judgetests.firebaseio.com/forecast/upcoming/${location}.json`);
  45.         let dataForNextDays = await responseForFutherWeather.json();
  46.         createUpCommingCondition(dataForNextDays);
  47.        
  48.       } else {
  49.         printError();
  50.       }
  51.     }
  52.     function createCurrentCondition(weatherType, location, degreece) {
  53.         if(document.querySelector('.forecasts')){
  54.             document.querySelector('.forecasts').remove();
  55.         }
  56.       let divForecasts = document.createElement('span');
  57.       divForecasts.setAttribute('class', 'forecasts');
  58.       let spanConditionSymb = document.createElement('span');
  59.       spanConditionSymb.setAttribute('class', 'condition symbol');
  60.       spanConditionSymb.textContent = weatherCodes[weatherType];
  61.       let spanCondition = document.createElement('span');
  62.       spanCondition.setAttribute('class', 'condition');
  63.    
  64.       let span1 = document.createElement('span');
  65.       let span2 = document.createElement('span');
  66.       let span3 = document.createElement('span');
  67.       span1.setAttribute('class', 'forecast-data');
  68.       span2.setAttribute('class', 'forecast-data');
  69.       span3.setAttribute('class', 'forecast-data');
  70.       span1.textContent = location;
  71.       span2.textContent = degreece;
  72.       span3.textContent = weatherType;
  73.       spanCondition.appendChild(span1);
  74.       spanCondition.appendChild(span2);
  75.       spanCondition.appendChild(span3);
  76.       divForecasts.appendChild(spanConditionSymb);
  77.       divForecasts.appendChild(spanCondition);
  78.       document.querySelector('#current').appendChild(divForecasts);
  79.     }
  80.    
  81.     function createUpCommingCondition(obj) {
  82.         if(document.querySelector('.forecast-info')){
  83.             document.querySelector('.forecast-info').remove();
  84.         }
  85.         let div = document.createElement('div');
  86.         div.setAttribute('class','forecast-info');
  87.         Object.values(obj)[0].forEach(x=>{
  88.            let mainSpan = document.createElement('span');
  89.            mainSpan.setAttribute('class','upcoming');
  90.             let span1 = document.createElement('span');
  91.             span1.setAttribute('class','symbol');
  92.             span1.textContent = weatherCodes[x.condition];
  93.             let span2 = document.createElement('span');
  94.             span2.setAttribute('class','forecast-data');
  95.             span2.textContent = `${x.low}°/${x.high}°`;
  96.             let span3 = document.createElement('span');
  97.             span3.setAttribute('class','forecast-data');
  98.             span3.textContent = x.condition;
  99.             mainSpan.appendChild(span1);
  100.             mainSpan.appendChild(span2);
  101.             mainSpan.appendChild(span3);
  102.             div.appendChild(mainSpan);
  103.         });
  104.         document.querySelector('#upcoming').appendChild(div);
  105.     }
  106.   }
  107.    
  108.   attachEvents();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement