1 <div include-padding="true" class="sdc-workspace-general-step">
3 <form novalidate class="w-sdc-form" name="editForm" validation-on-load form-to-validate="editForm">
5 <div class="w-sdc-form-section-container">
7 <!--------------------- IMPORT TOSCA FILE USING BROWSE (ALSO VFC) -------------------->
8 <div class="i-sdc-form-item" ng-if="isShowFileBrowse">
9 <label class="i-sdc-form-label" data-ng-class="{'required':isCreateMode()}">{{browseFileLabel}}</label>
10 <file-upload id="fileUploadElement"
11 class="i-sdc-form-input"
12 element-name="fileElement"
13 element-disabled="{{!isCreateMode()&&!(isEditMode()&&component.resourceType=='VF')}} || {{isViewMode()}}"
14 form-element="editForm"
15 file-model="component.importedFile"
16 on-file-changed-in-directive="uploadFileChangedInGeneralTab"
17 extensions="{{importedFileExtension}}"
18 default-text="'Browse to select file'"
19 data-ng-class="{'error':!(isEditMode()&&component.resourceType=='VF') && (!editForm.fileElement.$valid || !component.importedFile.filename)}"></file-upload>
22 <!--------------------- IMPORT TOSCA FILE USING ONBOARDING -------------------->
23 <div class="i-sdc-form-item" ng-if="isShowOnboardingSelectionBrowse">
24 <label class="i-sdc-form-label required">Select VSP</label>
25 <div class="i-sdc-form-file-upload i-sdc-form-input">
26 <span class="i-sdc-form-file-name" data-tests-id="filename">{{(fileModel && fileModel.filename) || importedToscaBrowseFileText}}</span>
27 <div class="i-sdc-form-file-upload-x-btn" ng-click="cancel()" data-ng-show="fileModel.filename && fileModel.filename!=='' && elementDisabled!=='true'"></div>
28 <input type="button" name="fileElement"/>
29 <div class="file-upload-browse-btn" data-ng-click="openOnBoardingModal()" data-tests-id="browseButton">Browse</div>
33 <div class="input-error-file-upload" data-ng-show="component.importedFile && (!editForm.fileElement.$valid || !component.importedFile.filename)">
34 <!-- editForm.fileElement.$error.required <== Can not use this, because the browse is done from outside for the first time -->
35 <span ng-show="!(isEditMode()&&component.resourceType=='VF')&&!component.importedFile.filename" translate="NEW_SERVICE_RESOURCE_ERROR_TOSCA_FILE_REQUIRED"></span><!-- Required -->
36 <span ng-show="editForm.fileElement.$error.maxsize" translate="VALIDATION_ERROR_MAX_FILE_SIZE"></span>
37 <span ng-show="editForm.fileElement.$error.filetype" translate="NEW_SERVICE_RESOURCE_ERROR_VALID_TOSCA_EXTENSIONS" translate-values="{'extensions': '{{importedFileExtension}}' }"></span>
38 <span ng-show="editForm.fileElement.$error.emptyFile" translate="VALIDATION_ERROR_EMPTY_FILE"></span>
40 <!--------------------- IMPORT TOSCA FILE -------------------->
42 <div class="w-sdc-form-columns-wrapper">
44 <div class="w-sdc-form-column">
46 <!--------------------- NAME -------------------->
47 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.componentName)}">
48 <label class="i-sdc-form-label required">Name</label>
49 <input class="i-sdc-form-input"
50 data-ng-class="{'view-mode': isViewMode()}"
52 data-ng-init="isCreateMode() && validateName(true)"
53 data-ng-maxlength="{{component.isProduct()?'25':'50'}}"
54 maxlength="{{component.isProduct()?'25':'50'}}"
55 data-ng-minlength="{{component.isProduct()?'4':'0'}}"
56 minlength="{{component.isProduct()?'4':'0'}}"
57 data-ng-model="component.name"
60 data-ng-model-options="{ debounce: 500 }"
61 data-ng-pattern="validation.componentNameValidationPattern"
62 data-ng-disabled="component.isAlreadyCertified()"
65 ng-readonly="isViewMode()"
68 <div class="input-error" data-ng-show="validateField(editForm.componentName)">
69 <span ng-show="editForm.componentName.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_RESOURCE_NAME_REQUIRED"></span>
70 <span ng-show="editForm.componentName.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '50' }"></span>
71 <span ng-show="editForm.componentName.$error.minlength" translate="VALIDATION_ERROR_MIN_LENGTH" translate-values="{'min': '4' }"></span>
72 <span ng-show="editForm.componentName.$error.nameExist" translate="NEW_SERVICE_RESOURCE_ERROR_NAME_EXISTS"></span>
73 <span ng-show="editForm.componentName.$error.pattern" translate="VALIDATION_ERROR_INVALID_NAME"></span>
76 <!--------------------- NAME -------------------->
78 <!--------------------- FULL NAME -------------------->
79 <div ng-if="component.isProduct()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.fullName)}">
80 <label class="i-sdc-form-label required">Full Name</label>
81 <input class="i-sdc-form-input"
83 data-ng-class="{'view-mode': isViewMode()}"
84 data-ng-change="validateName()"
85 data-ng-maxlength="100"
89 data-ng-model="component.fullName"
92 data-ng-model-options="{ debounce: 500 }"
93 data-ng-pattern="validation.commentValidationPattern"
94 data-tests-id="fullName"
96 ng-readonly="isViewMode()"
99 <div class="input-error" data-ng-show="validateField(editForm.fullName)">
100 <span ng-show="editForm.fullName.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_RESOURCE_NAME_REQUIRED"></span>
101 <span ng-show="editForm.fullName.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '50' }"></span>
102 <span ng-show="editForm.fullName.$error.minlength" translate="VALIDATION_ERROR_MIN_LENGTH" translate-values="{'min': '4' }"></span>
103 <span ng-show="editForm.fullName.$error.nameExist" translate="NEW_SERVICE_RESOURCE_ERROR_NAME_EXISTS"></span>
104 <span ng-show="editForm.fullName.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
107 <!--------------------- NAME -------------------->
109 <!--------------------- DESCRIPTION -------------------->
110 <div class="i-sdc-form-item"
111 data-ng-class="{'error': validateField(editForm.description)}">
112 <label class="i-sdc-form-label required">Description</label>
113 <textarea class="description"
115 data-ng-class="{'view-mode': isViewMode()}"
116 data-ng-maxlength="1024"
118 data-ng-model="component.description"
119 data-ng-model-options="{ debounce: 500 }"
120 data-ng-pattern="validation.commentValidationPattern"
122 data-tests-id="description"></textarea>
123 <!-- placeholder="Description here..." -->
125 <div class="input-error" data-ng-show="validateField(editForm.description)">
126 <span ng-show="editForm.description.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_RESOURCE_DESCRIPTION_REQUIRED"></span>
127 <span ng-show="editForm.description.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '1024' }"></span>
128 <span ng-show="editForm.description.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
131 <!--------------------- DESCRIPTION -------------------->
133 <!--------------------- CATEGORIES -------------------->
134 <div class="i-sdc-form-item"
135 data-ng-class="{'error': validateField(editForm.category)}"
136 data-ng-if="!component.isProduct()">
137 <loader data-display="!categories && !initCategoreis()" relative="true"></loader>
138 <label class="i-sdc-form-label required">Category</label>
139 <select class="i-sdc-form-select"
142 data-ng-class="{'view-mode': isViewMode()}"
143 data-ng-change="onCategoryChange()"
144 data-ng-disabled="component.isAlreadyCertified() || (component.isCsarComponent() && component.selectedCategory && component.selectedCategory!=='')"
145 data-ng-model="componentCategories.selectedCategory"
146 data-tests-id="selectGeneralCategory"
148 <option value="">Select category</option>
149 <optgroup ng-if="component.isResource()" data-ng-repeat="mainCategory in categories | orderBy:['name']" label="{{mainCategory.name}}" data-tests-id="{{mainCategory.name}}">
150 <option data-ng-repeat="subCategory in mainCategory.subcategories track by $index"
151 data-ng-selected="componentCategories.selectedCategory === calculateUnique(mainCategory.name,subCategory.name)"
152 data-tests-id="{{subCategory.name}}"
153 value="{{calculateUnique(mainCategory.name, subCategory.name)}}">{{subCategory.name}}
157 <option ng-if="component.isService()" data-ng-repeat="mainCategory in categories | orderBy:['name']"
158 data-ng-selected="component.selectedCategory===mainCategory.name"
159 value="{{mainCategory.name}}"
160 data-tests-id="{{mainCategory.name}}">{{mainCategory.name}}</option>
163 <div class="input-error" data-ng-show="validateField(editForm.category)">
164 <span ng-show="editForm.category.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_CATEGORY_REQUIRED"></span>
167 <!--------------------- CATEGORIES -------------------->
169 <!--------------------- PROJECT CODE -------------------->
170 <div class="i-sdc-form-item" data-ng-if="!component.isResource()"
171 data-ng-class="{'error': validateField(editForm.projectCode)}">
172 <label class="i-sdc-form-label required" translate="GENERAL_LABEL_PROJECT_CODE"></label>
173 <input class="i-sdc-form-input" type="text"
174 data-ng-model="component.projectCode"
175 data-ng-class="{'view-mode': isViewMode()}"
176 data-ng-model-options="{ debounce: 500 }"
180 data-ng-pattern="validation.projectCodeValidationPattern"
181 data-tests-id="projectCode"
184 <div class="input-error" data-ng-show="validateField(editForm.projectCode)">
185 <span ng-show="editForm.projectCode.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_PROJECT_CODE_REQUIRED"></span>
186 <span ng-show="editForm.projectCode.$error.pattern" translate="NEW_SERVICE_RESOURCE_ERROR_PROJECT_CODE_NOT_VALID"></span>
191 <!--------------------- ECOMPGENERATEDNAMING -------------------->
193 <div class="i-sdc-form-item"
194 data-ng-class="{'error': validateField(editForm.ecompGeneratedNaming)}"
195 data-ng-if="component.isService()">
196 <label class="i-sdc-form-label">Ecomp Generated Naming</label>
197 <select class="i-sdc-form-select"
199 name="ecompGeneratedNaming"
200 data-ng-change="onEcompGeneratedNamingChange()"
201 data-ng-class="{'view-mode': isViewMode()}"
202 data-ng-model="component.ecompGeneratedNaming"
203 data-tests-id="ecompGeneratedNaming">
204 <option ng-value="true">true</option>
205 <option ng-value="false">false</option>
207 <div class="input-error" data-ng-show="validateField(editForm.ecompGeneratedNaming)">
211 <!--------------------- CATEGORIES -------------------->
213 <!--------------------- NAMING POLICY -------------------->
214 <div ng-if="component.isService()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.namingPolicy)}">
215 <label class="i-sdc-form-label">Naming policy</label>
216 <input class="i-sdc-form-input"
218 data-ng-class="{'view-mode': isViewMode() || !component.ecompGeneratedNaming}"
219 data-ng-maxlength="100"
221 data-ng-model="component.namingPolicy"
223 data-ng-model-options="{ debounce: 500 }"
224 data-ng-pattern="validation.commentValidationPattern"
225 data-tests-id="namingPolicy"
227 ng-readonly="isViewMode() || !component.ecompGeneratedNaming"
230 <div class="input-error" data-ng-show="validateField(editForm.namingPolicy)">
231 <span ng-show="editForm.namingPolicy.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '100' }"></span>
232 <span ng-show="editForm.namingPolicy.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
235 <!--------------------- NAMING POLICY -------------------->
238 <!--------------------- VENDOR NAME -------------------->
239 <div ng-if="component.isResource()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.vendorName)}">
240 <label class="i-sdc-form-label required">Vendor</label>
241 <input class="i-sdc-form-input" type="text"
242 data-ng-class="{'view-mode': isViewMode()}"
243 data-ng-model="component.vendorName"
244 data-ng-model-options="{ debounce: 500 }"
245 data-ng-maxlength="25"
247 ng-click="oldValue = component.vendorName"
249 data-ng-change="onVendorNameChange(oldValue)"
250 data-ng-pattern="validation.vendorValidationPattern"
252 data-ng-disabled="component.isAlreadyCertified() || (component.isCsarComponent() && component.vendorName && component.vendorName!=='')"
253 data-tests-id="vendorName"
256 <div class="input-error" data-ng-show="validateField(editForm.vendorName)">
257 <span ng-show="editForm.vendorName.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_VENDOR_NAME_REQUIRED"></span>
258 <span ng-show="editForm.vendorName.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '25' }"></span>
259 <span ng-show="editForm.vendorName.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
264 <!--------------------- VENDOR NAME -------------------->
266 <!--------------------- VENDOR RELEASE -------------------->
267 <div ng-if="component.isResource()"
268 class="i-sdc-form-item"
269 data-ng-class="{'error': validateField(editForm.vendorRelease)}">
270 <label class="i-sdc-form-label required">Vendor Release</label>
271 <input class="i-sdc-form-input" type="text"
272 data-ng-class="{'view-mode': isViewMode()}"
273 data-ng-model="component.vendorRelease"
274 data-ng-model-options="{ debounce: 500 }"
275 data-ng-maxlength="25"
278 data-ng-pattern="validation.vendorValidationPattern"
280 data-ng-disabled="component.isCsarComponent() && component.vendorRelease && component.vendorRelease!==''"
281 data-tests-id="vendorRelease"
284 <div class="input-error" data-ng-show="validateField(editForm.vendorRelease)">
285 <span ng-show="editForm.vendorRelease.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_VENDOR_RELEASE_REQUIRED"></span>
286 <span ng-show="editForm.vendorRelease.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '128' }"></span>
287 <span ng-show="editForm.vendorRelease.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
290 <!--------------------- VENDOR RELEASE -------------------->
294 </div><!-- Close w-sdc-form-column -->
296 <div class="w-sdc-form-column">
298 <!--------------------- RESOURCE TAGS -------------------->
299 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.tags)}">
300 <label class="i-sdc-form-label">Tags</label>
302 <sdc-tags form-element="editForm" element-name="tags" max-tags="20" class="i-sdc-form-item-tags"
303 sdc-disabled="isViewMode()"
304 tags="component.tags"
305 pattern="validation.tagValidationPattern"
306 special-tag="component.name"></sdc-tags>
308 <div class="input-error" data-ng-show="validateField(editForm.tags)">
309 <span ng-show="editForm.tags.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
310 <span ng-show="editForm.tags.$error.nameExist" translate="NEW_SERVICE_RESOURCE_ERROR_TAG_NAME_EXIST"></span>
313 <!--------------------- RESOURCE TAGS -------------------->
315 <!--------------------- USER ID -------------------->
316 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.contactId)}">
317 <label class="i-sdc-form-label " data-ng-class="{'required':!component.isProduct()}" translate="GENERAL_LABEL_CONTACT_ID"></label>
318 <input class="i-sdc-form-input" type="text" data-ng-if="!component.isProduct()"
319 data-ng-model="component.contactId"
320 data-ng-class="{'view-mode': isViewMode()}"
321 data-ng-required="!component.isProduct()"
323 data-ng-pattern="validation.contactIdValidationPattern"
324 data-ng-model-options="{ debounce: 500 }"
325 data-tests-id="contactId"
328 <input class="i-sdc-form-input" type="text" data-ng-if="component.isProduct()"
329 data-ng-model="component.contacts[0]"
330 data-ng-class="{'view-mode': isViewMode()}"
331 data-ng-required="!component.isProduct()"
333 data-ng-pattern="validation.contactIdValidationPattern"
334 data-ng-model-options="{ debounce: 500 }"
335 data-tests-id="contactId"
339 <div class="input-error" data-ng-show="validateField(editForm.contactId)">
340 <span ng-show="editForm.contactId.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_CONTACT_REQUIRED"></span>
341 <span ng-show="editForm.contactId.$error.pattern" translate="NEW_SERVICE_RESOURCE_ERROR_CONTACT_NOT_VALID"></span>
344 <!--------------------- USER ID -------------------->
347 </div><!-- Close w-sdc-form-column -->
350 </div><!-- Close w-sdc-form-section-container -->