2017-11-05 07:38:50 +08:00
|
|
|
"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-09-10 00:06:15 +08:00
|
|
|
|
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-09-10 00:06:15 +08:00
|
|
|
|
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-09-10 00:06:15 +08:00
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2017-11-23 12:16:54 +08:00
|
|
|
function getSelectedNoteId() {
|
|
|
|
const notePath = getSelectedNotePath();
|
|
|
|
return treeUtils.getNoteIdFromNotePath(notePath);
|
|
|
|
}
|
|
|
|
|
2017-11-20 11:31:30 +08:00
|
|
|
function goToNote() {
|
|
|
|
const notePath = getSelectedNotePath();
|
2017-09-10 00:06:15 +08:00
|
|
|
|
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');
|
|
|
|
|
|
|
|
noteDetailEl.summernote('createLink', {
|
|
|
|
text: noteTree.getNoteTitle(notePath),
|
|
|
|
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-09-10 00:06:15 +08:00
|
|
|
|
2017-11-05 01:59:43 +08:00
|
|
|
return {
|
|
|
|
showDialog
|
|
|
|
};
|
|
|
|
})();
|