From 029815c21856efcb536e280e0bae60a1f608374a Mon Sep 17 00:00:00 2001 From: Kobe Date: Mon, 26 May 2025 21:41:47 +0200 Subject: [PATCH] fix search on rooms --- templates/rooms/room.html | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/templates/rooms/room.html b/templates/rooms/room.html index 63be734..eeb79a0 100644 --- a/templates/rooms/room.html +++ b/templates/rooms/room.html @@ -1836,5 +1836,64 @@ function navigateToParent() { const parentPath = parts.join('/'); navigateTo(parentPath); } + +// Add debounce function +function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +// Add search functionality +function performSearch(searchTerm) { + if (!window.currentFiles) return; + + const filteredFiles = window.currentFiles.filter(file => { + const searchLower = searchTerm.toLowerCase(); + return file.name.toLowerCase().includes(searchLower) || + (file.type && file.type.toLowerCase().includes(searchLower)); + }); + + renderFiles(filteredFiles); +} + +// Add event listeners for search +document.addEventListener('DOMContentLoaded', function() { + const searchInput = document.getElementById('quickSearchInput'); + const clearSearchBtn = document.getElementById('clearSearchBtn'); + + if (searchInput) { + // Create debounced search function + const debouncedSearch = debounce((searchTerm) => { + if (searchTerm) { + performSearch(searchTerm); + clearSearchBtn.style.display = 'block'; + } else { + fetchFiles(); // Reset to show all files + clearSearchBtn.style.display = 'none'; + } + }, 300); + + searchInput.addEventListener('input', function(e) { + const searchTerm = e.target.value.trim(); + debouncedSearch(searchTerm); + }); + + // Add clear search button functionality + if (clearSearchBtn) { + clearSearchBtn.addEventListener('click', function() { + searchInput.value = ''; + fetchFiles(); // Reset to show all files + clearSearchBtn.style.display = 'none'; + }); + } + } +}); {% endblock %} \ No newline at end of file