2021-05-23 03:03:41 +00:00
|
|
|
import React, { useCallback, useContext } from "react"
|
2021-05-20 09:39:40 +00:00
|
|
|
import BoxWordcloud from "../base/BoxWordcloud"
|
2021-05-20 13:34:05 +00:00
|
|
|
import BoxFull from "../base/BoxFull"
|
|
|
|
import Empty from "./Empty"
|
2021-05-21 14:37:30 +00:00
|
|
|
import ContextRepositoryViewer from "../../contexts/ContextRepositoryViewer"
|
2021-05-23 03:03:41 +00:00
|
|
|
import { FilterContains } from "../../objects/Filter"
|
2021-05-24 12:13:24 +00:00
|
|
|
import useStrings from "../../hooks/useStrings"
|
2021-05-20 09:39:40 +00:00
|
|
|
|
|
|
|
|
2021-05-21 14:37:30 +00:00
|
|
|
export default function BoxVisualizationWordcloud({ ...props }) {
|
2021-05-24 12:13:24 +00:00
|
|
|
const strings = useStrings()
|
2021-05-21 17:52:56 +00:00
|
|
|
const { words, appendFilter } = useContext(ContextRepositoryViewer)
|
2021-05-20 09:39:40 +00:00
|
|
|
|
2021-05-20 13:34:05 +00:00
|
|
|
if(words.length === 0) {
|
|
|
|
return (
|
|
|
|
<BoxFull header={strings.wordcloud} {...props}>
|
|
|
|
<Empty/>
|
|
|
|
</BoxFull>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2021-05-23 03:03:41 +00:00
|
|
|
const onWordClick = useCallback(
|
|
|
|
word => {
|
|
|
|
appendFilter(new FilterContains(word.text))
|
|
|
|
},
|
2021-05-23 14:20:53 +00:00
|
|
|
[appendFilter],
|
2021-05-23 03:03:41 +00:00
|
|
|
)
|
2021-05-21 15:35:33 +00:00
|
|
|
|
2021-05-20 09:39:40 +00:00
|
|
|
return (
|
2021-05-21 15:35:33 +00:00
|
|
|
<BoxWordcloud
|
|
|
|
header={strings.wordcloud}
|
|
|
|
words={words}
|
2021-05-21 17:52:56 +00:00
|
|
|
callbacks={{ onWordClick }}
|
2021-05-21 15:35:33 +00:00
|
|
|
{...props}
|
|
|
|
/>
|
2021-05-20 09:39:40 +00:00
|
|
|
)
|
|
|
|
}
|