mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-13 00:14:02 +00:00
(feat:admin) filter users intead of exact match, minor ui
This commit is contained in:
1 parent
acb7956fe0
commit
2965e1d5ac
4 files changed
+15
-28
No files matched your search
@@ -94,7 +94,7 @@ class AdminStatsRepository:
|
||||
where = ""
|
||||
count_params: dict = {}
|
||||
if user_id_filter is not None:
|
||||
where = "WHERE lower(u.user_id) = lower(:uid)"
|
||||
where = "WHERE u.user_id ILIKE '%' || :uid || '%'"
|
||||
count_params["uid"] = user_id_filter
|
||||
total = self._conn.execute(
|
||||
text(f"SELECT count(*) FROM users u {where}"), count_params
|
||||
|
||||
+12
-25
@@ -318,7 +318,9 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
|
||||
{/* Icon rail (desktop only, when sidebar collapsed) */}
|
||||
{!navOpen && !isMobile && !isTablet && (
|
||||
<div className="bg-sidebar border-border fixed top-0 left-0 z-10 hidden h-full w-14 flex-col items-center gap-2 border-r py-3 lg:flex">
|
||||
<div
|
||||
ref={navRef}
|
||||
className="bg-sidebar border-border fixed top-0 left-0 z-10 hidden h-full w-14 flex-col items-center gap-2 border-r py-3 lg:flex">
|
||||
<Button
|
||||
type="button"
|
||||
variant="ghost"
|
||||
@@ -385,10 +387,8 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
</div>
|
||||
)}
|
||||
<div
|
||||
ref={navRef}
|
||||
className={`${
|
||||
!navOpen && '-ml-96 md:-ml-72'
|
||||
} bg-sidebar dark:border-r-sidebar-border fixed top-0 z-20 flex h-full w-72 flex-col border-r border-b-0 transition-all duration-300 ease-in-out dark:text-white`}
|
||||
className={`${!navOpen && '-ml-96 md:-ml-72'
|
||||
} bg-sidebar dark:border-r-sidebar-border fixed top-0 z-20 flex h-full w-72 flex-col border-r border-b-0 transition-all duration-300 ease-in-out dark:text-white`}
|
||||
>
|
||||
<div
|
||||
className={
|
||||
@@ -436,8 +436,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
resetConversation();
|
||||
}}
|
||||
className={({ isActive }) =>
|
||||
`${
|
||||
isActive ? 'bg-transparent' : ''
|
||||
`${isActive ? 'bg-transparent' : ''
|
||||
} group border-sidebar-border hover:border-sidebar-border sticky mx-4 mt-4 flex cursor-pointer items-center gap-2.5 rounded-3xl border p-3 hover:bg-transparent dark:text-white`
|
||||
}
|
||||
>
|
||||
@@ -475,11 +474,10 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
{recentAgents.map((agent, idx) => (
|
||||
<div
|
||||
key={idx}
|
||||
className={`group hover:bg-sidebar-accent mx-4 my-auto mt-4 flex h-9 cursor-pointer items-center justify-between rounded-3xl pl-4 ${
|
||||
agent.id === selectedAgent?.id && !conversationId
|
||||
className={`group hover:bg-sidebar-accent mx-4 my-auto mt-4 flex h-9 cursor-pointer items-center justify-between rounded-3xl pl-4 ${agent.id === selectedAgent?.id && !conversationId
|
||||
? 'bg-sidebar-accent'
|
||||
: ''
|
||||
}`}
|
||||
}`}
|
||||
onClick={() => handleAgentClick(agent)}
|
||||
>
|
||||
<div className="flex items-center gap-2">
|
||||
@@ -529,8 +527,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
}
|
||||
}}
|
||||
className={({ isActive }) =>
|
||||
`hover:bg-sidebar-accent mx-4 my-auto mt-2 flex h-9 cursor-pointer items-center gap-2 rounded-3xl pl-4 ${
|
||||
isActive ? 'bg-sidebar-accent' : ''
|
||||
`hover:bg-sidebar-accent mx-4 my-auto mt-2 flex h-9 cursor-pointer items-center gap-2 rounded-3xl pl-4 ${isActive ? 'bg-sidebar-accent' : ''
|
||||
}`
|
||||
}
|
||||
>
|
||||
@@ -558,8 +555,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
dispatch(setSelectedAgent(null));
|
||||
}}
|
||||
className={({ isActive }) =>
|
||||
`hover:bg-sidebar-accent mx-4 my-auto mt-2 flex h-9 cursor-pointer items-center gap-2.5 rounded-3xl pl-3 ${
|
||||
isActive ? 'bg-sidebar-accent' : ''
|
||||
`hover:bg-sidebar-accent mx-4 my-auto mt-2 flex h-9 cursor-pointer items-center gap-2.5 rounded-3xl pl-3 ${isActive ? 'bg-sidebar-accent' : ''
|
||||
}`
|
||||
}
|
||||
>
|
||||
@@ -627,8 +623,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
}}
|
||||
to="/settings"
|
||||
className={({ isActive }) =>
|
||||
`hover:bg-sidebar-accent mx-4 my-auto flex h-9 cursor-pointer items-center gap-2.5 rounded-3xl pl-3 ${
|
||||
isActive ? 'bg-sidebar-accent' : ''
|
||||
`hover:bg-sidebar-accent mx-4 my-auto flex h-9 cursor-pointer items-center gap-2.5 rounded-3xl pl-3 ${isActive ? 'bg-sidebar-accent' : ''
|
||||
}`
|
||||
}
|
||||
>
|
||||
@@ -703,15 +698,7 @@ export default function Navigation({ navOpen, setNavOpen }: NavigationProps) {
|
||||
>
|
||||
<Menu className="size-5" strokeWidth={1.75} />
|
||||
</Button>
|
||||
<div className="absolute left-1/2 flex -translate-x-1/2 items-center">
|
||||
<TeamSwitcher
|
||||
onNavigate={() => {
|
||||
if (isMobile || isTablet) {
|
||||
setNavOpen(false);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<ConfirmationModal
|
||||
|
||||
@@ -251,7 +251,7 @@ export default function Users() {
|
||||
|
||||
<div className="mb-4 flex flex-wrap items-center gap-2">
|
||||
<Input
|
||||
placeholder="Filter by exact user id"
|
||||
placeholder="Filter by user id"
|
||||
value={search}
|
||||
onChange={(e) => setSearch(e.target.value)}
|
||||
onKeyDown={(e) => {
|
||||
|
||||
@@ -143,7 +143,7 @@ export default function TeamSwitcher({
|
||||
</button>
|
||||
)}
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="start" className="w-[248px]">
|
||||
<DropdownMenuContent align="start" className="w-62">
|
||||
<DropdownMenuLabel className="flex items-center gap-2">
|
||||
<span className="bg-muted dark:bg-accent flex size-7 shrink-0 items-center justify-center rounded-md">
|
||||
{currentTeam ? (
|
||||
|
||||
Reference in new issue
Block a user