diff --git a/src/public/javascripts/services/search_notes.js b/src/public/javascripts/services/search_notes.js
index 2145ea02e..a11cb29b8 100644
--- a/src/public/javascripts/services/search_notes.js
+++ b/src/public/javascripts/services/search_notes.js
@@ -142,6 +142,12 @@ async function refreshSearch() {
toastService.showMessage("Saved search note refreshed.");
}
+function searchInSubtree(noteId) {
+ showSearch();
+
+ $searchInput.val(`@in=${noteId} @text*=*`);
+}
+
function init() {
const hashValue = document.location.hash ? document.location.hash.substr(1) : ""; // strip initial #
@@ -178,5 +184,6 @@ export default {
refreshSearch,
doSearch,
init,
+ searchInSubtree,
getHelpText: () => helpText
};
\ No newline at end of file
diff --git a/src/public/javascripts/services/tree_context_menu.js b/src/public/javascripts/services/tree_context_menu.js
index 6cb5fc320..50cf6b3d1 100644
--- a/src/public/javascripts/services/tree_context_menu.js
+++ b/src/public/javascripts/services/tree_context_menu.js
@@ -9,6 +9,7 @@ import hoistedNoteService from './hoisted_note.js';
import noteDetailService from './note_detail.js';
import clipboard from './clipboard.js';
import protectedSessionHolder from "./protected_session_holder.js";
+import searchNotesService from "./search_notes.js";
class TreeContextMenu {
constructor(node) {
@@ -55,6 +56,8 @@ class TreeContextMenu {
{ title: "Delete Delete", cmd: "delete", uiIcon: "trash",
enabled: isNotRoot && !isHoisted && parentNotSearch },
{ title: "----" },
+ { title: "Search in subtree Ctrl+Shift+F", cmd: "searchInSubtree", uiIcon: "search",
+ enabled: notSearch && noSelectedNotes },
isHoisted ? null : { title: "Hoist note Ctrl-H", cmd: "hoist", uiIcon: "empty", enabled: noSelectedNotes && notSearch },
!isHoisted || !isNotRoot ? null : { title: "Unhoist note Ctrl-H", cmd: "unhoist", uiIcon: "arrow-up" },
{ title: "Edit branch prefix F2", cmd: "editBranchPrefix", uiIcon: "empty",
@@ -177,6 +180,9 @@ class TreeContextMenu {
treeService.duplicateNote(this.node.data.noteId, branch.parentNoteId);
}
+ else if (cmd === "searchInSubtree") {
+ searchNotesService.searchInSubtree(this.node.data.noteId);
+ }
else {
ws.logError("Unknown command: " + cmd);
}
diff --git a/src/public/javascripts/services/tree_keybindings.js b/src/public/javascripts/services/tree_keybindings.js
index eb5d4b4f7..e93279f2e 100644
--- a/src/public/javascripts/services/tree_keybindings.js
+++ b/src/public/javascripts/services/tree_keybindings.js
@@ -4,6 +4,7 @@ import treeService from "./tree.js";
import hoistedNoteService from "./hoisted_note.js";
import clipboard from "./clipboard.js";
import treeCache from "./tree_cache.js";
+import searchNoteService from "./search_notes.js";
const keyBindings = {
"del": node => {
@@ -167,6 +168,11 @@ const keyBindings = {
"down": node => {
node.navigate($.ui.keyCode.DOWN, true).then(treeService.clearSelectedNodes);
+ return false;
+ },
+ "ctrl+shift+f": node => {
+ searchNoteService.searchInSubtree(node.data.noteId);
+
return false;
}
};