Add a simple search functionality to the catalog
Requires commit 20ce699
which adds a wrapper for the controls on the
catalog page.
This commit is contained in:
parent
20ce6999d2
commit
32821745c6
45
js/catalog-search.js
Normal file
45
js/catalog-search.js
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* catalog-search.js
|
||||
* https://github.com/mgrabovsky/lainchan/lainchan/blob/catalog-search/js/catalog-search.js
|
||||
*
|
||||
* Released under the MIT license
|
||||
* Copyright (c) 2015 Matěj Grabovský <matej.grabovsky@gmail.com>
|
||||
*
|
||||
* Usage:
|
||||
* $config['additional_javascript'][] = 'js/jquery.min.js';
|
||||
* $config['additional_javascript'][] = 'js/catalog-search.js';
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
var catalogSearch = function() {
|
||||
var $controls = $('.controls'),
|
||||
$threads = $('.threads .thread'),
|
||||
$searchLabel = $('<label for="catalog_search">Search: </label>'),
|
||||
$searchBox = $('<input id="catalog_search" type="search" placeholder="Search" />');
|
||||
|
||||
$controls.append($searchLabel)
|
||||
.append($searchBox);
|
||||
|
||||
$searchBox.change(function() {
|
||||
var query = new RegExp(this.value, 'm'),
|
||||
$found = searchThreads($threads, query);
|
||||
$threads.hide();
|
||||
$found.show();
|
||||
});
|
||||
};
|
||||
|
||||
// Filter threads by their content, given a regex. Can be extended later to load data
|
||||
// remotely and filter by multiple fields
|
||||
var searchThreads = function($threads, re) {
|
||||
return $threads.filter(function() {
|
||||
return re.test($('.replies', this).text());
|
||||
});
|
||||
};
|
||||
|
||||
// Only load in the catalog
|
||||
if (active_page == 'catalog') {
|
||||
onready(catalogSearch);
|
||||
}
|
||||
|
||||
}());
|
Loading…
Reference in New Issue
Block a user