trilium/public/javascripts/dialogs/jump_to_note.js

92 lines
2.4 KiB
JavaScript
Raw Normal View History

"use strict";
2017-11-05 01:59:43 +08:00
const jumpToNote = (function() {
const dialogEl = $("#jump-to-note-dialog");
const autoCompleteEl = $("#jump-to-note-autocomplete");
const formEl = $("#jump-to-note-form");
2017-11-20 11:31:30 +08:00
const noteDetailEl = $('#note-detail');
2017-11-20 09:36:13 +08:00
async function showDialog() {
2017-11-20 11:31:30 +08:00
noteDetailEl.summernote('editor.saveRange');
2017-11-05 05:03:15 +08:00
glob.activeDialog = dialogEl;
2017-11-05 01:59:43 +08:00
autoCompleteEl.val('');
2017-11-05 01:59:43 +08:00
dialogEl.dialog({
modal: true,
width: 800
});
2017-10-11 08:37:45 +08:00
2017-11-20 09:36:13 +08:00
await autoCompleteEl.autocomplete({
2017-11-20 08:39:39 +08:00
source: noteTree.getAutocompleteItems(),
2017-11-05 01:59:43 +08:00
minLength: 0
});
}
2017-11-20 11:31:30 +08:00
function getSelectedNotePath() {
2017-11-05 01:59:43 +08:00
const val = autoCompleteEl.val();
2017-11-20 11:31:30 +08:00
return link.getNodePathFromLabel(val);
}
function getSelectedNoteId() {
const notePath = getSelectedNotePath();
return treeUtils.getNoteIdFromNotePath(notePath);
}
2017-11-20 11:31:30 +08:00
function goToNote() {
const notePath = getSelectedNotePath();
2017-11-20 09:36:13 +08:00
if (notePath) {
noteTree.activateNode(notePath);
2017-11-05 01:59:43 +08:00
dialogEl.dialog('close');
}
2017-11-20 09:36:13 +08:00
}
$(document).bind('keydown', 'alt+j', showDialog);
formEl.submit(() => {
const action = dialogEl.find("button:focus").val();
2017-11-20 11:31:30 +08:00
if (!action || action === 'jump') {
2017-11-20 09:36:13 +08:00
goToNote();
}
2017-11-20 11:31:30 +08:00
else if (action === 'add-link') {
const notePath = getSelectedNotePath();
if (notePath) {
dialogEl.dialog("close");
noteDetailEl.summernote('editor.restoreRange');
const noteId = treeUtils.getNoteIdFromNotePath(notePath);
2017-11-20 11:31:30 +08:00
noteDetailEl.summernote('createLink', {
text: noteTree.getNoteTitle(noteId),
2017-11-20 11:31:30 +08:00
url: 'app#' + notePath,
isNewWindow: true
});
}
}
else if (action === 'add-current-as-child') {
2017-11-27 08:56:08 +08:00
treeChanges.cloneNoteTo(noteEditor.getCurrentNoteId(), getSelectedNoteId());
2017-11-20 11:31:30 +08:00
dialogEl.dialog("close");
}
else if (action === 'add-selected-as-child') {
2017-11-27 08:56:08 +08:00
treeChanges.cloneNoteTo(getSelectedNoteId(), noteEditor.getCurrentNoteId());
2017-11-20 11:31:30 +08:00
dialogEl.dialog("close");
}
else {
console.error("Unknown action=" + action);
}
2017-11-05 01:59:43 +08:00
return false;
});
2017-11-05 01:59:43 +08:00
return {
showDialog
};
})();