Add authentication #17
1 changed files with 35 additions and 13 deletions
|
@ -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,18 +1187,33 @@ 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");
|
||||||
|
if (searchInput) {
|
||||||
|
// Add input event
|
||||||
|
searchInput.addEventListener("input", (e) => {
|
||||||
const target = e.target as HTMLInputElement;
|
const target = e.target as HTMLInputElement;
|
||||||
clearTimeout(searchTimeout);
|
clearTimeout(searchTimeout);
|
||||||
searchTimeout = window.setTimeout(() => {
|
searchTimeout = window.setTimeout(() => {
|
||||||
searchQuery = target.value;
|
searchQuery = target.value.trim();
|
||||||
currentPage = 1;
|
currentPage = 1;
|
||||||
fetchEvents();
|
fetchEvents();
|
||||||
}, 300); // 300ms debounce
|
}, 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
|
||||||
.getElementById("perPageSelect")
|
.getElementById("perPageSelect")
|
||||||
|
|
Loading…
Reference in a new issue