aboutsummaryrefslogtreecommitdiff
path: root/src/controllers/DocumentReferenceController.ts
blob: 8e0aaf0e98032c8fd8351f5d4fb4d024f2601646 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { FieldController, Opt } from "./FieldController";
import { DocumentController } from "./DocumentController";
import { KeyController } from "./KeyController";
import { DocumentUpdatedArgs } from "./FieldUpdatedArgs";

export class DocumentReferenceController extends FieldController {
    get Key(): KeyController{
        return this.key;
    }

    get Document(): DocumentController {
        return this.document;
    }

    constructor(private document: DocumentController, private key: KeyController) {
        super();
    }

    private DocFieldUpdated(args: DocumentUpdatedArgs):void{
        // this.FieldUpdated.emit(args.fieldArgs);
    }

    Dereference() : Opt<FieldController> {
        return this.document.GetField(this.key);
    }

    DereferenceToRoot(): Opt<FieldController> {
        let field: Opt<FieldController> = this;
        while (field instanceof DocumentReferenceController) {
            field = field.Dereference();
        }
        return field;
    }

    TrySetValue(value: any): boolean {
        throw new Error("Method not implemented.");
    }
    GetValue() {
        throw new Error("Method not implemented.");
    }
    Copy(): FieldController {
        throw new Error("Method not implemented.");
    }


}