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 f93b31a1417228e6500387f41c52a4772bcf767d..49126e6dae0a6b96367f8a0672a53dac2ece9422 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 768d6a328524613f1cd85c3ecc5b1bfe43728bbe..0ef368590354e53c14f7ba27aeca40a4835643c9 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 369786ec7712eee0757cf71f442a36e7232ee7f1..70ff35ebb51d8bef3ed211e9102776e0d33128e0 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 91f966f18d389770900298142ce603d1069c7b55..93f1837d567ec9047bd00119fa13d6cdbef24b88 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 9bf7623ac984db27727baa6b2b56f44d394a2017..0eaaa7af1b0d3276f8defbaf38937fb359ff37ac 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 317a4fcd1a182eb5513bddaa06d5549e69b3e64a..4f0905425b6a20c94f0e9c280ef7caa0f5591def 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 4db8330e75a865fd49e0a8292e0ef30ea300fde8..a539a392561f70627c928fb204c122c8cd295dc1 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 9190c4553066da1bbef5ad3b911dd7d14c2a2964..07cc14ac66c3718420d8ecc289230bb544b4bc81 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 16b9f08ffd92fee78f453536ab4a76f950972e81..b197343d6398bd7e2353d5b0e5d22662b7c4b440 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