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 filteredItems = [];
$: if (knowledgeBases) {
$: if (knowledgeBases.length > 0) {
// Added a check for non-empty array, good practice
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) {

View File

@ -51,9 +51,15 @@
let group_ids = [];
$: if (models) {
filteredModels = models.filter(
(m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase())
);
filteredModels = models.filter((m) => {
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 = '';

View File

@ -37,7 +37,16 @@
let deletePrompt = null;
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) => {
toast.success($i18n.t('Redirecting you to Open WebUI Community'));

View File

@ -52,12 +52,16 @@
let tools = [];
let filteredItems = [];
$: filteredItems = tools.filter(
(t) =>
query === '' ||
t.name.toLowerCase().includes(query.toLowerCase()) ||
t.id.toLowerCase().includes(query.toLowerCase())
);
$: filteredItems = tools.filter((t) => {
if (query === '') return true;
const lowerQuery = query.toLowerCase();
return (
(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 item = await getToolById(localStorage.token, tool.id).catch((error) => {