import React, {Component} from 'react'; import PropTypes from 'prop-types'; import { StyleSheet, css } from 'aphrodite/no-important'; import CanHistogram from './CanHistogram'; import CanGraph from './CanGraph'; import NearestFrame from './NearestFrame'; import CanLog from './CanLog'; export default class Explorer extends Component { static propTypes = { selectedMessage: PropTypes.string, url: PropTypes.string, messages: PropTypes.objectOf(PropTypes.object) }; constructor(props) { super(props); this.state = { plottedSignals: [], segment: [] } this.onSignalPlotPressed = this.onSignalPlotPressed.bind(this); this.onSignalUnplotPressed = this.onSignalUnplotPressed.bind(this); this.onSegmentChanged = this.onSegmentChanged.bind(this); } graphData(msg, signalName) { if(!msg) return null; return msg.entries.map((entry) => { return {x: entry.time, y: entry.signals[signalName], unit: msg.signalSpecs[signalName].unit} }); } onSignalPlotPressed(messageId, name) { const {plottedSignals} = this.state; this.setState({plottedSignals: plottedSignals.concat([{messageId, name}])}) } onSignalUnplotPressed(messageId, name) { const {plottedSignals} = this.state; const newPlottedSignals = plottedSignals.filter((signal) => !(signal.messageId == messageId && signal.name == name)); this.setState({plottedSignals: newPlottedSignals}) } onSegmentChanged(segment) { if(Array.isArray(segment)) { this.setState({segment}) } } render() { return (