Weather/script.js
Fovway dce99ec5dd new file: .gitignore
new file:   index.html
	new file:   package-lock.json
	new file:   package.json
	new file:   script.js
	new file:   server.js
	new file:   style.css
2025-10-07 20:22:13 +07:00

62 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// API ключ от WeatherAPI
const API_KEY = '485eff906f7d473b913104046250710';
const citySelect = document.getElementById('city');
const getWeatherBtn = document.getElementById('get-weather');
const timelapseContainer = document.getElementById('timelapse-container');
// Добавляем скроллинг колесиком мыши для таймлапса
timelapseContainer.addEventListener('wheel', (event) => {
event.preventDefault();
timelapseContainer.scrollLeft += event.deltaY;
});
// Автоматическая загрузка погоды при загрузке страницы
window.addEventListener('load', () => {
getWeatherBtn.click();
});
getWeatherBtn.addEventListener('click', async () => {
const city = citySelect.value;
const url = `https://api.weatherapi.com/v1/forecast.json?key=${API_KEY}&q=${city}&days=1&hourly=true&lang=ru`;
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error('Ошибка сети');
}
const data = await response.json();
displayTimelapse(data.forecast.forecastday[0].hour); // Таймлапс на сегодня
} catch (error) {
console.error('Ошибка загрузки данных:', error);
alert('Не удалось загрузить данные о погоде. Проверьте API ключ.');
}
});
function displayTimelapse(hourlyData) {
timelapseContainer.innerHTML = '';
hourlyData.forEach(item => {
const div = document.createElement('div');
div.className = 'timelapse-item';
const hour = new Date(item.time).getHours();
div.innerHTML = `
<h3>${hour}:00</h3>
<p class="temp">${Math.round(item.temp_c)}°C</p>
<p class="desc">${item.condition.text}</p>
<p class="prec">Осадки: ${item.precip_mm} мм (${item.chance_of_rain}%)</p>
`;
timelapseContainer.appendChild(div);
});
// Фокус на текущем времени
const currentHour = new Date().getHours();
const currentDiv = Array.from(timelapseContainer.children).find(div => {
const h3 = div.querySelector('h3');
return parseInt(h3.textContent) === currentHour;
});
if (currentDiv) {
currentDiv.scrollIntoView({ behavior: 'smooth', inline: 'center' });
}
}