mirror of
https://github.com/apache/superset.git
synced 2024-09-19 20:19:37 -04:00
98 lines
2.8 KiB
JavaScript
98 lines
2.8 KiB
JavaScript
var $ = window.$ = require('jquery');
|
|
var jQuery = window.jQuery = $;
|
|
require('select2');
|
|
require('datatables');
|
|
require('bootstrap');
|
|
|
|
var ace = require('brace');
|
|
require('brace/mode/sql');
|
|
require('brace/theme/crimson_editor');
|
|
|
|
$(document).ready(function () {
|
|
function getParam(name) {
|
|
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
|
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
|
|
results = regex.exec(location.search);
|
|
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
|
}
|
|
|
|
function initSqlEditorView() {
|
|
var database_id = $('#database_id').val();
|
|
var editor = ace.edit("sql");
|
|
editor.$blockScrolling = Infinity;
|
|
editor.getSession().setUseWrapMode(true);
|
|
|
|
$('#sql').hide();
|
|
editor.setTheme("ace/theme/crimson_editor");
|
|
editor.setOptions({
|
|
minLines: 16,
|
|
maxLines: Infinity
|
|
});
|
|
editor.getSession().setMode("ace/mode/sql");
|
|
editor.focus();
|
|
$("select").select2({
|
|
dropdownAutoWidth: true
|
|
});
|
|
|
|
function showTableMetadata() {
|
|
$(".metadata").load(
|
|
'/dashed/table/' + database_id + '/' + $("#dbtable").val() + '/');
|
|
}
|
|
$("#dbtable").on("change", showTableMetadata);
|
|
showTableMetadata();
|
|
$("#create_view").click(function () {
|
|
alert("Not implemented");
|
|
});
|
|
$(".sqlcontent").show();
|
|
|
|
function selectStarOnClick() {
|
|
$.ajax('/dashed/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
|
|
.done(function (msg) {
|
|
editor.setValue(msg);
|
|
});
|
|
}
|
|
|
|
$("#select_star").click(selectStarOnClick);
|
|
|
|
editor.setValue(getParam('sql'));
|
|
$(window).bind("popstate", function (event) {
|
|
// Could do something more lightweight here, but we're not optimizing
|
|
// for the use of the back button anyways
|
|
editor.setValue(getParam('sql'));
|
|
$("#run").click();
|
|
});
|
|
$("#run").click(function () {
|
|
$('#results').hide(0);
|
|
$('#loading').show(0);
|
|
history.pushState({}, document.title, '?sql=' + encodeURIComponent(editor.getValue()));
|
|
$.ajax({
|
|
type: "POST",
|
|
url: '/dashed/runsql/',
|
|
data: {
|
|
data: JSON.stringify({
|
|
database_id: $('#database_id').val(),
|
|
sql: editor.getSession().getValue()
|
|
})
|
|
},
|
|
success: function (data) {
|
|
$('#loading').hide(0);
|
|
$('#results').show(0);
|
|
$('#results').html(data);
|
|
|
|
$('table.sql_results').DataTable({
|
|
paging: false,
|
|
searching: true,
|
|
aaSorting: []
|
|
});
|
|
},
|
|
error: function (err, err2) {
|
|
$('#loading').hide(0);
|
|
$('#results').show(0);
|
|
$('#results').html(err.responseText);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
initSqlEditorView();
|
|
});
|