mirror of
https://github.com/datahub-project/datahub.git
synced 2025-10-29 01:42:08 +00:00
feat(ui/platform): Adds env variable to control default skipHighlighting search flag (#15038)
This commit is contained in:
parent
0f63e6d367
commit
27fca1c0bf
@ -433,6 +433,7 @@ public class GmsGraphQLEngine {
|
|||||||
private final ViewsConfiguration viewsConfiguration;
|
private final ViewsConfiguration viewsConfiguration;
|
||||||
private final SearchBarConfiguration searchBarConfiguration;
|
private final SearchBarConfiguration searchBarConfiguration;
|
||||||
private final SearchCardConfiguration searchCardConfiguration;
|
private final SearchCardConfiguration searchCardConfiguration;
|
||||||
|
private final SearchFlagsConfiguration searchFlagsConfiguration;
|
||||||
private final HomePageConfiguration homePageConfiguration;
|
private final HomePageConfiguration homePageConfiguration;
|
||||||
private final ChromeExtensionConfiguration chromeExtensionConfiguration;
|
private final ChromeExtensionConfiguration chromeExtensionConfiguration;
|
||||||
|
|
||||||
@ -570,6 +571,7 @@ public class GmsGraphQLEngine {
|
|||||||
this.viewsConfiguration = args.viewsConfiguration;
|
this.viewsConfiguration = args.viewsConfiguration;
|
||||||
this.searchBarConfiguration = args.searchBarConfiguration;
|
this.searchBarConfiguration = args.searchBarConfiguration;
|
||||||
this.searchCardConfiguration = args.searchCardConfiguration;
|
this.searchCardConfiguration = args.searchCardConfiguration;
|
||||||
|
this.searchFlagsConfiguration = args.searchFlagsConfiguration;
|
||||||
this.homePageConfiguration = args.homePageConfiguration;
|
this.homePageConfiguration = args.homePageConfiguration;
|
||||||
this.featureFlags = args.featureFlags;
|
this.featureFlags = args.featureFlags;
|
||||||
this.chromeExtensionConfiguration = args.chromeExtensionConfiguration;
|
this.chromeExtensionConfiguration = args.chromeExtensionConfiguration;
|
||||||
@ -981,6 +983,7 @@ public class GmsGraphQLEngine {
|
|||||||
this.viewsConfiguration,
|
this.viewsConfiguration,
|
||||||
this.searchBarConfiguration,
|
this.searchBarConfiguration,
|
||||||
this.searchCardConfiguration,
|
this.searchCardConfiguration,
|
||||||
|
this.searchFlagsConfiguration,
|
||||||
this.homePageConfiguration,
|
this.homePageConfiguration,
|
||||||
this.featureFlags,
|
this.featureFlags,
|
||||||
this.chromeExtensionConfiguration,
|
this.chromeExtensionConfiguration,
|
||||||
|
|||||||
@ -71,6 +71,7 @@ public class GmsGraphQLEngineArgs {
|
|||||||
ViewsConfiguration viewsConfiguration;
|
ViewsConfiguration viewsConfiguration;
|
||||||
SearchBarConfiguration searchBarConfiguration;
|
SearchBarConfiguration searchBarConfiguration;
|
||||||
SearchCardConfiguration searchCardConfiguration;
|
SearchCardConfiguration searchCardConfiguration;
|
||||||
|
SearchFlagsConfiguration searchFlagsConfiguration;
|
||||||
HomePageConfiguration homePageConfiguration;
|
HomePageConfiguration homePageConfiguration;
|
||||||
SiblingGraphService siblingGraphService;
|
SiblingGraphService siblingGraphService;
|
||||||
GroupService groupService;
|
GroupService groupService;
|
||||||
|
|||||||
@ -36,6 +36,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
|||||||
private final ViewsConfiguration _viewsConfiguration;
|
private final ViewsConfiguration _viewsConfiguration;
|
||||||
private final SearchBarConfiguration _searchBarConfig;
|
private final SearchBarConfiguration _searchBarConfig;
|
||||||
private final SearchCardConfiguration _searchCardConfig;
|
private final SearchCardConfiguration _searchCardConfig;
|
||||||
|
private final SearchFlagsConfiguration _searchFlagsConfig;
|
||||||
private final HomePageConfiguration _homePageConfig;
|
private final HomePageConfiguration _homePageConfig;
|
||||||
private final FeatureFlags _featureFlags;
|
private final FeatureFlags _featureFlags;
|
||||||
private final ChromeExtensionConfiguration _chromeExtensionConfiguration;
|
private final ChromeExtensionConfiguration _chromeExtensionConfiguration;
|
||||||
@ -55,6 +56,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
|||||||
final ViewsConfiguration viewsConfiguration,
|
final ViewsConfiguration viewsConfiguration,
|
||||||
final SearchBarConfiguration searchBarConfig,
|
final SearchBarConfiguration searchBarConfig,
|
||||||
final SearchCardConfiguration searchCardConfig,
|
final SearchCardConfiguration searchCardConfig,
|
||||||
|
final SearchFlagsConfiguration searchFlagsConfig,
|
||||||
final HomePageConfiguration homePageConfig,
|
final HomePageConfiguration homePageConfig,
|
||||||
final FeatureFlags featureFlags,
|
final FeatureFlags featureFlags,
|
||||||
final ChromeExtensionConfiguration chromeExtensionConfiguration,
|
final ChromeExtensionConfiguration chromeExtensionConfiguration,
|
||||||
@ -72,6 +74,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
|||||||
_viewsConfiguration = viewsConfiguration;
|
_viewsConfiguration = viewsConfiguration;
|
||||||
_searchBarConfig = searchBarConfig;
|
_searchBarConfig = searchBarConfig;
|
||||||
_searchCardConfig = searchCardConfig;
|
_searchCardConfig = searchCardConfig;
|
||||||
|
_searchFlagsConfig = searchFlagsConfig;
|
||||||
_homePageConfig = homePageConfig;
|
_homePageConfig = homePageConfig;
|
||||||
_featureFlags = featureFlags;
|
_featureFlags = featureFlags;
|
||||||
_chromeExtensionConfiguration = chromeExtensionConfiguration;
|
_chromeExtensionConfiguration = chromeExtensionConfiguration;
|
||||||
@ -211,6 +214,10 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
|||||||
searchCardConfig.setShowDescription(_searchCardConfig.getShowDescription());
|
searchCardConfig.setShowDescription(_searchCardConfig.getShowDescription());
|
||||||
appConfig.setSearchCardConfig(searchCardConfig);
|
appConfig.setSearchCardConfig(searchCardConfig);
|
||||||
|
|
||||||
|
final SearchFlagsConfig searchFlagsConfig = new SearchFlagsConfig();
|
||||||
|
searchFlagsConfig.setDefaultSkipHighlighting(_searchFlagsConfig.getDefaultSkipHighlighting());
|
||||||
|
appConfig.setSearchFlagsConfig(searchFlagsConfig);
|
||||||
|
|
||||||
final HomePageConfig homePageConfig = new HomePageConfig();
|
final HomePageConfig homePageConfig = new HomePageConfig();
|
||||||
try {
|
try {
|
||||||
homePageConfig.setFirstInPersonalSidebar(
|
homePageConfig.setFirstInPersonalSidebar(
|
||||||
|
|||||||
@ -227,6 +227,16 @@ type SearchCardConfig {
|
|||||||
showDescription: Boolean!
|
showDescription: Boolean!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"""
|
||||||
|
Configurations related the Search Flags
|
||||||
|
"""
|
||||||
|
type SearchFlagsConfig {
|
||||||
|
"""
|
||||||
|
Default value for skipHighlighting search flag. Currently used in Search Page and Search Bar
|
||||||
|
"""
|
||||||
|
defaultSkipHighlighting: Boolean!
|
||||||
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Variants of APIs used in the Search bar to get data
|
Variants of APIs used in the Search bar to get data
|
||||||
"""
|
"""
|
||||||
@ -333,6 +343,11 @@ type AppConfig {
|
|||||||
"""
|
"""
|
||||||
searchCardConfig: SearchCardConfig!
|
searchCardConfig: SearchCardConfig!
|
||||||
|
|
||||||
|
"""
|
||||||
|
Configurations related the Search Flags
|
||||||
|
"""
|
||||||
|
searchFlagsConfig: SearchFlagsConfig!
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Feature flags telling the UI whether a feature is enabled or not
|
Feature flags telling the UI whether a feature is enabled or not
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -39,6 +39,7 @@ public class AppConfigResolverTest {
|
|||||||
@Mock private ViewsConfiguration mockViewsConfiguration;
|
@Mock private ViewsConfiguration mockViewsConfiguration;
|
||||||
@Mock private SearchBarConfiguration mockSearchBarConfiguration;
|
@Mock private SearchBarConfiguration mockSearchBarConfiguration;
|
||||||
@Mock private SearchCardConfiguration mockSearchCardConfiguration;
|
@Mock private SearchCardConfiguration mockSearchCardConfiguration;
|
||||||
|
@Mock private SearchFlagsConfiguration mockSearchFlagsConfiguration;
|
||||||
@Mock private HomePageConfiguration mockHomePageConfiguration;
|
@Mock private HomePageConfiguration mockHomePageConfiguration;
|
||||||
@Mock private FeatureFlags mockFeatureFlags;
|
@Mock private FeatureFlags mockFeatureFlags;
|
||||||
@Mock private ChromeExtensionConfiguration mockChromeExtensionConfiguration;
|
@Mock private ChromeExtensionConfiguration mockChromeExtensionConfiguration;
|
||||||
@ -67,6 +68,7 @@ public class AppConfigResolverTest {
|
|||||||
when(mockViewsConfiguration.isEnabled()).thenReturn(true);
|
when(mockViewsConfiguration.isEnabled()).thenReturn(true);
|
||||||
when(mockSearchBarConfiguration.getApiVariant()).thenReturn("AUTOCOMPLETE_FOR_MULTIPLE");
|
when(mockSearchBarConfiguration.getApiVariant()).thenReturn("AUTOCOMPLETE_FOR_MULTIPLE");
|
||||||
when(mockSearchCardConfiguration.getShowDescription()).thenReturn(true);
|
when(mockSearchCardConfiguration.getShowDescription()).thenReturn(true);
|
||||||
|
when(mockSearchFlagsConfiguration.getDefaultSkipHighlighting()).thenReturn(false);
|
||||||
when(mockHomePageConfiguration.getFirstInPersonalSidebar()).thenReturn("YOUR_ASSETS");
|
when(mockHomePageConfiguration.getFirstInPersonalSidebar()).thenReturn("YOUR_ASSETS");
|
||||||
when(mockChromeExtensionConfiguration.isEnabled()).thenReturn(false);
|
when(mockChromeExtensionConfiguration.isEnabled()).thenReturn(false);
|
||||||
when(mockChromeExtensionConfiguration.isLineageEnabled()).thenReturn(false);
|
when(mockChromeExtensionConfiguration.isLineageEnabled()).thenReturn(false);
|
||||||
@ -89,6 +91,7 @@ public class AppConfigResolverTest {
|
|||||||
mockViewsConfiguration,
|
mockViewsConfiguration,
|
||||||
mockSearchBarConfiguration,
|
mockSearchBarConfiguration,
|
||||||
mockSearchCardConfiguration,
|
mockSearchCardConfiguration,
|
||||||
|
mockSearchFlagsConfiguration,
|
||||||
mockHomePageConfiguration,
|
mockHomePageConfiguration,
|
||||||
mockFeatureFlags,
|
mockFeatureFlags,
|
||||||
mockChromeExtensionConfiguration,
|
mockChromeExtensionConfiguration,
|
||||||
@ -189,6 +192,7 @@ public class AppConfigResolverTest {
|
|||||||
mockViewsConfiguration,
|
mockViewsConfiguration,
|
||||||
mockSearchBarConfiguration,
|
mockSearchBarConfiguration,
|
||||||
mockSearchCardConfiguration,
|
mockSearchCardConfiguration,
|
||||||
|
mockSearchFlagsConfiguration,
|
||||||
mockHomePageConfiguration,
|
mockHomePageConfiguration,
|
||||||
mockFeatureFlags,
|
mockFeatureFlags,
|
||||||
mockChromeExtensionConfiguration,
|
mockChromeExtensionConfiguration,
|
||||||
@ -356,6 +360,7 @@ public class AppConfigResolverTest {
|
|||||||
mockViewsConfiguration,
|
mockViewsConfiguration,
|
||||||
mockSearchBarConfiguration,
|
mockSearchBarConfiguration,
|
||||||
mockSearchCardConfiguration,
|
mockSearchCardConfiguration,
|
||||||
|
mockSearchFlagsConfiguration,
|
||||||
mockHomePageConfiguration,
|
mockHomePageConfiguration,
|
||||||
mockFeatureFlags,
|
mockFeatureFlags,
|
||||||
mockChromeExtensionConfiguration,
|
mockChromeExtensionConfiguration,
|
||||||
@ -386,6 +391,7 @@ public class AppConfigResolverTest {
|
|||||||
mockViewsConfiguration,
|
mockViewsConfiguration,
|
||||||
mockSearchBarConfiguration,
|
mockSearchBarConfiguration,
|
||||||
mockSearchCardConfiguration,
|
mockSearchCardConfiguration,
|
||||||
|
mockSearchFlagsConfiguration,
|
||||||
mockHomePageConfiguration,
|
mockHomePageConfiguration,
|
||||||
mockFeatureFlags,
|
mockFeatureFlags,
|
||||||
mockChromeExtensionConfiguration,
|
mockChromeExtensionConfiguration,
|
||||||
|
|||||||
@ -31,6 +31,7 @@ import { getSearchCount } from '@app/searchV2/utils/searchUtils';
|
|||||||
import { DownloadSearchResults, DownloadSearchResultsInput } from '@app/searchV2/utils/types';
|
import { DownloadSearchResults, DownloadSearchResultsInput } from '@app/searchV2/utils/types';
|
||||||
import { useDownloadScrollAcrossEntitiesSearchResults } from '@app/searchV2/utils/useDownloadScrollAcrossEntitiesSearchResults';
|
import { useDownloadScrollAcrossEntitiesSearchResults } from '@app/searchV2/utils/useDownloadScrollAcrossEntitiesSearchResults';
|
||||||
import { scrollToTop } from '@app/shared/searchUtils';
|
import { scrollToTop } from '@app/shared/searchUtils';
|
||||||
|
import { useAppConfig } from '@app/useAppConfig';
|
||||||
import { SearchCfg } from '@src/conf';
|
import { SearchCfg } from '@src/conf';
|
||||||
|
|
||||||
import { useGetSearchResultsForMultipleQuery } from '@graphql/search.generated';
|
import { useGetSearchResultsForMultipleQuery } from '@graphql/search.generated';
|
||||||
@ -48,6 +49,7 @@ const Container = styled.span`
|
|||||||
*/
|
*/
|
||||||
export const SearchPage = () => {
|
export const SearchPage = () => {
|
||||||
const { trackClearAllFiltersEvent } = useSearchFilterAnalytics();
|
const { trackClearAllFiltersEvent } = useSearchFilterAnalytics();
|
||||||
|
const { config } = useAppConfig();
|
||||||
const showSearchFiltersV2 = useIsSearchV2();
|
const showSearchFiltersV2 = useIsSearchV2();
|
||||||
const showBrowseV2 = useIsBrowseV2();
|
const showBrowseV2 = useIsBrowseV2();
|
||||||
const searchVersion = useSearchVersion();
|
const searchVersion = useSearchVersion();
|
||||||
@ -77,7 +79,11 @@ export const SearchPage = () => {
|
|||||||
orFilters,
|
orFilters,
|
||||||
viewUrn,
|
viewUrn,
|
||||||
sortInput,
|
sortInput,
|
||||||
searchFlags: { getSuggestions: true, includeStructuredPropertyFacets: true },
|
searchFlags: {
|
||||||
|
getSuggestions: true,
|
||||||
|
includeStructuredPropertyFacets: true,
|
||||||
|
skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
fetchPolicy: 'cache-and-network',
|
fetchPolicy: 'cache-and-network',
|
||||||
|
|||||||
@ -75,6 +75,8 @@ const useAutocompleteAPI = (): APIResponse => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const useSearchAPI = (): APIResponse => {
|
const useSearchAPI = (): APIResponse => {
|
||||||
|
const { config } = useAppConfig();
|
||||||
|
|
||||||
const [entitiesWithMatchedFields, setEntitiesWithMatchedFields] = useState<EntityWithMatchedFields[] | undefined>();
|
const [entitiesWithMatchedFields, setEntitiesWithMatchedFields] = useState<EntityWithMatchedFields[] | undefined>();
|
||||||
const [facets, setFacets] = useState<FacetMetadata[] | undefined>();
|
const [facets, setFacets] = useState<FacetMetadata[] | undefined>();
|
||||||
|
|
||||||
@ -96,12 +98,15 @@ const useSearchAPI = (): APIResponse => {
|
|||||||
viewUrn,
|
viewUrn,
|
||||||
orFilters,
|
orFilters,
|
||||||
count: SEARCH_API_RESPONSE_MAX_ITEMS,
|
count: SEARCH_API_RESPONSE_MAX_ITEMS,
|
||||||
|
searchFlags: {
|
||||||
|
skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[getSearchResultsForMultiple],
|
[getSearchResultsForMultiple, config?.searchFlagsConfig?.defaultSkipHighlighting],
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
@ -50,6 +50,9 @@ export const DEFAULT_APP_CONFIG = {
|
|||||||
searchCardConfig: {
|
searchCardConfig: {
|
||||||
showDescription: false,
|
showDescription: false,
|
||||||
},
|
},
|
||||||
|
searchFlagsConfig: {
|
||||||
|
defaultSkipHighlighting: false,
|
||||||
|
},
|
||||||
homePageConfig: {
|
homePageConfig: {
|
||||||
firstInPersonalSidebar: PersonalSidebarSection.YourAssets,
|
firstInPersonalSidebar: PersonalSidebarSection.YourAssets,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -72,6 +72,9 @@ query appConfig {
|
|||||||
searchCardConfig {
|
searchCardConfig {
|
||||||
showDescription
|
showDescription
|
||||||
}
|
}
|
||||||
|
searchFlagsConfig {
|
||||||
|
defaultSkipHighlighting
|
||||||
|
}
|
||||||
homePageConfig {
|
homePageConfig {
|
||||||
firstInPersonalSidebar
|
firstInPersonalSidebar
|
||||||
}
|
}
|
||||||
|
|||||||
@ -790,6 +790,7 @@ public class PropertiesCollectorConfigurationTest extends AbstractTestNGSpringCo
|
|||||||
"platformAnalytics.usageExport.userFilters",
|
"platformAnalytics.usageExport.userFilters",
|
||||||
"searchBar.apiVariant",
|
"searchBar.apiVariant",
|
||||||
"searchCard.showDescription",
|
"searchCard.showDescription",
|
||||||
|
"searchFlags.defaultSkipHighlighting",
|
||||||
"searchService.cache.hazelcast.serviceName",
|
"searchService.cache.hazelcast.serviceName",
|
||||||
"searchService.cache.hazelcast.service-dns-timeout",
|
"searchService.cache.hazelcast.service-dns-timeout",
|
||||||
"searchService.cache.hazelcast.kubernetes-api-retries",
|
"searchService.cache.hazelcast.kubernetes-api-retries",
|
||||||
|
|||||||
@ -40,6 +40,9 @@ public class DataHubAppConfiguration {
|
|||||||
/** Search card related configs */
|
/** Search card related configs */
|
||||||
private SearchCardConfiguration searchCard;
|
private SearchCardConfiguration searchCard;
|
||||||
|
|
||||||
|
/** Search flags related configs */
|
||||||
|
private SearchFlagsConfiguration searchFlags;
|
||||||
|
|
||||||
/** Home page related configs */
|
/** Home page related configs */
|
||||||
private HomePageConfiguration homePage;
|
private HomePageConfiguration homePage;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
package com.linkedin.metadata.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/** POJO representing the "searchFlags" configuration block in application.yaml.on.yml */
|
||||||
|
@Data
|
||||||
|
public class SearchFlagsConfiguration {
|
||||||
|
/** Default value for skipHighlighing flag */
|
||||||
|
public Boolean defaultSkipHighlighting;
|
||||||
|
}
|
||||||
@ -866,6 +866,9 @@ searchBar:
|
|||||||
searchCard:
|
searchCard:
|
||||||
showDescription: ${SEARCH_CARD_SHOW_DESCRIPTION:false}
|
showDescription: ${SEARCH_CARD_SHOW_DESCRIPTION:false}
|
||||||
|
|
||||||
|
searchFlags:
|
||||||
|
defaultSkipHighlighting: ${DEFAULT_SKIP_HIGHLIGHTING:false}
|
||||||
|
|
||||||
homePage:
|
homePage:
|
||||||
firstInPersonalSidebar: ${FIRST_IN_PERSONAL_SIDEBAR:YOUR_ASSETS}
|
firstInPersonalSidebar: ${FIRST_IN_PERSONAL_SIDEBAR:YOUR_ASSETS}
|
||||||
|
|
||||||
|
|||||||
@ -261,6 +261,7 @@ public class GraphQLEngineFactory {
|
|||||||
args.setViewsConfiguration(configProvider.getViews());
|
args.setViewsConfiguration(configProvider.getViews());
|
||||||
args.setSearchBarConfiguration(configProvider.getSearchBar());
|
args.setSearchBarConfiguration(configProvider.getSearchBar());
|
||||||
args.setSearchCardConfiguration(configProvider.getSearchCard());
|
args.setSearchCardConfiguration(configProvider.getSearchCard());
|
||||||
|
args.setSearchFlagsConfiguration(configProvider.getSearchFlags());
|
||||||
args.setHomePageConfiguration(configProvider.getHomePage());
|
args.setHomePageConfiguration(configProvider.getHomePage());
|
||||||
args.setSiblingGraphService(siblingGraphService);
|
args.setSiblingGraphService(siblingGraphService);
|
||||||
args.setGroupService(groupService);
|
args.setGroupService(groupService);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user