Add event type
This commit is contained in:
parent
1bfdf2cc31
commit
137a68c867
4 changed files with 44 additions and 7 deletions
|
@ -12,6 +12,7 @@ import type { Event, EventAttendee, LimitedUser } from "../../../schemas/pocketb
|
||||||
// Extended Event interface with additional properties needed for this component
|
// Extended Event interface with additional properties needed for this component
|
||||||
interface ExtendedEvent extends Event {
|
interface ExtendedEvent extends Event {
|
||||||
description?: string; // This component uses 'description' but schema has 'event_description'
|
description?: string; // This component uses 'description' but schema has 'event_description'
|
||||||
|
event_type: string; // Add event_type field from schema
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note: Date conversion is now handled automatically by the Get and Update classes.
|
// Note: Date conversion is now handled automatically by the Get and Update classes.
|
||||||
|
|
|
@ -10,6 +10,7 @@ import type { Event, AttendeeEntry, EventAttendee } from "../../../schemas/pocke
|
||||||
// Extended Event interface with additional properties needed for this component
|
// Extended Event interface with additional properties needed for this component
|
||||||
interface ExtendedEvent extends Event {
|
interface ExtendedEvent extends Event {
|
||||||
description?: string; // This component uses 'description' but schema has 'event_description'
|
description?: string; // This component uses 'description' but schema has 'event_description'
|
||||||
|
event_type: string; // Add event_type field from schema
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
@ -277,6 +278,10 @@ const EventLoad = () => {
|
||||||
<Icon icon="heroicons:map-pin" className="h-3.5 w-3.5 text-primary" />
|
<Icon icon="heroicons:map-pin" className="h-3.5 w-3.5 text-primary" />
|
||||||
<span className="line-clamp-1">{event.location || "No location specified"}</span>
|
<span className="line-clamp-1">{event.location || "No location specified"}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<Icon icon="heroicons:tag" className="h-3.5 w-3.5 text-primary" />
|
||||||
|
<span className="line-clamp-1 capitalize">{event.event_type || "Other"}</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Action Buttons */}
|
{/* Action Buttons */}
|
||||||
|
|
|
@ -133,6 +133,28 @@ const EventForm = memo(({
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Event Type */}
|
||||||
|
<div className="form-control">
|
||||||
|
<label className="label">
|
||||||
|
<span className="label-text">Event Type</span>
|
||||||
|
<span className="label-text-alt text-error">*</span>
|
||||||
|
</label>
|
||||||
|
<select
|
||||||
|
name="editEventType"
|
||||||
|
className="select select-bordered"
|
||||||
|
value={event?.event_type || "other"}
|
||||||
|
onChange={(e) => handleChange('event_type', e.target.value)}
|
||||||
|
required
|
||||||
|
>
|
||||||
|
<option value="social">Social</option>
|
||||||
|
<option value="technical">Technical</option>
|
||||||
|
<option value="outreach">Outreach</option>
|
||||||
|
<option value="professional">Professional</option>
|
||||||
|
<option value="workshop">Projects</option>
|
||||||
|
<option value="other">Other</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Points to Reward */}
|
{/* Points to Reward */}
|
||||||
<div className="form-control">
|
<div className="form-control">
|
||||||
<label className="label">
|
<label className="label">
|
||||||
|
@ -435,6 +457,7 @@ interface EventChanges {
|
||||||
end_date?: string;
|
end_date?: string;
|
||||||
published?: boolean;
|
published?: boolean;
|
||||||
has_food?: boolean;
|
has_food?: boolean;
|
||||||
|
event_type?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FileChanges {
|
interface FileChanges {
|
||||||
|
@ -521,7 +544,8 @@ class ChangeTracker {
|
||||||
'start_date',
|
'start_date',
|
||||||
'end_date',
|
'end_date',
|
||||||
'published',
|
'published',
|
||||||
'has_food'
|
'has_food',
|
||||||
|
'event_type'
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const field of fields) {
|
for (const field of fields) {
|
||||||
|
@ -588,7 +612,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: "",
|
start_date: "",
|
||||||
end_date: "",
|
end_date: "",
|
||||||
published: false,
|
published: false,
|
||||||
has_food: false
|
has_food: false,
|
||||||
|
event_type: "other"
|
||||||
});
|
});
|
||||||
|
|
||||||
const [previewUrl, setPreviewUrl] = useState("");
|
const [previewUrl, setPreviewUrl] = useState("");
|
||||||
|
@ -681,7 +706,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: eventData.start_date || '',
|
start_date: eventData.start_date || '',
|
||||||
end_date: eventData.end_date || '',
|
end_date: eventData.end_date || '',
|
||||||
published: eventData.published || false,
|
published: eventData.published || false,
|
||||||
has_food: eventData.has_food || false
|
has_food: eventData.has_food || false,
|
||||||
|
event_type: eventData.event_type || 'other'
|
||||||
});
|
});
|
||||||
|
|
||||||
// Set up realtime subscription for this event
|
// Set up realtime subscription for this event
|
||||||
|
@ -727,7 +753,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: Get.formatLocalDate(now, false),
|
start_date: Get.formatLocalDate(now, false),
|
||||||
end_date: Get.formatLocalDate(oneHourLater, false),
|
end_date: Get.formatLocalDate(oneHourLater, false),
|
||||||
published: false,
|
published: false,
|
||||||
has_food: false
|
has_food: false,
|
||||||
|
event_type: "other"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
setSelectedFiles(new Map());
|
setSelectedFiles(new Map());
|
||||||
|
@ -800,7 +827,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: "",
|
start_date: "",
|
||||||
end_date: "",
|
end_date: "",
|
||||||
published: false,
|
published: false,
|
||||||
has_food: false
|
has_food: false,
|
||||||
|
event_type: "other"
|
||||||
});
|
});
|
||||||
setSelectedFiles(new Map());
|
setSelectedFiles(new Map());
|
||||||
setFilesToDelete(new Set());
|
setFilesToDelete(new Set());
|
||||||
|
@ -839,7 +867,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: "",
|
start_date: "",
|
||||||
end_date: "",
|
end_date: "",
|
||||||
published: false,
|
published: false,
|
||||||
has_food: false
|
has_food: false,
|
||||||
|
event_type: "other"
|
||||||
});
|
});
|
||||||
setSelectedFiles(new Map());
|
setSelectedFiles(new Map());
|
||||||
setFilesToDelete(new Set());
|
setFilesToDelete(new Set());
|
||||||
|
@ -889,7 +918,8 @@ export default function EventEditor({ onEventSaved }: EventEditorProps) {
|
||||||
start_date: formData.get("editEventStartDate") as string,
|
start_date: formData.get("editEventStartDate") as string,
|
||||||
end_date: formData.get("editEventEndDate") as string,
|
end_date: formData.get("editEventEndDate") as string,
|
||||||
published: formData.get("editEventPublished") === "on",
|
published: formData.get("editEventPublished") === "on",
|
||||||
has_food: formData.get("editEventHasFood") === "on"
|
has_food: formData.get("editEventHasFood") === "on",
|
||||||
|
event_type: formData.get("editEventType") as string || "other"
|
||||||
};
|
};
|
||||||
|
|
||||||
// Log the update attempt
|
// Log the update attempt
|
||||||
|
|
|
@ -68,6 +68,7 @@ export interface Event extends BaseRecord {
|
||||||
start_date: string;
|
start_date: string;
|
||||||
end_date: string;
|
end_date: string;
|
||||||
published: boolean;
|
published: boolean;
|
||||||
|
event_type: string; // social, technical, outreach, professional, projects, other
|
||||||
has_food: boolean;
|
has_food: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue