mirror of
https://github.com/apache/superset.git
synced 2024-09-12 08:39:45 -04:00
Getting the SQL view back in a working state (#327)
This commit is contained in:
parent
74975a1606
commit
54fb76e680
@ -2,7 +2,8 @@ var $ = window.$ = require('jquery');
|
|||||||
var jQuery = window.jQuery = $;
|
var jQuery = window.jQuery = $;
|
||||||
var showModal = require('./modules/utils.js').showModal;
|
var showModal = require('./modules/utils.js').showModal;
|
||||||
|
|
||||||
require('select2');
|
require('./caravel-select2.js');
|
||||||
|
|
||||||
require('datatables.net-bs');
|
require('datatables.net-bs');
|
||||||
require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css');
|
require('../node_modules/datatables-bootstrap3-plugin/media/css/datatables-bootstrap3.css');
|
||||||
require('bootstrap');
|
require('bootstrap');
|
||||||
@ -11,12 +12,14 @@ var ace = require('brace');
|
|||||||
require('brace/mode/sql');
|
require('brace/mode/sql');
|
||||||
require('brace/theme/crimson_editor');
|
require('brace/theme/crimson_editor');
|
||||||
|
|
||||||
|
require('../stylesheets/sql.css');
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
function getParam(name) {
|
function getParam(name) {
|
||||||
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
||||||
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
||||||
results = regex.exec(location.search);
|
results = regex.exec(location.search);
|
||||||
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
function initSqlEditorView() {
|
function initSqlEditorView() {
|
||||||
@ -53,9 +56,9 @@ $(document).ready(function () {
|
|||||||
|
|
||||||
function selectStarOnClick() {
|
function selectStarOnClick() {
|
||||||
$.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
|
$.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
|
||||||
.done(function (msg) {
|
.done(function (msg) {
|
||||||
editor.setValue(msg);
|
editor.setValue(msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#select_star").click(selectStarOnClick);
|
$("#select_star").click(selectStarOnClick);
|
||||||
|
41
caravel/assets/stylesheets/sql.css
Normal file
41
caravel/assets/stylesheets/sql.css
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
.topsql {
|
||||||
|
height: 250px;
|
||||||
|
}
|
||||||
|
.dataTables_filter {
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
.bordered {
|
||||||
|
padding: 0px 0px;
|
||||||
|
border: 1px solid grey;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #EEE;
|
||||||
|
}
|
||||||
|
div.alert {
|
||||||
|
padding: 5px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.metadata {
|
||||||
|
overflow: auto;
|
||||||
|
width: 300px;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
.fillup {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.fillheight {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.interactions {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
#results {
|
||||||
|
overflow: auto;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
table tbody tr td {
|
||||||
|
padding: 1px 4px;
|
||||||
|
font-size: small;
|
||||||
|
}
|
@ -1,54 +1,5 @@
|
|||||||
{% extends "caravel/basic.html" %}
|
{% extends "caravel/basic.html" %}
|
||||||
|
|
||||||
{% block head_css %}
|
|
||||||
{{super()}}
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/assets/vendor/dataTables/jquery.dataTables.min.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="/static/assets/vendor/dataTables/dataTables.bootstrap.css" />
|
|
||||||
<style type="text/css">
|
|
||||||
.topsql {
|
|
||||||
height: 250px;
|
|
||||||
}
|
|
||||||
.dataTables_filter {
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
.bordered {
|
|
||||||
padding: 0px 0px;
|
|
||||||
border: 1px solid grey;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: #EEE;
|
|
||||||
}
|
|
||||||
div.alert {
|
|
||||||
padding: 5px;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.metadata {
|
|
||||||
overflow: auto;
|
|
||||||
width: 300px;
|
|
||||||
height: 100px;
|
|
||||||
}
|
|
||||||
.fillup {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.fillheight {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.interactions {
|
|
||||||
padding-bottom: 10px;
|
|
||||||
}
|
|
||||||
#results {
|
|
||||||
overflow: auto;
|
|
||||||
font-size: 12px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
table tbody tr td {
|
|
||||||
padding: 1px 4px;
|
|
||||||
font-size: small;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
@ -84,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="results_section">
|
<div id="results_section">
|
||||||
<hr/>
|
<hr/>
|
||||||
<img id="loading" width="25" style="display: none;" src="/static/img/loading.gif">
|
<img id="loading" width="25" style="display: none;" src="/static/assets/images/loading.gif">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div id="results" class="bordered" style="display: none;"></div>
|
<div id="results" class="bordered" style="display: none;"></div>
|
||||||
|
@ -719,14 +719,15 @@ class Caravel(BaseView):
|
|||||||
cols = mydb.get_columns(table_name)
|
cols = mydb.get_columns(table_name)
|
||||||
df = pd.DataFrame([(c['name'], c['type']) for c in cols])
|
df = pd.DataFrame([(c['name'], c['type']) for c in cols])
|
||||||
df.columns = ['col', 'type']
|
df.columns = ['col', 'type']
|
||||||
|
tbl_cls = (
|
||||||
|
"dataframe table table-striped table-bordered "
|
||||||
|
"table-condensed sql_results").split(' ')
|
||||||
return self.render_template(
|
return self.render_template(
|
||||||
"caravel/ajah.html",
|
"caravel/ajah.html",
|
||||||
content=df.to_html(
|
content=df.to_html(
|
||||||
index=False,
|
index=False,
|
||||||
na_rep='',
|
na_rep='',
|
||||||
classes=(
|
classes=tbl_cls))
|
||||||
"dataframe table table-striped table-bordered "
|
|
||||||
"table-condensed sql_results")))
|
|
||||||
|
|
||||||
@has_access
|
@has_access
|
||||||
@expose("/select_star/<database_id>/<table_name>/")
|
@expose("/select_star/<database_id>/<table_name>/")
|
||||||
@ -754,6 +755,11 @@ class Caravel(BaseView):
|
|||||||
sql = data.get('sql')
|
sql = data.get('sql')
|
||||||
database_id = data.get('database_id')
|
database_id = data.get('database_id')
|
||||||
mydb = session.query(models.Database).filter_by(id=database_id).first()
|
mydb = session.query(models.Database).filter_by(id=database_id).first()
|
||||||
|
|
||||||
|
if (
|
||||||
|
not self.appbuilder.sm.has_access(
|
||||||
|
'all_datasource_access', 'all_datasource_access')):
|
||||||
|
raise Exception("test")
|
||||||
content = ""
|
content = ""
|
||||||
if mydb:
|
if mydb:
|
||||||
eng = mydb.get_sqla_engine()
|
eng = mydb.get_sqla_engine()
|
||||||
@ -772,7 +778,7 @@ class Caravel(BaseView):
|
|||||||
na_rep='',
|
na_rep='',
|
||||||
classes=(
|
classes=(
|
||||||
"dataframe table table-striped table-bordered "
|
"dataframe table table-striped table-bordered "
|
||||||
"table-condensed sql_results"))
|
"table-condensed sql_results").split(' '))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
content = (
|
content = (
|
||||||
'<div class="alert alert-danger">'
|
'<div class="alert alert-danger">'
|
||||||
|
Loading…
Reference in New Issue
Block a user