add #newNotesOnTop, closes #3734

(cherry picked from commit d31b5ac99fadfaeaf23fd809598fd0f816b629e2)
This commit is contained in:
zadam 2023-03-19 22:23:58 +01:00
parent 117f1101e4
commit 6b1f9d3243
3 changed files with 14 additions and 11 deletions

View File

@ -242,7 +242,8 @@ const ATTR_HELP = {
"keepCurrentHoisting": "Opening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.", "keepCurrentHoisting": "Opening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.",
"executeButton": "Title of the button which will execute the current code note", "executeButton": "Title of the button which will execute the current code note",
"executeDescription": "Longer description of the current code note displayed together with the execute button", "executeDescription": "Longer description of the current code note displayed together with the execute button",
"excludeFromNoteMap": "Notes with this label will be hidden from the Note Map" "excludeFromNoteMap": "Notes with this label will be hidden from the Note Map",
"newNotesOnTop": "New notes will be created at the top of the parent note, not on the bottom."
}, },
"relation": { "relation": {
"runOnNoteCreation": "executes when note is created on backend. Use this relation if you want to run the script for all notes created under a specific subtree. In that case, create it on the subtree root note and make it inheritable. A new note created within the subtree (any depth) will trigger the script.", "runOnNoteCreation": "executes when note is created on backend. Use this relation if you want to run the script for all notes created under a specific subtree. In that case, create it on the subtree root note and make it inheritable. A new note created within the subtree (any depth) will trigger the script.",

View File

@ -62,6 +62,7 @@ module.exports = [
{ type: 'label', name: 'keepCurrentHoisting'}, { type: 'label', name: 'keepCurrentHoisting'},
{ type: 'label', name: 'executeButton'}, { type: 'label', name: 'executeButton'},
{ type: 'label', name: 'executeDescription'}, { type: 'label', name: 'executeDescription'},
{ type: 'label', name: 'newNotesOnTop'},
// relation names // relation names
{ type: 'relation', name: 'internalLink' }, { type: 'relation', name: 'internalLink' },

View File

@ -22,17 +22,18 @@ const htmlSanitizer = require("./html_sanitizer");
const ValidationError = require("../errors/validation_error"); const ValidationError = require("../errors/validation_error");
const noteTypesService = require("./note_types"); const noteTypesService = require("./note_types");
function getNewNotePosition(parentNoteId) { function getNewNotePosition(parentNote) {
const note = becca.notes[parentNoteId]; if (parentNote.hasLabel('newNotesOnTop')) {
const minNotePos = parentNote.getChildBranches()
.reduce((min, note) => Math.min(min, note.notePosition), 0);
if (!note) { return minNotePos - 10;
throw new Error(`Can't find note ${parentNoteId}`); } else {
} const maxNotePos = parentNote.getChildBranches()
const maxNotePos = note.getChildBranches()
.reduce((max, note) => Math.max(max, note.notePosition), 0); .reduce((max, note) => Math.max(max, note.notePosition), 0);
return maxNotePos + 10; return maxNotePos + 10;
}
} }
function triggerNoteTitleChanged(note) { function triggerNoteTitleChanged(note) {
@ -186,7 +187,7 @@ function createNewNote(params) {
branch = new BBranch({ branch = new BBranch({
noteId: note.noteId, noteId: note.noteId,
parentNoteId: params.parentNoteId, parentNoteId: params.parentNoteId,
notePosition: params.notePosition !== undefined ? params.notePosition : getNewNotePosition(params.parentNoteId), notePosition: params.notePosition !== undefined ? params.notePosition : getNewNotePosition(parentNote),
prefix: params.prefix, prefix: params.prefix,
isExpanded: !!params.isExpanded isExpanded: !!params.isExpanded
}).save(); }).save();