Skip to content

Commit c6a1571

Browse files
authored
fix: APPT-43 | Lineage Edit: Modal Autocomplete (datahub-project#10569)
1 parent 54ba014 commit c6a1571

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed

datahub-web-react/src/app/lineage/__tests__/manageLineage.test.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ describe('existsInEntitiesToAdd', () => {
88
it('should return false if the search result is not in entitiesAlreadyAdded', () => {
99
const result = { entity: { urn: 'urn:li:test' } } as any;
1010
const entitiesAlreadyAdded = [{ urn: 'urn:li:testing123' }] as any;
11-
const exists = existsInEntitiesToAdd(result, entitiesAlreadyAdded);
11+
const exists = existsInEntitiesToAdd(result.entity, entitiesAlreadyAdded);
1212

1313
expect(exists).toBe(false);
1414
});
1515

1616
it('should return true if the search result is in entitiesAlreadyAdded', () => {
1717
const result = { entity: { urn: 'urn:li:test' } } as any;
1818
const entitiesAlreadyAdded = [{ urn: 'urn:li:testing123' }, { urn: 'urn:li:test' }] as any;
19-
const exists = existsInEntitiesToAdd(result, entitiesAlreadyAdded);
19+
const exists = existsInEntitiesToAdd(result.entity, entitiesAlreadyAdded);
2020

2121
expect(exists).toBe(true);
2222
});

datahub-web-react/src/app/lineage/manage/AddEntityEdge.tsx

+17-15
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { AutoComplete, Empty } from 'antd';
33
import React, { useState } from 'react';
44
import styled from 'styled-components/macro';
55
import { useEntityRegistry } from '../../useEntityRegistry';
6-
import { useGetSearchResultsForMultipleLazyQuery } from '../../../graphql/search.generated';
7-
import { Entity, EntityType, SearchResult } from '../../../types.generated';
6+
import { useGetAutoCompleteMultipleResultsLazyQuery } from '../../../graphql/search.generated';
7+
import { Entity, EntityType } from '../../../types.generated';
88
import { Direction } from '../types';
99
import { getValidEntityTypes } from '../utils/manageLineageUtils';
1010
import LineageEntityView from './LineageEntityView';
@@ -62,8 +62,8 @@ function getPlaceholderText(validEntityTypes: EntityType[], entityRegistry: Enti
6262
return placeholderText;
6363
}
6464

65-
export function existsInEntitiesToAdd(result: SearchResult, entitiesAlreadyAdded: Entity[]) {
66-
return !!entitiesAlreadyAdded.find((entity) => entity.urn === result.entity.urn);
65+
export function existsInEntitiesToAdd(result: Entity, entitiesAlreadyAdded: Entity[]) {
66+
return !!entitiesAlreadyAdded.find((entity) => entity.urn === result.urn);
6767
}
6868

6969
interface Props {
@@ -82,33 +82,34 @@ export default function AddEntityEdge({
8282
entityType,
8383
}: Props) {
8484
const entityRegistry = useEntityRegistry();
85-
const [search, { data: searchData, loading }] = useGetSearchResultsForMultipleLazyQuery();
85+
const [getAutoCompleteResults, { data: autoCompleteResults, loading }] =
86+
useGetAutoCompleteMultipleResultsLazyQuery();
8687
const [queryText, setQueryText] = useState<string>('');
8788

8889
const validEntityTypes = getValidEntityTypes(lineageDirection, entityType);
8990

9091
function handleSearch(text: string) {
9192
setQueryText(text);
9293
if (text !== '') {
93-
search({
94+
getAutoCompleteResults({
9495
variables: {
9596
input: {
9697
types: validEntityTypes,
9798
query: text,
98-
start: 0,
99-
count: 15,
99+
limit: 15,
100100
},
101101
},
102102
});
103103
}
104104
}
105105

106106
function selectEntity(urn: string) {
107-
const selectedEntity = searchData?.searchAcrossEntities?.searchResults.find(
108-
(result) => result.entity.urn === urn,
107+
const resultEntities = autoCompleteResults?.autoCompleteForMultiple?.suggestions.flatMap(
108+
(suggestion) => suggestion.entities || [],
109109
);
110+
const selectedEntity = resultEntities?.find((entity) => entity.urn === urn);
110111
if (selectedEntity) {
111-
setEntitiesToAdd((existingEntities) => [...existingEntities, selectedEntity.entity]);
112+
setEntitiesToAdd((existingEntities) => [...existingEntities, selectedEntity]);
112113
}
113114
}
114115

@@ -120,9 +121,10 @@ export default function AddEntityEdge({
120121
);
121122
};
122123

123-
const searchResults = searchData?.searchAcrossEntities?.searchResults
124-
.filter((result) => !existsInEntitiesToAdd(result, entitiesToAdd) && result.entity.urn !== entityUrn)
125-
.map((result) => renderSearchResult(result.entity));
124+
const searchResults = autoCompleteResults?.autoCompleteForMultiple?.suggestions
125+
.flatMap((suggestion) => suggestion.entities || [])
126+
.filter((entity) => entity && !existsInEntitiesToAdd(entity, entitiesToAdd) && entity.urn !== entityUrn)
127+
.map((entity) => renderSearchResult(entity));
126128

127129
const placeholderText = getPlaceholderText(validEntityTypes, entityRegistry);
128130

@@ -142,7 +144,7 @@ export default function AddEntityEdge({
142144
filterOption={false}
143145
notFoundContent={(queryText.length > 3 && <Empty description="No Assets Found" />) || undefined}
144146
>
145-
{!searchData && loading && (
147+
{loading && (
146148
<AutoComplete.Option value="loading">
147149
<LoadingWrapper>
148150
<LoadingOutlined />

0 commit comments

Comments
 (0)