import * as q from '../../../../../backend/src/Model' import * as React from 'react' import ShowChart from '@mui/icons-material/ShowChart' import TopicPlot from '../../TopicPlot' import { bindActionCreators } from 'redux' import { chartActions } from '../../../actions' import { connect } from 'react-redux' import { Fade, Paper, Popper, Tooltip } from '@mui/material' import { JsonPropertyLocation } from '../../../../../backend/src/JsonAstParser' interface Props { treeNode: q.TreeNode classes: any literal: JsonPropertyLocation actions: { chart: typeof chartActions } } function ChartPreview(props: Props) { const chartIconRef = React.useRef(null) const [open, setOpen] = React.useState(false) const onClick = React.useCallback(() => { props.actions.chart.addChart({ topic: props.treeNode.path(), dotPath: props.literal.path !== '' ? props.literal.path : undefined, }) setOpen(false) }, [props.literal.path, props.treeNode]) const mouseOver = React.useCallback(() => { setOpen(true) }, []) const mouseOut = React.useCallback(() => { setOpen(false) }, []) const hasEnoughDataToDisplayDiagrams = props.treeNode.messageHistory.count() > 1 const addChartToPanelButton = hasEnoughDataToDisplayDiagrams ? ( ) : ( ) return (
{addChartToPanelButton} {open ? ( ) : ( )}
) } const mapDispatchToProps = (dispatch: any) => { return { actions: { chart: bindActionCreators(chartActions, dispatch), }, } } export default connect(undefined, mapDispatchToProps)(ChartPreview)