jquery-prayer-times
Version:
A small jQuery plugin for displaying Muslim Prayer Times
1 lines • 2.07 kB
JavaScript
$.fn.prayerTimes=function(t={}){const i=this,e=["الفجر","الشروق","الظهر","العصر","الغروب","المغرب","العشاء","الإمساك","منتصف الليل"],n={method:void 0===t.method?4:t.method,school:void 0===t.school?0:t.school,city:t.city||null,country:t.country||null,imsak:void 0===t.imsak||t.imsak,sunrise:void 0===t.sunrise||t.sunrise,sunset:void 0===t.sunset||t.sunset,midnight:void 0===t.midnight||t.midnight,arabic:void 0!==t.arabic&&t.arabic,militaryTime:void 0===t.militaryTime||t.militaryTime,outputEl:t.outputEl||"table"},s=JSON.parse(localStorage.getItem("jquery-prayer-times"));function a({city:t,country:e}){const a=`https://api.aladhan.com/v1/timingsByCity?midnightMode=1&method=${n.method}&school=${n.school}&city=${t}&country=${e}`;!s||s&&(c(s.timestamp)>0||a!==s.lastQueries)?$.get(a,t=>{localStorage.setItem("jquery-prayer-times",JSON.stringify({lastQueries:a,value:t,timestamp:r()})),i.html(o(t.data.timings))}):i.html(o(s.value.data.timings))}function o(t){const i="table"===n.outputEl?"table":"ul",s=!!n.arabic,a=!n.militaryTime,o=(t,i)=>s?e[i]:t,r=t=>a?function(t){const i=t.split(":"),e=+i[0],n=e<12||24===e?"AM":"PM";return`${`${e%12||12}`.padStart(2,"0")}:${i[1]} ${n}`}(t):t;let c=0,u=`<${i}>`;for(const e in t){const s=o(e,c),a=r(t[e]);n.imsak||"Imsak"!==e?(n.sunrise||"Sunrise"!==e)&&(n.sunset||"Sunset"!==e)&&(n.midnight||"Midnight"!==e)?(u+=`${"table"===i?`<tr tabindex="0"><td>${s}</td><td>${a}</td></tr>`:`<li tabindex="0"><span>${s}</span><span>${a}</span></li>`}`,c++):c++:c++}return u+=`</${i}>`}function r(t=new Date){return`${String(t.getDate()).padStart(2,"0")}/${String(t.getMonth()+1).padStart(2,"0")}/${t.getFullYear()}`}function c(t){const i=new Date(...r().split("/")),e=new Date(...t.split("/"));return Math.round((i-e)/864e5/365)}if(n.city&&n.country)a({city:n.city,country:n.country});else if(s&&0===c(s.timestamp)){const t=new URLSearchParams(s.lastQueries);a({city:t.get("city"),country:t.get("country")})}else $.get("https://ipinfo.io/json",t=>a({city:t.city,country:t.country}))};