feat: username and email search in workspace pages

This commit is contained in:
Silentoplayz 2025-05-18 03:23:38 -04:00
parent fbcc80485b
commit 95badda1c2
4 changed files with 41 additions and 12 deletions

View File

@ -38,10 +38,20 @@
let knowledgeBases = []; let knowledgeBases = [];
let filteredItems = []; let filteredItems = [];
$: if (knowledgeBases) { $: if (knowledgeBases.length > 0) {
// Added a check for non-empty array, good practice
fuse = new Fuse(knowledgeBases, { fuse = new Fuse(knowledgeBases, {
keys: ['name', 'description'] keys: [
'name',
'description',
'user.name', // Ensures Fuse looks into item.user.name
'user.email' // Ensures Fuse looks into item.user.email
],
threshold: 0.0 // You might want to adjust this. Lower is more strict. Default is 0.6.
// 0.0 is exact match.
}); });
} else {
fuse = null; // Reset fuse if knowledgeBases is empty
} }
$: if (fuse) { $: if (fuse) {

View File

@ -51,9 +51,15 @@
let group_ids = []; let group_ids = [];
$: if (models) { $: if (models) {
filteredModels = models.filter( filteredModels = models.filter((m) => {
(m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase()) if (searchValue === '') return true;
const lowerSearchValue = searchValue.toLowerCase();
return (
(m.name || '').toLowerCase().includes(lowerSearchValue) ||
(m.user?.name || '').toLowerCase().includes(lowerSearchValue) || // Search by user name
(m.user?.email || '').toLowerCase().includes(lowerSearchValue) // Search by user email
); );
});
} }
let searchValue = ''; let searchValue = '';

View File

@ -37,7 +37,16 @@
let deletePrompt = null; let deletePrompt = null;
let filteredItems = []; let filteredItems = [];
$: filteredItems = prompts.filter((p) => query === '' || p.command.includes(query)); $: filteredItems = prompts.filter((p) => {
if (query === '') return true;
const lowerQuery = query.toLowerCase();
return (
(p.title || '').toLowerCase().includes(lowerQuery) ||
(p.command || '').toLowerCase().includes(lowerQuery) ||
(p.user?.name || '').toLowerCase().includes(lowerQuery) ||
(p.user?.email || '').toLowerCase().includes(lowerQuery)
);
});
const shareHandler = async (prompt) => { const shareHandler = async (prompt) => {
toast.success($i18n.t('Redirecting you to Open WebUI Community')); toast.success($i18n.t('Redirecting you to Open WebUI Community'));

View File

@ -52,12 +52,16 @@
let tools = []; let tools = [];
let filteredItems = []; let filteredItems = [];
$: filteredItems = tools.filter( $: filteredItems = tools.filter((t) => {
(t) => if (query === '') return true;
query === '' || const lowerQuery = query.toLowerCase();
t.name.toLowerCase().includes(query.toLowerCase()) || return (
t.id.toLowerCase().includes(query.toLowerCase()) (t.name || '').toLowerCase().includes(lowerQuery) ||
(t.id || '').toLowerCase().includes(lowerQuery) ||
(t.user?.name || '').toLowerCase().includes(lowerQuery) || // Search by user name
(t.user?.email || '').toLowerCase().includes(lowerQuery) // Search by user email
); );
});
const shareHandler = async (tool) => { const shareHandler = async (tool) => {
const item = await getToolById(localStorage.token, tool.id).catch((error) => { const item = await getToolById(localStorage.token, tool.id).catch((error) => {