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
|
import { BasicField } from "./BasicField";
import { Field, FieldId } from "./Field";
import { Types } from "../server/Message";
import { HistogramOperation } from "../client/northstar/operations/HistogramOperation";
import { action } from "mobx";
import { AttributeTransformationModel } from "../client/northstar/core/attribute/AttributeTransformationModel";
import { ColumnAttributeModel } from "../client/northstar/core/attribute/AttributeModel";
import { CurrentUserUtils } from "../server/authentication/models/current_user_utils";
export class HistogramField extends BasicField<HistogramOperation> {
constructor(data?: HistogramOperation, id?: FieldId, save: boolean = true) {
super(data ? data : HistogramOperation.Empty, save, id);
}
toString(): string {
return JSON.stringify(this.Data);
}
Copy(): Field {
return new HistogramField(this.Data);
}
ToScriptString(): string {
return `new HistogramField("${this.Data}")`;
}
ToJson(): { type: Types, data: string, _id: string } {
return {
type: Types.HistogramOp,
data: JSON.stringify(this.Data),
_id: this.Id
}
}
@action
static FromJson(id: string, data: any): HistogramField {
let jp = JSON.parse(data);
let X: AttributeTransformationModel | undefined;
let Y: AttributeTransformationModel | undefined;
let V: AttributeTransformationModel | undefined;
CurrentUserUtils.GetAllNorthstarColumnAttributes().map(attr => {
if (attr.displayName == jp.X.AttributeModel.Attribute.DisplayName) {
X = new AttributeTransformationModel(new ColumnAttributeModel(attr), jp.X.AggregateFunction);
}
if (attr.displayName == jp.Y.AttributeModel.Attribute.DisplayName) {
Y = new AttributeTransformationModel(new ColumnAttributeModel(attr), jp.Y.AggregateFunction);
}
if (attr.displayName == jp.V.AttributeModel.Attribute.DisplayName) {
V = new AttributeTransformationModel(new ColumnAttributeModel(attr), jp.V.AggregateFunction);
}
});
if (X && Y && V) {
return new HistogramField(new HistogramOperation(X, Y, V, jp.Normalization), id, false);
}
return new HistogramField(HistogramOperation.Empty, id, false);
}
}
|