Добавлена метрика яндекс

This commit is contained in:
Fovway 2025-10-09 19:07:02 +07:00
parent ec415de724
commit db25a0ed18
2 changed files with 59 additions and 0 deletions

View File

@ -24,6 +24,25 @@
/>
<!-- Chart.js -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(104563496, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true,
trackHash:true,
ut:"noindex"
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/104563496" style="position:absolute; left:-9999px;" alt="" /></div></noscript></search>
<!-- /Yandex.Metrika counter -->
<style>
:root {
--theme-bg: linear-gradient(to bottom right, #dbeafe, #ffffff, #e0e7ff);

View File

@ -1,6 +1,17 @@
// API ключ от WeatherAPI
const API_KEY = "485eff906f7d473b913104046250710";
// Yandex Metrika counter ID (замените на свой)
const YM_COUNTER_ID = 104563496; // Замените на реальный ID счетчика
// Функция для отправки событий в Yandex Metrika
function ymSendEvent(eventName, params = {}) {
if (typeof ym !== 'undefined' && YM_COUNTER_ID !== 'YOUR_COUNTER_ID') {
ym(YM_COUNTER_ID, 'reachGoal', eventName, params);
console.log(`Yandex Metrika event: ${eventName}`, params);
}
}
// Глобальные переменные для темы
const themeButtons = {
light: document.getElementById("theme-light"),
@ -351,6 +362,9 @@ function updatePageTitle() {
// Автоматическая загрузка погоды при загрузке страницы
document.addEventListener("DOMContentLoaded", () => {
// Отправляем событие загрузки страницы
ymSendEvent('page_load');
// Отображаем текущую дату
displayCurrentDate();
@ -383,10 +397,12 @@ document.addEventListener("DOMContentLoaded", () => {
window.addEventListener('beforeinstallprompt', (e) => {
console.log('PWA install prompt available');
deferredPrompt = e;
ymSendEvent('pwa_install_prompt');
});
window.addEventListener('appinstalled', (e) => {
console.log('PWA installed successfully');
ymSendEvent('pwa_installed');
});
// Функция для проверки реального соединения
@ -408,9 +424,11 @@ document.addEventListener("DOMContentLoaded", () => {
if (!isOnline) {
banner.classList.remove('hidden');
console.log('Оффлайн режим активирован');
ymSendEvent('offline_mode');
} else {
banner.classList.add('hidden');
console.log('Онлайн режим восстановлен');
ymSendEvent('online_mode');
}
}
@ -444,6 +462,9 @@ document.addEventListener("DOMContentLoaded", () => {
getWeatherBtn.addEventListener("click", async () => {
const city = citySelect.value;
// Отправляем событие выбора города
ymSendEvent('city_select', { city: city });
// Сохраняем выбранный город в localStorage
localStorage.setItem("selectedCity", city);
@ -461,6 +482,9 @@ getWeatherBtn.addEventListener("click", async () => {
const data = await response.json();
console.log("Данные получены успешно");
// Отправляем событие успешной загрузки данных
ymSendEvent('weather_load_success', { city: city });
// Отображаем текущую погоду
displayCurrentWeather(data);
@ -494,6 +518,13 @@ getWeatherBtn.addEventListener("click", async () => {
console.error("Статус ответа:", error.response.status);
console.error("Текст ответа:", error.response.statusText);
}
// Отправляем событие ошибки загрузки
ymSendEvent('weather_load_error', {
city: city,
error: error.message
});
alert("Не удалось загрузить данные о погоде. Проверьте API ключ.");
}
});
@ -697,6 +728,9 @@ function createTemperatureChart(hourlyData) {
document.documentElement.classList.contains("dark") ||
document.body.classList.contains("dark");
// Отправляем событие просмотра графика температуры
ymSendEvent('chart_view', { chart_type: 'temperature' });
// Подготавливаем данные
const labels = hourlyData.map((item) => {
const hour = new Date(item.time).getHours();
@ -880,6 +914,9 @@ function setTheme(theme) {
html.setAttribute("data-theme", "light");
}
// Отправляем событие смены темы
ymSendEvent('theme_change', { theme: theme });
// Сохраняем выбранную тему
localStorage.setItem("theme", theme);
@ -937,6 +974,9 @@ function createPrecipitationChart(hourlyData) {
const ctx = document.getElementById("precipitationChart").getContext("2d");
const colors = getThemeColors();
// Отправляем событие просмотра графика осадков
ymSendEvent('chart_view', { chart_type: 'precipitation' });
// Подготавливаем данные
const labels = hourlyData.map((item) => {
const hour = new Date(item.time).getHours();