mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 07:31:14 -05:00
feat: Implement timezone-independent date picker
This commit is contained in:
@@ -59,6 +59,8 @@ export interface FilterState {
|
||||
maxReviews?: number;
|
||||
openingYearStart: number | null;
|
||||
openingYearEnd: number | null;
|
||||
openingDateFrom?: string | null;
|
||||
openingDateTo?: string | null;
|
||||
}
|
||||
|
||||
export interface SortState {
|
||||
@@ -85,6 +87,8 @@ const initialFilters: FilterState = {
|
||||
maxReviews: 1000,
|
||||
openingYearStart: null,
|
||||
openingYearEnd: null,
|
||||
openingDateFrom: null,
|
||||
openingDateTo: null,
|
||||
};
|
||||
|
||||
const initialSort: SortState = {
|
||||
@@ -213,13 +217,26 @@ export default function Parks() {
|
||||
}
|
||||
}
|
||||
|
||||
// Opening year filter
|
||||
if (filters.openingYearStart || filters.openingYearEnd) {
|
||||
const openingYear = park.opening_date ? parseInt(park.opening_date.split("-")[0]) : null;
|
||||
if (openingYear) {
|
||||
if (filters.openingYearStart && openingYear < filters.openingYearStart) return false;
|
||||
if (filters.openingYearEnd && openingYear > filters.openingYearEnd) return false;
|
||||
} else if (filters.openingYearStart || filters.openingYearEnd) {
|
||||
// Opening date filter (timezone-independent)
|
||||
if (filters.openingDateFrom || filters.openingDateTo || filters.openingYearStart || filters.openingYearEnd) {
|
||||
if (!park.opening_date) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Full date filtering (if date range is set)
|
||||
if (filters.openingDateFrom && park.opening_date < filters.openingDateFrom) {
|
||||
return false;
|
||||
}
|
||||
if (filters.openingDateTo && park.opening_date > filters.openingDateTo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Year-only filtering (for backward compatibility)
|
||||
const openingYear = parseInt(park.opening_date.split("-")[0]);
|
||||
if (filters.openingYearStart && openingYear < filters.openingYearStart) {
|
||||
return false;
|
||||
}
|
||||
if (filters.openingYearEnd && openingYear > filters.openingYearEnd) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,16 +233,17 @@ export default function Rides() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Opening date filter
|
||||
// Opening date filter (timezone-independent string comparison)
|
||||
if (filters.openingDateFrom || filters.openingDateTo) {
|
||||
if (!ride.opening_date) {
|
||||
return false;
|
||||
}
|
||||
const openingDate = new Date(ride.opening_date);
|
||||
if (filters.openingDateFrom && openingDate < filters.openingDateFrom) {
|
||||
|
||||
// Direct YYYY-MM-DD string comparison (lexicographically correct)
|
||||
if (filters.openingDateFrom && ride.opening_date < filters.openingDateFrom) {
|
||||
return false;
|
||||
}
|
||||
if (filters.openingDateTo && openingDate > filters.openingDateTo) {
|
||||
if (filters.openingDateTo && ride.opening_date > filters.openingDateTo) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user