mirror of
https://github.com/zadam/trilium.git
synced 2025-01-29 10:28:02 +08:00
create note directly from mention linking
This commit is contained in:
parent
c70a842bc6
commit
2e837642e2
9 changed files with 48 additions and 14 deletions
|
@ -1,2 +0,0 @@
|
||||||
#n:main
|
|
||||||
!<md> [0, 0, null, null, -2147483648, -2147483648]
|
|
2
libraries/ckeditor/ckeditor.js
vendored
2
libraries/ckeditor/ckeditor.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -68,7 +68,7 @@ export async function showDialog(ancestorNoteId) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const note = await treeCache.getNote(change.noteId);
|
const note = await treeCache.getNote(change.noteId);
|
||||||
const notePath = await treeService.getSomeNotePath(note);
|
const notePath = treeService.getSomeNotePath(note);
|
||||||
|
|
||||||
if (notePath) {
|
if (notePath) {
|
||||||
$noteLink = await linkService.createNoteLink(notePath, {
|
$noteLink = await linkService.createNoteLink(notePath, {
|
||||||
|
|
|
@ -61,7 +61,13 @@ async function createNote(parentNoteId, options = {}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {note, branch};
|
const noteEntity = await treeCache.getNote(note.noteId);
|
||||||
|
const branchEntity = treeCache.getBranchId(branch.branchId);
|
||||||
|
|
||||||
|
return {
|
||||||
|
note: noteEntity,
|
||||||
|
branch: branchEntity
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If first element is heading, parse it out and use it as a new heading. */
|
/* If first element is heading, parse it out and use it as a new heading. */
|
||||||
|
@ -95,4 +101,4 @@ export default {
|
||||||
createNote,
|
createNote,
|
||||||
createNewTopLevelNote,
|
createNewTopLevelNote,
|
||||||
duplicateNote
|
duplicateNote
|
||||||
};
|
};
|
||||||
|
|
|
@ -71,7 +71,7 @@ async function getRunPath(notePath) {
|
||||||
if (parents.length > 0) {
|
if (parents.length > 0) {
|
||||||
console.debug(utils.now(), "Available parents:", parents);
|
console.debug(utils.now(), "Available parents:", parents);
|
||||||
|
|
||||||
const someNotePath = await getSomeNotePath(parents[0]);
|
const someNotePath = getSomeNotePath(parents[0]);
|
||||||
|
|
||||||
if (someNotePath) { // in case it's root the path may be empty
|
if (someNotePath) { // in case it's root the path may be empty
|
||||||
const pathToRoot = someNotePath.split("/").reverse();
|
const pathToRoot = someNotePath.split("/").reverse();
|
||||||
|
@ -103,7 +103,7 @@ async function getRunPath(notePath) {
|
||||||
return effectivePath.reverse();
|
return effectivePath.reverse();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getSomeNotePath(note) {
|
function getSomeNotePath(note) {
|
||||||
utils.assertArguments(note);
|
utils.assertArguments(note);
|
||||||
|
|
||||||
const path = [];
|
const path = [];
|
||||||
|
@ -286,4 +286,4 @@ export default {
|
||||||
getNotePathTitle,
|
getNotePathTitle,
|
||||||
getHashValueFromAddress,
|
getHashValueFromAddress,
|
||||||
parseNotePath
|
parseNotePath
|
||||||
};
|
};
|
||||||
|
|
|
@ -115,7 +115,7 @@ export default class NotePathsWidget extends TabAwareWidget {
|
||||||
const activeNoteParentNoteId = pathSegments[pathSegments.length - 2]; // we know this is not root so there must be a parent
|
const activeNoteParentNoteId = pathSegments[pathSegments.length - 2]; // we know this is not root so there must be a parent
|
||||||
|
|
||||||
for (const parentNote of this.note.getParentNotes()) {
|
for (const parentNote of this.note.getParentNotes()) {
|
||||||
const parentNotePath = await treeService.getSomeNotePath(parentNote);
|
const parentNotePath = treeService.getSomeNotePath(parentNote);
|
||||||
// this is to avoid having root notes leading '/'
|
// this is to avoid having root notes leading '/'
|
||||||
const notePath = parentNotePath ? (parentNotePath + '/' + this.noteId) : this.noteId;
|
const notePath = parentNotePath ? (parentNotePath + '/' + this.noteId) : this.noteId;
|
||||||
const isCurrent = activeNoteParentNoteId === parentNote.noteId;
|
const isCurrent = activeNoteParentNoteId === parentNote.noteId;
|
||||||
|
@ -158,4 +158,4 @@ export default class NotePathsWidget extends TabAwareWidget {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,8 @@ import mimeTypesService from '../../services/mime_types.js';
|
||||||
import utils from "../../services/utils.js";
|
import utils from "../../services/utils.js";
|
||||||
import keyboardActionService from "../../services/keyboard_actions.js";
|
import keyboardActionService from "../../services/keyboard_actions.js";
|
||||||
import treeCache from "../../services/tree_cache.js";
|
import treeCache from "../../services/tree_cache.js";
|
||||||
|
import treeService from "../../services/tree.js";
|
||||||
|
import noteCreateService from "../../services/note_create.js";
|
||||||
import AbstractTextTypeWidget from "./abstract_text_type_widget.js";
|
import AbstractTextTypeWidget from "./abstract_text_type_widget.js";
|
||||||
|
|
||||||
const ENABLE_INSPECTOR = false;
|
const ENABLE_INSPECTOR = false;
|
||||||
|
@ -15,7 +17,7 @@ const mentionSetup = {
|
||||||
feed: queryText => {
|
feed: queryText => {
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
noteAutocompleteService.autocompleteSource(queryText, rows => {
|
noteAutocompleteService.autocompleteSource(queryText, rows => {
|
||||||
if (rows.length === 1 && rows[0].title === 'No results') {
|
if (rows.length === 1 && rows[0].pathTitle === 'No results') {
|
||||||
rows = [];
|
rows = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +27,17 @@ const mentionSetup = {
|
||||||
row.link = '#' + row.path;
|
row.link = '#' + row.path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (queryText.trim().length > 0) {
|
||||||
|
rows = [
|
||||||
|
{
|
||||||
|
highlightedTitle: `Create and link note "<strong>${queryText}</strong>"`,
|
||||||
|
id: 'create',
|
||||||
|
title: queryText
|
||||||
|
},
|
||||||
|
...rows
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
res(rows);
|
res(rows);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -256,4 +269,20 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget {
|
||||||
this.textEditor.model.insertContent(imageElement, this.textEditor.model.document.selection);
|
this.textEditor.model.insertContent(imageElement, this.textEditor.model.document.selection);
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
async createNoteForReferenceLink(title) {
|
||||||
|
const {parentNoteId} = treeService.getNoteIdAndParentIdFromNotePath(this.notePath);
|
||||||
|
|
||||||
|
const {note} = await noteCreateService.createNote(parentNoteId, {
|
||||||
|
activate: false,
|
||||||
|
title: title,
|
||||||
|
target: 'after',
|
||||||
|
targetBranchId: await treeCache.getBranchId(parentNoteId, this.noteId),
|
||||||
|
type: 'text'
|
||||||
|
});
|
||||||
|
|
||||||
|
const notePath = treeService.getSomeNotePath(note);
|
||||||
|
|
||||||
|
return notePath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/public" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src/public" isTestSource="false" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/dist" />
|
<excludeFolder url="file://$MODULE_DIR$/dist" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/src/public/app-dist" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|
Loading…
Reference in a new issue