feat(gebedstijden): voeg gebedstijd offsets en UI aanpassingen toe

Gebedstijd offsets zijn toegevoegd waarmee gebruikers tijdaanpassingen kunnen maken aan de tijden verkregen van de VUMG API. Dit biedt meer flexibiliteit door de mogelijkheid te geven om minuten toe te voegen of af te trekken van elke specifieke gebedstijd (Fajr, Zuhr, Asr, Maghrib, Isha). Het template voor instellingen is aangepast om deze nieuwe offset functionaliteit op een gebruiksvriendelijke manier toegankelijk te maken. Ook zijn er kleine correcties uitgevoerd om de seconden correct uit de gebedstijden te halen voor een betere verwerking.
This commit is contained in:
filoor 2025-05-27 15:29:42 +02:00
parent df8f4c7d9b
commit d9e8d9a915
9 changed files with 289 additions and 23 deletions

View File

@ -3,7 +3,7 @@
"activeCommit": 0, "activeCommit": 0,
"commits": [ "commits": [
{ {
"activePatchIndex": 2, "activePatchIndex": 3,
"patches": [ "patches": [
{ {
"date": 1748201503324, "date": 1748201503324,
@ -16,6 +16,10 @@
{ {
"date": 1748276087388, "date": 1748276087388,
"content": "Index: \n===================================================================\n--- \n+++ \n@@ -1,1 +1,9 @@\n-\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\n\\ No newline at end of file\n+{\n+ \"volume\": 15,\n+ \"zones\": [\n+ \"Keuken\",\n+ \"Slaapkamer\"\n+ ],\n+ \"audio_clip\": \"adhan1.mp3\",\n+ \"mute\": false\n+}\n\\ No newline at end of file\n" "content": "Index: \n===================================================================\n--- \n+++ \n@@ -1,1 +1,9 @@\n-\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\n\\ No newline at end of file\n+{\n+ \"volume\": 15,\n+ \"zones\": [\n+ \"Keuken\",\n+ \"Slaapkamer\"\n+ ],\n+ \"audio_clip\": \"adhan1.mp3\",\n+ \"mute\": false\n+}\n\\ No newline at end of file\n"
},
{
"date": 1748339667206,
"content": "Index: \n===================================================================\n--- \n+++ \n@@ -1,8 +1,8 @@\n {\n \"volume\": 15,\n \"volume_day\": 15,\n- \"volume_night\": 8,\n+ \"volume_night\": 4,\n \"night_start\": \"00:00\",\n \"day_start\": \"07:00\",\n \"zones\": [\n \"Keuken\",\n"
} }
], ],
"date": 1748201503324, "date": 1748201503324,

View File

@ -0,0 +1,22 @@
{
"sourceFile": "adhan-webapp/test_offsets.py",
"activeCommit": 0,
"commits": [
{
"activePatchIndex": 1,
"patches": [
{
"date": 1748347843183,
"content": "Index: \n===================================================================\n--- \n+++ \n"
},
{
"date": 1748347851222,
"content": "Index: \n===================================================================\n--- \n+++ \n@@ -1,71 +1,1 @@\n-#!/usr/bin/env python3\n-\n-import json\n-import sys\n-from datetime import datetime, timedelta\n-\n-def apply_prayer_offsets(gebedstijden, settings):\n- \"\"\"Pas offsets toe op gebedstijden\"\"\"\n- offsets = {\n- 'Fajr': settings.get('fajr_offset', 0),\n- 'Zuhr': settings.get('zuhr_offset', 0),\n- 'Asr': settings.get('asr_offset', 0),\n- 'Maghrib': settings.get('maghrib_offset', 0),\n- 'Isha': settings.get('isha_offset', 0)\n- }\n- \n- adjusted_times = {}\n- \n- for prayer, original_time in gebedstijden.items():\n- offset_minutes = offsets.get(prayer, 0)\n- \n- if offset_minutes == 0:\n- adjusted_times[prayer] = original_time\n- continue\n- \n- try:\n- # Parse de originele tijd\n- time_obj = datetime.strptime(original_time, '%H:%M')\n- \n- # Voeg offset toe\n- adjusted_time = time_obj + timedelta(minutes=offset_minutes)\n- \n- # Converteer terug naar string\n- adjusted_times[prayer] = adjusted_time.strftime('%H:%M')\n- \n- if offset_minutes != 0:\n- print(f\"📅 {prayer}: {original_time} → {adjusted_times[prayer]} ({offset_minutes:+d} min)\")\n- \n- except Exception as e:\n- print(f\"⚠️ Fout bij aanpassen {prayer} tijd: {e}\")\n- adjusted_times[prayer] = original_time\n- \n- return adjusted_times\n-\n-# Test de functie\n-if __name__ == \"__main__\":\n- # Laad settings\n- with open('settings.json') as f:\n- settings = json.load(f)\n- \n- # Test gebedstijden (zoals van VUMG API)\n- test_gebedstijden = {\n- \"Fajr\": \"05:30\",\n- \"Zuhr\": \"12:45\", \n- \"Asr\": \"15:20\",\n- \"Maghrib\": \"17:55\",\n- \"Isha\": \"19:30\"\n- }\n- \n- print(\"=== OFFSET TEST ===\")\n- print(\"Originele tijden:\")\n- for prayer, time in test_gebedstijden.items():\n- offset = settings.get(f'{prayer.lower()}_offset', 0)\n- print(f\" {prayer}: {time} (offset: {offset:+d} min)\")\n- \n- print(\"\\nAangepaste tijden:\")\n- adjusted = apply_prayer_offsets(test_gebedstijden, settings)\n- \n- print(\"\\nResultaat:\")\n- for prayer, time in adjusted.items():\n- print(f\" {prayer}: {time}\") \n\\ No newline at end of file\n+ \n\\ No newline at end of file\n"
}
],
"date": 1748347843183,
"name": "Commit-0",
"content": "#!/usr/bin/env python3\n\nimport json\nimport sys\nfrom datetime import datetime, timedelta\n\ndef apply_prayer_offsets(gebedstijden, settings):\n \"\"\"Pas offsets toe op gebedstijden\"\"\"\n offsets = {\n 'Fajr': settings.get('fajr_offset', 0),\n 'Zuhr': settings.get('zuhr_offset', 0),\n 'Asr': settings.get('asr_offset', 0),\n 'Maghrib': settings.get('maghrib_offset', 0),\n 'Isha': settings.get('isha_offset', 0)\n }\n \n adjusted_times = {}\n \n for prayer, original_time in gebedstijden.items():\n offset_minutes = offsets.get(prayer, 0)\n \n if offset_minutes == 0:\n adjusted_times[prayer] = original_time\n continue\n \n try:\n # Parse de originele tijd\n time_obj = datetime.strptime(original_time, '%H:%M')\n \n # Voeg offset toe\n adjusted_time = time_obj + timedelta(minutes=offset_minutes)\n \n # Converteer terug naar string\n adjusted_times[prayer] = adjusted_time.strftime('%H:%M')\n \n if offset_minutes != 0:\n print(f\"📅 {prayer}: {original_time} → {adjusted_times[prayer]} ({offset_minutes:+d} min)\")\n \n except Exception as e:\n print(f\"⚠️ Fout bij aanpassen {prayer} tijd: {e}\")\n adjusted_times[prayer] = original_time\n \n return adjusted_times\n\n# Test de functie\nif __name__ == \"__main__\":\n # Laad settings\n with open('settings.json') as f:\n settings = json.load(f)\n \n # Test gebedstijden (zoals van VUMG API)\n test_gebedstijden = {\n \"Fajr\": \"05:30\",\n \"Zuhr\": \"12:45\", \n \"Asr\": \"15:20\",\n \"Maghrib\": \"17:55\",\n \"Isha\": \"19:30\"\n }\n \n print(\"=== OFFSET TEST ===\")\n print(\"Originele tijden:\")\n for prayer, time in test_gebedstijden.items():\n offset = settings.get(f'{prayer.lower()}_offset', 0)\n print(f\" {prayer}: {time} (offset: {offset:+d} min)\")\n \n print(\"\\nAangepaste tijden:\")\n adjusted = apply_prayer_offsets(test_gebedstijden, settings)\n \n print(\"\\nResultaat:\")\n for prayer, time in adjusted.items():\n print(f\" {prayer}: {time}\") "
}
]
}

Binary file not shown.

View File

@ -1,5 +1,5 @@
import requests, json, os import requests, json, os
from datetime import datetime, date from datetime import datetime, date, timedelta
import time import time
SETTINGS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'settings.json') SETTINGS_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'settings.json')
@ -45,6 +45,44 @@ def get_current_volume(settings):
logregel(f"☀️ Dag volume gebruikt: {volume}") logregel(f"☀️ Dag volume gebruikt: {volume}")
return volume return volume
def apply_prayer_offsets(gebedstijden, settings):
"""Pas offsets toe op gebedstijden"""
offsets = {
'Fajr': settings.get('fajr_offset', 0),
'Zuhr': settings.get('zuhr_offset', 0),
'Asr': settings.get('asr_offset', 0),
'Maghrib': settings.get('maghrib_offset', 0),
'Isha': settings.get('isha_offset', 0)
}
adjusted_times = {}
for prayer, original_time in gebedstijden.items():
offset_minutes = offsets.get(prayer, 0)
if offset_minutes == 0:
adjusted_times[prayer] = original_time
continue
try:
# Parse de originele tijd
time_obj = datetime.strptime(original_time, '%H:%M')
# Voeg offset toe
adjusted_time = time_obj + timedelta(minutes=offset_minutes)
# Converteer terug naar string
adjusted_times[prayer] = adjusted_time.strftime('%H:%M')
if offset_minutes != 0:
logregel(f"📅 {prayer}: {original_time}{adjusted_times[prayer]} ({offset_minutes:+d} min)")
except Exception as e:
logregel(f"⚠️ Fout bij aanpassen {prayer} tijd: {e}")
adjusted_times[prayer] = original_time
return adjusted_times
def check_recent_play(prayer_name): def check_recent_play(prayer_name):
"""Controleer of deze adhaan recent is afgespeeld (binnen 2 minuten)""" """Controleer of deze adhaan recent is afgespeeld (binnen 2 minuten)"""
try: try:
@ -129,16 +167,19 @@ try:
res.raise_for_status() res.raise_for_status()
data = res.json()[0] data = res.json()[0]
gebedstijden = { gebedstijden = {
"Fajr": data.get("fajr_jamah", "00:00"), "Fajr": data.get("fajr_jamah", "00:00")[:5], # Haal seconden weg
"Zuhr": data.get("zuhr_jamah", "00:00"), "Zuhr": data.get("zuhr_jamah", "00:00")[:5], # Haal seconden weg
"Asr": data.get("asr_jamah", "00:00"), "Asr": data.get("asr_jamah", "00:00")[:5], # Haal seconden weg
"Maghrib": data.get("maghrib_jamah", "00:00"), "Maghrib": data.get("maghrib_jamah", "00:00")[:5], # Haal seconden weg
"Isha": data.get("isha_jamah", "00:00") "Isha": data.get("isha_jamah", "00:00")[:5] # Haal seconden weg
} }
except Exception as e: except Exception as e:
logregel(f"Fout bij ophalen gebedstijden: {e}") logregel(f"Fout bij ophalen gebedstijden: {e}")
exit(1) exit(1)
# Pas offsets toe op gebedstijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
# Check voor gebedstijd # Check voor gebedstijd
for naam, tijd in gebedstijden.items(): for naam, tijd in gebedstijden.items():
if tijd[:5] == now: # Alleen uren:minuten vergelijken if tijd[:5] == now: # Alleen uren:minuten vergelijken

View File

@ -103,6 +103,46 @@ def get_current_volume(settings):
else: else:
return settings.get('volume_day', settings.get('volume', 30)) return settings.get('volume_day', settings.get('volume', 30))
def apply_prayer_offsets(gebedstijden, settings):
"""Pas offsets toe op gebedstijden"""
from datetime import datetime, timedelta
offsets = {
'Fajr': settings.get('fajr_offset', 0),
'Zuhr': settings.get('zuhr_offset', 0),
'Asr': settings.get('asr_offset', 0),
'Maghrib': settings.get('maghrib_offset', 0),
'Isha': settings.get('isha_offset', 0)
}
adjusted_times = {}
for prayer, original_time in gebedstijden.items():
offset_minutes = offsets.get(prayer, 0)
if offset_minutes == 0:
adjusted_times[prayer] = original_time
continue
try:
# Parse de originele tijd
time_obj = datetime.strptime(original_time, '%H:%M')
# Voeg offset toe
adjusted_time = time_obj + timedelta(minutes=offset_minutes)
# Converteer terug naar string
adjusted_times[prayer] = adjusted_time.strftime('%H:%M')
if offset_minutes != 0:
print(f"📅 {prayer}: {original_time}{adjusted_times[prayer]} ({offset_minutes:+d} min)")
except Exception as e:
print(f"⚠️ Fout bij aanpassen {prayer} tijd: {e}")
adjusted_times[prayer] = original_time
return adjusted_times
def fetch_sonos_zones(): def fetch_sonos_zones():
try: try:
res = requests.get(f'http://{SONOS_API_IP}:5005/zones', timeout=5) res = requests.get(f'http://{SONOS_API_IP}:5005/zones', timeout=5)
@ -194,13 +234,16 @@ def index():
data = res.json()[0] data = res.json()[0]
gebedstijden = { gebedstijden = {
"Fajr": data.get("fajr_jamah", "00:00"), "Fajr": data.get("fajr_jamah", "00:00")[:5], # Haal seconden weg
"Zuhr": data.get("zuhr_jamah", "00:00"), "Zuhr": data.get("zuhr_jamah", "00:00")[:5], # Haal seconden weg
"Asr": data.get("asr_jamah", "00:00"), "Asr": data.get("asr_jamah", "00:00")[:5], # Haal seconden weg
"Maghrib": data.get("maghrib_jamah", "00:00"), "Maghrib": data.get("maghrib_jamah", "00:00")[:5], # Haal seconden weg
"Isha": data.get("isha_jamah", "00:00") "Isha": data.get("isha_jamah", "00:00")[:5] # Haal seconden weg
} }
# Pas offsets toe op gebedstijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
now = datetime.now().strftime('%H:%M') now = datetime.now().strftime('%H:%M')
for naam, tijd in gebedstijden.items(): for naam, tijd in gebedstijden.items():
if tijd > now: if tijd > now:
@ -257,6 +300,13 @@ def instellingen():
settings['day_start'] = settings.get('day_start', '07:00') settings['day_start'] = settings.get('day_start', '07:00')
settings['volume'] = settings['volume_day'] settings['volume'] = settings['volume_day']
# Gebedstijd offsets
settings['fajr_offset'] = int(request.form.get('fajr_offset', 0))
settings['zuhr_offset'] = int(request.form.get('zuhr_offset', 0))
settings['asr_offset'] = int(request.form.get('asr_offset', 0))
settings['maghrib_offset'] = int(request.form.get('maghrib_offset', 0))
settings['isha_offset'] = int(request.form.get('isha_offset', 0))
settings['zones'] = request.form.getlist('zones') settings['zones'] = request.form.getlist('zones')
settings['audio_clip'] = request.form['audio_clip'] settings['audio_clip'] = request.form['audio_clip']
@ -345,12 +395,15 @@ def debug():
data = res.json()[0] data = res.json()[0]
gebedstijden = { gebedstijden = {
"Fajr": data.get("fajr_jamah", "00:00"), "Fajr": data.get("fajr_jamah", "00:00")[:5], # Haal seconden weg
"Zuhr": data.get("zuhr_jamah", "00:00"), "Zuhr": data.get("zuhr_jamah", "00:00")[:5], # Haal seconden weg
"Asr": data.get("asr_jamah", "00:00"), "Asr": data.get("asr_jamah", "00:00")[:5], # Haal seconden weg
"Maghrib": data.get("maghrib_jamah", "00:00"), "Maghrib": data.get("maghrib_jamah", "00:00")[:5], # Haal seconden weg
"Isha": data.get("isha_jamah", "00:00") "Isha": data.get("isha_jamah", "00:00")[:5] # Haal seconden weg
} }
# Pas offsets toe op gebedstijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
except Exception as e: except Exception as e:
print("❌ Fout bij ophalen gebedstijden voor debug:", e) print("❌ Fout bij ophalen gebedstijden voor debug:", e)
# Fallback tijden voor testing # Fallback tijden voor testing
@ -362,6 +415,9 @@ def debug():
"Isha": "19:00" "Isha": "19:00"
} }
# Pas ook offsets toe op fallback tijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
return render_template('debug.html', return render_template('debug.html',
gebedstijden=gebedstijden, gebedstijden=gebedstijden,
settings=settings) settings=settings)
@ -502,7 +558,41 @@ def sonos_stop():
@app.route('/quran') @app.route('/quran')
def quran(): def quran():
"""Quran speler pagina""" """Quran speler pagina"""
return render_template('quran.html') settings = load_settings()
gebedstijden = {}
try:
res = requests.get(VUMG_API)
res.raise_for_status()
data = res.json()[0]
gebedstijden = {
"Fajr": data.get("fajr_jamah", "00:00")[:5], # Haal seconden weg
"Zuhr": data.get("zuhr_jamah", "00:00")[:5], # Haal seconden weg
"Asr": data.get("asr_jamah", "00:00")[:5], # Haal seconden weg
"Maghrib": data.get("maghrib_jamah", "00:00")[:5], # Haal seconden weg
"Isha": data.get("isha_jamah", "00:00")[:5] # Haal seconden weg
}
# Pas offsets toe op gebedstijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
except Exception as e:
print("❌ Fout bij ophalen gebedstijden voor quran pagina:", e)
# Fallback tijden
gebedstijden = {
"Fajr": "06:00",
"Zuhr": "12:30",
"Asr": "15:00",
"Maghrib": "17:30",
"Isha": "19:00"
}
# Pas ook offsets toe op fallback tijden
gebedstijden = apply_prayer_offsets(gebedstijden, settings)
return render_template('quran.html',
gebedstijden=gebedstijden,
settings=settings)
if __name__ == '__main__': if __name__ == '__main__':
app.run(host='0.0.0.0', port=80) app.run(host='0.0.0.0', port=80)

View File

@ -1,3 +1,7 @@
Mon May 26 16:08:33 CEST 2025: Hadith auto-update functionaliteit toegevoegd - JavaScript code toegevoegd om elke 30 seconden een nieuwe hadith op te halen via /api/hadith endpoint Mon May 26 16:08:33 CEST 2025: Hadith auto-update functionaliteit toegevoegd - JavaScript code toegevoegd om elke 30 seconden een nieuwe hadith op te halen via /api/hadith endpoint
Mon May 26 16:19:32 CEST 2025: Instellingen pagina design aangepast - Hetzelfde design als rest van applicatie met theme ondersteuning, Material Icons en consistente styling Mon May 26 16:19:32 CEST 2025: Instellingen pagina design aangepast - Hetzelfde design als rest van applicatie met theme ondersteuning, Material Icons en consistente styling
Mon May 26 18:17:57 CEST 2025: Tijdzone probleem opgelost - Container gebruikt nu Nederlandse tijd (18:17), volgende test bij Maghrib om 21:45 Mon May 26 18:17:57 CEST 2025: Tijdzone probleem opgelost - Container gebruikt nu Nederlandse tijd (18:17), volgende test bij Maghrib om 21:45
2025-05-27 11:55:10 - Oude volume regel verwijderd uit settings.json - alleen volume_day en volume_night behouden
2025-05-27 14:07:15 - Gebedstijd offsets toegevoegd - kan nu minuten toevoegen/afhalen van VUMG tijden
2025-05-27 14:16:04 - Offset bug gerepareerd - seconden weggehaald van VUMG API tijden zodat parsing correct werkt
2025-05-27 14:24:39 - Quran pagina gerepareerd - gebedstijden variabele toegevoegd aan template

View File

@ -1,13 +1,18 @@
{ {
"volume": 15, "volume_day": 10,
"volume_day": 15, "volume_night": 4,
"volume_night": 8, "night_start": "23:50",
"night_start": "00:00",
"day_start": "07:00", "day_start": "07:00",
"fajr_offset": 30,
"zuhr_offset": 0,
"asr_offset": 0,
"maghrib_offset": 0,
"isha_offset": 0,
"zones": [ "zones": [
"Keuken", "Keuken",
"Slaapkamer" "Slaapkamer"
], ],
"audio_clip": "adhan1.mp3", "audio_clip": "adhan1.mp3",
"mute": false "mute": false,
"volume": 10
} }

View File

@ -99,6 +99,46 @@
{ {
"text": "Allah zal voor degene die Hem vreest een uitweg maken en hem voorzien van waar hij het niet verwacht.", "text": "Allah zal voor degene die Hem vreest een uitweg maken en hem voorzien van waar hij het niet verwacht.",
"bron": "Koran 65:2-3" "bron": "Koran 65:2-3"
},
{
"text": "Wie een weg bewandelt om kennis te zoeken, Allah zal voor hem een weg naar het Paradijs vergemakkelijken.",
"bron": "Sahih Muslim"
},
{
"text": "Degene die een moslim verlost van een wereldse zorg, Allah zal hem verlossen van een zorg op de Dag des Oordeels.",
"bron": "Sahih Muslim"
},
{
"text": "Allah strekt Zijn Hand uit in de nacht zodat de zondaar overdag zich kan bekeren, en Hij strekt Zijn Hand uit overdag zodat de zondaar in de nacht zich kan bekeren.",
"bron": "Sahih Muslim"
},
{
"text": "Voorwaar, met moeilijkheid komt verlichting.",
"bron": "Koran 94:6"
},
{
"text": "Wie het pad van vergiffenis bewandelt, Allah zal hem vergeven.",
"bron": "Sahih al-Bukhari"
},
{
"text": "Allah is mooi en houdt van schoonheid.",
"bron": "Sahih Muslim"
},
{
"text": "Niemand van jullie gelooft werkelijk totdat hij voor zijn broeder wenst wat hij voor zichzelf wenst.",
"bron": "Sahih al-Bukhari & Muslim"
},
{
"text": "Wanneer Allah van een dienaar houdt, roept Hij Djibriel en zegt: Voorwaar, Ik houd van die-en-die, houd daarom ook van hem.",
"bron": "Sahih al-Bukhari"
},
{
"text": "Een moslim is de broeder van een moslim. Hij doet hem geen onrecht aan en laat hem niet in de steek.",
"bron": "Sahih al-Bukhari & Muslim"
},
{
"text": "Zeg het goede of zwijg.",
"bron": "Sahih al-Bukhari"
} }
] ]
} }

