Filtering databases on databases listing, Issue #12047
This commit is contained in:
Michal Čihař 2016-03-03 13:14:45 +01:00
commit b7332a27cf
4 changed files with 57 additions and 1 deletions

View File

@ -14,6 +14,7 @@
AJAX.registerTeardown('server_databases.js', function () {
$(document).off('submit', "#dbStatsForm");
$(document).off('submit', '#create_database_form.ajax');
$('#filterText').unbind('keyup');
});
/**
@ -130,4 +131,56 @@ AJAX.registerOnload('server_databases.js', function () {
}
}); // end $.post()
}); // end $(document).on()
/* Don't show filter if number of databases are very few */
var databasesCount = $('#databases_count').html();
if(databasesCount <= 10) {
$('#tableFilter').hide();
}
var $filterField = $('#filterText');
/* Event handler for database filter */
$filterField.keyup(function (){
var textFilter = null, val = $(this).val();
if(val.length != 0) {
try {
textFilter = new RegExp(val.replace(/_/g, ' '), 'i');
$(this).removeClass('error');
} catch(e) {
if (e instanceof SyntaxError) {
$(this).addClass('error');
textFilter = null;
}
}
}
filterVariables(textFilter);
});
/* Trigger filtering of the list based on incoming database name */
if ($filterField.val()) {
$filterField.trigger('keyup').select();
}
/* Filters the rows by the user given regexp */
function filterVariables(textFilter) {
var $row, odd_row = false, databasesCount = 0;
$('#tabledatabases').find('.db-row').each(function () {
$row = $(this);
if (textFilter === null ||
textFilter.exec($row.find('.name').text())
) {
odd_row = ! odd_row;
$row.css('display', '');
databasesCount += 1;
if (odd_row) {
$row.addClass('odd').removeClass('even');
} else {
$row.addClass('even').removeClass('odd');
}
} else {
$row.css('display', 'none');
}
$('#databases_count').html(databasesCount);
});
}
}); // end $()

View File

@ -98,6 +98,8 @@ class ServerDatabasesController extends Controller
$html .= Template::get('server/databases/create')->render();
}
$html .= Template::get('filter')->render(array('filterValue'=>''));
/**
* Gets the databases list
*/
@ -432,6 +434,7 @@ class ServerDatabasesController extends Controller
foreach ($this->_databases as $current) {
$tr_class = $odd_row ? 'odd' : 'even';
$tr_class .= ' db-row';
if ($this->dbi->isSystemSchema($current['SCHEMA_NAME'], true)) {
$tr_class .= ' noclick';
}

View File

@ -272,7 +272,7 @@ class ServerVariablesController extends Controller
{
// filter
$filterValue = ! empty($_REQUEST['filter']) ? $_REQUEST['filter'] : '';
$output = Template::get('server/variables/variable_filter')
$output = Template::get('filter')
->render(array('filterValue' => $filterValue));
$output .= '<table id="serverVariables" class="data filteredData noclick">';