-
Notifications
You must be signed in to change notification settings - Fork 0
/
BaseModel.ts
120 lines (95 loc) · 2.9 KB
/
BaseModel.ts
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
112
113
114
115
116
117
118
119
120
const dateToFormatString = d => {
const addZero = d => {
return d.length == 2 ? d : `0${d}`;
};
const year = d.getUTCFullYear().toString();
const month = (d.getUTCMonth()+1).toString();
const day = d.getUTCDate().toString();
const hours = d.getUTCHours().toString();
const minutes = d.getUTCMinutes().toString();
const seconds = d.getUTCSeconds().toString();
return `${
year
}-${
addZero(month)
}-${
addZero(day)
} ${
addZero(hours)
}:${
addZero(minutes)
}:${
addZero(seconds)
}`;
}
export default class BaseModel {
static get PropertyMap () {
return {};
}
static setProperty (propertyName, propertyValue, toObject, constructor) {
const PropertyMap = constructor.PropertyMap || BaseModel.PropertyMap;
const pn = PropertyMap[propertyName] || propertyName;
toObject[pn] = propertyValue;
}
static hasRtt (type) {
if(type.Rtt !== undefined) {
return true;
}
return false;
}
static getRtt (type) {
return type.Rtt
}
static getDataWithRtt(data) {
if(data.constructor === Date) {
return dateToFormatString(data);
}
if (data.constructor === Array){
return data.map(d => {
if(d.constructor !== Function){
return BaseModel.getDataWithRtt(d)
}
});
}
// if(data.constructor("Publiq")){
//
// }
if(data instanceof Object) {
let dataWithRtt = {};
if(BaseModel.hasRtt(data.constructor)){
dataWithRtt['rtt'] = BaseModel.getRtt(data.constructor);
}
for (let i in data) {
const pv = data[i];
const constructor = pv.constructor;
let propertySetValue;
if(constructor === Function){
continue;
}
// else if (constructor === Array){
// propertySetValue = pv.map(d => {
// if(d.constructor !== Function){
// return BaseModel.getDataWithRtt(d)
// }
// });
// }
// else if(BaseModel.hasRtt(constructor)){
// propertySetValue = BaseModel.getDataWithRtt(pv);
//
// }
// else if(constructor === Date) {
// propertySetValue = BaseModel.getDataWithRtt(pv);//dateToFormatString(pv);
// }
else {
propertySetValue = BaseModel.getDataWithRtt(pv);
}
BaseModel.setProperty(i, propertySetValue, dataWithRtt, data.constructor);
}
return dataWithRtt;
}
return data;
}
toJson() {
return BaseModel.getDataWithRtt(this);
}
}