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; top: 18px;
} }
#sidebar span.current-database { #sidebar span.current-database,
#sidebar input.typeahead {
margin-left: 30px; margin-left: 30px;
display: inline-block; display: inline-block;
width: 200px; width: 200px;
@ -111,6 +112,33 @@
text-overflow: ellipsis; 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 { #sidebar div.tables-list {
position: absolute; position: absolute;
right: 0; right: 0;

View File

@ -14,6 +14,7 @@
<script type="text/javascript" src="static/js/ace-pgsql.js"></script> <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/bootstrap-contextmenu.js"></script>
<script type="text/javascript" src="static/js/utils.js"></script> <script type="text/javascript" src="static/js/utils.js"></script>
<script type="text/javascript" src="static/js/bootstrap3-typeahead.min.js"></script>
<script type="text/javascript" src="static/js/app.js"></script> <script type="text/javascript" src="static/js/app.js"></script>
</head> </head>
<body> <body>
@ -40,6 +41,7 @@
<div class="wrap"> <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> <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> <span class="refresh" id="refresh_tables" title="Refresh tables list"><i class="fa fa-refresh"></i></span>
</div> </div>
<div id="objects"></div> <div id="objects"></div>
@ -244,11 +246,10 @@
<li class="divider"></li> <li class="divider"></li>
<li><a href="#" data-action="truncate">Truncate Table</a></li> <li><a href="#" data-action="truncate">Truncate Table</a></li>
<li><a href="#" data-action="delete">Delete 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> </ul>
</div> </div>
<div id="databases_context_menu">
<ul class="dropdown-menu" role="menu"></ul>
</div>
<div id="current_database_context_menu"> <div id="current_database_context_menu">
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<li><a href="#" data-action="export">Export SQL dump</a></li> <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"); var win = window.open(url, "_blank");
win.focus(); win.focus();
break; break;
case "copy":
copyToClipboard(table.split('.')[1]);
break;
} }
} }
@ -847,19 +850,31 @@ function bindContextMenus() {
} }
}); });
}); });
}
$(".tables-list .title").contextmenu({ function toggleDatabaseSearch() {
target: "#databases_context_menu", $("#current_database").toggle();
onItem: function(context, e) { $("#database_search").toggle();
var name = $(e.target).text();
apiCall("post", "/switchdb", { db: name }, function(resp) {
if (resp.error) {
alert(resp.error);
return;
} }
window.location.reload();
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,12 +1071,22 @@ $(document).ready(function() {
$("#current_database").on("click", function(e) { $("#current_database").on("click", function(e) {
apiCall("get", "/databases", {}, function(resp) { apiCall("get", "/databases", {}, function(resp) {
$("#databases_context_menu > ul > li").remove(); toggleDatabaseSearch();
resp.forEach(function(name) { enableDatabaseSearch(resp);
$("<li><a href='#'>" + name + "</a></li>").appendTo("#databases_context_menu > ul");
}); });
$(".tables-list .title").triggerHandler("contextmenu");
}); });
$("#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() { $("#edit_connection").on("click", function() {

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

File diff suppressed because one or more lines are too long