مكتبة

Perpustakaan Pesantren

المكتبة الرقمية للمعهد · Maktabah Digital

Total Buku & Kitab

0

Total Anggota

0

Sedang Dipinjam

0

Lewat Tenggat

0

Peminjaman Aktif Terbaru

اقرأ

Adab Peminjaman

Hormati waktu jamaah & ta'lim. Kembalikan kitab tepat waktu sebagai bagian dari amanah. Rasulullah ﷺ mengajarkan menjaga titipan.

خَيْرُ النَّاسِ أَنْفَعُهُمْ لِلنَّاسِ

"Sebaik-baik manusia adalah yang paling bermanfaat bagi sesamanya."

بارك الله فيكم

Sistem Perpustakaan Pesantren · Data tersimpan lokal di browser (LocalStorage)

`); w.document.close(); }// ---------- EKSPOR CSV ---------- function downloadCSV(filename, rows){ const csv = rows.map(r => r.map(c => `"${String(c==null?'':c).replace(/"/g,'""')}"`).join(',')).join('\r\n'); const blob = new Blob(['\ufeff'+csv], {type:'text/csv;charset=utf-8;'}); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); link.remove(); URL.revokeObjectURL(url); } function exportBuku(){ const rows = [['Judul','Pengarang/Mu\'allif','Kategori','Rak/Lemari','Stok','Tersedia']]; buku.forEach(b => rows.push([b.judul, b.pengarang, b.kategori, b.rak, b.stok, (+b.stok||0)-bukuDipinjam(b.id)])); downloadCSV('katalog-buku.csv', rows); toast('Katalog diekspor (CSV)'); } function exportTransaksi(){ const rows = [['Buku','Anggota','Tgl Pinjam','Jatuh Tempo','Tgl Kembali','Status','Jenis Denda','Nominal Denda','Denda Edukatif']]; pinjam.forEach(p => { const a = anggota.find(x=>x.id===p.anggotaId), b = buku.find(x=>x.id===p.bukuId); rows.push([b?b.judul:'?', a?a.nama:'?', p.tglPinjam, p.jatuhTempo, p.kembali||'-', p.kembali?'Selesai':(isOverdue(p)?'Overdue':'Dipinjam'), p.dendaJenis||'-', p.dendaNominal||0, p.dendaEdukatif||'-']); }); downloadCSV('transaksi-peminjaman.csv', rows); toast('Transaksi diekspor (CSV)'); } $('#export-buku').addEventListener('click', exportBuku); $('#export-transaksi').addEventListener('click', exportTransaksi);// ---------- JADWAL SHOLAT OTOMATIS (by lokasi) ---------- function initPrayerTimes(){ if(!navigator.geolocation) return; navigator.geolocation.getCurrentPosition(async pos => { try{ const {latitude, longitude} = pos.coords; const r = await fetch(`https://api.aladhan.com/v1/timings?latitude=${latitude}&longitude=${longitude}&method=20`); const j = await r.json(); const t = j.data.timings; const map = [['Subuh',t.Fajr],['Dzuhur',t.Dhuhr],['Ashar',t.Asr],['Maghrib',t.Maghrib],['Isya',t.Isha]]; prayers = map.map(([n,hm]) => { const [h,m] = hm.split(':').map(Number); return {n, h, m}; }); prayerSource = 'Sesuai lokasi'; renderReminder(); toast('Jadwal sholat disesuaikan lokasi'); }catch(e){ /* keep default */ } }, () => { /* izin ditolak, pakai default */ }, {timeout:8000, maximumAge:3600000}); }// ---------- INIT ---------- seed(); refresh(); renderAll(); tickClock(); renderReminder(); setInterval(tickClock, 1000); setInterval(renderReminder, 30000); initPrayerTimes(); })();
Scroll to Top