Factored out materialized query providers

This commit is contained in:
Zef Hemel
2022-04-19 16:54:47 +02:00
parent 31254d15e6
commit c7176b00fa
31 changed files with 437 additions and 187 deletions
+22 -1
View File
@@ -1,6 +1,6 @@
import type { ClickEvent, IndexEvent } from "../../webapp/app_event";
import { batchSet } from "plugos-silverbullet-syscall/index";
import { batchSet, scanPrefixGlobal } from "plugos-silverbullet-syscall/index";
import { readPage, writePage } from "plugos-silverbullet-syscall/space";
import { parseMarkdown } from "plugos-silverbullet-syscall/markdown";
import { dispatch, getCurrentPage, getText } from "plugos-silverbullet-syscall/editor";
@@ -12,6 +12,7 @@ import {
renderToText
} from "../../common/tree";
import { whiteOutQueries } from "../query/util";
import { applyQuery, QueryProviderEvent } from "../query/engine";
export type Task = {
name: string;
@@ -120,3 +121,23 @@ export async function taskToggleAtPos(pos: number) {
}
}
}
export async function queryProvider({
query,
}: QueryProviderEvent): Promise<string> {
let allTasks: Task[] = [];
for (let { key, page, value } of await scanPrefixGlobal("task:")) {
let [, pos] = key.split(":");
allTasks.push({
...value,
page: page,
pos: pos,
});
}
let markdownTasks = applyQuery(query, allTasks).map(
(t) =>
`* [${t.done ? "x" : " "}] [[${t.page}@${t.pos}]] ${t.name}` +
(t.nested ? "\n " + t.nested : "")
);
return markdownTasks.join("\n");
}
+4
View File
@@ -26,4 +26,8 @@ functions:
path: "./task.ts:taskToggle"
events:
- page:click
itemQueryProvider:
path: ./task.ts:queryProvider
events:
- query:task