1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-05 05:05:17 +02:00

Update date validation to use UTC comparison and enhance documentation

This commit is contained in:
Sean Morley 2025-05-13 12:55:06 -04:00 committed by GitHub
commit 8b41a0f5a4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 43 additions and 18 deletions

View file

@ -182,6 +182,7 @@
<!-- Dual timezone selectors for transportation -->
<div class="space-y-4">
<div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="text-sm font-medium block mb-1">
{$t('adventures.departure_timezone')}
</label>
@ -189,6 +190,7 @@
</div>
<div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="text-sm font-medium block mb-1">
{$t('adventures.arrival_timezone')}
</label>
@ -366,8 +368,8 @@
</div>
<!-- Validation Message -->
{#if !validateDateRange(localStartDate, localEndDate).valid}
<div role="alert" class="alert alert-error">
{#if !validateDateRange(utcStartDate ?? '', utcEndDate ?? '').valid}
<div role="alert" class="alert alert-error mt-2">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-6 w-6 shrink-0 stroke-current"

View file

@ -87,10 +87,10 @@ export function updateUTCDate({
}
/**
* Validate date ranges
* @param startDate - Start date string
* @param endDate - End date string
* @returns Object with validation result and error message
* Validate date ranges using UTC comparison
* @param startDate - Start date string in UTC (ISO format)
* @param endDate - End date string in UTC (ISO format)
* @returns Object with validation result and optional error message
*/
export function validateDateRange(
startDate: string,
@ -106,11 +106,12 @@ export function validateDateRange(
if (
startDate &&
endDate &&
DateTime.fromISO(startDate).toMillis() > DateTime.fromISO(endDate).toMillis()
DateTime.fromISO(startDate, { zone: 'utc' }).toMillis() >
DateTime.fromISO(endDate, { zone: 'utc' }).toMillis()
) {
return {
valid: false,
error: 'Start date must be before end date'
error: 'Start date must be before end date (based on UTC)'
};
}

View file

@ -259,7 +259,9 @@
"timezone": "Zeitzone",
"no_visits": "Keine Besuche",
"arrival_timezone": "Ankunftszeitzone",
"departure_timezone": "Abfahrtszeit"
"departure_timezone": "Abfahrtszeit",
"arrival_date": "Ankunftsdatum",
"departure_date": "Abflugdatum"
},
"home": {
"desc_1": "Entdecken, planen und erkunden Sie mühelos",

View file

@ -67,6 +67,8 @@
"no_visits": "No visits",
"departure_timezone": "Departure Timezone",
"arrival_timezone": "Arrival Timezone",
"departure_date": "Departure Date",
"arrival_date": "Arrival Date",
"no_image_found": "No image found",
"collection_link_error": "Error linking adventure to collection",
"adventure_delete_confirm": "Are you sure you want to delete this adventure? This action cannot be undone.",

View file

@ -307,7 +307,9 @@
"timezone": "Zona horaria",
"no_visits": "No hay visitas",
"arrival_timezone": "Zona horaria de llegada",
"departure_timezone": "Zona horaria de salida"
"departure_timezone": "Zona horaria de salida",
"arrival_date": "Fecha de llegada",
"departure_date": "Fecha de salida"
},
"worldtravel": {
"all": "Todo",

View file

@ -259,7 +259,9 @@
"timezone": "Fuseau horaire",
"no_visits": "Pas de visites",
"arrival_timezone": "Fuseau horaire d'arrivée",
"departure_timezone": "Fuseau horaire de départ"
"departure_timezone": "Fuseau horaire de départ",
"arrival_date": "Date d'arrivée",
"departure_date": "Date de départ"
},
"home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité",

View file

@ -259,7 +259,9 @@
"timezone": "Fuso orario",
"no_visits": "Nessuna visita",
"arrival_timezone": "Fuso orario di arrivo",
"departure_timezone": "Fuso orario di partenza"
"departure_timezone": "Fuso orario di partenza",
"arrival_date": "Data di arrivo",
"departure_date": "Data di partenza"
},
"home": {
"desc_1": "Scopri, pianifica ed esplora con facilità",

View file

@ -259,7 +259,9 @@
"timezone": "시간대",
"no_visits": "방문 없음",
"arrival_timezone": "도착 시간대",
"departure_timezone": "출발 시간대"
"departure_timezone": "출발 시간대",
"arrival_date": "도착 날짜",
"departure_date": "출발 날짜"
},
"auth": {
"both_passwords_required": "두 암호 모두 필요합니다",

View file

@ -259,7 +259,9 @@
"timezone": "Tijdzone",
"no_visits": "Geen bezoeken",
"arrival_timezone": "Aankomsttijdzone",
"departure_timezone": "Vertrektijdzone"
"departure_timezone": "Vertrektijdzone",
"arrival_date": "Aankomstdatum",
"departure_date": "Vertrekdatum"
},
"home": {
"desc_1": "Ontdek, plan en verken met gemak",

View file

@ -307,7 +307,9 @@
"timezone": "Tidssone",
"no_visits": "Ingen besøk",
"arrival_timezone": "Ankomst tidssone",
"departure_timezone": "Avgangstidssone"
"departure_timezone": "Avgangstidssone",
"arrival_date": "Ankomstdato",
"departure_date": "Avgangsdato"
},
"worldtravel": {
"country_list": "Liste over land",

View file

@ -307,7 +307,9 @@
"timezone": "Strefa czasowa",
"no_visits": "Brak wizyt",
"arrival_timezone": "Strefa czasowa przyjazdu",
"departure_timezone": "Strefa czasowa odlotu"
"departure_timezone": "Strefa czasowa odlotu",
"arrival_date": "Data przyjazdu",
"departure_date": "Data wyjazdu"
},
"worldtravel": {
"country_list": "Lista krajów",

View file

@ -259,7 +259,9 @@
"timezone": "Tidszon",
"no_visits": "Inga besök",
"arrival_timezone": "Ankomsttidszon",
"departure_timezone": "Avgångstidszon"
"departure_timezone": "Avgångstidszon",
"arrival_date": "Ankomstdatum",
"departure_date": "Avgångsdatum"
},
"home": {
"desc_1": "Upptäck, planera och utforska med lätthet",

View file

@ -307,7 +307,9 @@
"timezone": "时区",
"no_visits": "没有访问",
"arrival_timezone": "到达时区",
"departure_timezone": "离开时区"
"departure_timezone": "离开时区",
"arrival_date": "到达日期",
"departure_date": "出发日期"
},
"auth": {
"forgot_password": "忘记密码?",