mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-03 21:19:01 +01:00 
			
		
		
		
	recent notes and jump to note are filtered by hoisted note
This commit is contained in:
		
							parent
							
								
									86fcbb0354
								
							
						
					
					
						commit
						6c16cdb011
					
				@ -3,6 +3,8 @@
 | 
			
		||||
const noteCacheService = require('../../services/note_cache');
 | 
			
		||||
const repository = require('../../services/repository');
 | 
			
		||||
const log = require('../../services/log');
 | 
			
		||||
const utils = require('../../services/utils');
 | 
			
		||||
const optionService = require('../../services/options');
 | 
			
		||||
 | 
			
		||||
async function getAutocomplete(req) {
 | 
			
		||||
    const query = req.query.query;
 | 
			
		||||
@ -16,7 +18,7 @@ async function getAutocomplete(req) {
 | 
			
		||||
        results = await getRecentNotes(currentNoteId);
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        results = noteCacheService.findNotes(query);
 | 
			
		||||
        results = await noteCacheService.findNotes(query);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const msTaken = Date.now() - timestampStarted;
 | 
			
		||||
@ -29,6 +31,13 @@ async function getAutocomplete(req) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function getRecentNotes(currentNoteId) {
 | 
			
		||||
    let extraCondition = '';
 | 
			
		||||
 | 
			
		||||
    const hoistedNoteId = await optionService.getOption('hoistedNoteId');
 | 
			
		||||
    if (hoistedNoteId !== 'root') {
 | 
			
		||||
        extraCondition = `AND recent_notes.notePath LIKE '%${utils.sanitizeSql(hoistedNoteId)}%'`;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const recentNotes = await repository.getEntities(`
 | 
			
		||||
      SELECT 
 | 
			
		||||
        recent_notes.* 
 | 
			
		||||
@ -39,6 +48,7 @@ async function getRecentNotes(currentNoteId) {
 | 
			
		||||
        recent_notes.isDeleted = 0
 | 
			
		||||
        AND branches.isDeleted = 0
 | 
			
		||||
        AND branches.noteId != ?
 | 
			
		||||
        ${extraCondition}
 | 
			
		||||
      ORDER BY 
 | 
			
		||||
        dateCreated DESC
 | 
			
		||||
      LIMIT 200`, [currentNoteId]);
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ async function searchNotes(req) {
 | 
			
		||||
    let searchTextResults = null;
 | 
			
		||||
 | 
			
		||||
    if (searchText.trim().length > 0) {
 | 
			
		||||
        searchTextResults = noteCacheService.findNotes(searchText);
 | 
			
		||||
        searchTextResults = await noteCacheService.findNotes(searchText);
 | 
			
		||||
 | 
			
		||||
        let fullTextNoteIds = await getFullTextResults(searchText);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ const eventService = require('./events');
 | 
			
		||||
const repository = require('./repository');
 | 
			
		||||
const protectedSessionService = require('./protected_session');
 | 
			
		||||
const utils = require('./utils');
 | 
			
		||||
const options = require('./options');
 | 
			
		||||
 | 
			
		||||
let loaded = false;
 | 
			
		||||
let noteTitles = {};
 | 
			
		||||
@ -63,7 +64,7 @@ function highlightResults(results, allTokens) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findNotes(query) {
 | 
			
		||||
async function findNotes(query) {
 | 
			
		||||
    if (!noteTitles || !query.length) {
 | 
			
		||||
        return [];
 | 
			
		||||
    }
 | 
			
		||||
@ -72,7 +73,7 @@ function findNotes(query) {
 | 
			
		||||
    // filtering '/' because it's used as separator
 | 
			
		||||
    const allTokens = query.trim().toLowerCase().split(" ").filter(token => token !== '/');
 | 
			
		||||
    const tokens = allTokens.slice();
 | 
			
		||||
    const results = [];
 | 
			
		||||
    let results = [];
 | 
			
		||||
 | 
			
		||||
    let noteIds = Object.keys(noteTitles);
 | 
			
		||||
 | 
			
		||||
@ -120,6 +121,12 @@ function findNotes(query) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const hoistedNoteId = await options.getOption('hoistedNoteId');
 | 
			
		||||
 | 
			
		||||
    if (hoistedNoteId !== 'root') {
 | 
			
		||||
        results = results.filter(res => res.pathArray.includes(hoistedNoteId));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // sort results by depth of the note. This is based on the assumption that more important results
 | 
			
		||||
    // are closer to the note root.
 | 
			
		||||
    results.sort((a, b) => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user