diff --git a/src/components/admin/ParkForm.tsx b/src/components/admin/ParkForm.tsx index 60e0a204..06706773 100644 --- a/src/components/admin/ParkForm.tsx +++ b/src/components/admin/ParkForm.tsx @@ -405,7 +405,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }:
{ setValue('opening_date', date ? toDateWithPrecision(date, precision) : undefined); setValue('opening_date_precision', precision); @@ -418,7 +418,7 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }: { setValue('closing_date', date ? toDateWithPrecision(date, precision) : undefined); setValue('closing_date_precision', precision); diff --git a/src/components/admin/RideForm.tsx b/src/components/admin/RideForm.tsx index 4317cf02..2ec1847a 100644 --- a/src/components/admin/RideForm.tsx +++ b/src/components/admin/RideForm.tsx @@ -711,7 +711,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
{ setValue('opening_date', date ? toDateWithPrecision(date, precision) : undefined); setValue('opening_date_precision', precision); @@ -724,7 +724,7 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }: { setValue('closing_date', date ? toDateWithPrecision(date, precision) : undefined); setValue('closing_date_precision', precision); diff --git a/src/components/moderation/displays/RichCompanyDisplay.tsx b/src/components/moderation/displays/RichCompanyDisplay.tsx index b2b85646..d84c4690 100644 --- a/src/components/moderation/displays/RichCompanyDisplay.tsx +++ b/src/components/moderation/displays/RichCompanyDisplay.tsx @@ -67,7 +67,7 @@ export function RichCompanyDisplay({ data, actionType, showAllFields = true }: R {data.founded_date ? ( ) : ( diff --git a/src/components/moderation/displays/RichParkDisplay.tsx b/src/components/moderation/displays/RichParkDisplay.tsx index 8377e86e..d2aead00 100644 --- a/src/components/moderation/displays/RichParkDisplay.tsx +++ b/src/components/moderation/displays/RichParkDisplay.tsx @@ -165,7 +165,7 @@ export function RichParkDisplay({ data, actionType, showAllFields = true }: Rich Opened:{' '}
@@ -175,7 +175,7 @@ export function RichParkDisplay({ data, actionType, showAllFields = true }: Rich Closed:{' '}
diff --git a/src/components/moderation/displays/RichRideDisplay.tsx b/src/components/moderation/displays/RichRideDisplay.tsx index e3f675aa..80406944 100644 --- a/src/components/moderation/displays/RichRideDisplay.tsx +++ b/src/components/moderation/displays/RichRideDisplay.tsx @@ -606,7 +606,7 @@ export function RichRideDisplay({ data, actionType, showAllFields = true }: Rich Opened:{' '} @@ -616,7 +616,7 @@ export function RichRideDisplay({ data, actionType, showAllFields = true }: Rich Closed:{' '} diff --git a/src/components/timeline/TimelineEventCard.tsx b/src/components/timeline/TimelineEventCard.tsx index 495f2c50..383df4af 100644 --- a/src/components/timeline/TimelineEventCard.tsx +++ b/src/components/timeline/TimelineEventCard.tsx @@ -17,7 +17,7 @@ interface TimelineEventCardProps { // ⚠️ IMPORTANT: Use parseDateForDisplay to prevent timezone shifts // YYYY-MM-DD strings must be interpreted as local dates, not UTC -const formatEventDate = (date: string, precision: string = 'day') => { +const formatEventDate = (date: string, precision: string = 'exact') => { const dateObj = parseDateForDisplay(date); switch (precision) { diff --git a/src/lib/entitySubmissionHelpers.ts b/src/lib/entitySubmissionHelpers.ts index 078efc01..d06ae545 100644 --- a/src/lib/entitySubmissionHelpers.ts +++ b/src/lib/entitySubmissionHelpers.ts @@ -3708,7 +3708,7 @@ export async function submitTimelineEventUpdate( entity_id: originalEvent.entity_id, event_type: changedFields.event_type !== undefined ? changedFields.event_type : originalEvent.event_type, event_date: changedFields.event_date !== undefined ? (typeof changedFields.event_date === 'string' ? changedFields.event_date : changedFields.event_date.toISOString().split('T')[0]) : originalEvent.event_date, - event_date_precision: (changedFields.event_date_precision !== undefined ? changedFields.event_date_precision : originalEvent.event_date_precision) || 'day', + event_date_precision: (changedFields.event_date_precision !== undefined ? changedFields.event_date_precision : originalEvent.event_date_precision) || 'exact', title: changedFields.title !== undefined ? changedFields.title : originalEvent.title, description: changedFields.description !== undefined ? changedFields.description : originalEvent.description, from_value: changedFields.from_value !== undefined ? changedFields.from_value : originalEvent.from_value, diff --git a/src/lib/testDataGenerator.ts b/src/lib/testDataGenerator.ts index 8b8f9b93..86266e33 100644 --- a/src/lib/testDataGenerator.ts +++ b/src/lib/testDataGenerator.ts @@ -257,14 +257,14 @@ export function generateRandomCompany(type: 'manufacturer' | 'operator' | 'desig // Add full founded date with precision if (shouldPopulateField(density, counter, 'medium')) { companyData.founded_date = `${foundedYear}-01-01`; - companyData.founded_date_precision = randomItem(['year', 'month', 'day']); + companyData.founded_date_precision = randomItem(['year', 'month', 'exact']); } // Add defunct date for some companies if (shouldPopulateField(density, counter, 'low') && Math.random() > 0.85) { const defunctYear = randomInt(foundedYear + 10, 2024); companyData.defunct_date = `${defunctYear}-12-31`; - companyData.defunct_date_precision = randomItem(['year', 'month', 'day']); + companyData.defunct_date_precision = randomItem(['year', 'month', 'exact']); } // Add source URL diff --git a/src/lib/testDataGeneratorHelpers.ts b/src/lib/testDataGeneratorHelpers.ts index f1ce6e77..7d65a860 100644 --- a/src/lib/testDataGeneratorHelpers.ts +++ b/src/lib/testDataGeneratorHelpers.ts @@ -61,8 +61,8 @@ export function randomDate(startYear: number, endYear: number): string { return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; } -export function randomDatePrecision(): 'day' | 'month' | 'year' { - return randomItem(['day', 'month', 'year']); +export function randomDatePrecision(): 'exact' | 'month' | 'year' { + return randomItem(['exact', 'month', 'year']); } // ============================================================================ diff --git a/src/types/company-data.ts b/src/types/company-data.ts index 402fb387..15e26e64 100644 --- a/src/types/company-data.ts +++ b/src/types/company-data.ts @@ -32,7 +32,7 @@ export interface TimelineEventDatabaseRecord { entity_type: 'park' | 'ride' | 'company' | 'ride_model'; event_type: string; event_date: string; - event_date_precision: 'day' | 'month' | 'year'; + event_date_precision: 'exact' | 'month' | 'year' | 'decade' | 'century' | 'approximate'; title: string; description?: string | null; from_value?: string | null; diff --git a/src/types/submission-data.ts b/src/types/submission-data.ts index fd6d4268..5d2a6837 100644 --- a/src/types/submission-data.ts +++ b/src/types/submission-data.ts @@ -151,7 +151,7 @@ export interface TimelineEventItemData { entity_type: 'park' | 'ride' | 'company' | 'ride_model'; event_type: string; event_date: string; // ISO date - event_date_precision: 'day' | 'month' | 'year'; + event_date_precision: 'exact' | 'month' | 'year' | 'decade' | 'century' | 'approximate'; title: string; description?: string | null; from_value?: string | null;