From 3babfd9a619d9c17cbe14e8f0e4850c015aaea83 Mon Sep 17 00:00:00 2001 From: Sachin Chaurasiya Date: Fri, 14 Jan 2022 16:44:56 +0530 Subject: [PATCH] Fixed : Add bots tab to group users with isBot set to true. (#2210) --- .../UserDetailsModal/UserDetailsModal.tsx | 4 +- .../ui/src/components/UserList/UserList.tsx | 127 ++++++++++++------ .../main/resources/ui/src/enums/user.enum.ts | 18 +++ 3 files changed, 106 insertions(+), 43 deletions(-) create mode 100644 openmetadata-ui/src/main/resources/ui/src/enums/user.enum.ts diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Modals/UserDetailsModal/UserDetailsModal.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Modals/UserDetailsModal/UserDetailsModal.tsx index c364b6585b9..e12a2bfa680 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Modals/UserDetailsModal/UserDetailsModal.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Modals/UserDetailsModal/UserDetailsModal.tsx @@ -81,7 +81,7 @@ const UserDetailsModal = ({ Role: {userData.isAdmin ? 'Admin' : 'User'}

{userData.teams &&
} -

+

{userData.teams && userData.teams.length > 0 ? ( userData.teams.map((team, i) => ( @@ -95,7 +95,7 @@ const UserDetailsModal = ({

This user is not a part of any team!

)}
-

+
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/UserList/UserList.tsx b/openmetadata-ui/src/main/resources/ui/src/components/UserList/UserList.tsx index 87524011689..ad98b84b310 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/UserList/UserList.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/UserList/UserList.tsx @@ -16,6 +16,7 @@ import { isUndefined, lowerCase } from 'lodash'; import React, { FunctionComponent, useEffect, useState } from 'react'; import PageLayout from '../../components/containers/PageLayout'; import Loader from '../../components/Loader/Loader'; +import { UserType } from '../../enums/user.enum'; import { Team } from '../../generated/entity/teams/team'; import { User } from '../../generated/entity/teams/user'; import { getCountBadge } from '../../utils/CommonUtils'; @@ -39,19 +40,60 @@ const UserList: FunctionComponent = ({ const [userList, setUserList] = useState>(allUsers); const [users, setUsers] = useState>([]); const [admins, setAdmins] = useState>([]); + const [bots, setBots] = useState>([]); const [currentTeam, setCurrentTeam] = useState(); const [currentTab, setCurrentTab] = useState(1); const [selectedUser, setSelectedUser] = useState(); const [searchText, setSearchText] = useState(''); - if (selectedUser) { - selectedUser; - } - const handleSearchAction = (searchValue: string) => { setSearchText(searchValue); }; + const isIncludes = (name: string) => { + return lowerCase(name).includes(searchText); + }; + + const setCurrentTabList = (tab: number) => { + switch (tab) { + case 2: + setAdmins( + userList.filter( + (user) => user.isAdmin && isIncludes(user.displayName || user.name) + ) + ); + + break; + + case 3: + setBots( + userList.filter( + (user) => user.isBot && isIncludes(user.displayName || user.name) + ) + ); + + break; + case 1: + default: + setUsers( + userList.filter( + (user) => + !user.isAdmin && + !user.isBot && + isIncludes(user.displayName || user.name) + ) + ); + + break; + } + }; + + const setAllTabList = () => { + setUsers(userList.filter((user) => !user.isAdmin && !user.isBot)); + setAdmins(userList.filter((user) => user.isAdmin)); + setBots(userList.filter((user) => user.isBot)); + }; + const selectTeam = (team?: Team) => { setCurrentTeam(team); if (team) { @@ -106,11 +148,7 @@ const UserList: FunctionComponent = ({ const handleTabChange = (tab: number) => { setSearchText(''); setCurrentTab(tab); - if (tab === 1) { - setAdmins(userList.filter((user) => user.isAdmin)); - } else { - setUsers(userList.filter((user) => !user.isAdmin)); - } + setAllTabList(); }; const getTabs = () => { @@ -138,6 +176,15 @@ const UserList: FunctionComponent = ({ Admins {getCountBadge(admins.length, '', currentTab === 2)} +
= ({ }; useEffect(() => { - setUsers(userList.filter((user) => !user.isAdmin)); - setAdmins(userList.filter((user) => user.isAdmin)); + setAllTabList(); }, [userList]); useEffect(() => { - if (!currentTeam) { + if (currentTeam) { + const userIds = (currentTeam.users || []).map((userData) => userData.id); + const filteredUsers = allUsers.filter((user) => + userIds.includes(user.id) + ); + setUserList(filteredUsers); + } else { setUserList(allUsers); } }, [allUsers]); - const isIncludes = (name: string) => { - return lowerCase(name).includes(searchText); - }; - useEffect(() => { - if (currentTab === 1) { - setUsers( - userList.filter((user) => { - if (!user.isAdmin && isIncludes(user.displayName || user.name)) { - return true; - } - - return false; - }) - ); - } else { - setAdmins( - userList.filter((user) => { - if (user.isAdmin && isIncludes(user.displayName || user.name)) { - return true; - } - - return false; - }) - ); - } + setCurrentTabList(currentTab); }, [searchText]); const getLeftPanel = () => { @@ -236,8 +264,24 @@ const UserList: FunctionComponent = ({ ); }; - const getUserCards = (isAdmin = false) => { - const listUserData = isAdmin ? admins : users; + const getUserCards = (type: UserType) => { + let listUserData: Array = []; + + switch (type) { + case UserType.ISADMIN: + listUserData = admins; + + break; + case UserType.ISBOT: + listUserData = bots; + + break; + case UserType.ISUSER: + default: + listUserData = users; + + break; + } return ( <> @@ -269,8 +313,9 @@ const UserList: FunctionComponent = ({ {!isLoading ? ( <> {getTabs()} - {currentTab === 1 && getUserCards()} - {currentTab === 2 && getUserCards(true)} + {currentTab === 1 && getUserCards(UserType.ISUSER)} + {currentTab === 2 && getUserCards(UserType.ISADMIN)} + {currentTab === 3 && getUserCards(UserType.ISBOT)} {!isUndefined(selectedUser) && (