import { gregorianToHijri } from "../utils/hijri.js"; import { fetchWeather, getWeatherIcon, getWeatherDesc, } from "../utils/weather.js"; import { fetchPrayerTimes } from "../utils/prayerTimes.js"; export function renderDesktop(selectedCity = "Edremit", pb) { const hijri = gregorianToHijri(); const today = new Date(); const dateStr = today.toLocaleDateString("tr-TR", { weekday: "long", year: "numeric", month: "long", day: "numeric", }); const html = `

CANLI SAAT

00:00:00

${dateStr}

📊 KAZA İLERLEMESİ %0

Yükleniyor...


🌙 HİCRİ TAKVİM

${hijri.day} ${hijri.monthName} ${hijri.year}

${hijri.weekday}


Hava durumu yükleniyor...

Namaz vakitleri yükleniyor...
📿

Kaza Namazı Takibi

Detaylı sayaç & takip

`; return { html, initEvents: (container) => { startClock(container); loadWeather(container, selectedCity); loadImsakiye(container, selectedCity); if (pb) loadDesktopKazaProgress(container, pb); container .querySelector("#kazaShortcut") ?.addEventListener("click", () => { window.dispatchEvent(new CustomEvent("navigate", { detail: "kaza" })); }); }, }; } // Canlı Saat Mantığı (Saniyede Bir Güncellenir) function startClock(container) { const clockEl = container.querySelector("#liveClock"); if (!clockEl) return; const update = () => { const now = new Date(); clockEl.textContent = now.toLocaleTimeString("tr-TR"); }; update(); setInterval(update, 1000); } // PocketBase üzerindeki sabit hedeflere (target_*) göre kaza durumunu okuma async function loadDesktopKazaProgress(container, pb) { const user = pb.authStore.model; if (!user) return; let totalTarget = 0; let totalCompleted = 0; try { const record = await pb .collection("kaza_logs") .getFirstListItem(`user = "${user.id}"`); if (record) { totalTarget = (record.target_fajr || 0) + (record.target_dhuhr || 0) + (record.target_asr || 0) + (record.target_maghrib || 0) + (record.target_isha || 0) + (record.target_vitr || 0); totalCompleted = (record.fajr || 0) + (record.dhuhr || 0) + (record.asr || 0) + (record.maghrib || 0) + (record.isha || 0) + (record.vitr || 0); } } catch {} const remaining = Math.max(0, totalTarget - totalCompleted); const pct = totalTarget > 0 ? Math.min(100, Math.round((totalCompleted / totalTarget) * 100)) : 0; const bar = container.querySelector("#desktopKazaBar"); const pctText = container.querySelector("#desktopKazaPct"); const subText = container.querySelector("#desktopKazaSub"); if (bar) bar.style.width = `${pct}%`; if (pctText) pctText.textContent = `%${pct}`; if (subText) subText.textContent = `${totalCompleted} kılınan / ${remaining} kalan`; } async function loadWeather(container, selectedCity) { const widget = container.querySelector("#weatherWidget"); if (!widget) return; const data = await fetchWeather(selectedCity); if (!data) { widget.innerHTML = `Hava durumu alınamadı`; return; } const icon = getWeatherIcon(data.weathercode); const desc = getWeatherDesc(data.weathercode); const temp = Math.round(data.temperature); widget.innerHTML = `
🌤️ HAVA DURUMU

${desc}

${icon} ${temp}°C
`; } async function loadImsakiye(container, selectedCity) { const widget = container.querySelector("#imsakiyeWidget"); if (!widget) return; const times = await fetchPrayerTimes(selectedCity); if (!times) { widget.innerHTML = `Vakitler alınamadı`; return; } const activeKey = times.currentPrayer?.key; widget.innerHTML = `
🕌 NAMAZ VAKİTLERİ Şu an: ${times.currentPrayer?.name}
İmsak: ${times.imsak}
Güneş: ${times.sunrise}
Öğle: ${times.dhuhr}
İkindi: ${times.asr}
Akşam: ${times.maghrib}
Yatsı: ${times.isha}
`; }