aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/search/SearchBox.tsx
diff options
context:
space:
mode:
authorusodhi <61431818+usodhi@users.noreply.github.com>2021-03-10 11:57:30 -0500
committerusodhi <61431818+usodhi@users.noreply.github.com>2021-03-10 11:57:30 -0500
commit89b7b2ae27cbab6a7edd5fa3759949afe2cd2f71 (patch)
treee3d034d928a63f478ea705c083a3f74764e38d03 /src/client/views/search/SearchBox.tsx
parente7dd6dbdf8d01cef390ff65c0948e5e70ac232cf (diff)
parent80597c4780b1e8833d3742339836815d388356d2 (diff)
conflicts
Diffstat (limited to 'src/client/views/search/SearchBox.tsx')
-rw-r--r--src/client/views/search/SearchBox.tsx17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/client/views/search/SearchBox.tsx b/src/client/views/search/SearchBox.tsx
index c82d03fce..899fac66d 100644
--- a/src/client/views/search/SearchBox.tsx
+++ b/src/client/views/search/SearchBox.tsx
@@ -3,7 +3,7 @@ import { Tooltip } from '@material-ui/core';
import { action, computed, IReactionDisposer, observable, reaction, runInAction } from 'mobx';
import { observer } from 'mobx-react';
import * as React from 'react';
-import { Doc, DocListCast, Field, Opt } from '../../../fields/Doc';
+import { Doc, DocListCast, Field, Opt, DocListCastAsync } from '../../../fields/Doc';
import { documentSchema } from "../../../fields/documentSchemas";
import { Copy, Id } from '../../../fields/FieldSymbols';
import { List } from '../../../fields/List';
@@ -185,6 +185,21 @@ export class SearchBox extends ViewBoxBaseComponent<FieldViewProps, SearchBoxDoc
return finalDocs;
}
+ static async foreachRecursiveDocAsync(docs: Doc[], func: (doc: Doc) => void) {
+ let newarray: Doc[] = [];
+ while (docs.length > 0) {
+ newarray = [];
+ await Promise.all(docs.filter(d => d).map(async d => {
+ const fieldKey = Doc.LayoutFieldKey(d);
+ const annos = !Field.toString(Doc.LayoutField(d) as Field).includes("CollectionView");
+ const data = d[annos ? fieldKey + "-annotations" : fieldKey];
+ const docs = await DocListCastAsync(data);
+ docs && newarray.push(...docs);
+ func(d);
+ }));
+ docs = newarray;
+ }
+ }
static foreachRecursiveDoc(docs: Doc[], func: (doc: Doc) => void) {
let newarray: Doc[] = [];
while (docs.length > 0) {