in apps/televisit-demo/frontend/src/containers/transcriptions/AnalysisPane.js [151:244]
function ResultTable({
results,
category,
onResultDelete,
onResultAdd,
onSelectedConceptChange,
}) {
const filteredResults = useMemo(
() => results.filter((r) => r.Category === category),
[results, category]
);
const [inputValue, setInputValue] = useState('');
const handleInputChange = (event) => setInputValue(event.target.value);
const handleSubmit = (event) => {
event.preventDefault();
const input = inputValue.trim();
if (input !== '') {
onResultAdd(input, category);
setInputValue('');
}
};
const addEntityInputId = `add-${displayNames[category]}`;
const addIcon = (
<IconButton
aria-label="Add"
type="submit"
icon={<AddIcon />}
size="xs"
isRound
border="1px solid #545b64"
_hover={{ bg: '#545b64' }}
sx={{
'&:hover svg': {
color: '#fff',
},
}}
/>
);
return (
<Box
mb={4}
mx="3em"
_first={{ marginTop: '1em' }}
_last={{ marginBottom: '1em' }}
>
<Box
as="h1"
mb={4}
textAlign="left"
width="max-content"
fontWeight="bold"
fontSize="1.2rem"
className={highlightClasses[category]}
>
{displayNames[category]}
</Box>
<VStack spacing={2}>
<FormControl as="form" onSubmit={handleSubmit}>
<Flex width="100%" mb={4} alignItems="center">
<VisuallyHidden as="label" htmlFor={addEntityInputId}>
Add {displayNames[category]}
</VisuallyHidden>
<Input
id={addEntityInputId}
mr={2}
border="1px solid"
borderColor="grey"
borderRadius="0"
bg="white"
placeholder={`Add ${displayNames[category]}`}
value={inputValue}
onChange={handleInputChange}
/>
{addIcon}
</Flex>
</FormControl>
{filteredResults.map((r) => (
<ResultRow
result={r}
key={r.id}
onDeleteClick={() => onResultDelete(r)}
onSelectedConceptChange={onSelectedConceptChange}
/>
))}
</VStack>
</Box>
);
}