2018-03-26 01:41:29 +08:00
|
|
|
import treeService from '../services/tree.js';
|
2018-06-06 11:28:10 +08:00
|
|
|
import searchNotesService from '../services/search_notes.js';
|
2018-08-17 03:02:42 +08:00
|
|
|
import noteautocompleteService from '../services/note_autocomplete.js';
|
|
|
|
import linkService from "../services/link.js";
|
2017-09-10 00:06:15 +08:00
|
|
|
|
2018-03-25 23:09:17 +08:00
|
|
|
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");
|
2018-08-14 23:36:39 +08:00
|
|
|
const $showRecentNotesButton = $dialog.find(".show-recent-notes-button");
|
2018-03-25 23:09:17 +08:00
|
|
|
|
2018-11-07 07:23:50 +08:00
|
|
|
$dialog.on("shown.bs.modal", e => $autoComplete.focus());
|
|
|
|
|
2018-03-25 23:09:17 +08:00
|
|
|
async function showDialog() {
|
|
|
|
glob.activeDialog = $dialog;
|
2017-11-20 11:31:30 +08:00
|
|
|
|
2018-03-25 23:09:17 +08:00
|
|
|
$autoComplete.val('');
|
2017-09-10 00:06:15 +08:00
|
|
|
|
2018-11-06 22:25:07 +08:00
|
|
|
$dialog.modal();
|
2018-03-25 23:09:17 +08:00
|
|
|
|
2018-11-07 07:23:50 +08:00
|
|
|
$autoComplete.autocomplete({
|
|
|
|
appendTo: document.querySelector('body'),
|
|
|
|
hint: false,
|
|
|
|
autoselect: true,
|
2018-11-07 16:35:29 +08:00
|
|
|
openOnFocus: true,
|
|
|
|
minLength: 0
|
2018-11-07 07:23:50 +08:00
|
|
|
}, [
|
|
|
|
{
|
|
|
|
source: noteautocompleteService.autocompleteSource,
|
2018-11-07 16:35:29 +08:00
|
|
|
displayKey: 'title',
|
2018-11-07 07:23:50 +08:00
|
|
|
templates: {
|
|
|
|
suggestion: function(suggestion) {
|
2018-11-07 16:35:29 +08:00
|
|
|
return suggestion.title;
|
2018-11-07 07:23:50 +08:00
|
|
|
}
|
2018-07-26 22:05:09 +08:00
|
|
|
}
|
2018-11-07 07:23:50 +08:00
|
|
|
}
|
|
|
|
]).on('autocomplete:selected', function(event, suggestion, dataset) {
|
2018-11-07 16:35:29 +08:00
|
|
|
if (!suggestion.path) {
|
2018-11-07 07:23:50 +08:00
|
|
|
return false;
|
|
|
|
}
|
2018-08-17 03:02:42 +08:00
|
|
|
|
2018-11-07 16:35:29 +08:00
|
|
|
treeService.activateNote(suggestion.path);
|
2018-11-07 07:23:50 +08:00
|
|
|
|
|
|
|
$dialog.modal('hide');
|
2018-07-26 22:05:09 +08:00
|
|
|
});
|
2018-03-25 23:09:17 +08:00
|
|
|
|
2018-11-07 16:35:29 +08:00
|
|
|
showRecentNotes();
|
2018-03-25 23:09:17 +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);
|
|
|
|
|
2018-11-07 00:47:40 +08:00
|
|
|
$dialog.modal('hide');
|
2018-06-06 11:28:10 +08:00
|
|
|
}
|
|
|
|
|
2018-07-27 15:22:25 +08:00
|
|
|
function showRecentNotes() {
|
2018-11-07 16:35:29 +08:00
|
|
|
$autoComplete.autocomplete("val", "");
|
|
|
|
$autoComplete.autocomplete("open");
|
2018-07-27 15:22:25 +08:00
|
|
|
}
|
|
|
|
|
2018-06-06 11:28:10 +08:00
|
|
|
$showInFullTextButton.click(showInFullText);
|
|
|
|
|
2018-07-27 15:22:25 +08:00
|
|
|
$showRecentNotesButton.click(showRecentNotes);
|
|
|
|
|
2018-06-06 11:28:10 +08:00
|
|
|
$dialog.bind('keydown', 'ctrl+return', showInFullText);
|
|
|
|
|
2018-03-25 23:09:17 +08:00
|
|
|
export default {
|
|
|
|
showDialog
|
|
|
|
};
|