trilium/src/public/javascripts/dialogs/jump_to_note.js

75 lines
1.8 KiB
JavaScript
Raw Normal View History

import treeService from '../services/tree.js';
import linkService from '../services/link.js';
2018-04-18 12:26:42 +08:00
import server from '../services/server.js';
2018-06-06 11:28:10 +08:00
import searchNotesService from '../services/search_notes.js';
const $dialog = $("#jump-to-note-dialog");
const $autoComplete = $("#jump-to-note-autocomplete");
const $form = $("#jump-to-note-form");
2018-06-06 11:28:10 +08:00
const $jumpToNoteButton = $("#jump-to-note-button");
const $showInFullTextButton = $("#show-in-full-text-button");
async function showDialog() {
glob.activeDialog = $dialog;
2017-11-20 11:31:30 +08:00
$autoComplete.val('');
$dialog.dialog({
modal: true,
width: 800
});
await $autoComplete.autocomplete({
2018-04-18 12:26:42 +08:00
source: async function(request, response) {
const result = await server.get('autocomplete?query=' + encodeURIComponent(request.term));
response(result);
},
minLength: 2
});
}
2017-11-05 01:59:43 +08:00
function getSelectedNotePath() {
const val = $autoComplete.val();
return linkService.getNodePathFromLabel(val);
}
function goToNote() {
const notePath = getSelectedNotePath();
if (notePath) {
treeService.activateNode(notePath);
$dialog.dialog('close');
2017-11-20 09:36:13 +08:00
}
}
2017-11-20 09:36:13 +08:00
2018-06-06 11:28:10 +08:00
function showInFullText(e) {
// stop from propagating upwards (dangerous especially with ctrl+enter executable javascript notes)
e.preventDefault();
e.stopPropagation();
const searchText = $autoComplete.val();
searchNotesService.resetSearch();
searchNotesService.showSearch();
searchNotesService.doSearch(searchText);
$dialog.dialog('close');
}
$form.submit(() => {
goToNote();
2017-11-05 01:59:43 +08:00
return false;
});
2018-06-06 11:28:10 +08:00
$jumpToNoteButton.click(goToNote);
$showInFullTextButton.click(showInFullText);
$dialog.bind('keydown', 'ctrl+return', showInFullText);
export default {
showDialog
};