import React from 'react'; import PropTypes from 'prop-types'; import { Alert, Button, ButtonGroup, ProgressBar } from 'react-bootstrap'; import shortid from 'shortid'; import VisualizeModal from './VisualizeModal'; import HighlightedSql from './HighlightedSql'; import FilterableTable from '../../components/FilterableTable/FilterableTable'; const propTypes = { actions: PropTypes.object, csv: PropTypes.bool, query: PropTypes.object, search: PropTypes.bool, showSql: PropTypes.bool, visualize: PropTypes.bool, cache: PropTypes.bool, height: PropTypes.number.isRequired, }; const defaultProps = { search: true, visualize: true, showSql: false, csv: true, actions: {}, cache: false, }; const RESULT_SET_CONTROLS_HEIGHT = 46; export default class ResultSet extends React.PureComponent { constructor(props) { super(props); this.state = { searchText: '', showModal: false, data: [], height: props.search ? props.height - RESULT_SET_CONTROLS_HEIGHT : props.height, }; } componentWillReceiveProps(nextProps) { // when new results comes in, save them locally and clear in store if (this.props.cache && (!nextProps.query.cached) && nextProps.query.results && nextProps.query.results.data.length > 0) { this.setState( { data: nextProps.query.results.data }, this.clearQueryResults(nextProps.query), ); } if (nextProps.query.resultsKey && nextProps.query.resultsKey !== this.props.query.resultsKey) { this.fetchResults(nextProps.query); } } getControls() { if (this.props.search || this.props.visualize || this.props.csv) { let csvButton; if (this.props.csv) { csvButton = ( ); } let visualizeButton; if (this.props.visualize) { visualizeButton = ( ); } let searchBox; if (this.props.search) { searchBox = ( ); } return (
{progressBar}