Skip to content

Commit

Permalink
Merge pull request #1156 from assemblee-virtuelle/fix-GroupedReferenc…
Browse files Browse the repository at this point in the history
…eHandler

Fix: GroupedReferenceHandler hooks don't work
  • Loading branch information
simonLouvet authored Sep 26, 2023
2 parents db87021 + c25bb24 commit 8cd5be3
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 41 deletions.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/frontend/packages/semantic-data-provider/dist/index.es.js

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import DataFactory from '@rdfjs/data-model';
import { Generator as SparqlGenerator } from 'sparqljs';
import buildBaseQuery from './buildBaseQuery';
import buildBlankNodesQuery from './buildBlankNodesQuery';
import resolvePrefix from './resolvePrefix';

const SparqlGenerator = require('sparqljs').Generator;

const { literal, namedNode, triple, variable } = DataFactory;

const generator = new SparqlGenerator({
Expand All @@ -20,23 +21,23 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
template: baseQuery.construct,
where: [],
type: 'query',
prefixes: Object.fromEntries(ontologies.map(ontology => [ontology.prefix, ontology.url]))
prefixes: Object.fromEntries(ontologies.map((ontology) => [ontology.prefix, ontology.url])),
};

const containerWhere = [
{
type: 'values',
values: containers.map(containerUri => ({ '?containerUri': namedNode(containerUri) }))
values: containers.map((containerUri) => ({ '?containerUri': namedNode(containerUri) })),
},
triple(variable('containerUri'), namedNode('http://www.w3.org/ns/ldp#contains'), variable('s1')),
{
type: 'filter',
expression: {
type: 'operation',
operator: 'isiri',
args: [variable('s1')]
}
}
args: [variable('s1')],
},
},
];

let resourceWhere = [];
Expand All @@ -46,7 +47,7 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
const hasFullTextSearch = filter.q && filter.q.length > 0;

if (hasSPARQLFilter) {
/*
/*
Example of usage :
{
"sparqlWhere": {
Expand All @@ -60,7 +61,7 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
}
*/
// initialize array in case of single value :
[].concat(filter.sparqlWhere).forEach(sw => {
[].concat(filter.sparqlWhere).forEach((sw) => {
resourceWhere.push(sw);
});
}
Expand All @@ -79,8 +80,8 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
expression: {
type: 'operation',
operator: 'isliteral',
args: [variable('o1')]
}
args: [variable('o1')],
},
},
{
type: 'filter',
Expand All @@ -95,18 +96,18 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
{
type: 'operation',
operator: 'str',
args: [variable('o1')]
}
]
args: [variable('o1')],
},
],
},
literal(filter.q.toLowerCase(), '', namedNode('http://www.w3.org/2001/XMLSchema#string'))
]
}
}
literal(filter.q.toLowerCase(), '', namedNode('http://www.w3.org/2001/XMLSchema#string')),
],
},
},
],
type: 'query'
}
]
type: 'query',
},
],
});
}

Expand All @@ -119,8 +120,8 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
triple(
variable('s1'),
namedNode(resolvePrefix(predicate, ontologies)),
namedNode(resolvePrefix(object, ontologies))
)
namedNode(resolvePrefix(object, ontologies)),
),
);
}
});
Expand All @@ -143,9 +144,9 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
{
type: 'graph',
name: namedNode('http://semapps.org/mirror'),
patterns: containerWhere
}
]
patterns: containerWhere,
},
],
},
{
type: 'union',
Expand All @@ -154,10 +155,10 @@ const buildSparqlQuery = ({ containers, params: { filter }, blankNodes, predicat
{
type: 'graph',
name: namedNode('http://semapps.org/mirror'),
patterns: resourceWhere
}
]
}
patterns: resourceWhere,
},
],
},
);

return generator.stringify(sparqlJsParams);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { useGetList } from 'react-admin';
import { useGetList, useRecordContext } from 'react-admin';
import { default as FilterHandler } from './FilterHandler';

/*
Expand Down Expand Up @@ -71,10 +71,8 @@ const GroupedReferenceHandler = ({
filterProperty,
...otherProps
}) => {
const { data } = useGetList({
resource: groupReference,
payload: {}
});
const record = useRecordContext();
const { data } = useGetList(groupReference);

return (
<>
Expand All @@ -84,7 +82,7 @@ const GroupedReferenceHandler = ({
return (
<>
{groupHeader && groupHeader({ ...otherProps, group: data })}
<FilterHandler {...otherProps} filter={filter} label={data[groupLabel]}>
<FilterHandler {...otherProps} record={record} filter={filter} label={data[groupLabel]}>
{children}
</FilterHandler>
</>
Expand Down

0 comments on commit 8cd5be3

Please sign in to comment.