diff options
author | Jude <julie_wang1@brown.edu> | 2019-02-24 15:15:24 -0500 |
---|---|---|
committer | Jude <julie_wang1@brown.edu> | 2019-02-24 15:15:24 -0500 |
commit | 2eec7d883511107136d27683a309287c350f79b4 (patch) | |
tree | f57e99eda60a697836d9bf994bed337763b7bf20 /src/fields/Field.ts | |
parent | 6c6e5ebcfa80c04844a08ab23f6f7b66494b78d4 (diff) | |
parent | d9d55e422826da1fe87aa7973c92e54bc0c99f02 (diff) |
merge
Diffstat (limited to 'src/fields/Field.ts')
-rw-r--r-- | src/fields/Field.ts | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/fields/Field.ts b/src/fields/Field.ts index 6adee9b61..c7e0232af 100644 --- a/src/fields/Field.ts +++ b/src/fields/Field.ts @@ -1,5 +1,6 @@ import { Utils } from "../Utils"; +import { Types } from "../server/Message"; export function Cast<T extends Field>(field: FieldValue<Field>, ctor: { new(): T }): Opt<T> { if (field) { @@ -10,21 +11,25 @@ export function Cast<T extends Field>(field: FieldValue<Field>, ctor: { new(): T return undefined; } -export let FieldWaiting: FIELD_WAITING = "<Waiting>"; +export const FieldWaiting: FIELD_WAITING = "<Waiting>"; export type FIELD_WAITING = "<Waiting>"; -export type FIELD_ID = string | undefined; +export type FieldId = string; export type Opt<T> = T | undefined; export type FieldValue<T> = Opt<T> | FIELD_WAITING; export abstract class Field { //FieldUpdated: TypedEvent<Opt<FieldUpdatedArgs>> = new TypedEvent<Opt<FieldUpdatedArgs>>(); - private id: FIELD_ID; - get Id(): FIELD_ID { + init(callback: (res: Field) => any) { + callback(this); + } + + private id: FieldId; + get Id(): FieldId { return this.id; } - constructor(id: FIELD_ID = undefined) { + constructor(id: Opt<FieldId> = undefined) { this.id = id || Utils.GenerateGuid(); } @@ -47,6 +52,8 @@ export abstract class Field { return this.id === other.id; } + abstract UpdateFromServer(serverData: any): void; + abstract ToScriptString(): string; abstract TrySetValue(value: any): boolean; @@ -55,4 +62,5 @@ export abstract class Field { abstract Copy(): Field; + abstract ToJson(): { _id: string, type: Types, data: any } }
\ No newline at end of file |