diff --git a/datahub-web/packages/data-portal/app/components/dataset-authors.ts b/datahub-web/packages/data-portal/app/components/dataset-authors.ts index 883b06a6b4..26ed559abd 100644 --- a/datahub-web/packages/data-portal/app/components/dataset-authors.ts +++ b/datahub-web/packages/data-portal/app/components/dataset-authors.ts @@ -192,7 +192,7 @@ export default class DatasetAuthors extends Component { return { owner, avatar: avatarProperties - ? makeAvatar(avatarProperties)({ userName: owner.userName }) + ? makeAvatar(avatarProperties)(owner) : { imageUrl: '', imageUrlFallback: '/assets/images/default_avatar.png' }, profile: PersonEntity.profileLinkFromUsername(owner.userName) }; diff --git a/datahub-web/packages/data-portal/app/constants/avatars/avatars.ts b/datahub-web/packages/data-portal/app/constants/avatars/avatars.ts index 56502633a0..e7503e8f7c 100644 --- a/datahub-web/packages/data-portal/app/constants/avatars/avatars.ts +++ b/datahub-web/packages/data-portal/app/constants/avatars/avatars.ts @@ -14,9 +14,10 @@ const fallback = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAA * @param {IAppConfig.userEntityProps.aviUrlFallback} aviUrlFallback * @return {IAvatar} */ -const makeAvatar = ({ aviUrlPrimary, aviUrlFallback = fallback }: IAppConfig['userEntityProps']): AvatarCreatorFunc => ( - object: Partial -): IAvatar => { +export const makeAvatar = ({ + aviUrlPrimary, + aviUrlFallback = fallback +}: IAppConfig['userEntityProps']): AvatarCreatorFunc => (object: Partial): IAvatar => { const props = pick(object, ['email', 'userName', 'name', 'imageUrl', 'pictureLink']); const { userName, pictureLink } = props; const imageUrlFallback = aviUrlFallback || fallback; @@ -32,5 +33,3 @@ const makeAvatar = ({ aviUrlPrimary, aviUrlFallback = fallback }: IAppConfig['us ...props }; }; - -export { makeAvatar }; diff --git a/datahub-web/packages/data-portal/app/templates/components/dataset-authors.hbs b/datahub-web/packages/data-portal/app/templates/components/dataset-authors.hbs index 1ee74904f8..955eaf9976 100644 --- a/datahub-web/packages/data-portal/app/templates/components/dataset-authors.hbs +++ b/datahub-web/packages/data-portal/app/templates/components/dataset-authors.hbs @@ -13,7 +13,7 @@ - LDAP Username + Username Full Name ID Type diff --git a/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets.ts b/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets.ts index b29fbb811a..4d22c9dd71 100644 --- a/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets.ts +++ b/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets.ts @@ -3,12 +3,9 @@ import { AutocompleteRuleNames, ISuggestionBuilder, IState, - INodeFacetProcessor, ISuggestion } from 'wherehows-web/utils/parsers/autocomplete/types'; import { dataToString } from 'wherehows-web/utils/parsers/autocomplete/utils'; -import { platform } from 'wherehows-web/utils/parsers/autocomplete/processors/facets/platform'; -import { fabric } from 'wherehows-web/utils/parsers/autocomplete/processors/facets/fabric'; import { ISearchEntityRenderProps } from '@datahub/data-models/types/entity/rendering/search-entity-render-prop'; import { DataModelEntity } from '@datahub/data-models/constants/entity'; import { fetchFacetValue } from 'wherehows-web/utils/parsers/helpers'; @@ -50,15 +47,6 @@ const getFacetValueFromStateRule = (state: IState): string => { return ''; }; -/** - * Current facets processors available - * @type {INodeFacetProcessor} - */ -export const facetNameProcessor: INodeFacetProcessor = { - platform, - origin: fabric -}; - export const facetsProcessor: INodeProcessor = { /** * When 'name' is expected we just return 'name:' as suggestion @@ -97,14 +85,6 @@ export const facetsProcessor: INodeProcessor = { ): Promise => { const facetName = getFacetNameFromStateRule(ruleState); const facetValue = getFacetValueFromStateRule(ruleState); - - // First lets check if we have a special processing for that property - const processor = facetNameProcessor[facetName]; - - if (processor) { - return await processor(builder, facetValue); - } - const suggestions = await fetchFacetValue(facetName, facetValue, builder.entity); return { diff --git a/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets/platform.ts b/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets/platform.ts index 6d6e741cde..b12ca8a7a2 100644 --- a/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets/platform.ts +++ b/datahub-web/packages/data-portal/app/utils/parsers/autocomplete/processors/facets/platform.ts @@ -2,28 +2,31 @@ import { IDataPlatform } from '@datahub/metadata-types/types/entity/dataset/plat import { ISuggestionBuilder } from 'wherehows-web/utils/parsers/autocomplete/types'; import { readDataPlatforms } from '@datahub/data-models/api/dataset/platforms'; -let platforms: Array; - /** * when we expect to autosuggest a platform, we call backend to get the entire list * then cache it and do a local search. - * TODO: META-7667 scope cache to function instead of module */ -export const platform = async (builder: ISuggestionBuilder, facetValue: string): Promise => { - if (!platforms) { - platforms = await readDataPlatforms(); - } +export const getPlatformProcessor = ( + defaultPlatforms: Array = [] +): ((builder: ISuggestionBuilder, facetValue: string) => Promise) => { + let platforms: Array = defaultPlatforms; - return { - ...builder, - facetNames: [ - ...builder.facetNames, - ...platforms - .filter(platform => platform.name.indexOf(facetValue) >= 0) - .map(platform => ({ - title: `platform:${platform.name}`, - text: `${builder.textPrevious}platform:${platform.name} ` - })) - ] + return async (builder: ISuggestionBuilder, facetValue: string): Promise => { + if (!platforms) { + platforms = await readDataPlatforms(); + } + + return { + ...builder, + facetNames: [ + ...builder.facetNames, + ...platforms + .filter((platform: IDataPlatform): boolean => platform.name.indexOf(facetValue) >= 0) + .map((platform): { title: string; text: string } => ({ + title: `platform:${platform.name}`, + text: `${builder.textPrevious}platform:${platform.name} ` + })) + ] + }; }; }; diff --git a/datahub-web/packages/data-portal/app/utils/parsers/helpers.ts b/datahub-web/packages/data-portal/app/utils/parsers/helpers.ts index 543108d042..cbb50fe3f8 100644 --- a/datahub-web/packages/data-portal/app/utils/parsers/helpers.ts +++ b/datahub-web/packages/data-portal/app/utils/parsers/helpers.ts @@ -28,9 +28,8 @@ export const fetchFacetValue = async ( ): Promise> => { // otherwise lets invoke api to fetch values let suggestions: Array = []; - const searchRenderProps = DataModelEntity[entity].renderProps.search; - const searchAttributes = searchRenderProps.attributes; - const fieldMeta = searchAttributes.find((attr): boolean => attr.fieldName === facetName); + const { apiName, attributes } = DataModelEntity[entity].renderProps.search; + const fieldMeta = attributes.find((attr): boolean => attr.fieldName === facetName); const { minAutocompleteFetchLength } = fieldMeta || { minAutocompleteFetchLength: undefined }; const cacheKey = `${facetName}:${facetValue}`; @@ -39,7 +38,7 @@ export const fetchFacetValue = async ( const request: FieldValuesRequestV2> = { field: facetName, input: facetValue, - type: searchRenderProps.apiName + type: apiName }; const facetValueReturn: IFieldValuesResponseV2 | undefined = await facetValuesApiEntities({ query: facetValue, diff --git a/datahub-web/packages/data-portal/tests/unit/utils/parsers/autocomplete-test.ts b/datahub-web/packages/data-portal/tests/unit/utils/parsers/autocomplete-test.ts index 8a35d6dfb5..0a5ab241ae 100644 --- a/datahub-web/packages/data-portal/tests/unit/utils/parsers/autocomplete-test.ts +++ b/datahub-web/packages/data-portal/tests/unit/utils/parsers/autocomplete-test.ts @@ -150,61 +150,24 @@ const createTests = (server: IMirageWherehows): Array => { } ] }, + // TODO: update tests with sample api response data for "text: 'platform:'", "text: 'platform:my'", and "text: 'origin:co'" { entity: DatasetEntity.displayName, description: 'Dataset with filter platform', text: 'platform:', - results: [ - { - groupName: 'Filter By', - options: [ - { - text: 'platform:hive ', - title: 'platform:hive' - }, - { - text: 'platform:mysql ', - title: 'platform:mysql' - } - ] - } - ] + results: [] }, { entity: DatasetEntity.displayName, description: 'Dataset with filter platform my', text: 'platform:my', - results: [ - { - groupName: 'Filter By', - options: [ - { - text: 'platform:mysql ', - title: 'platform:mysql' - } - ] - } - ] + results: [] }, { entity: DatasetEntity.displayName, description: 'Dataset with filter fabric', text: 'origin:co', - results: [ - { - groupName: 'Filter By', - options: [ - { - text: 'dataorigin:corp ', - title: 'dataorigin:corp' - }, - { - text: 'dataorigin:azurecontrol ', - title: 'dataorigin:azurecontrol' - } - ] - } - ] + results: [] }, { entity: DatasetEntity.displayName,