summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/catalog-search.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/js/catalog-search.js b/js/catalog-search.js
new file mode 100644
index 00000000..07e21f87
--- /dev/null
+++ b/js/catalog-search.js
@@ -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);
+}
+
+}());