diff --git a/src/client/components/facet_results/ApexCharts.js b/src/client/components/facet_results/ApexCharts.js index a3f2670fba0bd941d4da036115384eb893527c58..0a4ceeb6be2fd9628182584307c756a2beb08990 100644 --- a/src/client/components/facet_results/ApexCharts.js +++ b/src/client/components/facet_results/ApexCharts.js @@ -152,7 +152,8 @@ class ApexChart extends React.Component { if (this.isSmallScreen()) { return 'auto' } - const doNotReduceTabHeight = this.props.component === 'ApexChartsDouble' && this.props.order === 'lower' + const doNotReduceTabHeight = (this.props.component === 'ApexChartsDouble' && this.props.order === 'lower') || + this.props.resultClassConfig.pageType === 'instancePage' if (doNotReduceTabHeight) { const rootHeightReduction = 2 * defaultPadding + 1 return `calc(${targetHeight} - ${rootHeightReduction}px)` diff --git a/src/client/library_configs/ApexCharts/ApexChartsConfig.js b/src/client/library_configs/ApexCharts/ApexChartsConfig.js index d2fa91aff1e04f7f5997fd390276630bc76b5b81..15201c391208ad384af11f16f2fde5be56751c30 100644 --- a/src/client/library_configs/ApexCharts/ApexChartsConfig.js +++ b/src/client/library_configs/ApexCharts/ApexChartsConfig.js @@ -90,7 +90,7 @@ export const createMultipleLineChartData = ({ const series = [] for (const lineID in results) { series.push({ - name: intl.get(`lineChart.${lineID}`), + name: intl.get(`lineChart.${lineID}`) || lineID, data: results[lineID] }) } diff --git a/src/client/reducers/index.js b/src/client/reducers/index.js index 37f545f570880481cf66f17edac44b4911dfd269..3da6968482ce59c50af8f7ba3dc864c9d568b4c5 100644 --- a/src/client/reducers/index.js +++ b/src/client/reducers/index.js @@ -68,9 +68,19 @@ for (const perspective of perspectiveConfig) { } else if (perspective.searchMode && perspective.searchMode === 'faceted-search') { const { resultClasses, properties, facets, maps } = perspective const { paginatedResultsConfig, instanceConfig } = resultClasses[perspectiveID] + let extraResultClasses = {} let instancePageResultClasses = {} if (instanceConfig && instanceConfig.instancePageResultClasses) { instancePageResultClasses = instanceConfig.instancePageResultClasses + // handle nested resultClasses + for (const resultClass in instancePageResultClasses) { + if (instanceConfig.instancePageResultClasses[resultClass].resultClasses) { + extraResultClasses = { + ...extraResultClasses, + ...instanceConfig.instancePageResultClasses[resultClass].resultClasses + } + } + } } const resultsInitialStateFull = { ...resultsInitialState, @@ -86,7 +96,6 @@ for (const perspective of perspectiveConfig) { ...facetsInitialState, facets } - let extraResultClasses = {} for (const resultClass in resultClasses) { if (resultClasses[resultClass].resultClasses) { extraResultClasses = { @@ -97,7 +106,11 @@ for (const perspective of perspectiveConfig) { } const resultsReducer = createResultsReducer( resultsInitialStateFull, - new Set(Object.keys({ ...resultClasses, ...instancePageResultClasses, ...extraResultClasses }))) + new Set(Object.keys({ + ...resultClasses, + ...instancePageResultClasses, + ...extraResultClasses + }))) const facetsReducer = createFacetsReducer(facetsInitialStateFull, perspectiveID) const facetsConstrainSelfReducer = createFacetsConstrainSelfReducer(facetsInitialStateFull, perspectiveID) reducers[perspectiveID] = resultsReducer @@ -118,15 +131,31 @@ for (const perspective of perspectiveConfigOnlyInfoPages) { const perspectiveID = perspective.id const { resultClasses, properties } = perspective const { instanceConfig } = resultClasses[perspectiveID] + let extraResultClasses = {} let instancePageResultClasses = {} if (instanceConfig && instanceConfig.instancePageResultClasses) { instancePageResultClasses = instanceConfig.instancePageResultClasses + // handle nested resultClasses + for (const resultClass in instancePageResultClasses) { + if (instanceConfig.instancePageResultClasses[resultClass].resultClasses) { + extraResultClasses = { + ...extraResultClasses, + ...instanceConfig.instancePageResultClasses[resultClass].resultClasses + } + } + } } const resultsInitialStateFull = { ...resultsInitialState, properties } - const resultsReducer = createResultsReducer(resultsInitialStateFull, new Set(Object.keys({ ...resultClasses, ...instancePageResultClasses }))) + const resultsReducer = createResultsReducer( + resultsInitialStateFull, + new Set(Object.keys({ + ...resultClasses, + ...instancePageResultClasses, + ...extraResultClasses + }))) reducers[perspectiveID] = resultsReducer } diff --git a/src/server/sparql/Utils.js b/src/server/sparql/Utils.js index 203b93a5207391cd3c4cd8d65125fdbde47724b2..1258e9b88143e72e28893fde19cb6052f059d679 100644 --- a/src/server/sparql/Utils.js +++ b/src/server/sparql/Utils.js @@ -1,10 +1,10 @@ import { readFile } from 'fs/promises' import { has } from 'lodash' -// import { backendSearchConfig as oldBackendSearchConfig } from './veterans/BackendSearchConfig' +// import { backendSearchConfig as oldBackendSearchConfig } from './lettersampo/BackendSearchConfig' -// import { battlesPerspectiveConfig as oldPerspectiveConfig } from './sotasurmat/perspective_configs/BattlesPerspectiveConfig' -// import { INITIAL_STATE } from '../../client/reducers/sotasurmat/battlesFacets' +// import { placesConfig as oldPerspectiveConfig } from './lettersampo/perspective_configs/PlacesConfig' +// import { INITIAL_STATE } from '../../client/reducers/lettersampo/placesFacets' export const createBackendSearchConfig = async () => { const portalConfigJSON = await readFile('src/configs/portalConfig.json') @@ -24,6 +24,7 @@ export const createBackendSearchConfig = async () => { perspectiveConfig.endpoint.prefixes = prefixes } if (perspectiveConfig.searchMode === 'faceted-search') { + let extraResultClasses = {} // gather nested result classes here let hasInstancePageResultClasses = false // handle default resultClass which is same as perspectiveID const { paginatedResultsConfig, instanceConfig } = perspectiveConfig.resultClasses[perspectiveID] @@ -44,12 +45,20 @@ export const createBackendSearchConfig = async () => { for (const instancePageResultClass in instanceConfig.instancePageResultClasses) { const instancePageResultClassConfig = instanceConfig.instancePageResultClasses[instancePageResultClass] processResultClassConfig(instancePageResultClassConfig, sparqlQueries, resultMappers) + if (instancePageResultClassConfig.resultClasses) { + for (const extraResultClass in instancePageResultClassConfig.resultClasses) { + processResultClassConfig(instancePageResultClassConfig.resultClasses[extraResultClass], sparqlQueries, resultMappers) + } + extraResultClasses = { + ...extraResultClasses, + ...instancePageResultClassConfig.resultClasses + } + } } hasInstancePageResultClasses = true } } // handle other resultClasses - let extraResultClasses = {} for (const resultClass in perspectiveConfig.resultClasses) { if (resultClass === perspectiveID) { continue } const resultClassConfig = perspectiveConfig.resultClasses[resultClass] @@ -101,10 +110,24 @@ export const createBackendSearchConfig = async () => { instanceConfig.postprocess.func = resultMappers[instanceConfig.postprocess.func] } let hasInstancePageResultClasses = false + let extraResultClasses = {} // gather nested result classes here if (has(instanceConfig, 'instancePageResultClasses')) { for (const instancePageResultClass in instanceConfig.instancePageResultClasses) { const instancePageResultClassConfig = instanceConfig.instancePageResultClasses[instancePageResultClass] processResultClassConfig(instancePageResultClassConfig, sparqlQueries, resultMappers) + if (instancePageResultClassConfig.resultClasses) { + for (const extraResultClass in instancePageResultClassConfig.resultClasses) { + processResultClassConfig(instancePageResultClassConfig.resultClasses[extraResultClass], sparqlQueries, resultMappers) + } + extraResultClasses = { + ...extraResultClasses, + ...instancePageResultClassConfig.resultClasses + } + } + } + perspectiveConfig.resultClasses = { + ...perspectiveConfig.resultClasses, + ...extraResultClasses } hasInstancePageResultClasses = true }