From b6d659aea9270d56c6f751b12c7030bf4cdb880e Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Wed, 26 Jan 2022 12:36:25 +0200 Subject: [PATCH] Federated search route as optional --- src/client/containers/SemanticPortal.js | 86 ++++++++++++++----------- 1 file changed, 48 insertions(+), 38 deletions(-) diff --git a/src/client/containers/SemanticPortal.js b/src/client/containers/SemanticPortal.js index f3520202..8dc6cd60 100644 --- a/src/client/containers/SemanticPortal.js +++ b/src/client/containers/SemanticPortal.js @@ -97,9 +97,16 @@ const SemanticPortal = props => { const location = useLocation() const rootUrlWithLang = `${rootUrl}/${props.options.currentLocale}` const screenSize = getScreenSize() - const noClientFSResults = props.clientFSState && props.clientFSState.results === null + const federatedSearchPerspectives = [] + let noClientFSResults = true + perspectiveConfig.forEach(perspective => { + if (perspective.searchMode === 'federated-search') { + federatedSearchPerspectives.push(perspective) + noClientFSResults = props.clientFSState && props.clientFSState.results === null + } + }) - // trigger a new “page view†event whenever a new page loads + // trigger a new "page view" event whenever a new page loads usePageViews() // set HTML title and description dynamically based on translations @@ -309,42 +316,45 @@ const SemanticPortal = props => { </Route> </Switch> )} - {/* optional: create a route for client side faceted search */} - <Route path={`${rootUrlWithLang}/perspective4/federated-search`}> - <FederatedSearchPerspective - portalConfig={portalConfig} - layoutConfig={layoutConfig} - facetedSearchMode='clientFS' - facetClass='perspective4' - resultClass='perspective4' - facetState={props.clientFSState} - clientFSFacetValues={props.clientFSFacetValues} - fetchingResultCount={props.clientFSState.textResultsFetching} - resultCount={noClientFSResults ? 0 : props.clientFSState.results.length} - noClientFSResults={noClientFSResults} - clientFSState={props.clientFSState} - clientFSToggleDataset={props.clientFSToggleDataset} - clientFSFetchResults={props.clientFSFetchResults} - clientFSClearResults={props.clientFSClearResults} - clientFSUpdateQuery={props.clientFSUpdateQuery} - clientFSUpdateFacet={props.clientFSUpdateFacet} - defaultActiveFacets={perspectiveConfig.find(p => p.id === 'perspective4').defaultActiveFacets} - updateMapBounds={props.updateMapBounds} - screenSize={screenSize} - showError={props.showError} - rootUrl={rootUrlWithLang} - apexChartsConfig={apexChartsConfig} - leafletConfig={leafletConfig} - networkConfig={networkConfig} - perspective={perspectiveConfig.find(p => p.id === 'perspective4')} - clientFSResults={props.clientFSResults} - clientFSSortResults={props.clientFSSortResults} - leafletMapState={props.leafletMap} - fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} - fetchGeoJSONLayers={props.fetchGeoJSONLayers} - clearGeoJSONLayers={props.clearGeoJSONLayers} - /> - </Route> + {/* optional: create routes for client side faceted search */} + {federatedSearchPerspectives.length > 0 && + federatedSearchPerspectives.map(perspective => + <Route key={perspective.id} path={`${rootUrlWithLang}/${perspective.id}/federated-search`}> + <FederatedSearchPerspective + portalConfig={portalConfig} + layoutConfig={layoutConfig} + facetedSearchMode='clientFS' + facetClass={perspective.id} + resultClass={perspective.id} + facetState={props.clientFSState} + clientFSFacetValues={props.clientFSFacetValues} + fetchingResultCount={props.clientFSState.textResultsFetching} + resultCount={noClientFSResults ? 0 : props.clientFSState.results.length} + noClientFSResults={noClientFSResults} + clientFSState={props.clientFSState} + clientFSToggleDataset={props.clientFSToggleDataset} + clientFSFetchResults={props.clientFSFetchResults} + clientFSClearResults={props.clientFSClearResults} + clientFSUpdateQuery={props.clientFSUpdateQuery} + clientFSUpdateFacet={props.clientFSUpdateFacet} + defaultActiveFacets={perspective.defaultActiveFacets} + updateMapBounds={props.updateMapBounds} + screenSize={screenSize} + showError={props.showError} + rootUrl={rootUrlWithLang} + apexChartsConfig={apexChartsConfig} + leafletConfig={leafletConfig} + networkConfig={networkConfig} + perspective={perspective} + clientFSResults={props.clientFSResults} + clientFSSortResults={props.clientFSSortResults} + leafletMapState={props.leafletMap} + fetchGeoJSONLayersBackend={props.fetchGeoJSONLayersBackend} + fetchGeoJSONLayers={props.fetchGeoJSONLayers} + clearGeoJSONLayers={props.clearGeoJSONLayers} + /> + </Route> + )} {/* create routes for top bar info buttons */} {!layoutConfig.topBar.externalAboutPage && <Route path={`${rootUrlWithLang}/about`}> -- GitLab