becca should also keep correct branch order, e.g. for export, #2346

This commit is contained in:
zadam 2023-01-06 15:07:18 +01:00
parent d7cae7d5bb
commit a863da1dce
2 changed files with 26 additions and 1 deletions

View File

@ -34,7 +34,11 @@ function load() {
new BNote().update(row).init();
}
for (const row of sql.getRawRows(`SELECT branchId, noteId, parentNoteId, prefix, notePosition, isExpanded, utcDateModified FROM branches WHERE isDeleted = 0`)) {
const branchRows = sql.getRawRows(`SELECT branchId, noteId, parentNoteId, prefix, notePosition, isExpanded, utcDateModified FROM branches WHERE isDeleted = 0`);
// in-memory sort is faster than in the DB
branchRows.sort((a, b) => a.notePosition - b.notePosition);
for (const row of branchRows) {
new BBranch().update(row).init();
}
@ -164,6 +168,12 @@ function branchUpdated(branch) {
childNote.flatTextCache = null;
childNote.sortParents();
}
const parentNote = becca.notes[branch.parentNoteId];
if (parentNote) {
parentNote.sortChildren();
}
}
function attributeDeleted(attributeId) {

View File

@ -730,6 +730,21 @@ class BNote extends AbstractBeccaEntity {
.filter(note => !!note);
}
sortChildren() {
if (this.children.length === 0) {
return;
}
const becca = this.becca;
this.children.sort((a, b) => {
const aBranch = becca.getBranchFromChildAndParent(a.noteId, this.noteId);
const bBranch = becca.getBranchFromChildAndParent(b.noteId, this.noteId);
return aBranch?.notePosition < bBranch?.notePosition ? -1 : 1;
});
}
/**
* This is used for:
* - fast searching