aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/directives/property-types/type-map/type-map-directive.html
blob: f53f5cf205d1409e079a075a8bd945db7a805bc9 (plain)
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
126
127
<!--
  ~ Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->


<div class="type-map">
    <div  ng-if="mapKeys.length > 0" data-ng-repeat="i in getNumber(mapKeys.length) track by $index" class="map-item" data-ng-class="{'primitive-value-map':!isSchemaTypeDataType}">
        <div class="i-sdc-form-item map-item-field" data-ng-class="{error:(parentFormObj['mapKey'+fieldsPrefixName+$index].$dirty && parentFormObj['mapKey'+fieldsPrefixName+$index].$invalid)}">
            <label class="i-sdc-form-label required">Key</label>
            <input class="i-sdc-form-input"
                   data-tests-id="mapKey{{fieldsPrefixName}}{{$index}}"
                   data-ng-model="mapKeys[$index]"
                   type="text"
                   data-ng-maxlength="50"
                   maxlength="50"
                   name="mapKey{{fieldsPrefixName}}{{$index}}"
                   data-ng-pattern="MapKeyValidationPattern"
                   data-ng-model-options="{ debounce: 200 }"
                   data-ng-change="changeKeyOfMap(mapKeys[$index], $index,'mapKey'+fieldsPrefixName+$index);$event.stopPropagation();"
                   data-ng-readonly="readOnly"
                   data-required
                   autofocus/>
            <div class="input-error" data-ng-show="parentFormObj['mapKey'+fieldsPrefixName+$index].$dirty && parentFormObj['mapKey'+fieldsPrefixName+$index].$invalid">
                <span ng-show="parentFormObj['mapKey'+fieldsPrefixName+$index].$error.keyExist" translate="PROPERTY_EDIT_MAP_UNIQUE_KEYS"></span>
                <span ng-show="parentFormObj['mapKey'+fieldsPrefixName+$index].$error.required" translate="VALIDATION_ERROR_REQUIRED" translate-values="{'field': 'Key' }"></span>
                <span ng-show="parentFormObj['mapKey'+fieldsPrefixName+$index].$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '50' }"></span>
                <span ng-show="parentFormObj['mapKey'+fieldsPrefixName+$index].$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
            </div>
        </div>
        <div data-ng-if="!isSchemaTypeDataType" class="i-sdc-form-item map-item-field" data-ng-class="{error:(parentFormObj['mapValue'+fieldsPrefixName+$index].$dirty && parentFormObj['mapValue'+fieldsPrefixName+$index].$invalid)}">
            <label class="i-sdc-form-label required">Value</label>
            <form class="temp-form" data-ng-if="isService">
                <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}-{{$index}}" data-ng-checked="{{showToscaFunction[$index] == false}}" data-ng-click="onEnableTosca(false,$index)"/>
                Value
                <input type="radio" name="hasToscaFunction-{{fieldsPrefixName}}-{{$index}}" data-ng-checked="{{showToscaFunction[$index]}}" data-ng-click="onEnableTosca(true,$index)" ng-disabled="mapKeys[$index] == '' || mapKeys[$index] == null"/>
                {{'TOSCA_FUNCTION_LABEL' | translate}}
            </form>
            <input class="i-sdc-form-input"
                   ng-if="!constraints && !((schemaProperty.simpleType||schemaProperty.type) == 'boolean') && showToscaFunction[$index] == false"
                   data-ng-readonly="readOnly"
                   data-ng-model="valueObjRef[mapKeys[$index]]"
                   type="text"
                   name="mapValue{{fieldsPrefixName}}{{$index}}"
                   data-tests-id="mapValue{{fieldsPrefixName}}{{$index}}"
                   data-ng-pattern="getValidationPattern((schemaProperty.simpleType||schemaProperty.type))"
                   data-ng-change="!parentFormObj['mapValue'+fieldsPrefixName+$index].$error.pattern && parseToCorrectType(valueObjRef, key, (schemaProperty.simpleType||schemaProperty.type))"
                   data-ng-model-options="{ debounce: 200 }"
                   data-ng-maxlength="maxLength"
                   maxlength="{{maxLength}}"
                   data-required
                   autofocus />
            <select class="i-sdc-form-select"
                    data-tests-id="mapValue{{fieldsPrefixName}}{{$index}}"
                    ng-if="!constraints && (schemaProperty.simpleType||schemaProperty.type) == 'boolean' && showToscaFunction[$index] == false"
                    data-ng-disabled="readOnly"
                    name="mapValue{{fieldsPrefixName}}{{$index}}"
                    data-ng-model="valueObjRef[mapKeys[$index]]"
                    data-required>
                <option value="true">true</option>
                <option value="false">false</option>
            </select>
            <div data-ng-if="showToscaFunction[$index]" class="div-tosca-function">
                <tosca-function [property]="parentProperty"
                                [component-instance-map]="componentInstanceMap"
                                [allow-clear]="false"
                                [composition-map]="true"
                                [composition-map-key]="mapKeys[$index]"
                                (on-valid-function)="onGetToscaFunction($event,mapKeys[$index])"
                >
                </tosca-function>
            </div>


            <select class="i-sdc-form-select"
                data-tests-id="constraints"
                ng-if="constraints"
                data-ng-disabled="readOnly"
                data-ng-model="valueObjRef[mapKeys[$index]]">

                <!-- Get the saved value for the relevant key -->
                <option ng-if = "valueObjRef[mapKeys[$index]]" value = "{{valueObjRef[mapKeys[$index]]}}" name = "{{valueObjRef[mapKeys[$index]]}}" hidden selected>
                        {{valueObjRef[mapKeys[$index]]}}
                </option>
                <!-- add all constratint to Select list -->
                <option ng-repeat='value in constraints' value="{{value}}" name="{{value}}">
                    {{value}}
                </option>
            </select>

            <div class="input-error" data-ng-show="parentFormObj['mapValue'+fieldsPrefixName+$index].$dirty && parentFormObj['mapValue'+fieldsPrefixName+$index].$invalid">
                <span ng-show="parentFormObj['mapValue'+fieldsPrefixName+$index].$error.required" translate="VALIDATION_ERROR_REQUIRED" translate-values="{'field': 'Value' }"></span>
                <span ng-show="parentFormObj['mapValue'+fieldsPrefixName+$index].$error.pattern" translate="PROPERTY_EDIT_PATTERN"></span>
                <span ng-show="parentFormObj['mapValue'+fieldsPrefixName+$index].$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '{{maxLength}}' }"></span>
            </div>
        </div>
        <div data-ng-if="isSchemaTypeDataType" class="i-sdc-form-item map-item-field">
            <label class="i-sdc-form-label">Value</label>
            <fields-structure value-obj-ref="valueObjRef[mapKeysStatic[$index]]"
                              type-name="schemaProperty.type"
                              parent-form-obj="parentFormObj"
                              fields-prefix-name="'mapValue'+fieldsPrefixName+''+$index"
                              types="types"
                              read-only="readOnly"
            ></fields-structure>
        </div>
        <span ng-click="deleteMapItem($index)" class="delete-map-item" data-tests-id="delete-map-item{{fieldsPrefixName}}{{$index}}"
              data-ng-class="{'disabled': readOnly}" title="{{'PROPERTY_EDIT_MAP_DELETE_ITEM' | translate}}"></span>
    </div>
    <div class="add-map-item" data-ng-class="{'schema-data-type':isSchemaTypeDataType}" data-ng-if="showAddBtn">
        <div class="add-btn" data-tests-id="add-map-item"
             data-ng-class="{'disabled': readOnly || !schemaProperty.type || mapKeys.indexOf('')>-1 || !isMapKeysUnique}"
             data-ng-click="addMapItemFields()" title="{{'PROPERTY_EDIT_MAP_ADD_ITEM' | translate}}">Add</div>
    </div>
</div>