mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	avoid resorting children on every child add, fixes #1480
This commit is contained in:
		
							parent
							
								
									33571e0ef3
								
							
						
					
					
						commit
						4633c68a0c
					
				@ -75,14 +75,16 @@ class NoteShort {
 | 
			
		||||
        this.parentToBranch[parentNoteId] = branchId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    addChild(childNoteId, branchId) {
 | 
			
		||||
    addChild(childNoteId, branchId, sort = true) {
 | 
			
		||||
        if (!this.children.includes(childNoteId)) {
 | 
			
		||||
            this.children.push(childNoteId);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.childToBranch[childNoteId] = branchId;
 | 
			
		||||
 | 
			
		||||
        this.sortChildren();
 | 
			
		||||
        if (sort) {
 | 
			
		||||
            this.sortChildren();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sortChildren() {
 | 
			
		||||
 | 
			
		||||
@ -87,6 +87,8 @@ class TreeCache {
 | 
			
		||||
        const branchRows = resp.branches;
 | 
			
		||||
        const attributeRows = resp.attributes;
 | 
			
		||||
 | 
			
		||||
        const noteIdsToSort = new Set();
 | 
			
		||||
 | 
			
		||||
        for (const noteRow of noteRows) {
 | 
			
		||||
            const {noteId} = noteRow;
 | 
			
		||||
 | 
			
		||||
@ -153,7 +155,9 @@ class TreeCache {
 | 
			
		||||
            const parentNote = this.notes[branch.parentNoteId];
 | 
			
		||||
 | 
			
		||||
            if (parentNote) {
 | 
			
		||||
                parentNote.addChild(branch.noteId, branch.branchId);
 | 
			
		||||
                parentNote.addChild(branch.noteId, branch.branchId, false);
 | 
			
		||||
 | 
			
		||||
                noteIdsToSort.add(parentNote.noteId);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -178,6 +182,11 @@ class TreeCache {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // sort all of them at once, this avoids repeated sorts (#1480)
 | 
			
		||||
        for (const noteId of noteIdsToSort) {
 | 
			
		||||
            this.notes[noteId].sortChildren();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async reloadNotes(noteIds) {
 | 
			
		||||
 | 
			
		||||
@ -57,7 +57,7 @@ function getTree(req) {
 | 
			
		||||
    const noteIds = sql.getColumn(`
 | 
			
		||||
        WITH RECURSIVE
 | 
			
		||||
            treeWithDescendants(noteId, isExpanded) AS (
 | 
			
		||||
                SELECT noteId, 1 FROM branches WHERE parentNoteId = ? AND isDeleted = 0
 | 
			
		||||
                SELECT noteId, isExpanded FROM branches WHERE parentNoteId = ? AND isDeleted = 0
 | 
			
		||||
                UNION
 | 
			
		||||
                SELECT branches.noteId, branches.isExpanded FROM branches
 | 
			
		||||
                  JOIN treeWithDescendants ON branches.parentNoteId = treeWithDescendants.noteId
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user