wikimedica-disease-search/app/src/components/DiseaseGraph.js

38 lines
957 B
JavaScript
Raw Normal View History

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;