|
@@ -398,7 +398,17 @@ ${ layout.menubar(section='query') }
|
|
|
|
|
|
|
|
<div class="tab-pane" id="queryBuilderTab">
|
|
<div class="tab-pane" id="queryBuilderTab">
|
|
|
<form onsubmit="generateQuery(); return false;">
|
|
<form onsubmit="generateQuery(); return false;">
|
|
|
- <table id="queryBuilder"></table>
|
|
|
|
|
|
|
+ <div id="queryBuilderAlert" style="display: none" class="alert">${ _('There are currently no rules defined. To get started, right click on any table column in the SQL Assist panel.') }</div>
|
|
|
|
|
+ <table id="queryBuilder" class="table table-condensed">
|
|
|
|
|
+ <thead>
|
|
|
|
|
+ <tr>
|
|
|
|
|
+ <th width="10%">${ _('Table') }</th>
|
|
|
|
|
+ <th>${ _('Column') }</th>
|
|
|
|
|
+ <th width="10%">${ _('Operation') }</th>
|
|
|
|
|
+ <th width="1%"> </th>
|
|
|
|
|
+ </tr>
|
|
|
|
|
+ </thead>
|
|
|
|
|
+ </table>
|
|
|
<div class="button-panel">
|
|
<div class="button-panel">
|
|
|
<button class="btn btn-primary disable-feedback">${_('Build query')}</button>
|
|
<button class="btn btn-primary disable-feedback">${_('Build query')}</button>
|
|
|
</div>
|
|
</div>
|
|
@@ -773,7 +783,7 @@ ${ layout.menubar(section='query') }
|
|
|
<p>${_('Query requires a select or an aggregate.')}</p>
|
|
<p>${_('Query requires a select or an aggregate.')}</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="modal-footer">
|
|
<div class="modal-footer">
|
|
|
- <a class="btn" data-dismiss="modal">${_('Ok')}</a>
|
|
|
|
|
|
|
+ <a class="btn" data-dismiss="modal">${_('Close')}</a>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -809,19 +819,33 @@ ${ commonshare() | n,unicode }
|
|
|
<script>
|
|
<script>
|
|
|
// query-builder-menu is the class to use
|
|
// query-builder-menu is the class to use
|
|
|
// Callback will run after each rule add, just focus to the queryBuilder tab
|
|
// Callback will run after each rule add, just focus to the queryBuilder tab
|
|
|
- QueryBuilder.bindMenu('.query-builder-menu', function() {
|
|
|
|
|
|
|
+ QueryBuilder.bindMenu('.query-builder-menu', function () {
|
|
|
$("a[href='#queryBuilderTab']").click();
|
|
$("a[href='#queryBuilderTab']").click();
|
|
|
});
|
|
});
|
|
|
function generateQuery() {
|
|
function generateQuery() {
|
|
|
- var result = QueryBuilder.buildHiveQuery();
|
|
|
|
|
- if (result.status == "fail") {
|
|
|
|
|
- $("#invalidQueryBuilder").modal("show");
|
|
|
|
|
- } else {
|
|
|
|
|
- codeMirror.setValue(result.query);
|
|
|
|
|
- codeMirror.focus();
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ var result = QueryBuilder.buildHiveQuery();
|
|
|
|
|
+ if (result.status == "fail") {
|
|
|
|
|
+ $("#invalidQueryBuilder").modal("show");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ replaceAce(result.query);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ window.setInterval(function(){
|
|
|
|
|
+ if ($('#queryBuilder tbody').length > 0 && $('#queryBuilder tbody').find('tr').length > 0){
|
|
|
|
|
+ $('.button-panel').show();
|
|
|
|
|
+ $('#queryBuilder').show();
|
|
|
|
|
+ $('#queryBuilderAlert').hide();
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ $('.button-panel').hide();
|
|
|
|
|
+ $('#queryBuilder').hide();
|
|
|
|
|
+ $('#queryBuilderAlert').show();
|
|
|
|
|
+ }
|
|
|
|
|
+ }, 500);
|
|
|
|
|
+
|
|
|
</script>
|
|
</script>
|
|
|
|
|
+
|
|
|
<!-- End query builder imports -->
|
|
<!-- End query builder imports -->
|
|
|
|
|
|
|
|
<script src="${ static('desktop/ext/js/codemirror-3.11.js') }"></script>
|
|
<script src="${ static('desktop/ext/js/codemirror-3.11.js') }"></script>
|