aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/RichTextSchema.tsx
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2020-01-30 11:32:42 -0500
committerbob <bcz@cs.brown.edu>2020-01-30 11:32:42 -0500
commit4ea58f2d334485edd1c158ed06b27382e5d68a1c (patch)
tree3da4ac1631d25b29a305d68417764d14ed73267d /src/client/util/RichTextSchema.tsx
parente5312b1b568512d744dd9e4829a3ece12620cbbc (diff)
support for docs as fields using {{}}. and added 't' for making a template.
Diffstat (limited to 'src/client/util/RichTextSchema.tsx')
-rw-r--r--src/client/util/RichTextSchema.tsx27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/client/util/RichTextSchema.tsx b/src/client/util/RichTextSchema.tsx
index d1e0f07cb..6821d9858 100644
--- a/src/client/util/RichTextSchema.tsx
+++ b/src/client/util/RichTextSchema.tsx
@@ -21,6 +21,7 @@ import { FormattedTextBox } from "../views/nodes/FormattedTextBox";
import { ObjectField } from "../../new_fields/ObjectField";
import { ComputedField } from "../../new_fields/ScriptField";
import { observer } from "mobx-react";
+import { Id } from "../../new_fields/FieldSymbols";
const blockquoteDOM: DOMOutputSpecArray = ["blockquote", 0], hrDOM: DOMOutputSpecArray = ["hr"],
preDOM: DOMOutputSpecArray = ["pre", ["code", 0]], brDOM: DOMOutputSpecArray = ["br"], ulDOM: DOMOutputSpecArray = ["ul", 0];
@@ -759,15 +760,33 @@ export class DashDocView {
return true;
};
const alias = node.attrs.alias;
- DocServer.GetRefField(node.attrs.docid + alias).then(async dashDoc => {
+
+ const docid = node.attrs.docid || tbox.props.DataDoc?.[Id] || tbox.dataDoc?.[Id];
+ DocServer.GetRefField(docid + alias).then(async dashDoc => {
if (!(dashDoc instanceof Doc)) {
- alias && DocServer.GetRefField(node.attrs.docid).then(async dashDocBase => {
+ alias && DocServer.GetRefField(docid).then(async dashDocBase => {
if (dashDocBase instanceof Doc) {
- self.doRender(Doc.MakeAlias(dashDocBase), removeDoc, node, view, getPos);
+ if (node.attrs.fieldKey) {
+ const fieldDoc = await self._textBox.dataDoc[node.attrs.fieldKey];
+ if (fieldDoc instanceof Doc) {
+ self.doRender(Doc.MakeAlias(fieldDoc), removeDoc, node, view, getPos);
+ } else {
+ this._dashSpan.innerHTML = `field:'${node.attrs.fieldKey}' is not a document`;
+ }
+ } else {
+ self.doRender(Doc.MakeAlias(dashDocBase), removeDoc, node, view, getPos);
+ }
}
});
} else {
- self.doRender(dashDoc, removeDoc, node, view, getPos);
+ if (node.attrs.fieldKey) {
+ const fieldDoc = await dashDoc[node.attrs.fieldKey];
+ if (fieldDoc instanceof Doc) {
+ self.doRender(fieldDoc, removeDoc, node, view, getPos);
+ }
+ } else {
+ self.doRender(dashDoc, removeDoc, node, view, getPos);
+ }
}
});
const self = this;