app: Ouverture de la ressource au clic

This commit is contained in:
Mattéo Delabre 2019-12-04 21:06:19 -05:00
parent 9734bb401f
commit 27fd1ce027
Signed by: matteo
GPG Key ID: AE3FBD02DC583ABB
2 changed files with 26 additions and 11 deletions

View File

@ -27,15 +27,24 @@ const DiseaseGraph = ({terms, setTerms, results}) =>
*/ */
const render = id => const render = id =>
{ {
const term = nodes[id];
const isTerm = terms.some(({id: termId}) => termId === id); const isTerm = terms.some(({id: termId}) => termId === id);
const isDisease = nodes[id].types.includes(termTypes.disease); const isDisease = nodes[id].types.includes(termTypes.disease);
return ( return (
<span className={[ <span
'SearchResults_result', className={[
isTerm ? 'SearchResults_result-term' : '', 'SearchResults_result',
isDisease ? 'SearchResults_result-disease' : '', isTerm ? 'SearchResults_result-term' : '',
].join(' ')}>{nodes[id].name}</span> isDisease ? 'SearchResults_result-disease' : '',
].join(' ')}
title={
`Cliquez pour plus dinformations sur « ${term.name} »\n`
+ '(Ctrl-clic pour lajouter à la requête)'
}
>
{nodes[id].name}
</span>
); );
}; };
@ -43,17 +52,23 @@ const DiseaseGraph = ({terms, setTerms, results}) =>
* Gère le clic sur un nœud du graphe. * Gère le clic sur un nœud du graphe.
* *
* @param id Identifiant du nœud cliqué. * @param id Identifiant du nœud cliqué.
* @param ev Événement DOM décrivant le clic.
*/ */
const handleNodeClick = id => const handleNodeClick = (id, ev) =>
{ {
const result = results.find(({id: termId}) => termId === id); const result = results.find(({id: termId}) => termId === id);
const termIndex = terms.findIndex(({id: termId}) => termId === id); const termIndex = terms.findIndex(({id: termId}) => termId === id);
if (result !== undefined) if (result !== undefined)
{ {
if (termIndex >= 0) if (!ev.ctrlKey)
{ {
// Retrait dun terme déjà dans la requête // Clic normal : Ouverture de la ressource
window.open(result.url, '_blank');
}
else if (termIndex >= 0)
{
// Ctrl-clic : Retrait dun terme déjà dans la requête
setTerms([ setTerms([
...terms.slice(0, termIndex), ...terms.slice(0, termIndex),
...terms.slice(termIndex + 1) ...terms.slice(termIndex + 1)
@ -61,7 +76,7 @@ const DiseaseGraph = ({terms, setTerms, results}) =>
} }
else else
{ {
// Ajout dun nouveau terme dans la requête // Ctrl-clic : Ajout dun nouveau terme dans la requête
setTerms(terms.concat([result])); setTerms(terms.concat([result]));
} }
} }

View File

@ -268,13 +268,13 @@ const Graph = ({
} }
}; };
const mouseUp = () => const mouseUp = ev =>
{ {
if (dragElement !== null) if (dragElement !== null)
{ {
if (dragClick) if (dragClick)
{ {
onNodeClick(dragNode); onNodeClick(dragNode, ev);
} }
dragNode = -1; dragNode = -1;