diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/EntityDetails.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/EntityDetails.spec.js index f74a1f48909..cff677c3b8a 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/EntityDetails.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/EntityDetails.spec.js @@ -127,8 +127,7 @@ describe('Entity Details Page', () => { cy.get(`[data-testid="${value.entity}-tab"]`).should('be.visible').click(); cy.get(`[data-testid="${value.entity}-tab"]`) .should('be.visible') - .should('have.class', 'active') - .click(); + .should('have.class', 'active'); interceptURL('GET', '/api/v1/feed*', 'getEntityDetails'); diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/Teams.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/Teams.spec.js index 50bee676b0c..c23584481be 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/Teams.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/Pages/Teams.spec.js @@ -200,18 +200,23 @@ describe('Teams flow should work properly', () => { .type(TEAM_DETAILS.updatedname); interceptURL('PATCH', 'api/v1/teams/*', 'saveTeamName'); - interceptURL('GET', '/api/v1/users*', 'updatedTeam'); + interceptURL( + 'GET', + `api/v1/users?fields=teams,roles&team=${TEAM_DETAILS.name}&limit=15`, + 'getTeam' + ); //Save the updated display name cy.get('[data-testid="saveAssociatedTag"]') .should('exist') .should('be.visible') .click(); - verifyResponseStatusCode('@saveTeamName', 200); + //Validate the updated display name - cy.get('[data-testid="header"]') - .find('.ant-typography') - .should('contain', TEAM_DETAILS.updatedname); - verifyResponseStatusCode('@updatedTeam', 200); + cy.get('[data-testid="team-heading"]').then(($el) => { + cy.wrap($el).should('have.text', TEAM_DETAILS.updatedname); + }); + verifyResponseStatusCode('@saveTeamName', 200); + verifyResponseStatusCode('@getTeam', 200); //Click on edit description button cy.get('[data-testid="edit-description"]').should('be.visible').click(); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerWidget/OwnerWidgetWrapper.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerWidget/OwnerWidgetWrapper.component.tsx index e71aae52810..3edfa84d588 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerWidget/OwnerWidgetWrapper.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerWidget/OwnerWidgetWrapper.component.tsx @@ -1,5 +1,5 @@ import { AxiosError } from 'axios'; -import { debounce, isEqual } from 'lodash'; +import { debounce, isEqual, lowerCase } from 'lodash'; import { Status } from 'Models'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { default as AppState, default as appState } from '../../../AppState'; @@ -66,6 +66,9 @@ const OwnerWidgetWrapper = ({ ]; }, [appState.users, appState.userDetails]); + const [totalUsersCount, setTotalUsersCount] = useState(0); + const [totalTeamsCount, setTotalTeamsCount] = useState(0); + const fetchGroupTypeTeams = async () => { try { if (listOwners.length === 0) { @@ -76,6 +79,8 @@ const OwnerWidgetWrapper = ({ group: 'Teams', type: 'team', })); + // set team count for logged in user + setTotalTeamsCount(data.length); setListOwners([...updatedData, ...userDetails]); } } catch (error) { @@ -90,7 +95,10 @@ const OwnerWidgetWrapper = ({ setIsUserLoading(true); searchFormattedUsersAndTeams(searchQuery, from) .then((res) => { - const { users, teams } = res; + const { users, teams, teamsTotal, usersTotal } = res; + // set team and user count for admin user + setTotalTeamsCount(teamsTotal ?? 0); + setTotalUsersCount(usersTotal ?? 0); setListOwners(getOwnerList(users, teams)); }) .catch(() => { @@ -149,6 +157,22 @@ const OwnerWidgetWrapper = ({ debounceOnSearch(text); }; + /** + * + * @param groupName users|teams + * @returns total count for respective group + */ + const handleTotalCountForGroup = (groupName: string) => { + if (lowerCase(groupName) === 'users') { + // if user is admin return total user count otherwise return 1 + return isAdminUser ? totalUsersCount : 1; + } else if (lowerCase(groupName) === 'teams') { + return totalTeamsCount; + } else { + return 0; + } + }; + useEffect(() => { if (visible) { if (isAuthDisabled || !isAdminUser) { @@ -186,8 +210,11 @@ const OwnerWidgetWrapper = ({ return visible ? ( = ({
-

- {searchText ? 'No match found' : 'No data available'} -

+
+ + {searchText ? 'No match found' : 'No data available'} + +
); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/interface/types.d.ts b/openmetadata-ui/src/main/resources/ui/src/interface/types.d.ts index 3ffbcdda590..0813151a373 100644 --- a/openmetadata-ui/src/main/resources/ui/src/interface/types.d.ts +++ b/openmetadata-ui/src/main/resources/ui/src/interface/types.d.ts @@ -259,6 +259,8 @@ declare module 'Models' { export type SearchedUsersAndTeams = { users: FormattedUsersData[]; teams: FormattedTeamsData[]; + usersTotal?: number; + teamsTotal?: number; }; export type TagOption = { diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/UserDataUtils.ts b/openmetadata-ui/src/main/resources/ui/src/utils/UserDataUtils.ts index 799c3a87b38..0f897f82057 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/UserDataUtils.ts +++ b/openmetadata-ui/src/main/resources/ui/src/utils/UserDataUtils.ts @@ -171,7 +171,15 @@ export const searchFormattedUsersAndTeams = ( resTeams.status === SettledStatus.FULFILLED ? formatTeamsResponse(resTeams.value.data.hits.hits) : []; - resolve({ users, teams }); + const usersTotal = + resUsers.status === SettledStatus.FULFILLED + ? resUsers.value.data.hits.total.value + : 0; + const teamsTotal = + resTeams.status === SettledStatus.FULFILLED + ? resTeams.value.data.hits.total.value + : 0; + resolve({ users, teams, usersTotal, teamsTotal }); } ) .catch((err: AxiosError) => {