Add authentication #17

Manually merged
Webmaster merged 225 commits from auth into main 2025-03-08 10:37:06 +00:00
Showing only changes of commit f62a3337a8 - Show all commits

View file

@ -851,10 +851,17 @@ declare global {
// Search query // Search query
if (searchQuery) { if (searchQuery) {
const searchLower = searchQuery.toLowerCase(); const searchLower = searchQuery.toLowerCase();
const searchTerms = searchLower.split(/\s+/).filter(Boolean);
return ( return (
event.event_name.toLowerCase().includes(searchLower) || searchTerms.length === 0 || // If no search terms, return true
event.event_code.toLowerCase().includes(searchLower) || searchTerms.every(
event.location.toLowerCase().includes(searchLower) (term) =>
event.event_name.toLowerCase().includes(term) ||
event.event_code.toLowerCase().includes(term) ||
event.location.toLowerCase().includes(term) ||
event.event_description.toLowerCase().includes(term)
)
); );
} }
@ -1180,17 +1187,32 @@ declare global {
fetchEvents(); fetchEvents();
}); });
// Search input with debounce // Search input with optimized debounce
let searchTimeout: number | undefined; let searchTimeout: number | undefined;
document.getElementById("searchInput")?.addEventListener("input", (e) => { const searchInput = document.getElementById("searchInput");
const target = e.target as HTMLInputElement; if (searchInput) {
clearTimeout(searchTimeout); // Add input event
searchTimeout = window.setTimeout(() => { searchInput.addEventListener("input", (e) => {
searchQuery = target.value; const target = e.target as HTMLInputElement;
currentPage = 1; clearTimeout(searchTimeout);
fetchEvents(); searchTimeout = window.setTimeout(() => {
}, 300); // 300ms debounce searchQuery = target.value.trim();
}); currentPage = 1;
fetchEvents();
}, 150); // Reduced to 150ms for faster response
});
// Add keydown event for Enter key
searchInput.addEventListener("keydown", (e) => {
if (e.key === "Enter") {
clearTimeout(searchTimeout);
const target = e.target as HTMLInputElement;
searchQuery = target.value.trim();
currentPage = 1;
fetchEvents();
}
});
}
// Per page select // Per page select
document document