diff options
author | Tyler Schicke <tyler_schicke@brown.edu> | 2019-01-15 07:57:16 -0500 |
---|---|---|
committer | Tyler Schicke <tyler_schicke@brown.edu> | 2019-01-15 07:57:16 -0500 |
commit | 3de39e2608e62a278b9c8cc37b53333f0877fa59 (patch) | |
tree | 0843d7cc199b54f80517c987a9f9d0d47cbb883d /src/controllers/FieldController.ts | |
parent | e1ed82ff684877b56925016282a0e4d5bb4e1b4b (diff) |
Have most of document stuff working
Diffstat (limited to 'src/controllers/FieldController.ts')
-rw-r--r-- | src/controllers/FieldController.ts | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/src/controllers/FieldController.ts b/src/controllers/FieldController.ts index 6e7daf6e1..ec59f53e8 100644 --- a/src/controllers/FieldController.ts +++ b/src/controllers/FieldController.ts @@ -15,7 +15,7 @@ export function Cast<T extends FieldController>(field: Opt<FieldController>, cto export type Opt<T> = T | undefined; export abstract class FieldController { - FieldUpdated: TypedEvent<Opt<FieldUpdatedArgs>> = new TypedEvent<Opt<FieldUpdatedArgs>>(); + //FieldUpdated: TypedEvent<Opt<FieldUpdatedArgs>> = new TypedEvent<Opt<FieldUpdatedArgs>>(); private id: string; get Id(): string { @@ -26,32 +26,22 @@ export abstract class FieldController { this.id = id || Utils.GenerateGuid(); } - protected DereferenceImpl(): Opt<FieldController> { + Dereference(): Opt<FieldController> { return this; } - protected DereferenceToRootImpl(): Opt<FieldController> { + DereferenceToRoot(): Opt<FieldController> { return this; } - Dereference<T extends FieldController = FieldController>(ctor?: { new(): T }): Opt<T> { - let field = this.DereferenceImpl(); - if (ctor && field instanceof ctor) { - return field; - } else { - return undefined; - } + DereferenceT<T extends FieldController = FieldController>(ctor: { new(): T }): Opt<T> { + return Cast(this.Dereference(), ctor); } - DereferenceToRoot<T extends FieldController = FieldController>(ctor?: { new(): T }): Opt<T> { - let field = this.DereferenceToRootImpl(); - if (ctor && field instanceof ctor) { - return field; - } else { - return undefined; - } + DereferenceToRootT<T extends FieldController = FieldController>(ctor: { new(): T }): Opt<T> { + return Cast(this.DereferenceToRoot(), ctor); } - Equals(other: FieldController) : boolean { + Equals(other: FieldController): boolean { return this.id === other.id; } |