Uses debounce function for parameter search

This commit is contained in:
Divya Jagadish authored and Zaid Abdulla committed 2022-04-08 13:09:04 -07:00
1 parent dabf1b2f43
commit 3d0ac9b415
1 file changed
+10 -7
+10 -7
View File
@@ -24,6 +24,7 @@ import { parse } from "../../lib/common/expression-parser";
import memoize from "../../lib/common/memoize"; import memoize from "../../lib/common/memoize";
import { getIcon } from "../icons"; import { getIcon } from "../icons";
import { evaluateExpression } from "../store"; import { evaluateExpression } from "../store";
import debounce from "../../lib/common/debounce";
const memoizedParse = memoize(parse); const memoizedParse = memoize(parse);
@@ -52,6 +53,12 @@ function orderKeysByDepth(device: Record<string, unknown>): string[][] {
} }
const component: ClosureComponent = (): Component => { const component: ClosureComponent = (): Component => {
let queryString: string;
const formQueryString = debounce((args: string[]) => {
queryString = args[args.length - 1];
m.redraw();
}, 500);
return { return {
view: (vnode) => { view: (vnode) => {
const device = vnode.attrs["device"]; const device = vnode.attrs["device"];
@@ -62,19 +69,15 @@ const component: ClosureComponent = (): Component => {
type: "text", type: "text",
placeholder: "Search parameters", placeholder: "Search parameters",
oninput: (e) => { oninput: (e) => {
vnode.state["searchString"] = e.target.value; formQueryString(e.target.value);
e.redraw = false; e.redraw = false;
clearTimeout(vnode.state["timeout"]);
vnode.state["timeout"] = setTimeout(m.redraw, 500);
}, },
}); });
const instanceRegex = /\.[0-9]+$/; const instanceRegex = /\.[0-9]+$/;
let re; let re;
if (vnode.state["searchString"]) { if (queryString) {
const keywords = vnode.state["searchString"] const keywords = queryString.split(" ").filter((s) => s);
.split(" ")
.filter((s) => s);
if (keywords.length) if (keywords.length)
re = new RegExp(keywords.map((s) => escapeRegExp(s)).join(".*"), "i"); re = new RegExp(keywords.map((s) => escapeRegExp(s)).join(".*"), "i");
} }