aboutsummaryrefslogtreecommitdiff
path: root/src/client/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util')
-rw-r--r--src/client/util/RichTextRules.ts2
-rw-r--r--src/client/util/RichTextSchema.tsx27
2 files changed, 24 insertions, 5 deletions
diff --git a/src/client/util/RichTextRules.ts b/src/client/util/RichTextRules.ts
index 00ce3ef73..8411cc6ee 100644
--- a/src/client/util/RichTextRules.ts
+++ b/src/client/util/RichTextRules.ts
@@ -101,7 +101,7 @@ export const inpRules = {
}
});
const node = (state.doc.resolve(start) as any).nodeAfter;
- const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 75, title: "dashDoc", docid: docId, float: "right", fieldKey: match[2], alias: Utils.GenerateGuid() });
+ const dashDoc = schema.nodes.dashDoc.create({ width: 75, height: 75, title: "dashDoc", docid: docId, float: "right", fieldKey: match[2]?.substring(1), alias: Utils.GenerateGuid() });
const sm = state.storedMarks || undefined;
return node ? state.tr.replaceRangeWith(start, end, dashDoc).setStoredMarks([...node.marks, ...(sm ? sm : [])]) : state.tr;
}),
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;