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
121
122
123
124
125
|
'use strict';
import { DataTypePropertyModel } from "../models/data-type-properties";
import {ComponentInstance, InputModel, DataTypesMap, PropertyModel, InputPropertyBase, IAppConfigurtaion, SchemaProperty} from "../models";
import {PROPERTY_DATA} from "../utils/constants";
export interface IDataTypesService {
dataTypes:DataTypesMap; //Data type map
selectedPropertiesName:string;
selectedInput:PropertyModel;
alreadySelectedProperties:Array<InputPropertyBase>;
selectedInstance:ComponentInstance;
selectedComponentInputs:Array<InputModel>;
//declare methods
initDataTypes():void;
getAllDataTypes():DataTypesMap;
getFirsLevelOfDataTypeProperties(dataTypeName:string):Array<DataTypePropertyModel>;
isDataTypeForSchemaType(property:SchemaProperty):boolean;
isDataTypeForPropertyType(property:PropertyModel):boolean;
isDataTypeForDataTypePropertyType(property:DataTypePropertyModel):boolean;
}
export class DataTypesService implements IDataTypesService {
static '$inject' = [
'sdcConfig',
'$q',
'$http'
];
constructor(private sdcConfig:IAppConfigurtaion,
private $q:ng.IQService,
private $http:ng.IHttpService) {
}
dataTypes:DataTypesMap; //Data type map
selectedPropertiesName:string;
selectedInput:PropertyModel;
alreadySelectedProperties:Array<InputPropertyBase>;
selectedInstance:ComponentInstance;
selectedComponentInputs:Array<InputModel>;
public initDataTypes = ():void => {
this.$http({
url: this.sdcConfig.api.root + this.sdcConfig.api.component_api_root + "dataTypes",
method: "get"
}).then((response:any) => {
this.dataTypes = response.data;
delete this.dataTypes['tosca.datatypes.Root'];
});
};
public getAllDataTypes = ():DataTypesMap => {
return this.dataTypes;
};
//if the dt derived from simple- return the first parent type, else- return null
private getTypeForDataTypeDerivedFromSimple = (dataTypeName:string):string => {
/////////temporary hack for tosca primitives///////////////////////
if (!this.dataTypes[dataTypeName]) {
return 'string';
}
///////////////////////////////////////////////////////////////////
if (this.dataTypes[dataTypeName].derivedFromName == "tosca.datatypes.Root" || this.dataTypes[dataTypeName].properties) {
return null;
}
if (PROPERTY_DATA.SIMPLE_TYPES.indexOf(this.dataTypes[dataTypeName].derivedFromName) > -1) {
return this.dataTypes[dataTypeName].derivedFromName
}
return this.getTypeForDataTypeDerivedFromSimple(this.dataTypes[dataTypeName].derivedFromName);
};
//return list of data type properties and all its parents properties
//(not include the properties of its properties, in case this data type has not primitive properties)
public getFirsLevelOfDataTypeProperties = (dataTypeName:string):Array<DataTypePropertyModel> => {
let properties = this.dataTypes[dataTypeName].properties || [];
if (this.dataTypes[dataTypeName].derivedFromName != "tosca.datatypes.Root") {
properties = this.getFirsLevelOfDataTypeProperties(this.dataTypes[dataTypeName].derivedFromName).concat(properties);
}
return properties;
};
//return false when type= data type (=not simple type) that not derived from simple type
public isDataTypeForSchemaType = (property:SchemaProperty):boolean=> {
property.simpleType = "";
if (property.type && PROPERTY_DATA.TYPES.indexOf(property.type) > -1) {
return false;
}
let simpleType = this.getTypeForDataTypeDerivedFromSimple(property.type);
if (simpleType) {
property.simpleType = simpleType;
return false;
}
return true;
};
public isDataTypeForPropertyType = (property:PropertyModel):boolean=> {
property.simpleType = "";
if (property.type && PROPERTY_DATA.TYPES.indexOf(property.type) > -1) {
return false;
}
let simpleType = this.getTypeForDataTypeDerivedFromSimple(property.type);
if (simpleType) {
property.simpleType = simpleType;
return false;
}
return true;
};
public isDataTypeForDataTypePropertyType = (property:DataTypePropertyModel):boolean=> {
property.simpleType = "";
if (property.type && PROPERTY_DATA.TYPES.indexOf(property.type) > -1) {
return false;
}
let simpleType = this.getTypeForDataTypeDerivedFromSimple(property.type);
if (simpleType) {
property.simpleType = simpleType;
return false;
}
return true;
};
}
|