mirror of
https://github.com/open-webui/open-webui.git
synced 2026-05-05 10:28:06 -05:00
Merge pull request #13267 from AnapatChaiwongse/dev
feat: implement pagination for /admin/users
This commit is contained in:
@@ -33,7 +33,8 @@
|
||||
|
||||
const i18n = getContext('i18n');
|
||||
|
||||
export let users = [];
|
||||
export let totalUsers = 0;
|
||||
let users = []
|
||||
|
||||
let search = '';
|
||||
let selectedUser = null;
|
||||
@@ -67,6 +68,13 @@
|
||||
}
|
||||
};
|
||||
|
||||
const fetchUserPage = async () => {
|
||||
try {
|
||||
users = await getUsers(localStorage.token, page);
|
||||
} catch (err) {
|
||||
console.error("Error fetching users: " + err);
|
||||
}
|
||||
};
|
||||
let sortKey = 'created_at'; // default sort key
|
||||
let sortOrder = 'asc'; // default sort order
|
||||
|
||||
@@ -79,25 +87,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
let filteredUsers;
|
||||
const queryUser = async (q) => {
|
||||
try {
|
||||
const result = await getUsers(localStorage.token, undefined, 10, q);
|
||||
filteredUsers = result.slice((page - 1) * 10, page * 10);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
};
|
||||
|
||||
$: filteredUsers = users
|
||||
.filter((user) => {
|
||||
if (search === '') {
|
||||
return true;
|
||||
} else {
|
||||
let name = user.name.toLowerCase();
|
||||
let email = user.email.toLowerCase();
|
||||
const query = search.toLowerCase();
|
||||
return name.includes(query) || email.includes(query);
|
||||
}
|
||||
})
|
||||
.sort((a, b) => {
|
||||
if (a[sortKey] < b[sortKey]) return sortOrder === 'asc' ? -1 : 1;
|
||||
if (a[sortKey] > b[sortKey]) return sortOrder === 'asc' ? 1 : -1;
|
||||
return 0;
|
||||
})
|
||||
.slice((page - 1) * 20, page * 20);
|
||||
let filteredUsers;
|
||||
$: if (search.trim() === '') {
|
||||
filteredUsers = users
|
||||
.sort((a, b) => {
|
||||
if (a[sortKey] < b[sortKey]) return sortOrder === 'asc' ? -1 : 1;
|
||||
if (a[sortKey] > b[sortKey]) return sortOrder === 'asc' ? 1 : -1;
|
||||
return 0;
|
||||
})
|
||||
} else {
|
||||
queryUser(search);
|
||||
}
|
||||
</script>
|
||||
|
||||
<ConfirmDialog
|
||||
@@ -486,10 +495,10 @@
|
||||
ⓘ {$i18n.t("Click on the user role button to change a user's role.")}
|
||||
</div>
|
||||
|
||||
<Pagination bind:page count={users.length} />
|
||||
<Pagination bind:page count={totalUsers} perPage={10}/>
|
||||
|
||||
{#if !$config?.license_metadata}
|
||||
{#if users.length > 50}
|
||||
{#if totalUsers > 50}
|
||||
<div class="text-sm">
|
||||
<Markdown
|
||||
content={`
|
||||
|
||||
Reference in New Issue
Block a user