From acebcc9ddf292281c8bde3c6217fc158540dc1f9 Mon Sep 17 00:00:00 2001 From: surya madhav Date: Thu, 29 Jan 2026 13:04:04 -0600 Subject: [PATCH] GH-1900 Enhance shared datasets view with principal details and improved navigation Adds principalName and principalType fields to the shared datasets display, improving clarity on whether data is shared with a team or consumption role. Updates the UI with icons, tooltips showing full IAM role ARNs, and dedicated navigation buttons for viewing shares and datasets. --- .../dataall/modules/shares_base/api/types.py | 2 + .../db/share_object_repositories.py | 1 + .../components/EnvironmentSharedDatasets.js | 90 ++++++++++++++++--- .../services/searchEnvironmentDataItems.js | 2 + .../modules/s3_datasets_shares/test_share.py | 2 + 5 files changed, 87 insertions(+), 10 deletions(-) diff --git a/backend/dataall/modules/shares_base/api/types.py b/backend/dataall/modules/shares_base/api/types.py index 07c588329..5d1aa966c 100644 --- a/backend/dataall/modules/shares_base/api/types.py +++ b/backend/dataall/modules/shares_base/api/types.py @@ -207,6 +207,8 @@ gql.Field(name='environmentUri', type=gql.NonNullableType(gql.String)), gql.Field(name='targetEnvironmentUri', type=gql.NonNullableType(gql.String)), gql.Field(name='principalId', type=gql.NonNullableType(gql.String)), + gql.Field(name='principalName', type=gql.String), + gql.Field(name='principalType', type=gql.String), gql.Field(name='environmentName', type=gql.NonNullableType(gql.String)), gql.Field(name='organizationUri', type=gql.NonNullableType(gql.String)), gql.Field(name='organizationName', type=gql.NonNullableType(gql.String)), diff --git a/backend/dataall/modules/shares_base/db/share_object_repositories.py b/backend/dataall/modules/shares_base/db/share_object_repositories.py index 3faa069ac..0ca9ba2b7 100644 --- a/backend/dataall/modules/shares_base/db/share_object_repositories.py +++ b/backend/dataall/modules/shares_base/db/share_object_repositories.py @@ -306,6 +306,7 @@ def paginate_shared_datasets(session, env_uri, data, share_item_shared_states): Environment.name.label('environmentName'), ShareObject.created.label('created'), ShareObject.principalId.label('principalId'), + ShareObject.principalName.label('principalName'), ShareObject.principalType.label('principalType'), ShareObject.environmentUri.label('targetEnvironmentUri'), ShareObjectItem.itemType.label('itemType'), diff --git a/frontend/src/modules/Environments/components/EnvironmentSharedDatasets.js b/frontend/src/modules/Environments/components/EnvironmentSharedDatasets.js index a99658f0a..18a3243dc 100644 --- a/frontend/src/modules/Environments/components/EnvironmentSharedDatasets.js +++ b/frontend/src/modules/Environments/components/EnvironmentSharedDatasets.js @@ -1,23 +1,25 @@ import { Box, + Button, Card, CardHeader, Divider, - IconButton, InputAdornment, Table, TableBody, TableCell, TableHead, TableRow, - TextField + TextField, + Tooltip } from '@mui/material'; import CircularProgress from '@mui/material/CircularProgress'; +import PeopleIcon from '@mui/icons-material/People'; +import VpnKeyIcon from '@mui/icons-material/VpnKey'; import PropTypes from 'prop-types'; import { useCallback, useEffect, useState } from 'react'; import { useNavigate } from 'react-router'; import { - ArrowRightIcon, Defaults, Pager, RefreshTableMenu, @@ -124,7 +126,7 @@ export const EnvironmentSharedDatasets = ({ environment }) => { Name Dataset Environment - Shared with Team + Shared With Actions @@ -139,15 +141,83 @@ export const EnvironmentSharedDatasets = ({ environment }) => { {item.itemName} {item.datasetName} {item.environmentName} - {item.principalId} - { - navigate(`/console/s3-datasets/${item.datasetUri}`); + - - + + {item.principalType === 'Group' ? ( + + ) : ( + + )} + + + + {item.principalName || item.principalId} + + + + + + + )) diff --git a/frontend/src/modules/Environments/services/searchEnvironmentDataItems.js b/frontend/src/modules/Environments/services/searchEnvironmentDataItems.js index 6134f50c3..86b1a1fea 100644 --- a/frontend/src/modules/Environments/services/searchEnvironmentDataItems.js +++ b/frontend/src/modules/Environments/services/searchEnvironmentDataItems.js @@ -31,6 +31,8 @@ export const searchEnvironmentDataItems = ({ filter, environmentUri }) => ({ itemName created principalId + principalName + principalType } } } diff --git a/tests/modules/s3_datasets_shares/test_share.py b/tests/modules/s3_datasets_shares/test_share.py index 9b7aeff8e..279e27e1b 100644 --- a/tests/modules/s3_datasets_shares/test_share.py +++ b/tests/modules/s3_datasets_shares/test_share.py @@ -1127,6 +1127,8 @@ def list_datasets_published_in_environment(client, user, group, environmentUri): itemName created principalId + principalName + principalType } } }