import * as q from '../../../../../backend/src/Model' import ActionButtons from './ActionButtons' import Copy from '../../helper/Copy' import DateFormatter from '../../helper/DateFormatter' import MessageHistory from './MessageHistory' import Panel from '../Panel' import React, { useCallback } from 'react' import ValueRenderer from './ValueRenderer' import { AppState } from '../../../reducers' import { Base64Message } from '../../../../../backend/src/Model/Base64Message' import { bindActionCreators } from 'redux' import { Theme, Typography, withStyles } from '@material-ui/core' import { connect } from 'react-redux' import { sidebarActions } from '../../../actions' import DeleteSelectedTopicButton from './DeleteSelectedTopicButton' interface Props { node?: q.TreeNode sidebarActions: typeof sidebarActions classes: any lastUpdate: number compareMessage?: q.Message } function RenderedValue(props: { node?: q.TreeNode; compareMessage?: q.Message }) { const { node, compareMessage } = props if (!node || !node.message) { return null } return } function ValuePanel(props: Props) { const { node, compareMessage } = props function renderViewOptions() { if (!props.node || !props.node.message || !props.node.mqttMessage) { return null } return (
{props.node.mqttMessage.retain ? : null} {messageMetaInfo()}
) } function messageMetaInfo() { if (!props.node || !props.node.message || !props.node.mqttMessage) { return null } return ( QoS: {props.node.mqttMessage.qos} ) } const handleMessageHistorySelect = useCallback( (message: q.Message) => { if (message !== compareMessage) { props.sidebarActions.setCompareMessage(message) } else { props.sidebarActions.setCompareMessage(undefined) } }, [compareMessage] ) const copyValue = node && node.message && node.message.value ? ( ) : null return ( Value {copyValue} {renderViewOptions()}
Loading...
}>
) } const mapDispatchToProps = (dispatch: any) => { return { sidebarActions: bindActionCreators(sidebarActions, dispatch), } } const mapStateToProps = (state: AppState) => { return { node: state.tree.get('selectedTopic'), compareMessage: state.sidebar.get('compareMessage'), } } const styles = (theme: Theme) => ({ heading: { fontSize: theme.typography.pxToRem(15), fontWeight: theme.typography.fontWeightRegular, }, }) export default connect( mapStateToProps, mapDispatchToProps )(withStyles(styles)(ValuePanel))