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) && (