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

80 lines
2.1 KiB
JavaScript
Raw Normal View History

import treeService from '../services/tree.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");
2018-06-06 11:28:10 +08:00
const $showInFullTextButton = $("#show-in-full-text-button");
const $showRecentNotesButton = $("#jump-to-note-show-recent-notes");
async function showDialog() {
glob.activeDialog = $dialog;
2017-11-20 11:31:30 +08:00
$autoComplete.val('');
$dialog.dialog({
modal: true,
width: 800,
position: { my: "center top+100", at: "top", of: window }
});
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));
if (result.length > 0) {
response(result);
}
else {
response([{
label: "No results",
value: "No results"
}]);
}
},
focus: function(event, ui) {
event.preventDefault();
2018-04-18 12:26:42 +08:00
},
minLength: 0,
autoFocus: true,
select: function (event, ui) {
if (ui.item.value === 'No results') {
return false;
}
treeService.activateNode(ui.item.value);
$dialog.dialog('close');
}
});
showRecentNotes();
}
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');
}
function showRecentNotes() {
$autoComplete.autocomplete("search", "");
}
2018-06-06 11:28:10 +08:00
$showInFullTextButton.click(showInFullText);
$showRecentNotesButton.click(showRecentNotes);
2018-06-06 11:28:10 +08:00
$dialog.bind('keydown', 'ctrl+return', showInFullText);
export default {
showDialog
};