mirror of
https://github.com/zadam/trilium.git
synced 2025-11-01 02:45:54 +01:00
Update note_content_fulltext.ts
Mindmap search works now
This commit is contained in:
@@ -12,6 +12,7 @@ import striptags from "striptags";
|
|||||||
import utils from "../../utils.js";
|
import utils from "../../utils.js";
|
||||||
import sql from "../../sql.js";
|
import sql from "../../sql.js";
|
||||||
|
|
||||||
|
|
||||||
const ALLOWED_OPERATORS = ['=', '!=', '*=*', '*=', '=*', '%='];
|
const ALLOWED_OPERATORS = ['=', '!=', '*=*', '*=', '=*', '%='];
|
||||||
|
|
||||||
const cachedRegexes: Record<string, RegExp> = {};
|
const cachedRegexes: Record<string, RegExp> = {};
|
||||||
@@ -134,9 +135,55 @@ class NoteContentFulltextExp extends Expression {
|
|||||||
content = content.replace(/ /g, ' ');
|
content = content.replace(/ /g, ' ');
|
||||||
}
|
}
|
||||||
else if (type === 'mindMap' && mime === 'application/json') {
|
else if (type === 'mindMap' && mime === 'application/json') {
|
||||||
|
|
||||||
let mindMapcontent = JSON.parse (content);
|
let mindMapcontent = JSON.parse (content);
|
||||||
let topic = mindMapcontent.nodedata.topic;
|
|
||||||
content = utils.normalize(topic.toString());
|
// Define interfaces for the JSON structure
|
||||||
|
interface MindmapNode {
|
||||||
|
id: string;
|
||||||
|
topic: string;
|
||||||
|
children: MindmapNode[]; // Recursive structure
|
||||||
|
direction?: number;
|
||||||
|
expanded?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MindmapData {
|
||||||
|
nodedata: MindmapNode;
|
||||||
|
arrows: any[]; // If you know the structure, replace `any` with the correct type
|
||||||
|
summaries: any[];
|
||||||
|
direction: number;
|
||||||
|
theme: {
|
||||||
|
name: string;
|
||||||
|
type: string;
|
||||||
|
palette: string[];
|
||||||
|
cssvar: Record<string, string>; // Object with string keys and string values
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursive function to collect all topics
|
||||||
|
function collectTopics(node: MindmapNode): string[] {
|
||||||
|
// Collect the current node's topic
|
||||||
|
let topics = [node.topic];
|
||||||
|
|
||||||
|
// If the node has children, collect topics recursively
|
||||||
|
if (node.children && node.children.length > 0) {
|
||||||
|
for (const child of node.children) {
|
||||||
|
topics = topics.concat(collectTopics(child));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return topics;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Start extracting from the root node
|
||||||
|
const topicsArray = collectTopics(mindMapcontent.nodedata);
|
||||||
|
|
||||||
|
// Combine topics into a single string
|
||||||
|
const topicsString = topicsArray.join(", ");
|
||||||
|
|
||||||
|
|
||||||
|
content = utils.normalize(topicsString.toString());
|
||||||
}
|
}
|
||||||
else if (type === 'canvas' && mime === 'application/json') {
|
else if (type === 'canvas' && mime === 'application/json') {
|
||||||
interface Element {
|
interface Element {
|
||||||
@@ -145,12 +192,14 @@ class NoteContentFulltextExp extends Expression {
|
|||||||
id: string;
|
id: string;
|
||||||
[key: string]: any; // Other properties that may exist
|
[key: string]: any; // Other properties that may exist
|
||||||
}
|
}
|
||||||
console.log("hier")
|
|
||||||
let canvasContent = JSON.parse (content);
|
let canvasContent = JSON.parse (content);
|
||||||
const elements: Element [] = canvasContent.elements;
|
const elements: Element [] = canvasContent.elements;
|
||||||
const texts = elements
|
const texts = elements
|
||||||
.filter((element: Element) => element.type === 'text' && element.text) // Filter for 'text' type elements with a 'text' property
|
.filter((element: Element) => element.type === 'text' && element.text) // Filter for 'text' type elements with a 'text' property
|
||||||
.map((element: Element) => element.text!); // Use `!` to assert `text` is defined after filtering
|
.map((element: Element) => element.text!); // Use `!` to assert `text` is defined after filtering
|
||||||
|
|
||||||
|
content =utils.normalize(texts.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user