Provide tosca function capability to complex type fields in composition view
[sdc.git] / catalog-ui / src / app / directives / property-types / type-list / type-list-directive.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 <div class="dt-list">
18     <div data-ng-if="valueObjRef.length > 0" data-ng-repeat="i in getNumber(valueObjRef.length) track by $index" class="dt-list-item">
19         <span class="delete-dt-list-item" data-ng-click="deleteListItem($index)"></span>
20         <div data-ng-if="isSchemaTypeDataType">
21             <fields-structure value-obj-ref="valueObjRef[$index]"
22                             type-name="schemaProperty.type"
23                             parent-form-obj="parentFormObj"
24                             parent-property="parentProperty"
25                             fields-prefix-name="fieldsPrefixName+''+$index"
26                             types="types"
27                             read-only="readOnly"></fields-structure>
28         </div>
29         <div data-ng-if="!isSchemaTypeDataType">
30             <div class="i-sdc-form-item list-new-item" data-ng-class="{error:(parentFormObj['listNewItem'+fieldsPrefixName].$dirty && parentFormObj['listNewItem'+fieldsPrefixName].$invalid)}"
31                 ng-if="schemaProperty.type !== 'map'">
32                 <form class="temp-form" data-ng-if="isService && complexToscapath == null">
33                     <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}-{{$index}}" data-ng-checked="{{showToscaFunction[$index] == false}}" data-ng-click="onEnableTosca(false,$index)"/> 
34                     Value
35                     <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}-{{$index}}" data-ng-checked="{{showToscaFunction[$index]}}" data-ng-click="onEnableTosca(true,$index)" /> 
36                     {{'TOSCA_FUNCTION_LABEL' | translate}}
37                 </form>
38                 <input class="i-sdc-form-input"
39                     data-tests-id="listNewItem{{fieldsPrefixName}}"
40                     ng-if="!constraints && !((schemaProperty.simpleType||schemaProperty.type) == 'boolean') && !showToscaFunction[$index]"
41                     data-ng-disabled="readOnly"
42                     data-ng-model="valueObjRef[$index]"
43                     type="text"
44                     name="listNewItem{{fieldsPrefixName}}"
45                     data-ng-pattern="getValidationPattern((schemaProperty.simpleType||schemaProperty.type))"
46                     data-ng-change="addValueToList(valueObjRef[$index], $index);$event.stopPropagation();"
47                     data-ng-model-options="{ debounce: 200 }"
48                     data-ng-maxlength="maxLength"
49                     maxlength="{{maxLength}}"
50                     data-required
51                     autofocus />
52                 <select class="i-sdc-form-select"
53                         data-tests-id="listNewItem{{fieldsPrefixName}}"
54                         ng-if="!constraints && (schemaProperty.simpleType||schemaProperty.type) == 'boolean' && !showToscaFunction[$index]"
55                         data-ng-disabled="readOnly"
56                         name="listNewItem{{fieldsPrefixName}}"
57                         data-ng-model="valueObjRef[$index]">
58                     <option value="true">true</option>
59                     <option value="false">false</option>
60                 </select>
61
62                 <div data-ng-if="showToscaFunction[$index]" class="div-tosca-function">
63                     <tosca-function [property]="parentProperty"
64                                     [component-instance-map]="componentInstanceMap"
65                                     [allow-clear]="false"
66                                     [composition-map]="true"
67                                     [composition-map-key]="$index+''"
68                                     (on-valid-function)="onGetToscaFunction($event,$index)"
69                     >
70                     </tosca-function>
71                 </div>
72     
73                 <select class="i-sdc-form-select"
74                     data-tests-id="constraints"
75                     ng-if="constraints"
76                     data-ng-disabled="readOnly"
77                     data-ng-model="valueObjRef[$index]">
78                     <!-- Get the default value in case exist -->
79                     <option value = "{{listNewItem.value}" name = "{{listNewItem.value}}" hidden selected>
80                             {{listNewItem.value}}
81                     </option> 
82                     <!-- add all constratint to Select list -->
83                     <option ng-repeat='value in constraints' value="{{value}}" name="{{value}}">
84                         {{value}}
85                     </option>
86                     
87                     
88                 </select>
89     
90                 <div class="input-error" data-ng-show="parentFormObj['listNewItem'+fieldsPrefixName].$dirty && parentFormObj['listNewItem'+fieldsPrefixName].$invalid">
91                     <span ng-show="parentFormObj['listNewItem'+fieldsPrefixName].$error.pattern" translate="PROPERTY_EDIT_PATTERN"></span>
92                     <span ng-show="parentFormObj['listNewItem'+fieldsPrefixName].$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '{{maxLength}}' }"></span>
93                 </div>
94             </div>
95             <div ng-if="schemaProperty.type === 'map'">
96                 <type-map value-obj-ref="value"
97                             schema-property="stringSchema"
98                             parent-form-obj="parentFormObj"
99                             fields-prefix-name="fieldsPrefixName+''+$index"
100                             read-only="readOnly"
101                             default-value="{{undefined}}"
102                             max-length="maxLength"
103                             show-add-btn="true"
104                             constraints="constraints">
105                 </type-map>
106             </div>
107         </div>
108     </div>
109     <div class="add-btn add-list-item" data-tests-id="add-list-item"
110                 data-ng-class="{'disabled': readOnly}" data-ng-click="listNewItem.value='';addListItem();">Add</div>
111 </div>
112