diff --git a/caravel/assets/javascripts/SqlLab/TODO.md b/caravel/assets/javascripts/SqlLab/TODO.md
index 8a83c57c463..b8af8bab43e 100644
--- a/caravel/assets/javascripts/SqlLab/TODO.md
+++ b/caravel/assets/javascripts/SqlLab/TODO.md
@@ -1,22 +1,14 @@
-# Design
-* Query Log, search, filter on active tab only
-* Where to make the limit clear?
# TODO
+* Figure out how to organize the left panel, integrate Search
* collapse sql beyond 10 lines
-* add [Visualize] icon to modal
-* Security per-database
-* Overwrite workspace query
-* Async
-* Refactor timer in to its own thing
-
+* Security per-database (dropdown)
+* Get a to work
## Cosmetic
-* use icons for datatypes
* SqlEditor buttons
* use react-bootstrap-prompt for query title input
-* make input:text more self-evident
-* Tab cosmetic in theme
+* Make tabs look great
# PROJECT
* Write Runbook
diff --git a/caravel/assets/javascripts/SqlLab/actions.js b/caravel/assets/javascripts/SqlLab/actions.js
index a2361368d11..0c2d3b9f131 100644
--- a/caravel/assets/javascripts/SqlLab/actions.js
+++ b/caravel/assets/javascripts/SqlLab/actions.js
@@ -20,6 +20,8 @@ export const SET_WORKSPACE_DB = 'SET_WORKSPACE_DB';
export const ADD_WORKSPACE_QUERY = 'ADD_WORKSPACE_QUERY';
export const REMOVE_WORKSPACE_QUERY = 'REMOVE_WORKSPACE_QUERY';
export const SET_ACTIVE_QUERY_EDITOR = 'SET_ACTIVE_QUERY_EDITOR';
+export const ADD_ALERT = 'ADD_ALERT';
+export const REMOVE_ALERT = 'REMOVE_ALERT';
export function resetState() {
return { type: RESET_STATE };
@@ -29,6 +31,14 @@ export function addQueryEditor(queryEditor) {
return { type: ADD_QUERY_EDITOR, queryEditor };
}
+export function addAlert(alert) {
+ return { type: ADD_ALERT, alert };
+}
+
+export function removeAlert(alert) {
+ return { type: REMOVE_ALERT, alert };
+}
+
export function setActiveQueryEditor(queryEditor) {
return { type: SET_ACTIVE_QUERY_EDITOR, queryEditor };
}
diff --git a/caravel/assets/javascripts/SqlLab/components/Alerts.jsx b/caravel/assets/javascripts/SqlLab/components/Alerts.jsx
new file mode 100644
index 00000000000..6ba16f5e393
--- /dev/null
+++ b/caravel/assets/javascripts/SqlLab/components/Alerts.jsx
@@ -0,0 +1,40 @@
+import React from 'react';
+import { Alert } from 'react-bootstrap';
+import { connect } from 'react-redux';
+import { bindActionCreators } from 'redux';
+import * as Actions from '../actions';
+
+class Alerts extends React.Component {
+ removeAlert(alert) {
+ this.props.actions.removeAlert(alert);
+ }
+ render() {
+ const alerts = this.props.alerts.map((alert) =>
+