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 <div class="w-sdc-form-columns-wrapper">
9 <div class="w-sdc-form-column">
10 <div class="upper-general-fields">
11 <div class="selected-icon-container" data-ng-class="{'show-only-on-over':'defaulticon'!=component.icon && !isViewMode()}">
12 <div class="selected-icon-inner-container">
13 <div class="sprite-new update-component-icon" data-ng-click="updateIcon()" data-ng-if="!isViewMode() && possibleToUpdateIcon()"></div>
14 <div class="i-sdc-form-item-suggested-icon large selected-icon {{component.iconSprite}} {{component.icon}}"
15 data-ng-class="{ 'disable': isViewMode() || !possibleToUpdateIcon() }"
16 ng-model="component.icon"
17 tooltips tooltip-content='{{component.icon | translate}}'
22 <div class="name-and-category-fields">
23 <!--------------------- NAME -------------------->
24 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.componentName)}">
25 <label class="i-sdc-form-label required">Name</label>
26 <input class="i-sdc-form-input"
27 data-ng-class="{'view-mode': isViewMode()}"
29 data-ng-init="isCreateMode() && validateName(true)"
30 data-ng-maxlength="50"
32 data-ng-model="component.name"
35 data-ng-model-options="{ debounce: 500 }"
36 data-ng-pattern="validation.componentNameValidationPattern"
37 data-ng-disabled="component.isAlreadyCertified()"
40 ng-readonly="isViewMode()"
43 <div class="input-error" data-ng-show="validateField(editForm.componentName)">
44 <span ng-show="editForm.componentName.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_RESOURCE_NAME_REQUIRED"></span>
45 <span ng-show="editForm.componentName.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '50' }"></span>
46 <span ng-show="editForm.componentName.$error.minlength" translate="VALIDATION_ERROR_MIN_LENGTH" translate-values="{'min': '4' }"></span>
47 <span ng-show="editForm.componentName.$error.nameExist" translate="NEW_SERVICE_RESOURCE_ERROR_NAME_EXISTS"></span>
48 <span ng-show="editForm.componentName.$error.pattern" translate="VALIDATION_ERROR_INVALID_NAME"></span>
51 <!--------------------- NAME -------------------->
55 <!--------------------- CATEGORIES -------------------->
56 <div class="i-sdc-form-item"
57 data-ng-class="{'error': validateField(editForm.category)}">
58 <loader data-display="!categories && !initCategoreis()" relative="true"></loader>
59 <label class="i-sdc-form-label required">Category</label>
60 <select class="i-sdc-form-select"
63 data-ng-class="{'view-mode': isViewMode()}"
64 data-ng-change="onCategoryChange()"
65 data-ng-disabled="component.isAlreadyCertified() || (component.isCsarComponent() && component.selectedCategory && component.selectedCategory!=='')"
66 data-ng-model="componentCategories.selectedCategory"
67 data-tests-id="selectGeneralCategory"
69 <option value="">Select category</option>
70 <optgroup ng-if="component.isResource()" data-ng-repeat="mainCategory in categories | orderBy:['name']" label="{{mainCategory.name}}" data-tests-id="{{mainCategory.name}}">
71 <option data-ng-repeat="subCategory in mainCategory.subcategories track by $index"
72 data-ng-selected="componentCategories.selectedCategory === calculateUnique(mainCategory.name,subCategory.name)"
73 data-tests-id="{{subCategory.name}}"
74 value="{{calculateUnique(mainCategory.name, subCategory.name)}}">{{subCategory.name}}
78 <option ng-if="component.isService()" data-ng-repeat="mainCategory in categories | orderBy:['name']"
79 data-ng-selected="component.selectedCategory===mainCategory.name"
80 value="{{mainCategory.name}}"
81 data-tests-id="{{mainCategory.name}}">{{mainCategory.name}}</option>
84 <div class="input-error" data-ng-show="validateField(editForm.category)">
85 <span ng-show="editForm.category.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_CATEGORY_REQUIRED"></span>
88 <!--------------------- CATEGORIES -------------------->
91 <!--------------------- RESOURCE TAGS -------------------->
92 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.tags)}">
93 <label class="i-sdc-form-label">Tags</label>
95 <sdc-tags form-element="editForm" element-name="tags" max-tags="20" class="i-sdc-form-item-tags"
96 sdc-disabled="isViewMode()"
98 pattern="validation.tagValidationPattern"
99 special-tag="component.name"></sdc-tags>
101 <div class="input-error" data-ng-show="validateField(editForm.tags)">
102 <span ng-show="editForm.tags.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
103 <span ng-show="editForm.tags.$error.nameExist" translate="NEW_SERVICE_RESOURCE_ERROR_TAG_NAME_EXIST"></span>
106 <!--------------------- RESOURCE TAGS -------------------->
108 <!--------------------- DESCRIPTION -------------------->
109 <div class="i-sdc-form-item description-field"
110 data-ng-class="{'error': validateField(editForm.description)}">
111 <label class="i-sdc-form-label required">Description</label>
112 <textarea class="description"
114 data-ng-class="{'view-mode': isViewMode()}"
115 data-ng-maxlength="1024"
117 data-ng-model="component.description"
118 data-ng-model-options="{ debounce: 500 }"
119 data-ng-pattern="validation.commentValidationPattern"
121 data-tests-id="description"></textarea>
122 <!-- placeholder="Description here..." -->
124 <div class="input-error" data-ng-show="validateField(editForm.description)">
125 <span ng-show="editForm.description.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_RESOURCE_DESCRIPTION_REQUIRED"></span>
126 <span ng-show="editForm.description.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '1024' }"></span>
127 <span ng-show="editForm.description.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
130 <!--------------------- DESCRIPTION -------------------->
132 </div><!-- Close w-sdc-form-column -->
134 <div class="w-sdc-form-column">
135 <!--------------------- IMPORT TOSCA FILE USING BROWSE (ALSO VFC) -------------------->
136 <div class="i-sdc-form-item" ng-if="isShowFileBrowse">
137 <label class="i-sdc-form-label" data-ng-class="{'required':isCreateMode()}">{{browseFileLabel}}</label>
138 <file-upload id="fileUploadElement"
139 class="i-sdc-form-input"
140 element-name="fileElement"
141 element-disabled="{{!isCreateMode()&&!(isEditMode()&&component.resourceType=='VF')}} || {{isViewMode()}}"
142 form-element="editForm"
143 file-model="component.importedFile"
144 on-file-changed-in-directive="uploadFileChangedInGeneralTab"
145 extensions="{{importedFileExtension}}"
146 default-text="'Browse to select file'"
147 data-ng-class="{'error':!(isEditMode()&&component.resourceType=='VF') && (!editForm.fileElement.$valid || !component.importedFile.filename)}"></file-upload>
150 <!--------------------- IMPORT TOSCA FILE USING ONBOARDING -------------------->
151 <div class="i-sdc-form-item" ng-if="isShowOnboardingSelectionBrowse">
152 <label class="i-sdc-form-label required">Select VSP</label>
153 <div class="i-sdc-form-file-upload i-sdc-form-input">
154 <span class="i-sdc-form-file-name" data-tests-id="filename">{{(fileModel && fileModel.filename) || importedToscaBrowseFileText}}</span>
155 <div class="i-sdc-form-file-upload-x-btn" ng-click="cancel()" data-ng-show="fileModel.filename && fileModel.filename!=='' && elementDisabled!=='true'"></div>
156 <input type="button" name="fileElement"/>
157 <div class="file-upload-browse-btn" data-ng-click="openOnBoardingModal()" data-tests-id="browseButton">Browse</div>
161 <div class="input-error-file-upload" data-ng-show="component.importedFile && (!editForm.fileElement.$valid || !component.importedFile.filename)">
162 <!-- editForm.fileElement.$error.required <== Can not use this, because the browse is done from outside for the first time -->
163 <span ng-show="!(isEditMode()&&component.resourceType=='VF')&&!component.importedFile.filename" translate="NEW_SERVICE_RESOURCE_ERROR_TOSCA_FILE_REQUIRED"></span><!-- Required -->
164 <span ng-show="editForm.fileElement.$error.maxsize" translate="VALIDATION_ERROR_MAX_FILE_SIZE"></span>
165 <span ng-show="editForm.fileElement.$error.filetype" translate="NEW_SERVICE_RESOURCE_ERROR_VALID_TOSCA_EXTENSIONS" translate-values="{'extensions': '{{importedFileExtension}}' }"></span>
166 <span ng-show="editForm.fileElement.$error.emptyFile" translate="VALIDATION_ERROR_EMPTY_FILE"></span>
168 <!--------------------- IMPORT TOSCA FILE -------------------->
170 <!--------------------- USER ID -------------------->
171 <div class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.contactId)}">
172 <label class="i-sdc-form-label required" translate="GENERAL_LABEL_CONTACT_ID"></label>
173 <input class="i-sdc-form-input" type="text"
174 data-ng-model="component.contactId"
175 data-ng-class="{'view-mode': isViewMode()}"
176 data-ng-required="true"
178 data-ng-pattern="validation.contactIdValidationPattern"
179 data-ng-model-options="{ debounce: 500 }"
180 data-tests-id="contactId"
184 <div class="input-error" data-ng-show="validateField(editForm.contactId)">
185 <span ng-show="editForm.contactId.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_CONTACT_REQUIRED"></span>
186 <span ng-show="editForm.contactId.$error.pattern" translate="NEW_SERVICE_RESOURCE_ERROR_CONTACT_NOT_VALID"></span>
189 <!--------------------- USER ID -------------------->
191 <!--------------------- PROJECT CODE -------------------->
192 <div class="i-sdc-form-item" data-ng-if="!component.isResource()"
193 data-ng-class="{'error': validateField(editForm.projectCode)}">
194 <label class="i-sdc-form-label required" translate="GENERAL_LABEL_PROJECT_CODE"></label>
195 <input class="i-sdc-form-input" type="text"
196 data-ng-model="component.projectCode"
197 data-ng-class="{'view-mode': isViewMode()}"
198 data-ng-model-options="{ debounce: 500 }"
202 data-ng-pattern="validation.projectCodeValidationPattern"
203 data-tests-id="projectCode"
206 <div class="input-error" data-ng-show="validateField(editForm.projectCode)">
207 <span ng-show="editForm.projectCode.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_PROJECT_CODE_REQUIRED"></span>
208 <span ng-show="editForm.projectCode.$error.pattern" translate="NEW_SERVICE_RESOURCE_ERROR_PROJECT_CODE_NOT_VALID"></span>
212 <!--------------------- VENDOR NAME -------------------->
213 <div ng-if="component.isResource()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.vendorName)}">
214 <label class="i-sdc-form-label required">Vendor</label>
215 <input class="i-sdc-form-input" type="text"
216 data-ng-class="{'view-mode': isViewMode()}"
217 data-ng-model="component.vendorName"
218 data-ng-model-options="{ debounce: 500 }"
219 data-ng-maxlength="60"
221 ng-click="oldValue = component.vendorName"
223 data-ng-change="onVendorNameChange(oldValue)"
224 data-ng-pattern="validation.VendorNameValidationPattern"
226 data-ng-disabled="component.isAlreadyCertified() || (component.isCsarComponent() && component.vendorName && component.vendorName!=='')"
227 data-tests-id="vendorName"
230 <div class="input-error" data-ng-show="validateField(editForm.vendorName)">
231 <span ng-show="editForm.vendorName.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_VENDOR_NAME_REQUIRED"></span>
232 <span ng-show="editForm.vendorName.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '60' }"></span>
233 <span ng-show="editForm.vendorName.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
238 <!--------------------- VENDOR NAME -------------------->
240 <!--------------------- VENDOR RELEASE -------------------->
241 <div ng-if="component.isResource()"
242 class="i-sdc-form-item"
243 data-ng-class="{'error': validateField(editForm.vendorRelease)}">
244 <label class="i-sdc-form-label required">Vendor Release</label>
245 <input class="i-sdc-form-input" type="text"
246 data-ng-class="{'view-mode': isViewMode()}"
247 data-ng-model="component.vendorRelease"
248 data-ng-model-options="{ debounce: 500 }"
249 data-ng-maxlength="25"
252 data-ng-pattern="validation.VendorReleaseValidationPattern"
254 data-ng-disabled="component.isCsarComponent() && component.vendorRelease && component.vendorRelease!==''"
255 data-tests-id="vendorRelease"
258 <div class="input-error" data-ng-show="validateField(editForm.vendorRelease)">
259 <span ng-show="editForm.vendorRelease.$error.required" translate="NEW_SERVICE_RESOURCE_ERROR_VENDOR_RELEASE_REQUIRED"></span>
260 <span ng-show="editForm.vendorRelease.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '25' }"></span>
261 <span ng-show="editForm.vendorRelease.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
264 <!--------------------- VENDOR RELEASE -------------------->
266 <!--------------------- Resource Model Number -------------------->
267 <div ng-if="component.isResource()"
268 class="i-sdc-form-item"
269 data-ng-class="{'error': validateField(editForm.resourceVendorModelNumber)}">
270 <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_RESOURCE_MODEL_NUMBER"></label>
271 <input class="i-sdc-form-input" type="text"
272 data-ng-class="{'view-mode': isViewMode()}"
273 data-ng-model="component.resourceVendorModelNumber"
274 data-ng-model-options="{ debounce: 500 }"
275 data-ng-maxlength="65"
276 name="resourceVendorModelNumber"
277 data-ng-pattern="validation.VendorModelNumberValidationPattern"
279 data-tests-id="resourceVendorModelNumber"
282 <div class="input-error" data-ng-show="validateField(editForm.resourceVendorModelNumber)">
283 <span ng-show="editForm.resourceVendorModelNumber.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '65' }"></span>
284 <span ng-show="editForm.resourceVendorModelNumber.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
287 <!--------------------- Resource Model Number -------------------->
289 <!--------------------- ECOMPGENERATEDNAMING -------------------->
291 <div class="i-sdc-form-item"
292 data-ng-class="{'error': validateField(editForm.ecompGeneratedNaming)}"
293 data-ng-if="component.isService()">
294 <label class="i-sdc-form-label">Ecomp Generated Naming</label>
295 <select class="i-sdc-form-select"
297 name="ecompGeneratedNaming"
298 data-ng-change="onEcompGeneratedNamingChange()"
299 data-ng-class="{'view-mode': isViewMode()}"
300 data-ng-model="component.ecompGeneratedNaming"
301 data-tests-id="ecompGeneratedNaming">
302 <option ng-value="true">true</option>
303 <option ng-value="false">false</option>
305 <div class="input-error" data-ng-show="validateField(editForm.ecompGeneratedNaming)">
309 <!--------------------- CATEGORIES -------------------->
311 <!--------------------- NAMING POLICY -------------------->
312 <div ng-if="component.isService()" class="i-sdc-form-item" data-ng-class="{'error': validateField(editForm.namingPolicy)}">
313 <label class="i-sdc-form-label">Naming policy</label>
314 <input class="i-sdc-form-input"
316 data-ng-class="{'view-mode': isViewMode() || !component.ecompGeneratedNaming}"
317 data-ng-maxlength="100"
319 data-ng-model="component.namingPolicy"
321 data-ng-model-options="{ debounce: 500 }"
322 data-ng-pattern="validation.commentValidationPattern"
323 data-tests-id="namingPolicy"
325 ng-readonly="isViewMode() || !component.ecompGeneratedNaming"
328 <div class="input-error" data-ng-show="validateField(editForm.namingPolicy)">
329 <span ng-show="editForm.namingPolicy.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '100' }"></span>
330 <span ng-show="editForm.namingPolicy.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
333 <!--------------------- NAMING POLICY -------------------->
335 <!--------------------- Service Type -------------------->
336 <div ng-if="component.isService()"
337 class="i-sdc-form-item"
338 data-ng-class="{'error': validateField(editForm.serviceType)}">
339 <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_SERVICE_TYPE"></label>
340 <input class="i-sdc-form-input" type="text"
341 data-ng-class="{'view-mode': isViewMode()}"
342 data-ng-model="component.serviceType"
343 data-ng-model-options="{ debounce: 500 }"
345 data-tests-id="serviceType"
346 data-ng-maxlength="256"
347 data-ng-pattern="validation.ServiceTypeAndRoleValidationPattern"
350 <div class="input-error" data-ng-show="validateField(editForm.serviceType)">
351 <span ng-show="editForm.serviceType.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '25' }"></span>
352 <span ng-show="editForm.serviceType.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
355 <!--------------------- Service Type -------------------->
357 <!--------------------- Service Role -------------------->
358 <div ng-if="component.isService()"
359 class="i-sdc-form-item"
360 data-ng-class="{'error': validateField(editForm.serviceRole)}">
361 <label class="i-sdc-form-label" translate="GENERAL_TAB_LABEL_SERVICE_ROLE"></label>
362 <input class="i-sdc-form-input" type="text"
363 data-ng-class="{'view-mode': isViewMode()}"
364 data-ng-model="component.serviceRole"
365 data-ng-model-options="{ debounce: 500 }"
367 data-tests-id="serviceRole"
368 data-ng-maxlength="256"
369 data-ng-pattern="validation.ServiceTypeAndRoleValidationPattern"
372 <div class="input-error" data-ng-show="validateField(editForm.serviceRole)">
373 <span ng-show="editForm.serviceRole.$error.maxlength" translate="VALIDATION_ERROR_MAX_LENGTH" translate-values="{'max': '25' }"></span>
374 <span ng-show="editForm.serviceRole.$error.pattern" translate="VALIDATION_ERROR_SPECIAL_CHARS_NOT_ALLOWED"></span>
377 <!--------------------- Service Role -------------------->
379 <!-------------------- ENVIRONMENT CONTEXT ----------------->
381 <div ng-if="component.isService()" class="i-sdc-form-item">
382 <loader data-display="!environmentContextObj && !initEnvironmentContext()" relative="true"></loader>
383 <label class="i-sdc-form-label">Environment Context</label>
384 <select class="i-sdc-form-select"
385 name="environmentContext"
386 data-ng-class="{'view-mode': isViewMode()}"
387 data-ng-model="component.environmentContext"
388 data-tests-id="environmentContext"
390 <option data-ng-repeat="environmentContextVal in (environmentContextObj.validValues) | orderBy"
391 value="{{environmentContextVal}}"
392 data-tests-id="{{environmentContextVal}}">{{environmentContextVal}}</option>
396 <!--------------------- ENVIRONMENT CONTEXT ------------------>
399 <div class="meta-data" data-ng-if="component.creationDate">
403 <div class="meta-data-item-value">{{component.creationDate | date:'MM/dd/yyyy'}}, {{component.creatorFullName}}</div>
407 <div class="meta-data-item-value">
408 {{component.lastUpdateDate | date:'MM/dd/yyyy'}}
413 <div class="meta-data-item-value">
417 <b>Invariant UUID:</b>
419 <div class="meta-data-item-value">
420 {{component.invariantUUID}}
423 </div><!-- Close w-sdc-form-column -->
426 </div><!-- Close w-sdc-form-section-container -->