Materialized query parser + data indexing and querying

This commit is contained in:
Zef Hemel
2022-04-12 13:33:07 +02:00
parent b3c3302970
commit a24eaaf4b4
16 changed files with 249 additions and 133 deletions
+13 -9
View File
@@ -5,7 +5,7 @@ import { whiteOutQueries } from "../query/materialized_queries";
import { batchSet } from "plugos-silverbullet-syscall/index";
import { readPage, writePage } from "plugos-silverbullet-syscall/space";
import { parseMarkdown } from "plugos-silverbullet-syscall/markdown";
import { dispatch, getText } from "plugos-silverbullet-syscall/editor";
import { dispatch, getCurrentPage, getText } from "plugos-silverbullet-syscall/editor";
import {
addParentPointers,
collectNodesMatching,
@@ -14,12 +14,14 @@ import {
renderToText
} from "../../common/tree";
type Task = {
task: string;
complete: boolean;
export type Task = {
name: string;
done: boolean;
deadline?: string;
pos?: number;
nested?: string;
// Not saved in DB, just added when pulled out (from key)
pos?: number;
page?: string;
};
export async function indexTasks({ name, text }: IndexEvent) {
@@ -32,8 +34,8 @@ export async function indexTasks({ name, text }: IndexEvent) {
let task = n.children!.slice(1).map(renderToText).join("").trim();
let complete = n.children![0].children![0].text! !== "[ ]";
let value: Task = {
task,
complete,
name: task,
done: complete,
};
let deadlineNodes = collectNodesOfType(n, "DeadlineDate");
@@ -62,6 +64,7 @@ export async function taskToggle(event: ClickEvent) {
}
export async function taskToggleAtPos(pos: number) {
let currentpage = await getCurrentPage();
let text = await getText();
let mdTree = await parseMarkdown(text);
addParentPointers(mdTree);
@@ -91,8 +94,9 @@ export async function taskToggleAtPos(pos: number) {
let ref = wikiLink.children![0].text!;
if (ref.includes("@")) {
let [page, pos] = ref.split("@");
let pageData = await readPage(page);
let text = pageData.text;
if (page !== currentpage) {
text = (await readPage(page)).text;
}
let referenceMdTree = await parseMarkdown(text);
// Adding +1 to immediately hit the task marker