From 4737b47badd10d4209eaf4164ee119f5fd4083ca Mon Sep 17 00:00:00 2001 From: Tyler Schicke Date: Tue, 29 Jan 2019 17:21:56 -0500 Subject: added some functions to document --- src/fields/Document.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/fields') diff --git a/src/fields/Document.ts b/src/fields/Document.ts index 6b1cccaf9..4945d1474 100644 --- a/src/fields/Document.ts +++ b/src/fields/Document.ts @@ -1,6 +1,8 @@ import { Field, Cast, Opt } from "./Field" import { Key, KeyStore } from "./Key" import { ObservableMap } from "mobx"; +import { NumberField } from "./NumberField"; +import { TextField } from "./TextField"; export class Document extends Field { private fields: ObservableMap = new ObservableMap(); @@ -25,17 +27,35 @@ export class Document extends Field { return field; } - GetFieldT(key: Key, ctor: { new(): T }, ignoreProto?: boolean): Opt { + GetFieldT(key: Key, ctor: { new(): T }, ignoreProto: boolean = false): Opt { return Cast(this.GetField(key, ignoreProto), ctor); } + GetFieldOrCreate(key: Key, ctor: { new(): T }, ignoreProto: boolean = false): T { + const field = this.GetFieldT(key, ctor, ignoreProto); + if (field) { + return field; + } + const newField = new ctor(); + this.SetField(key, newField); + return newField; + } + GetFieldValue(key: Key, ctor: { new(): U }, defaultVal: T): T { let val = this.GetField(key); let vval = (val && val instanceof ctor) ? val.Data : defaultVal; return vval; } - SetField(key: Key, field: Opt): void { + GetNumberValue(key: Key, defaultVal: number): number { + return this.GetFieldValue(key, NumberField, defaultVal); + } + + GetTextValue(key: Key, defaultVal: string): string { + return this.GetFieldValue(key, TextField, defaultVal); + } + + SetField(key: Key, field: Field | undefined): void { if (field) { this.fields.set(key, field); } else { -- cgit v1.2.3-70-g09d2