Add database object filter to the sidebar

This commit is contained in:
Dan Sosedoff
2019-07-05 16:18:29 -05:00
parent 819b13fe55
commit 416cae3101
4 changed files with 120 additions and 14 deletions

View File

@@ -130,7 +130,7 @@ function buildSchemaSection(name, objects) {
if (objects[group]) {
objects[group].forEach(function(item) {
var id = name + "." + item;
section += "<li class='schema-" + group + "' data-type='" + group + "' data-id='" + id + "'>" + icons[group] + "&nbsp;" + item + "</li>";
section += "<li class='schema-item schema-" + group + "' data-type='" + group + "' data-id='" + id + "' data-name='" + item + "'>" + icons[group] + "&nbsp;" + item + "</li>";
});
section += "</ul></div>";
}
@@ -951,6 +951,51 @@ function bindCurrentDatabaseMenu() {
});
}
function bindDatabaseObjectsFilter() {
var filterTimeout = null;
$("#filter_database_objects").on("keyup", function (e) {
clearTimeout(filterTimeout);
var val = $(this).val().trim();
// Reset search on ESC
if (e.keyCode == 27 || val == "") {
resetObjectsFilter();
return;
}
$(".clear-objects-filter").show();
filterTimeout = setTimeout(function () {
filterObjectsByName(val)
}, 200);
});
$(".clear-objects-filter").on("click", function(e) {
resetObjectsFilter();
});
}
function resetObjectsFilter() {
$("#filter_database_objects").val("");
$("#objects li.schema-item").show();
$(".clear-objects-filter").hide();
}
function filterObjectsByName(query) {
$("#objects li.schema-item").each(function (idx, el) {
var item = $(el);
var name = $(el).data("name");
if (name.indexOf(query) < 0) {
item.hide();
} else {
item.show();
}
});
}
function getQuotedSchemaTableName(table) {
if (typeof table === "string" && table.indexOf(".") > -1) {
var schemaTableComponents = table.split(".");
@@ -1410,4 +1455,6 @@ $(document).ready(function() {
}
}
});
bindDatabaseObjectsFilter();
});