Skip to content

Commit 483cb31

Browse files
authored
display workspace-related roles on a screen with list of workspace users (#1405)
1 parent fc9a996 commit 483cb31

File tree

6 files changed

+26
-18
lines changed

6 files changed

+26
-18
lines changed

web_ui/src/pages/user-management/users/project-users/project-users.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export const ProjectUsers = () => {
4747
resourceType={RESOURCE_TYPE.PROJECT}
4848
resourceId={projectId}
4949
ignoredColumns={ignoredColumns}
50-
isProjectUsersTable
50+
usersTableType={RESOURCE_TYPE.PROJECT}
5151
UserActions={ProjectUserActions}
5252
/>
5353
</PageLayout>

web_ui/src/pages/user-management/users/users-header.component.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import { Dispatch, ReactNode, SetStateAction, useState } from 'react';
55

6-
import { USER_ROLE, UsersQueryParams } from '@geti/core/src/users/users.interface';
6+
import { RESOURCE_TYPE, USER_ROLE, UsersQueryParams } from '@geti/core/src/users/users.interface';
77
import { Flex, SearchField } from '@geti/ui';
88
import { isEmpty } from 'lodash-es';
99

@@ -16,7 +16,7 @@ interface WorkspaceUsersHeaderProps {
1616
totalMatchedCount: number;
1717
hasFilterOptions: boolean;
1818
setUsersQueryParams: Dispatch<SetStateAction<UsersQueryParams>>;
19-
isProjectUsersTable?: boolean;
19+
usersTableType?: RESOURCE_TYPE;
2020
actionsSlot?: ReactNode;
2121
}
2222

@@ -25,15 +25,18 @@ export const UsersHeader = ({
2525
totalCount,
2626
hasFilterOptions,
2727
setUsersQueryParams,
28-
isProjectUsersTable = false,
28+
usersTableType = RESOURCE_TYPE.ORGANIZATION,
2929
actionsSlot,
3030
}: WorkspaceUsersHeaderProps) => {
3131
const [searchInput, setSearchInput] = useState<string>('');
3232
const [roleFilter, setRoleFilter] = useState<USER_ROLE | undefined>();
3333

34-
const roles = isProjectUsersTable
35-
? [USER_ROLE.PROJECT_MANAGER, USER_ROLE.PROJECT_CONTRIBUTOR]
36-
: [USER_ROLE.WORKSPACE_ADMIN, USER_ROLE.WORKSPACE_CONTRIBUTOR];
34+
const roles =
35+
usersTableType === RESOURCE_TYPE.PROJECT
36+
? [USER_ROLE.PROJECT_MANAGER, USER_ROLE.PROJECT_CONTRIBUTOR]
37+
: usersTableType === RESOURCE_TYPE.WORKSPACE
38+
? [USER_ROLE.WORKSPACE_ADMIN, USER_ROLE.WORKSPACE_CONTRIBUTOR]
39+
: [USER_ROLE.ORGANIZATION_ADMIN, USER_ROLE.ORGANIZATION_CONTRIBUTOR];
3740

3841
const debouncedCallback = useDebouncedCallback((value: string) => {
3942
setUsersQueryParams((prevQueryParams) => {

web_ui/src/pages/user-management/users/users-table/users-table.component.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import { Dispatch, ReactNode, SetStateAction, useMemo } from 'react';
55

6-
import { User, UsersQueryParams } from '@geti/core/src/users/users.interface';
6+
import { RESOURCE_TYPE, User, UsersQueryParams } from '@geti/core/src/users/users.interface';
77
import { Cell, Column, Flex, Row, TableBody, TableHeader, TableView, View } from '@geti/ui';
88
import { get, isEmpty } from 'lodash-es';
99

@@ -41,7 +41,7 @@ interface UsersTableProps {
4141
UserActions: (props: { activeUser: User; user: User; users: User[] }) => ReactNode;
4242
ignoredColumns?: USERS_TABLE_COLUMNS[];
4343
resourceId: string | undefined;
44-
isProjectUsersTable?: boolean;
44+
usersTableType?: RESOURCE_TYPE;
4545
tableId?: string;
4646
}
4747

@@ -56,7 +56,7 @@ export const UsersTable = ({
5656
resourceId,
5757
isLoading,
5858
isFetchingNextPage,
59-
isProjectUsersTable,
59+
usersTableType,
6060
getNextPage,
6161
tableId,
6262
}: UsersTableProps) => {
@@ -100,14 +100,18 @@ export const UsersTable = ({
100100
{
101101
label: isEmpty(resourceId)
102102
? 'Organization role'
103-
: isProjectUsersTable
103+
: usersTableType === RESOURCE_TYPE.PROJECT
104104
? 'Project role'
105105
: 'Workspace role',
106106
dataKey: USERS_TABLE_COLUMNS.ROLES,
107107
width: 180,
108108
isSortable: false,
109109
component: (data: TableCellProps) => (
110-
<UserRoleCell {...data} resourceId={resourceId} isProjectUsersTable={isProjectUsersTable} />
110+
<UserRoleCell
111+
{...data}
112+
resourceId={resourceId}
113+
isProjectUsersTable={usersTableType === RESOURCE_TYPE.PROJECT}
114+
/>
111115
),
112116
},
113117
{
@@ -144,7 +148,7 @@ export const UsersTable = ({
144148
];
145149

146150
return tableColumns.filter(({ dataKey }) => !ignoredColumns.includes(dataKey as USERS_TABLE_COLUMNS));
147-
}, [ignoredColumns, resourceId, UserActions, activeUser, isProjectUsersTable, users]);
151+
}, [ignoredColumns, resourceId, UserActions, activeUser, usersTableType, users]);
148152

149153
const [sortingOptions, sort] = useSortTable<UsersQueryParams>({
150154
queryOptions: usersQueryParams,

web_ui/src/pages/user-management/users/users.component.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ interface UsersProps {
2828
resourceId: string | undefined;
2929
UserActions?: ComponentProps<typeof UsersTable>['UserActions'];
3030
ignoredColumns?: ComponentProps<typeof UsersTable>['ignoredColumns'];
31-
isProjectUsersTable?: ComponentProps<typeof UsersTable>['isProjectUsersTable'];
31+
usersTableType?: ComponentProps<typeof UsersTable>['usersTableType'];
3232
}
3333

3434
const USERS_LIMIT = 20;
@@ -39,7 +39,7 @@ export const Users = ({
3939
activeUser,
4040
UserActions = () => <></>,
4141
ignoredColumns = [],
42-
isProjectUsersTable = false,
42+
usersTableType = RESOURCE_TYPE.ORGANIZATION,
4343
}: UsersProps) => {
4444
const { organizationId } = useOrganizationIdentifier();
4545
const { workspaceId: firstWorkspaceId } = useFirstWorkspaceIdentifier();
@@ -98,7 +98,7 @@ export const Users = ({
9898
totalCount={totalCount}
9999
hasFilterOptions={hasFilters}
100100
setUsersQueryParams={setUsersQueryParams}
101-
isProjectUsersTable={isProjectUsersTable}
101+
usersTableType={usersTableType}
102102
actionsSlot={actionsSlot}
103103
/>
104104
<UsersTable
@@ -114,7 +114,7 @@ export const Users = ({
114114
UserActions={UserActions}
115115
ignoredColumns={ignoredColumns}
116116
resourceId={resourceId}
117-
isProjectUsersTable={isProjectUsersTable}
117+
usersTableType={usersTableType}
118118
/>
119119
{resourceType === RESOURCE_TYPE.WORKSPACE && resourceId !== undefined && (
120120
<AvailableWorkspaceUsers workspaceId={resourceId} activeUser={activeUser} />

web_ui/src/pages/user-management/users/workspace-users/available-workspace-users.component.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export const AvailableWorkspaceUsers = ({ workspaceId, activeUser }: AvailableWo
128128
USERS_TABLE_COLUMNS.ROLES,
129129
]}
130130
resourceId={workspaceId}
131-
isProjectUsersTable={false}
131+
usersTableType={RESOURCE_TYPE.WORKSPACE}
132132
/>
133133
</View>
134134
</Flex>

web_ui/src/pages/user-management/users/workspace-users/workspace-users.component.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export const WorkspaceUsers = ({ activeUser, workspaceId }: WorkspaceUsersProps)
2727
resourceId={workspaceId}
2828
UserActions={Actions}
2929
ignoredColumns={isSaasEnv ? undefined : [USERS_TABLE_COLUMNS.LAST_LOGIN]}
30+
usersTableType={RESOURCE_TYPE.WORKSPACE}
3031
/>
3132
);
3233
};

0 commit comments

Comments
 (0)