mirror of
https://github.com/apache/superset.git
synced 2024-09-12 00:29:39 -04:00
fix: database schema selector on import data (#21759)
This commit is contained in:
parent
20b9dc8444
commit
91f0de0c5d
@ -16,49 +16,10 @@
|
|||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
#}
|
#}
|
||||||
|
{% import 'superset/form_view/database_schemas_selector.html' as schemas_selector %}
|
||||||
{% extends 'appbuilder/general/model/edit.html' %}
|
{% extends 'appbuilder/general/model/edit.html' %}
|
||||||
|
|
||||||
{% block tail_js %}
|
{% block tail_js %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<script>
|
{{ schemas_selector }}
|
||||||
var db = $("#con");
|
|
||||||
var schema = $("#schema");
|
|
||||||
|
|
||||||
// this element is a text input
|
|
||||||
// copy it here so it can be reused later
|
|
||||||
var any_schema_is_allowed = schema.clone();
|
|
||||||
|
|
||||||
update_schemas_allowed_for_columnar_upload(db.val());
|
|
||||||
db.change(function(){
|
|
||||||
update_schemas_allowed_for_columnar_upload(db.val());
|
|
||||||
});
|
|
||||||
|
|
||||||
function update_schemas_allowed_for_columnar_upload(db_id) {
|
|
||||||
$.ajax({
|
|
||||||
method: "GET",
|
|
||||||
url: "/superset/schemas_access_for_file_upload",
|
|
||||||
data: {db_id: db_id},
|
|
||||||
dataType: 'json',
|
|
||||||
contentType: "application/json; charset=utf-8"
|
|
||||||
}).done(function(data) {
|
|
||||||
change_schema_field_in_formview(data)
|
|
||||||
}).fail(function(error) {
|
|
||||||
var errorMsg = error.responseJSON.error;
|
|
||||||
alert("ERROR: " + errorMsg);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function change_schema_field_in_formview(schemas_allowed){
|
|
||||||
if (schemas_allowed && schemas_allowed.length > 0) {
|
|
||||||
var dropdown_schema_lists = '<select id="schema" name="schema" required>';
|
|
||||||
schemas_allowed.forEach(function(schema_allowed) {
|
|
||||||
dropdown_schema_lists += ('<option value="' + schema_allowed + '">' + schema_allowed + '</option>');
|
|
||||||
});
|
|
||||||
dropdown_schema_lists += '</select>';
|
|
||||||
$("#schema").replaceWith(dropdown_schema_lists);
|
|
||||||
} else {
|
|
||||||
$("#schema").replaceWith(any_schema_is_allowed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -16,49 +16,10 @@
|
|||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
#}
|
#}
|
||||||
|
{% import 'superset/form_view/database_schemas_selector.html' as schemas_selector %}
|
||||||
{% extends 'appbuilder/general/model/edit.html' %}
|
{% extends 'appbuilder/general/model/edit.html' %}
|
||||||
|
|
||||||
{% block tail_js %}
|
{% block tail_js %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<script>
|
{{ schemas_selector }}
|
||||||
var db = $("#con");
|
|
||||||
var schema = $("#schema");
|
|
||||||
|
|
||||||
// this element is a text input
|
|
||||||
// copy it here so it can be reused later
|
|
||||||
var any_schema_is_allowed = schema.clone();
|
|
||||||
|
|
||||||
update_schemas_allowed_for_csv_upload(db.val());
|
|
||||||
db.change(function(){
|
|
||||||
update_schemas_allowed_for_csv_upload(db.val());
|
|
||||||
});
|
|
||||||
|
|
||||||
function update_schemas_allowed_for_csv_upload(db_id) {
|
|
||||||
$.ajax({
|
|
||||||
method: "GET",
|
|
||||||
url: "/superset/schemas_access_for_file_upload",
|
|
||||||
data: {db_id: db_id},
|
|
||||||
dataType: 'json',
|
|
||||||
contentType: "application/json; charset=utf-8"
|
|
||||||
}).done(function(data) {
|
|
||||||
change_schema_field_in_formview(data)
|
|
||||||
}).fail(function(error) {
|
|
||||||
var errorMsg = error.responseJSON.error;
|
|
||||||
alert("ERROR: " + errorMsg);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function change_schema_field_in_formview(schemas_allowed){
|
|
||||||
if (schemas_allowed && schemas_allowed.length > 0) {
|
|
||||||
var dropdown_schema_lists = '<select id="schema" name="schema" required>';
|
|
||||||
schemas_allowed.forEach(function(schema_allowed) {
|
|
||||||
dropdown_schema_lists += ('<option value="' + schema_allowed + '">' + schema_allowed + '</option>');
|
|
||||||
});
|
|
||||||
dropdown_schema_lists += '</select>';
|
|
||||||
$("#schema").replaceWith(dropdown_schema_lists);
|
|
||||||
} else {
|
|
||||||
$("#schema").replaceWith(any_schema_is_allowed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
{#
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
#}
|
||||||
|
<script>
|
||||||
|
var db = $("#con");
|
||||||
|
var schema = $("#schema");
|
||||||
|
|
||||||
|
// this element is a text input
|
||||||
|
// copy it here so it can be reused later
|
||||||
|
var any_schema_is_allowed = schema.clone();
|
||||||
|
|
||||||
|
update_schemas_allowed_for_csv_upload(db.val());
|
||||||
|
db.change(function () {
|
||||||
|
update_schemas_allowed_for_csv_upload(db.val());
|
||||||
|
});
|
||||||
|
|
||||||
|
function update_schemas_allowed_for_csv_upload(db_id) {
|
||||||
|
$.ajax({
|
||||||
|
method: "GET",
|
||||||
|
url: "/superset/schemas_access_for_file_upload",
|
||||||
|
data: {db_id: db_id},
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: "application/json; charset=utf-8"
|
||||||
|
}).done(function (data) {
|
||||||
|
change_schema_field_in_formview(data)
|
||||||
|
}).fail(function (error) {
|
||||||
|
var errorMsg = error.responseJSON.error;
|
||||||
|
alert("ERROR: " + errorMsg);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function escape(htmlStr) {
|
||||||
|
return htmlStr.replace(/&/g, "&")
|
||||||
|
.replace(/</g, "<")
|
||||||
|
.replace(/>/g, ">")
|
||||||
|
.replace(/"/g, """)
|
||||||
|
.replace(/'/g, "'");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function change_schema_field_in_formview(schemas_allowed) {
|
||||||
|
if (schemas_allowed && schemas_allowed.length > 0) {
|
||||||
|
var dropdown_schema_lists = '<select id="schema" name="schema" required>';
|
||||||
|
schemas_allowed.forEach(function (schema_allowed) {
|
||||||
|
dropdown_schema_lists += (
|
||||||
|
`<option value="${escape(schema_allowed)}">${escape(schema_allowed)}</option>`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
dropdown_schema_lists += '</select>';
|
||||||
|
$("#schema").replaceWith(dropdown_schema_lists);
|
||||||
|
} else {
|
||||||
|
$("#schema").replaceWith(any_schema_is_allowed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -16,49 +16,10 @@
|
|||||||
specific language governing permissions and limitations
|
specific language governing permissions and limitations
|
||||||
under the License.
|
under the License.
|
||||||
#}
|
#}
|
||||||
|
{% import 'superset/form_view/database_schemas_selector.html' as schemas_selector %}
|
||||||
{% extends 'appbuilder/general/model/edit.html' %}
|
{% extends 'appbuilder/general/model/edit.html' %}
|
||||||
|
|
||||||
{% block tail_js %}
|
{% block tail_js %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<script>
|
{{ schemas_selector }}
|
||||||
var db = $("#con");
|
|
||||||
var schema = $("#schema");
|
|
||||||
|
|
||||||
// this element is a text input
|
|
||||||
// copy it here so it can be reused later
|
|
||||||
var any_schema_is_allowed = schema.clone();
|
|
||||||
|
|
||||||
update_schemas_allowed_for_excel_upload(db.val());
|
|
||||||
db.change(function(){
|
|
||||||
update_schemas_allowed_for_excel_upload(db.val());
|
|
||||||
});
|
|
||||||
|
|
||||||
function update_schemas_allowed_for_excel_upload(db_id) {
|
|
||||||
$.ajax({
|
|
||||||
method: "GET",
|
|
||||||
url: "/superset/schemas_access_for_file_upload",
|
|
||||||
data: {db_id: db_id},
|
|
||||||
dataType: 'json',
|
|
||||||
contentType: "application/json; charset=utf-8"
|
|
||||||
}).done(function(data) {
|
|
||||||
change_schema_field_in_formview(data)
|
|
||||||
}).fail(function(error) {
|
|
||||||
var errorMsg = error.responseJSON.error;
|
|
||||||
alert("ERROR: " + errorMsg);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function change_schema_field_in_formview(schemas_allowed){
|
|
||||||
if (schemas_allowed && schemas_allowed.length > 0) {
|
|
||||||
var dropdown_schema_lists = '<select id="schema" name="schema" required>';
|
|
||||||
schemas_allowed.forEach(function(schema_allowed) {
|
|
||||||
dropdown_schema_lists += ('<option value="' + schema_allowed + '">' + schema_allowed + '</option>');
|
|
||||||
});
|
|
||||||
dropdown_schema_lists += '</select>';
|
|
||||||
$("#schema").replaceWith(dropdown_schema_lists);
|
|
||||||
} else {
|
|
||||||
$("#schema").replaceWith(any_schema_is_allowed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
Reference in New Issue
Block a user