mirror of
https://github.com/datahub-project/datahub.git
synced 2025-10-28 09:23:25 +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 SearchBarConfiguration searchBarConfiguration;
|
||||
private final SearchCardConfiguration searchCardConfiguration;
|
||||
private final SearchFlagsConfiguration searchFlagsConfiguration;
|
||||
private final HomePageConfiguration homePageConfiguration;
|
||||
private final ChromeExtensionConfiguration chromeExtensionConfiguration;
|
||||
|
||||
@ -570,6 +571,7 @@ public class GmsGraphQLEngine {
|
||||
this.viewsConfiguration = args.viewsConfiguration;
|
||||
this.searchBarConfiguration = args.searchBarConfiguration;
|
||||
this.searchCardConfiguration = args.searchCardConfiguration;
|
||||
this.searchFlagsConfiguration = args.searchFlagsConfiguration;
|
||||
this.homePageConfiguration = args.homePageConfiguration;
|
||||
this.featureFlags = args.featureFlags;
|
||||
this.chromeExtensionConfiguration = args.chromeExtensionConfiguration;
|
||||
@ -981,6 +983,7 @@ public class GmsGraphQLEngine {
|
||||
this.viewsConfiguration,
|
||||
this.searchBarConfiguration,
|
||||
this.searchCardConfiguration,
|
||||
this.searchFlagsConfiguration,
|
||||
this.homePageConfiguration,
|
||||
this.featureFlags,
|
||||
this.chromeExtensionConfiguration,
|
||||
|
||||
@ -71,6 +71,7 @@ public class GmsGraphQLEngineArgs {
|
||||
ViewsConfiguration viewsConfiguration;
|
||||
SearchBarConfiguration searchBarConfiguration;
|
||||
SearchCardConfiguration searchCardConfiguration;
|
||||
SearchFlagsConfiguration searchFlagsConfiguration;
|
||||
HomePageConfiguration homePageConfiguration;
|
||||
SiblingGraphService siblingGraphService;
|
||||
GroupService groupService;
|
||||
|
||||
@ -36,6 +36,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
||||
private final ViewsConfiguration _viewsConfiguration;
|
||||
private final SearchBarConfiguration _searchBarConfig;
|
||||
private final SearchCardConfiguration _searchCardConfig;
|
||||
private final SearchFlagsConfiguration _searchFlagsConfig;
|
||||
private final HomePageConfiguration _homePageConfig;
|
||||
private final FeatureFlags _featureFlags;
|
||||
private final ChromeExtensionConfiguration _chromeExtensionConfiguration;
|
||||
@ -55,6 +56,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
||||
final ViewsConfiguration viewsConfiguration,
|
||||
final SearchBarConfiguration searchBarConfig,
|
||||
final SearchCardConfiguration searchCardConfig,
|
||||
final SearchFlagsConfiguration searchFlagsConfig,
|
||||
final HomePageConfiguration homePageConfig,
|
||||
final FeatureFlags featureFlags,
|
||||
final ChromeExtensionConfiguration chromeExtensionConfiguration,
|
||||
@ -72,6 +74,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
||||
_viewsConfiguration = viewsConfiguration;
|
||||
_searchBarConfig = searchBarConfig;
|
||||
_searchCardConfig = searchCardConfig;
|
||||
_searchFlagsConfig = searchFlagsConfig;
|
||||
_homePageConfig = homePageConfig;
|
||||
_featureFlags = featureFlags;
|
||||
_chromeExtensionConfiguration = chromeExtensionConfiguration;
|
||||
@ -211,6 +214,10 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
|
||||
searchCardConfig.setShowDescription(_searchCardConfig.getShowDescription());
|
||||
appConfig.setSearchCardConfig(searchCardConfig);
|
||||
|
||||
final SearchFlagsConfig searchFlagsConfig = new SearchFlagsConfig();
|
||||
searchFlagsConfig.setDefaultSkipHighlighting(_searchFlagsConfig.getDefaultSkipHighlighting());
|
||||
appConfig.setSearchFlagsConfig(searchFlagsConfig);
|
||||
|
||||
final HomePageConfig homePageConfig = new HomePageConfig();
|
||||
try {
|
||||
homePageConfig.setFirstInPersonalSidebar(
|
||||
|
||||
@ -227,6 +227,16 @@ type SearchCardConfig {
|
||||
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
|
||||
"""
|
||||
@ -333,6 +343,11 @@ type AppConfig {
|
||||
"""
|
||||
searchCardConfig: SearchCardConfig!
|
||||
|
||||
"""
|
||||
Configurations related the Search Flags
|
||||
"""
|
||||
searchFlagsConfig: SearchFlagsConfig!
|
||||
|
||||
"""
|
||||
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 SearchBarConfiguration mockSearchBarConfiguration;
|
||||
@Mock private SearchCardConfiguration mockSearchCardConfiguration;
|
||||
@Mock private SearchFlagsConfiguration mockSearchFlagsConfiguration;
|
||||
@Mock private HomePageConfiguration mockHomePageConfiguration;
|
||||
@Mock private FeatureFlags mockFeatureFlags;
|
||||
@Mock private ChromeExtensionConfiguration mockChromeExtensionConfiguration;
|
||||
@ -67,6 +68,7 @@ public class AppConfigResolverTest {
|
||||
when(mockViewsConfiguration.isEnabled()).thenReturn(true);
|
||||
when(mockSearchBarConfiguration.getApiVariant()).thenReturn("AUTOCOMPLETE_FOR_MULTIPLE");
|
||||
when(mockSearchCardConfiguration.getShowDescription()).thenReturn(true);
|
||||
when(mockSearchFlagsConfiguration.getDefaultSkipHighlighting()).thenReturn(false);
|
||||
when(mockHomePageConfiguration.getFirstInPersonalSidebar()).thenReturn("YOUR_ASSETS");
|
||||
when(mockChromeExtensionConfiguration.isEnabled()).thenReturn(false);
|
||||
when(mockChromeExtensionConfiguration.isLineageEnabled()).thenReturn(false);
|
||||
@ -89,6 +91,7 @@ public class AppConfigResolverTest {
|
||||
mockViewsConfiguration,
|
||||
mockSearchBarConfiguration,
|
||||
mockSearchCardConfiguration,
|
||||
mockSearchFlagsConfiguration,
|
||||
mockHomePageConfiguration,
|
||||
mockFeatureFlags,
|
||||
mockChromeExtensionConfiguration,
|
||||
@ -189,6 +192,7 @@ public class AppConfigResolverTest {
|
||||
mockViewsConfiguration,
|
||||
mockSearchBarConfiguration,
|
||||
mockSearchCardConfiguration,
|
||||
mockSearchFlagsConfiguration,
|
||||
mockHomePageConfiguration,
|
||||
mockFeatureFlags,
|
||||
mockChromeExtensionConfiguration,
|
||||
@ -356,6 +360,7 @@ public class AppConfigResolverTest {
|
||||
mockViewsConfiguration,
|
||||
mockSearchBarConfiguration,
|
||||
mockSearchCardConfiguration,
|
||||
mockSearchFlagsConfiguration,
|
||||
mockHomePageConfiguration,
|
||||
mockFeatureFlags,
|
||||
mockChromeExtensionConfiguration,
|
||||
@ -386,6 +391,7 @@ public class AppConfigResolverTest {
|
||||
mockViewsConfiguration,
|
||||
mockSearchBarConfiguration,
|
||||
mockSearchCardConfiguration,
|
||||
mockSearchFlagsConfiguration,
|
||||
mockHomePageConfiguration,
|
||||
mockFeatureFlags,
|
||||
mockChromeExtensionConfiguration,
|
||||
|
||||
@ -31,6 +31,7 @@ import { getSearchCount } from '@app/searchV2/utils/searchUtils';
|
||||
import { DownloadSearchResults, DownloadSearchResultsInput } from '@app/searchV2/utils/types';
|
||||
import { useDownloadScrollAcrossEntitiesSearchResults } from '@app/searchV2/utils/useDownloadScrollAcrossEntitiesSearchResults';
|
||||
import { scrollToTop } from '@app/shared/searchUtils';
|
||||
import { useAppConfig } from '@app/useAppConfig';
|
||||
import { SearchCfg } from '@src/conf';
|
||||
|
||||
import { useGetSearchResultsForMultipleQuery } from '@graphql/search.generated';
|
||||
@ -48,6 +49,7 @@ const Container = styled.span`
|
||||
*/
|
||||
export const SearchPage = () => {
|
||||
const { trackClearAllFiltersEvent } = useSearchFilterAnalytics();
|
||||
const { config } = useAppConfig();
|
||||
const showSearchFiltersV2 = useIsSearchV2();
|
||||
const showBrowseV2 = useIsBrowseV2();
|
||||
const searchVersion = useSearchVersion();
|
||||
@ -77,7 +79,11 @@ export const SearchPage = () => {
|
||||
orFilters,
|
||||
viewUrn,
|
||||
sortInput,
|
||||
searchFlags: { getSuggestions: true, includeStructuredPropertyFacets: true },
|
||||
searchFlags: {
|
||||
getSuggestions: true,
|
||||
includeStructuredPropertyFacets: true,
|
||||
skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false,
|
||||
},
|
||||
},
|
||||
},
|
||||
fetchPolicy: 'cache-and-network',
|
||||
|
||||
@ -75,6 +75,8 @@ const useAutocompleteAPI = (): APIResponse => {
|
||||
};
|
||||
|
||||
const useSearchAPI = (): APIResponse => {
|
||||
const { config } = useAppConfig();
|
||||
|
||||
const [entitiesWithMatchedFields, setEntitiesWithMatchedFields] = useState<EntityWithMatchedFields[] | undefined>();
|
||||
const [facets, setFacets] = useState<FacetMetadata[] | undefined>();
|
||||
|
||||
@ -96,12 +98,15 @@ const useSearchAPI = (): APIResponse => {
|
||||
viewUrn,
|
||||
orFilters,
|
||||
count: SEARCH_API_RESPONSE_MAX_ITEMS,
|
||||
searchFlags: {
|
||||
skipHighlighting: config?.searchFlagsConfig?.defaultSkipHighlighting || false,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
[getSearchResultsForMultiple],
|
||||
[getSearchResultsForMultiple, config?.searchFlagsConfig?.defaultSkipHighlighting],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@ -50,6 +50,9 @@ export const DEFAULT_APP_CONFIG = {
|
||||
searchCardConfig: {
|
||||
showDescription: false,
|
||||
},
|
||||
searchFlagsConfig: {
|
||||
defaultSkipHighlighting: false,
|
||||
},
|
||||
homePageConfig: {
|
||||
firstInPersonalSidebar: PersonalSidebarSection.YourAssets,
|
||||
},
|
||||
|
||||
@ -72,6 +72,9 @@ query appConfig {
|
||||
searchCardConfig {
|
||||
showDescription
|
||||
}
|
||||
searchFlagsConfig {
|
||||
defaultSkipHighlighting
|
||||
}
|
||||
homePageConfig {
|
||||
firstInPersonalSidebar
|
||||
}
|
||||
|
||||
@ -790,6 +790,7 @@ public class PropertiesCollectorConfigurationTest extends AbstractTestNGSpringCo
|
||||
"platformAnalytics.usageExport.userFilters",
|
||||
"searchBar.apiVariant",
|
||||
"searchCard.showDescription",
|
||||
"searchFlags.defaultSkipHighlighting",
|
||||
"searchService.cache.hazelcast.serviceName",
|
||||
"searchService.cache.hazelcast.service-dns-timeout",
|
||||
"searchService.cache.hazelcast.kubernetes-api-retries",
|
||||
|
||||
@ -40,6 +40,9 @@ public class DataHubAppConfiguration {
|
||||
/** Search card related configs */
|
||||
private SearchCardConfiguration searchCard;
|
||||
|
||||
/** Search flags related configs */
|
||||
private SearchFlagsConfiguration searchFlags;
|
||||
|
||||
/** Home page related configs */
|
||||
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:
|
||||
showDescription: ${SEARCH_CARD_SHOW_DESCRIPTION:false}
|
||||
|
||||
searchFlags:
|
||||
defaultSkipHighlighting: ${DEFAULT_SKIP_HIGHLIGHTING:false}
|
||||
|
||||
homePage:
|
||||
firstInPersonalSidebar: ${FIRST_IN_PERSONAL_SIDEBAR:YOUR_ASSETS}
|
||||
|
||||
|
||||
@ -261,6 +261,7 @@ public class GraphQLEngineFactory {
|
||||
args.setViewsConfiguration(configProvider.getViews());
|
||||
args.setSearchBarConfiguration(configProvider.getSearchBar());
|
||||
args.setSearchCardConfiguration(configProvider.getSearchCard());
|
||||
args.setSearchFlagsConfiguration(configProvider.getSearchFlags());
|
||||
args.setHomePageConfiguration(configProvider.getHomePage());
|
||||
args.setSiblingGraphService(siblingGraphService);
|
||||
args.setGroupService(groupService);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user