diff --git a/src/public/javascripts/bootstrap.js b/src/public/javascripts/bootstrap.js
new file mode 100644
index 000000000..d858b0f12
--- /dev/null
+++ b/src/public/javascripts/bootstrap.js
@@ -0,0 +1,14 @@
+import searchTree from './search_tree.js';
+
+const $toggleSearchButton = $("#toggle-search-button");
+
+$toggleSearchButton.click(searchTree.toggleSearch);
+bindShortcut('ctrl+s', searchTree.toggleSearch);
+
+function bindShortcut(keyboardShortcut, handler) {
+ $(document).bind('keydown', keyboardShortcut, e => {
+ handler();
+
+ e.preventDefault();
+ });
+}
\ No newline at end of file
diff --git a/src/public/javascripts/search_tree.js b/src/public/javascripts/search_tree.js
index 0b8a3ce93..d345c2609 100644
--- a/src/public/javascripts/search_tree.js
+++ b/src/public/javascripts/search_tree.js
@@ -1,83 +1,73 @@
"use strict";
-const searchTree = (function() {
- const $tree = $("#tree");
- const $searchInput = $("input[name='search-text']");
- const $resetSearchButton = $("#reset-search-button");
- const $doSearchButton = $("#do-search-button");
- const $saveSearchButton = $("#save-search-button");
- const $searchBox = $("#search-box");
- const $toggleSearchButton = $("#toggle-search-button");
+const $tree = $("#tree");
+const $searchInput = $("input[name='search-text']");
+const $resetSearchButton = $("#reset-search-button");
+const $doSearchButton = $("#do-search-button");
+const $saveSearchButton = $("#save-search-button");
+const $searchBox = $("#search-box");
- $resetSearchButton.click(resetSearch);
+function toggleSearch() {
+ if ($searchBox.is(":hidden")) {
+ $searchBox.show();
+ $searchInput.focus();
+ }
+ else {
+ resetSearch();
- function toggleSearch() {
- if ($searchBox.is(":hidden")) {
- $searchBox.show();
- $searchInput.focus();
- }
- else {
- resetSearch();
+ $searchBox.hide();
+ }
+}
- $searchBox.hide();
- }
+function resetSearch() {
+ $searchInput.val("");
+
+ getTree().clearFilter();
+}
+
+function getTree() {
+ return $tree.fancytree('getTree');
+}
+
+async function doSearch() {
+ const searchText = $searchInput.val();
+
+ const noteIds = await server.get('search/' + encodeURIComponent(searchText));
+
+ for (const noteId of noteIds) {
+ await noteTree.expandToNote(noteId, {noAnimation: true, noEvents: true});
}
- function resetSearch() {
- $searchInput.val("");
+ // Pass a string to perform case insensitive matching
+ getTree().filterBranches(node => noteIds.includes(node.data.noteId));
+}
- getTree().clearFilter();
+async function saveSearch() {
+ const {noteId} = await server.post('search/' + encodeURIComponent($searchInput.val()));
+
+ await noteTree.reload();
+
+ await noteTree.activateNode(noteId);
+}
+
+$searchInput.keyup(e => {
+ const searchText = $searchInput.val();
+
+ if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(searchText) === "") {
+ $resetSearchButton.click();
+ return;
}
- function getTree() {
- return $tree.fancytree('getTree');
+ if (e && e.which === $.ui.keyCode.ENTER) {
+ doSearch();
}
+}).focus();
- async function doSearch() {
- const searchText = $searchInput.val();
+$doSearchButton.click(doSearch);
+$resetSearchButton.click(resetSearch);
- const noteIds = await server.get('search/' + encodeURIComponent(searchText));
+$saveSearchButton.click(saveSearch);
- for (const noteId of noteIds) {
- await noteTree.expandToNote(noteId, {noAnimation: true, noEvents: true});
- }
-
- // Pass a string to perform case insensitive matching
- getTree().filterBranches(node => noteIds.includes(node.data.noteId));
- }
-
- $searchInput.keyup(e => {
- const searchText = $searchInput.val();
-
- if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(searchText) === "") {
- $resetSearchButton.click();
- return;
- }
-
- if (e && e.which === $.ui.keyCode.ENTER) {
- doSearch();
- }
- }).focus();
-
- $doSearchButton.click(doSearch);
-
- $saveSearchButton.click(async () => {
- const {noteId} = await server.post('search/' + encodeURIComponent($searchInput.val()));
-
- await noteTree.reload();
-
- await noteTree.activateNode(noteId);
- });
-
- $(document).bind('keydown', 'ctrl+s', e => {
- toggleSearch();
-
- e.preventDefault();
- });
-
- $toggleSearchButton.click(toggleSearch);
-
- return {
- toggleSearch
- };
-})();
\ No newline at end of file
+export default {
+ toggleSearch
+};
\ No newline at end of file
diff --git a/src/views/index.ejs b/src/views/index.ejs
index ac3726777..e59d29930 100644
--- a/src/views/index.ejs
+++ b/src/views/index.ejs
@@ -519,6 +519,8 @@
+
+
@@ -530,7 +532,6 @@
-