aboutsummaryrefslogtreecommitdiff
path: root/src/new_fields/Doc.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/new_fields/Doc.ts')
-rw-r--r--src/new_fields/Doc.ts27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index 621f87981..675278ed5 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -224,7 +224,7 @@ export namespace Doc {
// gets the document's prototype or returns the document if it is a prototype
export function GetProto(doc: Doc) {
- return Doc.GetT(doc, "isPrototype", "boolean", true) || doc.isTemplate ? doc : (doc.proto || doc);
+ return Doc.GetT(doc, "isPrototype", "boolean", true) ? doc : (doc.proto || doc);
}
export function allKeys(doc: Doc): string[] {
@@ -249,16 +249,25 @@ export namespace Doc {
return true;
}
- export function MakeFieldExtension(doc: Doc, fieldKey: string) {
- let fieldExtension = new Doc(doc[Id] + fieldKey, true);
- fieldExtension.title = "Extension of " + doc.title + "'s field:" + fieldKey;
- let proto: Doc | undefined = doc;
- while (proto && !Doc.IsPrototype(proto)) {
- proto = proto.proto;
+ export function extDoc(doc: Doc, fieldKey: string, fieldExt: string) {
+ return doc && fieldExt && doc[fieldKey + "_ext"] instanceof Doc ? doc[fieldKey + "_ext"] as Doc : doc;
+ }
+ export function extField(doc: Doc, fieldKey: string, fieldExt: string) {
+ return doc && fieldExt && doc[fieldKey + "_ext"] instanceof Doc ? fieldExt : fieldKey;
+ }
+ export function UpdateFieldExtension(doc: Doc, fieldKey: string) {
+ if (doc && doc[fieldKey + "_ext"] === undefined) {
+ setTimeout(() => {
+ let fieldExtension = new Doc(doc[Id] + fieldKey, true);
+ fieldExtension.title = "Extension of " + doc.title + "'s field:" + fieldKey;
+ let proto: Doc | undefined = doc;
+ while (proto && !Doc.IsPrototype(proto)) {
+ proto = proto.proto;
+ }
+ (proto ? proto : doc)[fieldKey + "_ext"] = fieldExtension;
+ }, 0);
}
- (proto ? proto : doc)[fieldKey + "_ext"] = fieldExtension;
}
-
export function MakeAlias(doc: Doc) {
if (!GetT(doc, "isPrototype", "boolean", true)) {
return Doc.MakeCopy(doc);