From 368083fa0e2818b68dee30c760afdd584d3a0790 Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Fri, 30 Aug 2019 14:09:26 +0300
Subject: [PATCH] Facet config: add optional facet label filter

---
 src/server/sparql/FacetValues.js          | 6 ++++++
 src/server/sparql/SparqlQueriesGeneral.js | 5 ++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/server/sparql/FacetValues.js b/src/server/sparql/FacetValues.js
index 51ac3625..397ec05e 100644
--- a/src/server/sparql/FacetValues.js
+++ b/src/server/sparql/FacetValues.js
@@ -1,4 +1,5 @@
 import { runSelectQuery } from './SparqlApi';
+import { has } from 'lodash';
 import {
   endpoint,
   facetValuesQuery,
@@ -94,6 +95,11 @@ export const getFacet = async ({
   q = q.replace('<SELECTED_VALUES>', selectedBlock);
   q = q.replace('<SELECTED_VALUES_NO_HITS>', selectedNoHitsBlock);
   q = q.replace(/<FACET_VALUE_FILTER>/g, facetConfig.facetValueFilter);
+  q = q.replace(/<FACET_LABEL_FILTER>/g,
+    has(facetConfig.facetLabelFilter)
+      ? facetConfig.facetLabelFilter
+      : ''
+  );
   q = q.replace('<PARENTS>', parentBlock);
   if (facetConfig.type === 'list') {
     q = q.replace('<ORDER_BY>', `ORDER BY ${sortDirection}(?${sortBy})` );
diff --git a/src/server/sparql/SparqlQueriesGeneral.js b/src/server/sparql/SparqlQueriesGeneral.js
index fa5d53ce..abac4493 100644
--- a/src/server/sparql/SparqlQueriesGeneral.js
+++ b/src/server/sparql/SparqlQueriesGeneral.js
@@ -80,7 +80,10 @@ export const facetValuesQuery = `
       FILTER(BOUND(?id))
       <FACET_VALUE_FILTER>
       OPTIONAL { ?id gvp:broaderPreferred ?parent_ }
-      OPTIONAL { ?id skos:prefLabel|rdfs:label ?prefLabel_ }
+      OPTIONAL {
+        ?id skos:prefLabel|rdfs:label ?prefLabel_
+        <FACET_LABEL_FILTER>
+      }
       BIND(COALESCE(?parent_, '0') as ?parent)
       BIND(COALESCE(STR(?prefLabel_), STR(?id)) AS ?prefLabel)
     }
-- 
GitLab