mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-12-18 11:07:41 +00:00
Fixed : Add bots tab to group users with isBot set to true. (#2210)
This commit is contained in:
parent
5ac9acd983
commit
3babfd9a61
@ -81,7 +81,7 @@ const UserDetailsModal = ({
|
|||||||
Role: {userData.isAdmin ? 'Admin' : 'User'}
|
Role: {userData.isAdmin ? 'Admin' : 'User'}
|
||||||
</p>
|
</p>
|
||||||
{userData.teams && <div className="tw-filter-seperator tw-w-5/6" />}
|
{userData.teams && <div className="tw-filter-seperator tw-w-5/6" />}
|
||||||
<p className="tw-w-4/5 tw-mx-auto">
|
<div className="tw-w-4/5 tw-mx-auto">
|
||||||
<span className="tw-flex tw-justify-center tw-flex-wrap">
|
<span className="tw-flex tw-justify-center tw-flex-wrap">
|
||||||
{userData.teams && userData.teams.length > 0 ? (
|
{userData.teams && userData.teams.length > 0 ? (
|
||||||
userData.teams.map((team, i) => (
|
userData.teams.map((team, i) => (
|
||||||
@ -95,7 +95,7 @@ const UserDetailsModal = ({
|
|||||||
<p>This user is not a part of any team!</p>
|
<p>This user is not a part of any team!</p>
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="tw-modal-footer" data-testid="cta-container">
|
<div className="tw-modal-footer" data-testid="cta-container">
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import { isUndefined, lowerCase } from 'lodash';
|
|||||||
import React, { FunctionComponent, useEffect, useState } from 'react';
|
import React, { FunctionComponent, useEffect, useState } from 'react';
|
||||||
import PageLayout from '../../components/containers/PageLayout';
|
import PageLayout from '../../components/containers/PageLayout';
|
||||||
import Loader from '../../components/Loader/Loader';
|
import Loader from '../../components/Loader/Loader';
|
||||||
|
import { UserType } from '../../enums/user.enum';
|
||||||
import { Team } from '../../generated/entity/teams/team';
|
import { Team } from '../../generated/entity/teams/team';
|
||||||
import { User } from '../../generated/entity/teams/user';
|
import { User } from '../../generated/entity/teams/user';
|
||||||
import { getCountBadge } from '../../utils/CommonUtils';
|
import { getCountBadge } from '../../utils/CommonUtils';
|
||||||
@ -39,19 +40,60 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
const [userList, setUserList] = useState<Array<User>>(allUsers);
|
const [userList, setUserList] = useState<Array<User>>(allUsers);
|
||||||
const [users, setUsers] = useState<Array<User>>([]);
|
const [users, setUsers] = useState<Array<User>>([]);
|
||||||
const [admins, setAdmins] = useState<Array<User>>([]);
|
const [admins, setAdmins] = useState<Array<User>>([]);
|
||||||
|
const [bots, setBots] = useState<Array<User>>([]);
|
||||||
const [currentTeam, setCurrentTeam] = useState<Team>();
|
const [currentTeam, setCurrentTeam] = useState<Team>();
|
||||||
const [currentTab, setCurrentTab] = useState<number>(1);
|
const [currentTab, setCurrentTab] = useState<number>(1);
|
||||||
const [selectedUser, setSelectedUser] = useState<User>();
|
const [selectedUser, setSelectedUser] = useState<User>();
|
||||||
const [searchText, setSearchText] = useState('');
|
const [searchText, setSearchText] = useState('');
|
||||||
|
|
||||||
if (selectedUser) {
|
|
||||||
selectedUser;
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleSearchAction = (searchValue: string) => {
|
const handleSearchAction = (searchValue: string) => {
|
||||||
setSearchText(searchValue);
|
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) => {
|
const selectTeam = (team?: Team) => {
|
||||||
setCurrentTeam(team);
|
setCurrentTeam(team);
|
||||||
if (team) {
|
if (team) {
|
||||||
@ -106,11 +148,7 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
const handleTabChange = (tab: number) => {
|
const handleTabChange = (tab: number) => {
|
||||||
setSearchText('');
|
setSearchText('');
|
||||||
setCurrentTab(tab);
|
setCurrentTab(tab);
|
||||||
if (tab === 1) {
|
setAllTabList();
|
||||||
setAdmins(userList.filter((user) => user.isAdmin));
|
|
||||||
} else {
|
|
||||||
setUsers(userList.filter((user) => !user.isAdmin));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const getTabs = () => {
|
const getTabs = () => {
|
||||||
@ -138,6 +176,15 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
Admins
|
Admins
|
||||||
{getCountBadge(admins.length, '', currentTab === 2)}
|
{getCountBadge(admins.length, '', currentTab === 2)}
|
||||||
</button>
|
</button>
|
||||||
|
<button
|
||||||
|
className={`tw-pb-2 tw-px-4 tw-gh-tabs ${getActiveTabClass(3)}`}
|
||||||
|
data-testid="assets"
|
||||||
|
onClick={() => {
|
||||||
|
handleTabChange(3);
|
||||||
|
}}>
|
||||||
|
Bots
|
||||||
|
{getCountBadge(bots.length, '', currentTab === 3)}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="tw-w-4/12 tw-pt-2">
|
<div className="tw-w-4/12 tw-pt-2">
|
||||||
<Searchbar
|
<Searchbar
|
||||||
@ -154,42 +201,23 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setUsers(userList.filter((user) => !user.isAdmin));
|
setAllTabList();
|
||||||
setAdmins(userList.filter((user) => user.isAdmin));
|
|
||||||
}, [userList]);
|
}, [userList]);
|
||||||
|
|
||||||
useEffect(() => {
|
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);
|
setUserList(allUsers);
|
||||||
}
|
}
|
||||||
}, [allUsers]);
|
}, [allUsers]);
|
||||||
|
|
||||||
const isIncludes = (name: string) => {
|
|
||||||
return lowerCase(name).includes(searchText);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (currentTab === 1) {
|
setCurrentTabList(currentTab);
|
||||||
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;
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}, [searchText]);
|
}, [searchText]);
|
||||||
|
|
||||||
const getLeftPanel = () => {
|
const getLeftPanel = () => {
|
||||||
@ -236,8 +264,24 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUserCards = (isAdmin = false) => {
|
const getUserCards = (type: UserType) => {
|
||||||
const listUserData = isAdmin ? admins : users;
|
let listUserData: Array<User> = [];
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case UserType.ISADMIN:
|
||||||
|
listUserData = admins;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case UserType.ISBOT:
|
||||||
|
listUserData = bots;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case UserType.ISUSER:
|
||||||
|
default:
|
||||||
|
listUserData = users;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -269,8 +313,9 @@ const UserList: FunctionComponent<Props> = ({
|
|||||||
{!isLoading ? (
|
{!isLoading ? (
|
||||||
<>
|
<>
|
||||||
{getTabs()}
|
{getTabs()}
|
||||||
{currentTab === 1 && getUserCards()}
|
{currentTab === 1 && getUserCards(UserType.ISUSER)}
|
||||||
{currentTab === 2 && getUserCards(true)}
|
{currentTab === 2 && getUserCards(UserType.ISADMIN)}
|
||||||
|
{currentTab === 3 && getUserCards(UserType.ISBOT)}
|
||||||
{!isUndefined(selectedUser) && (
|
{!isUndefined(selectedUser) && (
|
||||||
<UserDetailsModal
|
<UserDetailsModal
|
||||||
header="User Details"
|
header="User Details"
|
||||||
|
|||||||
18
openmetadata-ui/src/main/resources/ui/src/enums/user.enum.ts
Normal file
18
openmetadata-ui/src/main/resources/ui/src/enums/user.enum.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Collate
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export enum UserType {
|
||||||
|
ISBOT = 'isBot',
|
||||||
|
ISADMIN = 'isAdmin',
|
||||||
|
ISUSER = 'user',
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user