38 lines
957 B
JavaScript
38 lines
957 B
JavaScript
|
import React from 'react';
|
||
|
import Graph from './Graph.js';
|
||
|
import {types} from '../data/mock.js';
|
||
|
import {useAsync} from '../util.js';
|
||
|
import {symptomsSubgraph} from '../fetch.js';
|
||
|
|
||
|
const DiseaseGraph = ({terms, results}) =>
|
||
|
{
|
||
|
const {nodes, edges} = useAsync({
|
||
|
nodes: {},
|
||
|
edges: []
|
||
|
}, symptomsSubgraph, results);
|
||
|
|
||
|
const render = id =>
|
||
|
{
|
||
|
const isTerm = terms.some(({id: termId}) => termId === id);
|
||
|
const isDisease = nodes[id].types.includes(types.disease);
|
||
|
|
||
|
return (
|
||
|
<span className={[
|
||
|
'SearchResults_result',
|
||
|
isTerm ? 'SearchResults_result-term' : '',
|
||
|
isDisease ? 'SearchResults_result-disease' : '',
|
||
|
].join(' ')}>{nodes[id].name}</span>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<Graph
|
||
|
nodes={Object.keys(nodes)}
|
||
|
edges={edges}
|
||
|
render={render}
|
||
|
/>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default DiseaseGraph;
|