Provide tosca function capability to complex type fields in composition view
[sdc.git] / catalog-ui / src / app / directives / property-types / data-type-fields-structure / data-type-fields-structure.html
1 <!--
2   ~ Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
3   ~
4   ~ Licensed under the Apache License, Version 2.0 (the "License");
5   ~ you may not use this file except in compliance with the License.
6   ~ You may obtain a copy of the License at
7   ~
8   ~      http://www.apache.org/licenses/LICENSE-2.0
9   ~
10   ~ Unless required by applicable law or agreed to in writing, software
11   ~ distributed under the License is distributed on an "AS IS" BASIS,
12   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   ~ See the License for the specific language governing permissions and
14   ~ limitations under the License.
15   -->
16
17
18 <div class="data-type-fields-structure">
19     <div class="open-close">
20         <div class="open-close-button" data-ng-class="{'expand':expand,'collapse':!expand}" data-ng-click="expandAndCollapse()"></div>
21         <span class="data-type-name">{{typeName.replace("org.openecomp.datatypes.heat.","")}}</span>
22     </div>
23     <div data-ng-show="expand" data-ng-repeat="property in dataTypeProperties" class="property">
24         <div class="i-sdc-form-item property-name">
25             <div tooltips tooltip-content="{{property.name}}">
26                 <input class="i-sdc-form-input"
27                        type="text"
28                        readonly="readonly"
29                        value="{{property.name}}"/>
30             </div>
31         </div>
32         <!--<div class="property-value">-->
33         <div class="inner-structure tosca-box tosca-parent">
34             <div class="tosca-box" data-ng-if="complexToscapath == null">
35                 <form class="temp-form" data-ng-if="isService">
36                     <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}" data-ng-checked="verifyTosca(property.name) == false" data-ng-click="onEnableTosca(false,property.name)"/> 
37                     Value
38                     <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}" data-ng-checked="verifyTosca(property.name)" data-ng-click="onEnableTosca(true,property.name)" /> 
39                     {{'TOSCA_FUNCTION_LABEL' | translate}}
40                 </form>
41             </div>
42             <div data-ng-if="verifyTosca(property.name)" class="div-tosca-function">
43                 <tosca-function [property]="getSubProperty(property.name)"
44                                 [component-instance-map]="componentInstanceMap"
45                                 [allow-clear]="false"
46                                 [composition-map]="true"
47                                 [composition-map-key]="property.name"
48                                 (on-valid-function)="onGetToscaFunction($event,property.name)"
49                 >
50                 </tosca-function>
51             </div>
52             <div data-ng-if="dataTypesService.isDataTypeForDataTypePropertyType(property) && !verifyTosca(property.name)" class="tosca-box">
53                 <fields-structure value-obj-ref="(valueObjRef[property.name])"
54                                 type-name="property.type"
55                                 parent-property="parentProperty"
56                                 component-instance-map="componentInstanceMap"
57                                 parent-form-obj="parentFormObj"
58                                 fields-prefix-name="fieldsPrefixName+property.name"
59                                 read-only="readOnly"
60                                 is-service="isService"
61                                 complex-toscapath="property.name"
62                                 default-value="{{currentTypeDefaultValue[property.name]}}">
63
64                 </fields-structure>
65             </div>
66             <div data-ng-if="!dataTypesService.isDataTypeForDataTypePropertyType(property) && !verifyTosca(property.name)" ng-switch="property.type" class="tosca-box">
67                 <div ng-switch-when="map">
68                     <type-map value-obj-ref="valueObjRef[property.name]"
69                             schema-property="getSubProperty(property.name).schema.property"
70                             parent-property="getSubProperty(property.name)"
71                             component-instance-map="componentInstanceMap"
72                             parent-form-obj="parentFormObj[fieldsPrefixName + property.name]"
73                             fields-prefix-name="fieldsPrefixName+property.name"
74                             read-only="readOnly"
75                             default-value="{{currentTypeDefaultValue[property.name]}}"
76                             is-service="isService"
77                             complex-toscapath="property.name"
78                             types="types"></type-map>
79                 </div>
80                 <div ng-switch-when="list">
81                     <type-list value-obj-ref="valueObjRef[property.name]"
82                             schema-property="getSubProperty(property.name).schema.property"
83                             parent-property="getSubProperty(property.name)"
84                             component-instance-map="componentInstanceMap"
85                             parent-form-obj="parentFormObj[fieldsPrefixName + property.name]"
86                             fields-prefix-name="fieldsPrefixName+property.name"
87                             read-only="readOnly"
88                             default-value="{{currentTypeDefaultValue[property.name]}}"
89                             is-service="isService"
90                             complex-toscapath="property.name"
91                             types="types"></type-list>
92                 </div>
93                 <div ng-switch-default class="primitive-value-field">
94                     <div class="i-sdc-form-item" data-ng-class="{error:(parentFormObj[fieldsPrefixName+property.name].$dirty && parentFormObj[fieldsPrefixName+property.name].$invalid)}">
95                         <!-- Has Constraints -->
96
97                         <!--<select class="i-sdc-form-select"-->
98                         <!--ng-if="(property.constraints)"-->
99                         <!--data-ng-disabled="readOnly"-->
100                         <!--name="{{fieldsPrefixName+property.name}}"-->
101                         <!--data-ng-change="onValueChange(property.name,'constraintsChange')"-->
102                         <!--data-ng-model="valueObjRef[property.name]"-->
103                         <!--&gt;-->
104                         <!--&lt;!&ndash; Get the default value in case exist &ndash;&gt;-->
105                         <!--<option value = "{{valueObjRef[property.name]}}" name = "{{valueObjRef[property.name]}}" hidden selected>-->
106                         <!--{{valueObjRef[property.name]}}-->
107                         <!--</option> -->
108                         <!--&lt;!&ndash; add all constratint to Select list &ndash;&gt;-->
109                         <!--<option ng-repeat='value in property.constraints[0].validValues' value="{{value}}" >-->
110                         <!--{{value}}-->
111                         <!--</option> -->
112                         <!--</select>-->
113                         <!-- Input without constraints -->
114                         <input class="i-sdc-form-input"
115                             data-tests-id="{{fieldsPrefixName+property.name}}"
116                             ng-if="!((property.simpleType||property.type) == 'boolean')"
117                             data-ng-maxlength="100"
118                             data-ng-readonly="readOnly"
119                             maxlength="{{(property.simpleType||property.type) == 'integer'? 10 : 100}}"
120                             data-ng-model="valueObjRef[property.name]"
121                             type="text"
122                             name="{{fieldsPrefixName+property.name}}"
123                             data-ng-pattern="getValidationPattern((property.simpleType||property.type))"
124                             data-ng-model-options="{ debounce: 200 }"
125                             data-ng-change="inputOnValueChange(property,valueObjRef[property.name])"
126                             autofocus
127                         />
128                         <select class="i-sdc-form-select"
129                                 data-tests-id="{{fieldsPrefixName+property.name}}"
130                                 ng-if="(property.simpleType||property.type) == 'boolean'"
131                                 data-ng-disabled="readOnly"
132                                 name="{{fieldsPrefixName+property.name}}"
133                                 data-ng-change="onValueChange(property.name,'boolean')"
134                                 data-ng-model="valueObjRef[property.name]"
135                                 data-ng-options="option.v as option.n for option in [{ n: '', v: undefined }, { n: 'false', v: false }, { n: 'true', v: true }]">
136                         </select>
137
138                         <div class="input-error" data-ng-show="parentFormObj[fieldsPrefixName+property.name].$dirty && parentFormObj[fieldsPrefixName+property.name].$invalid">
139                             <span ng-show="parentFormObj[fieldsPrefixName+property.name].$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '100' }"></span>
140                             <span ng-show="parentFormObj[fieldsPrefixName+property.name].$error.pattern" translate="PROPERTY_EDIT_PATTERN"></span>
141                             <span ng-show="parentFormObj[fieldsPrefixName+property.name].$error.customValidation" translate="PROPERTY_EDIT_MAP_UNIQUE_KEYS"></span>
142                         </div>
143                     </div>
144                 </div>
145             </div>
146         </div>
147         <!--</div>-->
148
149     </div>
150 </div>