Advertisement
YavorGrancharov

Forecaster

Mar 27th, 2018
647
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function forecaster() {
  2.     const LOCATIONS = "https://judgetests.firebaseio.com/locations.json";
  3.     const TODAY = "https://judgetests.firebaseio.com/forecast/today/";
  4.     const UPCOMING = "https://judgetests.firebaseio.com/forecast/upcoming/";
  5.  
  6.     $('#submit').on('click', getWeather);
  7.  
  8.     function getWeather() {
  9.         let location = $('#location').val();
  10.         let currentForecast = $('#current');
  11.         let upcomingForecast = $('#upcoming');
  12.  
  13.         $.ajax({
  14.             type: "GET",
  15.             url: LOCATIONS
  16.         }).then(function (res) {
  17.             res.forEach(city => {
  18.                 $.get(TODAY + `${city.code}.json`).then(function (today) {
  19.                     if (location === city.name) {
  20.                         $(currentForecast).empty();
  21.                         $('#forecast').css('display', 'block');
  22.                         $(currentForecast)
  23.                             .append($('<div class="label">Current conditions</div>'))
  24.                             .append($(`<span class="condition symbol">${getSymbol(today.forecast.condition)}</span>`))
  25.                             .append($('<span class="condition">')
  26.                                 .append($(`<span class="forecast-data">${today.name}</span>`))
  27.                                 .append($(`<span class="forecast-data">${today.forecast.low + "&#176;" + '/' + today.forecast.high + "&#176;"}</span>`))
  28.                                 .append($(`<span class="forecast-data">${today.forecast.condition}</span>`)))
  29.                     }
  30.                 });
  31.                 $.get(UPCOMING + `${city.code}.json`).then(function (upcoming) {
  32.                     if (location === city.name) {
  33.                         $(upcomingForecast).empty();
  34.                         $(upcomingForecast).append($('<div class="label">Three day forecast</div>'));
  35.                         for (let forecast of upcoming.forecast) {
  36.                             $(upcomingForecast)
  37.                                 .append($('<span class="upcoming">')
  38.                                     .append($(`<span class="symbol">${getSymbol(forecast.condition)}</span>`))
  39.                                     .append($(`<span class="forecast-data">${forecast.low + "&#176;" + '/' + forecast.high + "&#176;"}</span>`))
  40.                                     .append($(`<span class="forecast-data">${forecast.condition}</span>`)))
  41.                         }
  42.                     }
  43.                 })
  44.             })
  45.         }).catch(function (err) {
  46.             console.log(err)
  47.         });
  48.  
  49.         function getSymbol(condition) {
  50.             switch (condition) {
  51.                 case 'Sunny':
  52.                     return "&#x2600;";
  53.                     break;
  54.                 case 'Partly sunny':
  55.                     return "&#x26C5;";
  56.                     break;
  57.                 case 'Overcast':
  58.                     return "&#x2601;";
  59.                     break;
  60.                 case 'Rain':
  61.                     return "&#x2614;";
  62.                     break;
  63.             }
  64.         }
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement