Skip to content
Merged
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
97f4aa7
fix design issues with input/output port feature
Jan 27, 2026
619c727
i18n
Jan 27, 2026
d135cb2
refactor layout
Jan 27, 2026
6af408b
lineage fix
Jan 27, 2026
6bc1dc5
fix i/p port listing
Jan 27, 2026
f9a8589
fix i/p ports
Jan 27, 2026
025db0d
fix
Jan 27, 2026
915561e
add keys
Jan 27, 2026
0f2dd7b
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 27, 2026
7cd4ed0
color
Jan 27, 2026
7dc1f71
remove layout
Jan 27, 2026
d95a8ec
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 27, 2026
009e119
fix
Jan 27, 2026
5d7d290
fix
Jan 27, 2026
435c68f
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 28, 2026
fa20e05
spec fix
Jan 28, 2026
4bde65d
fix
Jan 28, 2026
3213849
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 28, 2026
b6aff65
fix
Jan 28, 2026
ebe9e4b
no cleanup
Jan 28, 2026
50f94d9
fix
Jan 28, 2026
954e223
fix specs
Jan 28, 2026
1e76fe8
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 28, 2026
f7ba1b5
plural
Jan 28, 2026
69c17dc
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 28, 2026
ec12ec7
fix data asset
Jan 28, 2026
137b495
fix i/p ports
Jan 29, 2026
d68e0f2
constant height
Jan 29, 2026
32bf3ed
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 29, 2026
04690c9
fix style
Jan 29, 2026
e054d86
lint
Jan 29, 2026
7e4a185
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 29, 2026
9f547fa
i18n
Jan 29, 2026
43d40a8
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 29, 2026
e11aee7
scale
Jan 29, 2026
ec0d5cb
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 29, 2026
6f063db
fix sx
Jan 29, 2026
3ea8092
fix: remove unused title prop from AssetSelectionContentProps
gitar-bot Jan 29, 2026
a77619d
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 29, 2026
81b6f40
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 29, 2026
d1b0d76
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 30, 2026
7c1221b
fix test
Jan 30, 2026
ceeb37d
i18n
Jan 30, 2026
0c74f00
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Jan 30, 2026
2e32043
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 30, 2026
2b365b7
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 30, 2026
1bc51c6
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 30, 2026
c43fae7
Merge branch 'main' into sid/input-output-port
siddhant1 Jan 31, 2026
9eba60e
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 2, 2026
38d1320
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 2, 2026
8f46a03
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 2, 2026
c91bc40
reset tag container
Feb 2, 2026
c2efc36
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 2, 2026
e803cf6
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 2, 2026
33246b4
remove modal if no warning
Feb 3, 2026
e8b4347
Merge branch 'sid/input-output-port' of https://github.com/open-metad…
Feb 3, 2026
b948ff8
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 3, 2026
68a9f8f
Merge branch 'main' into sid/input-output-port
siddhant1 Feb 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,23 @@ import { EntityTypeEndpoint } from '../entity/Entity.interface';
import { EntityClass } from '../entity/EntityClass';
import { Domain } from './Domain';
import { SubDomain } from './SubDomain';
import { getEncodedFqn } from '../../utils/entity';

type UserTeamRef = {
name: string;
type: string;
};

export type AssetReference = {
id: string;
type: string;
name?: string;
displayName?: string;
fullyQualifiedName?: string;
description?: string;
deleted?: boolean;
};

type ResponseDataType = {
name: string;
displayName: string;
Expand Down Expand Up @@ -113,17 +124,36 @@ export class DataProduct extends EntityClass {

return response.body;
}

private getFqn() {
return this.responseData?.fullyQualifiedName ?? this.data.name;
return this.data?.fullyQualifiedName ?? this.data.name;
}

async addAssets(
apiContext: APIRequestContext,
assets: AssetReference[]
) {
const response = await apiContext.put(
`/api/v1/dataProducts/${encodeURIComponent(
this.getFqn()
)}/assets/add`,
{
data: { assets },
}
);

const data = await response.json();
this.responseData = data;

return data;
}

async addInputPorts(
apiContext: APIRequestContext,
assets: { id: string; type: string }[]
) {
const response = await apiContext.put(
`/api/v1/dataProducts/name/${encodeURIComponent(
`/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/inputPorts/add`,
{
Expand All @@ -139,7 +169,7 @@ export class DataProduct extends EntityClass {
assets: { id: string; type: string }[]
) {
const response = await apiContext.put(
`/api/v1/dataProducts/name/${encodeURIComponent(
`/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/outputPorts/add`,
{
Expand All @@ -155,7 +185,7 @@ export class DataProduct extends EntityClass {
assets: { id: string; type: string }[]
) {
const response = await apiContext.put(
`/api/v1/dataProducts/name/${encodeURIComponent(
`/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/inputPorts/remove`,
{
Expand All @@ -171,7 +201,7 @@ export class DataProduct extends EntityClass {
assets: { id: string; type: string }[]
) {
const response = await apiContext.put(
`/api/v1/dataProducts/name/${encodeURIComponent(
`/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/outputPorts/remove`,
{
Expand All @@ -197,7 +227,7 @@ export class DataProduct extends EntityClass {
queryParams.set('fields', params.fields);
}
const queryString = queryParams.toString();
const url = `/api/v1/dataProducts/name/${encodeURIComponent(
const url = `/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/inputPorts${queryString ? `?${queryString}` : ''}`;

Expand All @@ -221,7 +251,7 @@ export class DataProduct extends EntityClass {
queryParams.set('fields', params.fields);
}
const queryString = queryParams.toString();
const url = `/api/v1/dataProducts/name/${encodeURIComponent(
const url = `/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/outputPorts${queryString ? `?${queryString}` : ''}`;

Expand Down Expand Up @@ -253,7 +283,7 @@ export class DataProduct extends EntityClass {
queryParams.set('outputOffset', params.outputOffset.toString());
}
const queryString = queryParams.toString();
const url = `/api/v1/dataProducts/name/${encodeURIComponent(
const url = `/api/v1/dataProducts/name/${getEncodedFqn(
this.getFqn()
)}/portsView${queryString ? `?${queryString}` : ''}`;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1279,7 +1279,13 @@ export const navigateToSubDomain = async (
* Navigates to the Input/Output Ports tab on a data product page.
*/
export const navigateToPortsTab = async (page: Page) => {
await page.waitForTimeout(2000);

const portsViewResponse = page.waitForResponse(
(response) => response.url().includes('/portsView')
);
await page.getByTestId('input_output_ports').click();
await portsViewResponse;
await waitForAllLoadersToDisappear(page);
};

Expand Down Expand Up @@ -1338,6 +1344,10 @@ export const addInputPortToDataProduct = async (
const fqn = get(asset, 'entityResponseData.fullyQualifiedName');
const displayName = get(asset, 'entityResponseData.displayName') ?? name;

await expect(page.getByTestId('add-input-port-button')).toBeEnabled({
timeout: 10000
});

await page.getByTestId('add-input-port-button').click();

await page.waitForSelector('[data-testid="asset-selection-modal"]', {
Expand Down Expand Up @@ -1377,6 +1387,10 @@ export const addOutputPortToDataProduct = async (
const fqn = get(asset, 'entityResponseData.fullyQualifiedName');
const displayName = get(asset, 'entityResponseData.displayName') ?? name;

await expect(page.getByTestId('add-output-port-button')).toBeEnabled({
timeout: 10000
});

await page.getByTestId('add-output-port-button').click();

await page.waitForSelector('[data-testid="asset-selection-modal"]', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@ interface AssetSelectionDrawerProps {
type?: AssetsOfEntity;
queryFilter?: QueryFilterInterface;
emptyPlaceHolderText?: string;
infoBannerText?: string;
onSave?: () => void;
onCancel: () => void;
title?: string;
}

export const AssetSelectionDrawer = ({
Expand All @@ -30,16 +32,20 @@ export const AssetSelectionDrawer = ({
type = AssetsOfEntity.GLOSSARY,
queryFilter,
emptyPlaceHolderText,
infoBannerText,
onSave,
onCancel,
title,
}: AssetSelectionDrawerProps) => {
return useAssetSelectionDrawer({
entityFqn,
open,
type,
queryFilter,
emptyPlaceHolderText,
infoBannerText,
onSave,
onCancel,
title,
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ export interface AssetSelectionContentProps {
onCancel?: () => void;
queryFilter?: QueryFilterInterface;
emptyPlaceHolderText?: string;
infoBannerText?: string;
}

export const useAssetSelectionContent = ({
Expand All @@ -108,6 +109,7 @@ export const useAssetSelectionContent = ({
variant = 'modal',
queryFilter,
emptyPlaceHolderText,
infoBannerText,
}: AssetSelectionContentProps) => {
const { theme } = useApplicationStore();
const { t } = useTranslation();
Expand Down Expand Up @@ -632,6 +634,8 @@ export const useAssetSelectionContent = ({
/>
)}

{infoBannerText && <Alert showIcon message={infoBannerText} type="info" />}

<div className="d-flex items-center gap-3">
<div className="flex-1">
<Searchbar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ interface UseAssetSelectionDrawerProps {
type?: AssetsOfEntity;
queryFilter?: QueryFilterInterface;
emptyPlaceHolderText?: string;
infoBannerText?: string;
title?: string;
onSave?: () => void;
onCancel: () => void;
}
Expand All @@ -33,6 +35,8 @@ export const useAssetSelectionDrawer = ({
type = AssetsOfEntity.GLOSSARY,
queryFilter,
emptyPlaceHolderText,
infoBannerText,
title,
onSave,
onCancel,
}: UseAssetSelectionDrawerProps) => {
Expand All @@ -49,6 +53,7 @@ export const useAssetSelectionDrawer = ({
type,
queryFilter,
emptyPlaceHolderText,
infoBannerText,
open,
variant: 'drawer',
onSave: handleSave,
Expand All @@ -63,7 +68,8 @@ export const useAssetSelectionDrawer = ({
testId: 'asset-selection-modal',
onClose: onCancel,
header: {
title: t('label.add-entity', { entity: t('label.asset-plural') }),
title:
title ?? t('label.add-entity', { entity: t('label.asset-plural') }),
onClose: onCancel,
},
body: {
Expand Down
Loading
Loading