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}
🌙 HİCRİ TAKVİM
${hijri.day} ${hijri.monthName} ${hijri.year}
${hijri.weekday}
📿
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 = `
`;
}
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}
`;
}