aboutsummaryrefslogtreecommitdiff
path: root/src/client/northstar/core/attribute/AttributeModel.ts
blob: c89b1617cadaf4a9e304e0f21a7b03fdfd8fe128 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import { Attribute, DataType, VisualizationHint } from '../../model/idea/idea';
import { BaseObject } from '../BaseObject';
import { observable } from "mobx";

export abstract class AttributeModel extends BaseObject {
    public abstract get DisplayName(): string;
    public abstract get CodeName(): string;
    public abstract get DataType(): DataType;
    public abstract get VisualizationHints(): VisualizationHint[];
}

export class ColumnAttributeModel extends AttributeModel {
    public Attribute: Attribute;

    constructor(attribute: Attribute) {
        super();
        this.Attribute = attribute;
    }

    public get DataType(): DataType {
        return this.Attribute.dataType ? this.Attribute.dataType : DataType.Undefined;
    }

    public get DisplayName(): string {
        return this.Attribute.displayName ? this.Attribute.displayName.ReplaceAll("_", " ") : "";
    }

    public get CodeName(): string {
        return this.Attribute.rawName ? this.Attribute.rawName : "";
    }

    public get VisualizationHints(): VisualizationHint[] {
        return this.Attribute.visualizationHints ? this.Attribute.visualizationHints : [];
    }

    public Equals(other: ColumnAttributeModel): boolean {
        return this.Attribute.rawName === other.Attribute.rawName;
    }
}

export class CodeAttributeModel extends AttributeModel {
    private _visualizationHints: VisualizationHint[];

    public CodeName: string;

    @observable
    public Code: string;

    constructor(code: string, codeName: string, displayName: string, visualizationHints: VisualizationHint[]) {
        super();
        this.Code = code;
        this.CodeName = codeName;
        this.DisplayName = displayName;
        this._visualizationHints = visualizationHints;
    }

    public get DataType(): DataType {
        return DataType.Undefined;
    }

    @observable
    public DisplayName: string;

    public get VisualizationHints(): VisualizationHint[] {
        return this._visualizationHints;
    }

    public Equals(other: CodeAttributeModel): boolean {
        return this.CodeName === other.CodeName;
    }

}

export class BackendAttributeModel extends AttributeModel {
    private _dataType: DataType;
    private _displayName: string;
    private _codeName: string;
    private _visualizationHints: VisualizationHint[];

    public Id: string;

    constructor(id: string, dataType: DataType, displayName: string, codeName: string, visualizationHints: VisualizationHint[]) {
        super();
        this.Id = id;
        this._dataType = dataType;
        this._displayName = displayName;
        this._codeName = codeName;
        this._visualizationHints = visualizationHints;
    }

    public get DataType(): DataType {
        return this._dataType;
    }

    public get DisplayName(): string {
        return this._displayName.ReplaceAll("_", " ");
    }

    public get CodeName(): string {
        return this._codeName;
    }

    public get VisualizationHints(): VisualizationHint[] {
        return this._visualizationHints;
    }

    public Equals(other: BackendAttributeModel): boolean {
        return this.Id === other.Id;
    }

}