From 0ce6ee322d75235cf12c2ed719d4c8028aba85cc Mon Sep 17 00:00:00 2001 From: esikkala <esko.ikkala@aalto.fi> Date: Thu, 16 Dec 2021 09:18:06 +0200 Subject: [PATCH] JSON configs for instancePageResultClasses --- .../only_instance_pages/actors.json | 17 ++++++- .../only_instance_pages/collections.json | 17 ++++++- .../only_instance_pages/events.json | 17 ++++++- .../only_instance_pages/expressions.json | 17 ++++++- .../only_instance_pages/manuscripts.json | 47 +++++++++++++------ .../only_instance_pages/places.json | 17 ++++++- .../only_instance_pages/works.json | 17 ++++++- src/client/helpers/helpers.js | 19 ++++++-- src/server/sparql/Utils.js | 21 ++++++++- 9 files changed, 162 insertions(+), 27 deletions(-) diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/actors.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/actors.json index f93b31a1..49126e6d 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/actors.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/actors.json @@ -11,7 +11,22 @@ "resultClasses": { "actors": { "instanceConfig": { - "propertiesQueryBlock": "actorProperties" + "propertiesQueryBlock": "actorProperties", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/collections.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/collections.json index 768d6a32..0ef36859 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/collections.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/collections.json @@ -11,7 +11,22 @@ "resultClasses": { "collections": { "instanceConfig": { - "propertiesQueryBlock": "eventProperties" + "propertiesQueryBlock": "collectionProperties", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/events.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/events.json index 369786ec..70ff35eb 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/events.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/events.json @@ -11,7 +11,22 @@ "resultClasses": { "events": { "instanceConfig": { - "propertiesQueryBlock": "eventProperties" + "propertiesQueryBlock": "eventProperties", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/expressions.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/expressions.json index 91f966f1..93f1837d 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/expressions.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/expressions.json @@ -11,7 +11,22 @@ "resultClasses": { "expressions": { "instanceConfig": { - "propertiesQueryBlock": "expressionProperties" + "propertiesQueryBlock": "expressionProperties", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/manuscripts.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/manuscripts.json index 9bf7623a..0eaaa7af 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/manuscripts.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/manuscripts.json @@ -1,7 +1,7 @@ { "id": "manuscripts", "endpoint": { - "url": "http://ldf.fi/mmm/sparql", + "url": "https://ldf.fi/mmm/sparql", "useAuth": false, "prefixesFile": "SparqlQueriesPrefixes.js" }, @@ -11,22 +11,39 @@ "resultClasses": { "manuscripts": { "instanceConfig": { - "propertiesQueryBlock": "manuscriptPropertiesInstancePage" - } + "propertiesQueryBlock": "manuscriptPropertiesInstancePage", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "manuscriptInstancePageNetwork": { + "tabID": 1, + "component": "Network", + "tabPath": "network", + "tabIcon": "BubbleChart", + "pageType": "instancePage", + "sparqlQuery": "manuscriptInstancePageNetworkLinksQuery", + "sparqlQueryNodes": "manuscriptNetworkNodesQuery", + "useNetworkAPI": true, + "limit": 200, + "optimize": 1.2, + "style": "cytoscapeStyle", + "layout": "coseLayout" + }, + "instancePageExport": { + "tabID": 2, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } + } } }, - "instancePageTabs": [ - { - "id": "table", - "value": 0, - "icon": "CalendarViewDay" - }, - { - "id": "export", - "value": 1, - "icon": "CloudDownload" - } - ], "properties": [ { "id": "uri", diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/places.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/places.json index 317a4fcd..4f090542 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/places.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/places.json @@ -11,7 +11,22 @@ "resultClasses": { "places": { "instanceConfig": { - "propertiesQueryBlock": "placePropertiesInstancePage" + "propertiesQueryBlock": "placePropertiesInstancePage", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/configs/sampo/perspective_configs/only_instance_pages/works.json b/src/client/configs/sampo/perspective_configs/only_instance_pages/works.json index 4db8330e..a539a392 100644 --- a/src/client/configs/sampo/perspective_configs/only_instance_pages/works.json +++ b/src/client/configs/sampo/perspective_configs/only_instance_pages/works.json @@ -11,7 +11,22 @@ "resultClasses": { "works": { "instanceConfig": { - "propertiesQueryBlock": "workProperties" + "propertiesQueryBlock": "workProperties", + "instancePageResultClasses": { + "instancePageTable": { + "tabID": 0, + "component": "InstancePageTable", + "tabPath": "table", + "tabIcon": "CalendarViewDay" + }, + "instancePageExport": { + "tabID": 1, + "component": "Export", + "tabPath": "export", + "tabIcon": "CloudDownload", + "pageType": "instancePage" + } + } } } }, diff --git a/src/client/helpers/helpers.js b/src/client/helpers/helpers.js index 9190c455..07cc14ac 100644 --- a/src/client/helpers/helpers.js +++ b/src/client/helpers/helpers.js @@ -166,7 +166,9 @@ export const generateLabelForMissingValue = ({ facetClass, facetID }) => { export const getLocalIDFromAppLocation = ({ location, perspectiveConfig }) => { const locationArr = location.pathname.split('/') let localID = locationArr.pop() - if (localID === perspectiveConfig.defaultInstancePageTab) { + const defaultTab = perspectiveConfig.defaultTab || 'table' + const defaultInstancePageTab = perspectiveConfig.defaultInstancePageTab || 'table' + if (localID === defaultTab || localID === defaultInstancePageTab) { localID = locationArr.pop() // pop again if tab id } perspectiveConfig.instancePageTabs.forEach(tab => { @@ -250,11 +252,20 @@ export const createPerspectiveConfigOnlyInfoPages = async ({ portalID, onlyInsta perspectiveConfigOnlyInfoPages.push(perspective) } for (const perspective of perspectiveConfigOnlyInfoPages) { - if (has(perspective, 'instancePageTabs')) { - for (const tab of perspective.instancePageTabs) { - tab.icon = <MuiIcon iconName={tab.icon} /> + const instancePageTabs = [] + const defaultResultClassConfig = perspective.resultClasses[perspective.id] + if (has(defaultResultClassConfig.instanceConfig, 'instancePageResultClasses')) { + for (const instancePageResultClassID in defaultResultClassConfig.instanceConfig.instancePageResultClasses) { + const instancePageResultClassConfig = defaultResultClassConfig.instanceConfig.instancePageResultClasses[instancePageResultClassID] + const { tabID, tabPath, tabIcon } = instancePageResultClassConfig + instancePageTabs.push({ + id: tabPath, + value: tabID, + icon: <MuiIcon iconName={tabIcon} /> + }) } } + perspective.instancePageTabs = sortBy(instancePageTabs, 'value') } return perspectiveConfigOnlyInfoPages } diff --git a/src/server/sparql/Utils.js b/src/server/sparql/Utils.js index 16b9f08f..b197343d 100644 --- a/src/server/sparql/Utils.js +++ b/src/server/sparql/Utils.js @@ -86,8 +86,6 @@ export const createBackendSearchConfig = async () => { } backendSearchConfig[perspectiveID] = perspectiveConfig } - // console.log(backendSearchConfig.perspective1.resultClasses.placesMsMigrations.postprocess.func) - // console.log(backendSearchConfig.perspective1.resultClasses.placesMsMigrations.resultMapper) for (const perspectiveID of portalConfig.perspectives.onlyInstancePages) { const perspectiveConfigJSON = await readFile(`src/client/configs/${portalID}/perspective_configs/only_instance_pages/${perspectiveID}.json`) const perspectiveConfig = JSON.parse(perspectiveConfigJSON) @@ -97,6 +95,25 @@ export const createBackendSearchConfig = async () => { const instancePagePropertiesQueryBlockID = instanceConfig.propertiesQueryBlock const instancePagePropertiesQueryBlock = sparqlQueries[instancePagePropertiesQueryBlockID] instanceConfig.propertiesQueryBlock = instancePagePropertiesQueryBlock + let hasInstancePageResultClasses = false + if (has(instanceConfig, 'instancePageResultClasses')) { + for (const instancePageResultClass in instanceConfig.instancePageResultClasses) { + const instancePageResultClassConfig = instanceConfig.instancePageResultClasses[instancePageResultClass] + if (instancePageResultClassConfig.sparqlQuery) { + instancePageResultClassConfig.sparqlQuery = sparqlQueries[instancePageResultClassConfig.sparqlQuery] + } + if (instancePageResultClassConfig.sparqlQueryNodes) { + instancePageResultClassConfig.sparqlQueryNodes = sparqlQueries[instancePageResultClassConfig.sparqlQueryNodes] + } + } + hasInstancePageResultClasses = true + } + if (hasInstancePageResultClasses) { + perspectiveConfig.resultClasses = { + ...perspectiveConfig.resultClasses, + ...perspectiveConfig.resultClasses[perspectiveID].instanceConfig.instancePageResultClasses + } + } const { prefixesFile } = perspectiveConfig.endpoint const { prefixes } = await import(`../sparql/${portalID}/sparql_queries/${prefixesFile}`) perspectiveConfig.endpoint.prefixes = prefixes -- GitLab