diff --git a/caravel/assets/javascripts/SqlLab/components/DatabaseSelect.jsx b/caravel/assets/javascripts/SqlLab/components/DatabaseSelect.jsx index 0835e40b8..d692925cc 100644 --- a/caravel/assets/javascripts/SqlLab/components/DatabaseSelect.jsx +++ b/caravel/assets/javascripts/SqlLab/components/DatabaseSelect.jsx @@ -11,15 +11,12 @@ class DatabaseSelect extends React.Component { this.state = { databaseLoading: false, databaseOptions: [], - databaseId: null, }; } componentDidMount() { this.fetchDatabaseOptions(); } changeDb(db) { - const val = (db) ? db.value : null; - this.setState({ databaseId: val }); this.props.onChange(db); } fetchDatabaseOptions() { @@ -38,7 +35,7 @@ class DatabaseSelect extends React.Component { name="select-db" placeholder={`Select a database (${this.state.databaseOptions.length})`} options={this.state.databaseOptions} - value={this.state.databaseId} + value={this.props.databaseId} isLoading={this.state.databaseLoading} autosize={false} onChange={this.changeDb.bind(this)} @@ -51,6 +48,12 @@ class DatabaseSelect extends React.Component { DatabaseSelect.propTypes = { onChange: React.PropTypes.func, actions: React.PropTypes.object, + databaseId: React.PropTypes.number, +}; + +DatabaseSelect.defaultProps = { + onChange: () => {}, + databaseId: null, }; function mapDispatchToProps(dispatch) { diff --git a/caravel/assets/javascripts/SqlLab/components/QuerySearch.jsx b/caravel/assets/javascripts/SqlLab/components/QuerySearch.jsx index 7f5908d08..3e5bb91d6 100644 --- a/caravel/assets/javascripts/SqlLab/components/QuerySearch.jsx +++ b/caravel/assets/javascripts/SqlLab/components/QuerySearch.jsx @@ -24,6 +24,12 @@ class QuerySearch extends React.Component { this.fetchUsers(); this.refreshQueries(); } + onUserClicked(userId) { + this.setState({ userId }, () => { this.refreshQueries(); }); + } + onDbClicked(dbId) { + this.setState({ databaseId: dbId }, () => { this.refreshQueries(); }); + } onChange(db) { const val = (db) ? db.value : null; this.setState({ databaseId: val }); @@ -74,9 +80,6 @@ class QuerySearch extends React.Component { } }); } - search() { - this.refreshQueries(this.props); - } render() { return (
@@ -93,7 +96,10 @@ class QuerySearch extends React.Component { />
- +
- diff --git a/caravel/assets/javascripts/SqlLab/components/QueryTable.jsx b/caravel/assets/javascripts/SqlLab/components/QueryTable.jsx index 0dbe38398..644c330f3 100644 --- a/caravel/assets/javascripts/SqlLab/components/QueryTable.jsx +++ b/caravel/assets/javascripts/SqlLab/components/QueryTable.jsx @@ -12,16 +12,24 @@ import VisualizeModal from './VisualizeModal'; import SqlShrink from './SqlShrink'; import { STATE_BSSTYLE_MAP } from '../common'; import { fDuration } from '../../modules/dates'; +import { getLink } from '../../../utils/common'; 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']; + return getLink(this.state.cleanUri, params); + } hideVisualizeModal() { this.setState({ showVisualizeModal: false }); } @@ -42,10 +50,26 @@ class QueryTable extends React.Component { if (q.endDttm) { q.duration = fDuration(q.startDttm, q.endDttm); } + q.userId = ( + + ); + q.dbId = ( + + ); q.started = moment(q.startDttm).format('HH:mm:ss'); const source = (q.ctas) ? q.executedSql : q.sql; q.sql = ( - + ); q.output = q.tempTable; q.progress = ( @@ -98,7 +122,16 @@ class QueryTable extends React.Component { /> ); - + q.querylink = ( +
+ + Open in SQL Editor + +
+ ); return q; }).reverse(); return ( @@ -121,10 +154,14 @@ QueryTable.propTypes = { columns: React.PropTypes.array, actions: React.PropTypes.object, queries: React.PropTypes.array, + onUserClicked: React.PropTypes.func, + onDbClicked: React.PropTypes.func, }; QueryTable.defaultProps = { columns: ['started', 'duration', 'rows'], queries: [], + onUserClicked: () => {}, + onDbClicked: () => {}, }; function mapStateToProps() { diff --git a/caravel/assets/javascripts/SqlLab/components/SqlEditorTopToolbar.jsx b/caravel/assets/javascripts/SqlLab/components/SqlEditorTopToolbar.jsx index c6653ca03..e81bc2469 100644 --- a/caravel/assets/javascripts/SqlLab/components/SqlEditorTopToolbar.jsx +++ b/caravel/assets/javascripts/SqlLab/components/SqlEditorTopToolbar.jsx @@ -114,7 +114,10 @@ class SqlEditorTopToolbar extends React.Component {
{networkAlert}
- +