mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 20:06:08 +01:00 
			
		
		
		
	search fixes WIP
This commit is contained in:
		@@ -46,7 +46,8 @@ class NoteBuilder {
 | 
				
			|||||||
            branchId: id(),
 | 
					            branchId: id(),
 | 
				
			||||||
            noteId: childNoteBuilder.note.noteId,
 | 
					            noteId: childNoteBuilder.note.noteId,
 | 
				
			||||||
            parentNoteId: this.note.noteId,
 | 
					            parentNoteId: this.note.noteId,
 | 
				
			||||||
            prefix
 | 
					            prefix,
 | 
				
			||||||
 | 
					            notePosition: 10
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return this;
 | 
					        return this;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ describe("Search", () => {
 | 
				
			|||||||
        noteCache.reset();
 | 
					        noteCache.reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        rootNote = new NoteBuilder(new Note(noteCache, {noteId: 'root', title: 'root'}));
 | 
					        rootNote = new NoteBuilder(new Note(noteCache, {noteId: 'root', title: 'root'}));
 | 
				
			||||||
        new Branch(noteCache, {branchId: 'root', noteId: 'root', parentNoteId: 'none'});
 | 
					        new Branch(noteCache, {branchId: 'root', noteId: 'root', parentNoteId: 'none', notePosition: 10});
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it("simple path match", () => {
 | 
					    it("simple path match", () => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -59,12 +59,12 @@ describe("Value extractor", () => {
 | 
				
			|||||||
        let valueExtractor = new ValueExtractor(["note", "relations", "neighbor", "labels", "capital"]);
 | 
					        let valueExtractor = new ValueExtractor(["note", "relations", "neighbor", "labels", "capital"]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        expect(valueExtractor.validate()).toBeFalsy();
 | 
					        expect(valueExtractor.validate()).toBeFalsy();
 | 
				
			||||||
        expect(valueExtractor.extract(austria.note)).toEqual("prague");
 | 
					        expect(valueExtractor.extract(austria.note)).toEqual("Prague");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        valueExtractor = new ValueExtractor(["~neighbor", "labels", "capital"]);
 | 
					        valueExtractor = new ValueExtractor(["~neighbor", "labels", "capital"]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        expect(valueExtractor.validate()).toBeFalsy();
 | 
					        expect(valueExtractor.validate()).toBeFalsy();
 | 
				
			||||||
        expect(valueExtractor.extract(austria.note)).toEqual("prague");
 | 
					        expect(valueExtractor.extract(austria.note)).toEqual("Prague");
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,7 +79,6 @@ class NoteRevision extends Entity {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.content = res.content;
 | 
					            this.content = res.content;
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (this.isProtected) {
 | 
					            if (this.isProtected) {
 | 
				
			||||||
                if (protectedSessionService.isProtectedSessionAvailable()) {
 | 
					                if (protectedSessionService.isProtectedSessionAvailable()) {
 | 
				
			||||||
                    this.content = protectedSessionService.decrypt(this.content);
 | 
					                    this.content = protectedSessionService.decrypt(this.content);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ function set(key, value) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getHoistedNoteId() {
 | 
					function getHoistedNoteId() {
 | 
				
			||||||
    return namespace.get('hoistedNoteId');
 | 
					    return namespace.get('hoistedNoteId') || 'root';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function getSourceId() {
 | 
					function getSourceId() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ class LabelComparisonExp extends Expression {
 | 
				
			|||||||
        super();
 | 
					        super();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.attributeType = attributeType;
 | 
					        this.attributeType = attributeType;
 | 
				
			||||||
        this.attributeName = attributeName;
 | 
					        this.attributeName = attributeName.toLowerCase();
 | 
				
			||||||
        this.comparator = comparator;
 | 
					        this.comparator = comparator;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -19,8 +19,9 @@ class LabelComparisonExp extends Expression {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        for (const attr of attrs) {
 | 
					        for (const attr of attrs) {
 | 
				
			||||||
            const note = attr.note;
 | 
					            const note = attr.note;
 | 
				
			||||||
 | 
					            const value = attr.value ? attr.value.toLowerCase() : attr.value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (inputNoteSet.hasNoteId(note.noteId) && this.comparator(attr.value)) {
 | 
					            if (inputNoteSet.hasNoteId(note.noteId) && this.comparator(value)) {
 | 
				
			||||||
                if (attr.isInheritable) {
 | 
					                if (attr.isInheritable) {
 | 
				
			||||||
                    resultNoteSet.addAll(note.subtreeNotesIncludingTemplated);
 | 
					                    resultNoteSet.addAll(note.subtreeNotesIncludingTemplated);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,15 @@ function findNotesWithExpression(expression, searchContext) {
 | 
				
			|||||||
    const noteSet = expression.execute(allNoteSet, executionContext);
 | 
					    const noteSet = expression.execute(allNoteSet, executionContext);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const searchResults = noteSet.notes
 | 
					    const searchResults = noteSet.notes
 | 
				
			||||||
        .map(note => executionContext.noteIdToNotePath[note.noteId] || noteCacheService.getSomePath(note))
 | 
					        .map(note => {
 | 
				
			||||||
 | 
					            const zzz = executionContext.noteIdToNotePath[note.noteId] || noteCacheService.getSomePath(note)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!zzz) {
 | 
				
			||||||
 | 
					                console.log("missing path", note);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return zzz;
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
        .filter(notePathArray => notePathArray.includes(cls.getHoistedNoteId()))
 | 
					        .filter(notePathArray => notePathArray.includes(cls.getHoistedNoteId()))
 | 
				
			||||||
        .map(notePathArray => new SearchResult(notePathArray));
 | 
					        .map(notePathArray => new SearchResult(notePathArray));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user