Merge branch 'master' into issue#282

This commit is contained in:
ldinc 2017-10-14 14:34:32 +03:00
commit 33be6b036d
5 changed files with 113 additions and 35 deletions

File diff suppressed because one or more lines are too long

View File

@ -101,7 +101,8 @@
top: 18px;
}
#sidebar span.current-database {
#sidebar span.current-database,
#sidebar input.typeahead {
margin-left: 30px;
display: inline-block;
width: 200px;
@ -111,6 +112,33 @@
text-overflow: ellipsis;
}
#sidebar input.typeahead {
display: none;
background: #79589f;
width: 200px;
height: 22px;
color: #fff;
font-weight: normal;
outline: none;
border: 0px none;
}
#sidebar input.typeahead::-webkit-input-placeholder {
color: #d6cce2;
}
#sidebar ul.typeahead {
margin-left: 30px;
overflow-y: auto;
max-height: 300px;
z-index: 999;
}
#sidebar ul.typeahead a {
font-size: 13px;
padding: 3px 10px;
}
#sidebar div.tables-list {
position: absolute;
right: 0;
@ -677,4 +705,4 @@
.ace_active-line {
background: none !important;
}
}

View File

@ -14,7 +14,8 @@
<script type="text/javascript" src="static/js/ace-pgsql.js"></script>
<script type="text/javascript" src="static/js/bootstrap-contextmenu.js"></script>
<script type="text/javascript" src="static/js/utils.js"></script>
<script type="text/javascript" src="static/js/app.js"></script>
<script type="text/javascript" src="static/js/bootstrap3-typeahead.min.js"></script>
<script type="text/javascript" src="static/js/app.js"></script>
</head>
<body>
<div id="main">
@ -38,8 +39,9 @@
<div id="sidebar">
<div class="tables-list">
<div class="wrap">
<div class="title main">
<div class="title main">
<i class="fa fa-database"></i> <span class="current-database" id="current_database"></span>
<input class="typeahead current_database" id="database_search" type="text" placeholder="Search database">
<span class="refresh" id="refresh_tables" title="Refresh tables list"><i class="fa fa-refresh"></i></span>
</div>
<div id="objects"></div>
@ -190,7 +192,7 @@
<div class="connection-ssh-group">
<hr/>
<div class="form-group">
<label class="col-sm-3 control-label">SSH Host</label>
<div class="col-sm-7">
@ -200,7 +202,7 @@
<input type="text" id="ssh_port" class="form-control" placeholder="22" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">SSH User</label>
<div class="col-sm-9">
@ -244,11 +246,10 @@
<li class="divider"></li>
<li><a href="#" data-action="truncate">Truncate Table</a></li>
<li><a href="#" data-action="delete">Delete Table</a></li>
<li class="divider"></li>
<li><a href="#" data-action="copy">Copy Table Name</a></li>
</ul>
</div>
<div id="databases_context_menu">
<ul class="dropdown-menu" role="menu"></ul>
</div>
<div id="current_database_context_menu">
<ul class="dropdown-menu" role="menu">
<li><a href="#" data-action="export">Export SQL dump</a></li>

View File

@ -224,6 +224,9 @@ function performTableAction(table, action, el) {
var win = window.open(url, "_blank");
win.focus();
break;
case "copy":
copyToClipboard(table.split('.')[1]);
break;
}
}
@ -313,7 +316,7 @@ function setCurrentTab(id) {
if (id != "table_content") {
$("#body").removeClass("with-pagination");
}
$("#nav ul li.selected").removeClass("selected");
$("#" + id).addClass("selected");
@ -490,7 +493,7 @@ function showTableStructure() {
}
setCurrentTab("table_structure");
$("#input").hide();
$("#body").prop("class", "full");
@ -847,19 +850,31 @@ function bindContextMenus() {
}
});
});
}
$(".tables-list .title").contextmenu({
target: "#databases_context_menu",
onItem: function(context, e) {
var name = $(e.target).text();
apiCall("post", "/switchdb", { db: name }, function(resp) {
if (resp.error) {
alert(resp.error);
return;
}
window.location.reload();
});
}
function toggleDatabaseSearch() {
$("#current_database").toggle();
$("#database_search").toggle();
}
function enableDatabaseSearch(data) {
var input = $("#database_search");
input.typeahead("destroy");
input.typeahead({
source: data,
minLength: 0,
items: "all",
autoSelect: false,
fitToElement: true
});
input.typeahead("lookup").focus();
input.on("focusout", function(e){
toggleDatabaseSearch();
input.off("focusout");
});
}
@ -1056,13 +1071,23 @@ $(document).ready(function() {
$("#current_database").on("click", function(e) {
apiCall("get", "/databases", {}, function(resp) {
$("#databases_context_menu > ul > li").remove();
resp.forEach(function(name) {
$("<li><a href='#'>" + name + "</a></li>").appendTo("#databases_context_menu > ul");
});
$(".tables-list .title").triggerHandler("contextmenu");
toggleDatabaseSearch();
enableDatabaseSearch(resp);
});
});
$("#database_search").change(function(e) {
var current = $("#database_search").typeahead("getActive");
if (current && current == $("#database_search").val()) {
apiCall("post", "/switchdb", { db: current }, function(resp) {
if (resp.error) {
alert(resp.error);
return;
};
window.location.reload();
});
};
});
$("#edit_connection").on("click", function() {
if (connected) {
@ -1143,7 +1168,7 @@ $(document).ready(function() {
$("#pg_password").val(item.password);
$("#pg_db").val(item.database);
$("#connection_ssl").val(item.ssl);
if (item.ssh && Object.keys(item.ssh).length > 0) {
$("#ssh_host").val(item.ssh.host);
$("#ssh_port").val(item.ssh.port);

1
static/js/bootstrap3-typeahead.min.js vendored Normal file

File diff suppressed because one or more lines are too long