View File

@ -121,6 +121,66 @@
</div> </div>
</div> </div>
<div class="form-group">
<label>
<span class="material-icons">schedule</span>
Gebedstijd Aanpassingen:
</label>
<p style="color: var(--text-secondary); font-size: 0.9rem; margin: 0.5rem 0;">
Voeg minuten toe (+) of haal af (-) van de VUMG gebedstijden. Bijvoorbeeld: +30 voor 30 minuten later, -15 voor 15 minuten eerder.
</p>
</div>
<div class="form-row">
<div class="form-group">
<label for="fajr_offset">
<span class="material-icons">wb_twilight</span>
Fajr Aanpassing (minuten):
</label>
<input type="number" name="fajr_offset" value="{{ settings.fajr_offset or 0 }}" min="-120" max="120" step="5" />
</div>
<div class="form-group">
<label for="zuhr_offset">
<span class="material-icons">wb_sunny</span>
Zuhr Aanpassing (minuten):
</label>
<input type="number" name="zuhr_offset" value="{{ settings.zuhr_offset or 0 }}" min="-120" max="120" step="5" />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="asr_offset">
<span class="material-icons">brightness_low</span>
Asr Aanpassing (minuten):
</label>
<input type="number" name="asr_offset" value="{{ settings.asr_offset or 0 }}" min="-120" max="120" step="5" />
</div>
<div class="form-group">
<label for="maghrib_offset">
<span class="material-icons">brightness_3</span>
Maghrib Aanpassing (minuten):
</label>
<input type="number" name="maghrib_offset" value="{{ settings.maghrib_offset or 0 }}" min="-120" max="120" step="5" />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="isha_offset">
<span class="material-icons">brightness_2</span>
Isha Aanpassing (minuten):
</label>
<input type="number" name="isha_offset" value="{{ settings.isha_offset or 0 }}" min="-120" max="120" step="5" />
</div>
<div class="form-group">
<!-- Lege ruimte voor symmetrie -->
</div>
</div>
<div class="button-group"> <div class="button-group">
<button type="submit" name="test_clip" class="btn-secondary"> <button type="submit" name="test_clip" class="btn-secondary">
<span class="material-icons">speaker</span> <span class="material-icons">speaker</span>