import React from 'react'; import moment from 'moment'; import { Table } from 'reactable'; import { Label, ProgressBar } from 'react-bootstrap'; import Link from './Link'; import VisualizeModal from './VisualizeModal'; import ResultSet from './ResultSet'; import ModalTrigger from '../../components/ModalTrigger'; import HighlightedSql from './HighlightedSql'; import { STATE_BSSTYLE_MAP } from '../common'; import { fDuration } from '../../modules/dates'; import { getLink } from '../../../utils/common'; const propTypes = { columns: React.PropTypes.array, actions: React.PropTypes.object, queries: React.PropTypes.array, onUserClicked: React.PropTypes.func, onDbClicked: React.PropTypes.func, }; const defaultProps = { columns: ['started', 'duration', 'rows'], queries: [], onUserClicked: () => {}, onDbClicked: () => {}, }; class QueryTable extends React.Component { constructor(props) { super(props); const uri = window.location.toString(); const cleanUri = uri.substring(0, uri.indexOf('#')); this.state = { cleanUri, showVisualizeModal: false, activeQuery: null, }; } getQueryLink(dbId, sql) { const params = ['dbid=' + dbId, 'sql=' + sql, 'title=Untitled Query']; const link = getLink(this.state.cleanUri, params); return encodeURI(link); } hideVisualizeModal() { this.setState({ showVisualizeModal: false }); } showVisualizeModal(query) { this.setState({ showVisualizeModal: true }); this.setState({ activeQuery: query }); } restoreSql(query) { this.props.actions.queryEditorSetSql({ id: query.sqlEditorId }, query.sql); } openQueryInNewTab(query) { this.props.actions.cloneQueryToNewTab(query); } openAsyncResults(query) { this.props.actions.fetchQueryResults(query); } clearQueryResults(query) { this.props.actions.clearQueryResults(query); } removeQuery(query) { this.props.actions.removeQuery(query); } render() { const data = this.props.queries.map((query) => { const q = Object.assign({}, query); if (q.endDttm) { q.duration = fDuration(q.startDttm, q.endDttm); } q.user = ( ); q.db = ( ); q.started = moment(q.startDttm).format('HH:mm:ss'); q.sql = ( ); if (q.resultsKey) { q.output = ( view results )} modalTitle={'Data preview'} beforeOpen={this.openAsyncResults.bind(this, query)} onExit={this.clearQueryResults.bind(this, query)} modalBody={} /> ); } else { q.output = q.tempTable; } q.progress = ( ); let errorTooltip; if (q.errorMessage) { errorTooltip = ( ); } q.state = (
{q.state} {errorTooltip}
); q.actions = (
); q.querylink = ( ); return q; }).reverse(); return (
); } } QueryTable.propTypes = propTypes; QueryTable.defaultProps = defaultProps; export default QueryTable;