Merge remote-tracking branch 'origin/stable'

# Conflicts:
#	src/services/note_cache/entities/note.js
This commit is contained in:
zadam 2021-01-23 21:09:47 +01:00
commit 6408a47a8a
3 changed files with 51 additions and 4 deletions

View File

@ -1245,7 +1245,25 @@ export default class NoteTreeWidget extends TabAwareWidget {
this.clearSelectedNodes(); this.clearSelectedNodes();
} }
canBeMovedUpOrDown(node) {
if (node.data.noteId === 'root') {
return false;
}
const parentNote = treeCache.getNoteFromCache(node.getParent().data.noteId);
if (parentNote && parentNote.hasLabel('sorted')) {
return false;
}
return true;
}
moveNoteUpCommand({node}) { moveNoteUpCommand({node}) {
if (!this.canBeMovedUpOrDown(node)) {
return;
}
const beforeNode = node.getPrevSibling(); const beforeNode = node.getPrevSibling();
if (beforeNode !== null) { if (beforeNode !== null) {
@ -1254,7 +1272,12 @@ export default class NoteTreeWidget extends TabAwareWidget {
} }
moveNoteDownCommand({node}) { moveNoteDownCommand({node}) {
if (!this.canBeMovedUpOrDown(node)) {
return;
}
const afterNode = node.getNextSibling(); const afterNode = node.getNextSibling();
if (afterNode !== null) { if (afterNode !== null) {
branchService.moveAfterBranch([node.data.branchId], afterNode.data.branchId); branchService.moveAfterBranch([node.data.branchId], afterNode.data.branchId);
} }

View File

@ -3,6 +3,7 @@ const scriptService = require('./script');
const treeService = require('./tree'); const treeService = require('./tree');
const noteService = require('./notes'); const noteService = require('./notes');
const repository = require('./repository'); const repository = require('./repository');
const noteCache = require('./note_cache/note_cache');
const Attribute = require('../entities/attribute'); const Attribute = require('../entities/attribute');
function runAttachedRelations(note, relationName, originEntity) { function runAttachedRelations(note, relationName, originEntity) {
@ -22,11 +23,11 @@ eventService.subscribe(eventService.NOTE_TITLE_CHANGED, note => {
runAttachedRelations(note, 'runOnNoteTitleChange', note); runAttachedRelations(note, 'runOnNoteTitleChange', note);
if (!note.isRoot()) { if (!note.isRoot()) {
const parents = note.getParentNotes(); const noteFromCache = noteCache.notes[note.noteId];
for (const parent of parents) { for (const parentNote of noteFromCache.parents) {
if (parent.hasOwnedLabel("sorted")) { if (parentNote.hasLabel("sorted")) {
treeService.sortNotesAlphabetically(parent.noteId); treeService.sortNotesAlphabetically(parentNote.noteId);
} }
} }
} }
@ -80,6 +81,16 @@ eventService.subscribe(eventService.ENTITY_CREATED, ({ entityName, entity }) =>
} }
else if (entity.type === 'label' && entity.name === 'sorted') { else if (entity.type === 'label' && entity.name === 'sorted') {
treeService.sortNotesAlphabetically(entity.noteId); treeService.sortNotesAlphabetically(entity.noteId);
if (entity.isInheritable) {
const note = noteCache.notes[entity.noteId];
if (note) {
for (const noteId of note.subtreeNoteIds) {
treeService.sortNotesAlphabetically(noteId);
}
}
}
} }
} }
else if (entityName === 'notes') { else if (entityName === 'notes') {

View File

@ -152,6 +152,14 @@ class Note {
&& (!value || attr.value.toLowerCase() === value)); && (!value || attr.value.toLowerCase() === value));
} }
hasLabel(name) {
return this.hasAttribute('label', name);
}
hasRelation(name) {
return this.hasAttribute('relation', name);
}
getLabelValue(name) { getLabelValue(name) {
const label = this.attributes.find(attr => attr.type === 'label' && attr.name === name); const label = this.attributes.find(attr => attr.type === 'label' && attr.name === name);
@ -294,6 +302,11 @@ class Note {
return arr.flat(); return arr.flat();
} }
/** @return {String[]} */
get subtreeNoteIds() {
return this.subtreeNotes.map(note => note.noteId);
}
get parentCount() { get parentCount() {
return this.parents.length; return this.parents.length;
} }