diff options
Diffstat (limited to 'catalog-ui')
7 files changed, 56 insertions, 14 deletions
diff --git a/catalog-ui/src/app/models/base-types.ts b/catalog-ui/src/app/models/base-types.ts index 69aafa357c..961e4bdfb3 100644 --- a/catalog-ui/src/app/models/base-types.ts +++ b/catalog-ui/src/app/models/base-types.ts @@ -22,6 +22,7 @@ interface ListBaseTypesResponse { baseTypes: BaseTypeResponse[]; required: boolean; defaultBaseType: string; + doNotExtendBaseType: boolean; } interface BaseTypeResponse { diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html index 038f5f5317..58303a9319 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.html @@ -52,13 +52,14 @@ [name]="property.name" [path]="property.propertiesName" (elementChanged)="onElementChanged($event)" - [readonly]="readonly || property.isDeclared || property.isDisabled || property.isToscaFunction()" + [readonly]="readonly || property.isDeclared || property.isDisabled || property.isToscaFunction() || disablePropertyValue" [testId]="'prop-' + propertyTestsId" [declared] = "property.isDeclared" [constraints] = "constraints" ></dynamic-element> </div> </ng-container> + <ng-container *ngIf="!isPropertyFEModel && propType != derivedPropertyTypes.SIMPLE && !property.isDeclared && (!property.isToscaFunction() || (property.isToscaFunction() && property.isChildOfListOrMap && propType != derivedPropertyTypes.SIMPLE))"> <!-- right cell for complex elements, or list complex --> <div class="table-cell" *ngIf="propType == derivedPropertyTypes.COMPLEX">{{property.type | contentAfterLastDot }}</div> <div class="table-cell" *ngIf="propType == derivedPropertyTypes.MAP && !property.schema.property.isSimpleType">{{property.schema.property.type | contentAfterLastDot }}</div> @@ -81,6 +82,7 @@ <dynamic-property [selectedPropertyId]="selectedPropertyId" [hasDeclareOption]="hasDeclareOption" + [disablePropertyValue]="disablePropertyValue" [canBeDeclared]="hasDeclareOption && prop.canBeDeclared" [property]="prop" [rootProperty]="rootProperty || property" diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts index 7be44c3075..b632dddf6f 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/dynamic-property/dynamic-property.component.ts @@ -54,6 +54,7 @@ export class DynamicPropertyComponent { @Input() readonly: boolean; @Input() hasChildren: boolean; @Input() hasDeclareOption:boolean; + @Input() disablePropertyValue: boolean; @Input() rootProperty: PropertyFEModel; @Output('propertyChanged') emitter: EventEmitter<void> = new EventEmitter<void>(); diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.html b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.html index 6e4edddeb4..526ccf21ce 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.html +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.html @@ -75,8 +75,8 @@ </div> </div> <!-- Property Value --> - <div class="table-cell valueCol"> - <!-- [ngClass]="{'filtered':property.name === propertyNameSearchText}" (selectProperty)="propertySelected(property, $event, flatProperty.propertiesName)" [propType]="property.type" [propSchema]="property.schema" [propKey]="" [propValue]="property.value"--> + <div class="table-cell valueCol" > +<!-- [ngClass]="{'filtered':property.name === propertyNameSearchText}" (selectProperty)="propertySelected(property, $event, flatProperty.propertiesName)" [propType]="property.type" [propSchema]="property.schema" [propKey]="" [propValue]="property.value"--> <dynamic-property [selectedPropertyId]="selectedPropertyId" [hasDeclareOption]="hasDeclareOption" @@ -85,6 +85,7 @@ [expandedChildId]="property.expandedChildPropertyId" [propertyNameSearchText]="propertyNameSearchText" [readonly]="readonly" + [disablePropertyValue]="disablePropertyValue" (propertyChanged)="onPropertyChanged(property)" (expandChild)="property.updateExpandedChildPropertyId($event)" (clickOnPropertyRow)="onClickPropertyInnerRow($event, instanceId)" diff --git a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.ts b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.ts index a0b401386b..2f6cad29fc 100644 --- a/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.ts +++ b/catalog-ui/src/app/ng2/components/logic/properties-table/properties-table.component.ts @@ -19,12 +19,11 @@ * ============LICENSE_END========================================================= */ -import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; -import { DerivedFEProperty, InstanceFePropertiesMap, PropertyFEModel } from 'app/models'; +import {Component, EventEmitter, Inject, Input, OnChanges, Output, SimpleChanges} from '@angular/core'; +import { DerivedFEProperty, InstanceFePropertiesMap, PropertyFEModel} from 'app/models'; import { InstanceFeDetails } from '../../../../models/instance-fe-details'; import { PropertiesService } from '../../../services/properties.service'; import { ModalService } from '../../../services/modal.service'; - @Component({ selector: 'properties-table', templateUrl: './properties-table.component.html', @@ -42,7 +41,7 @@ export class PropertiesTableComponent implements OnChanges { @Input() hasDeclareOption: boolean; @Input() hidePropertyType: boolean; @Input() showDelete:boolean; - + @Input() disablePropertyValue:boolean; @Output('propertyChanged') emitter: EventEmitter<PropertyFEModel> = new EventEmitter<PropertyFEModel>(); @Output() selectPropertyRow: EventEmitter<PropertyRowSelectedEvent> = new EventEmitter<PropertyRowSelectedEvent>(); @Output() updateCheckedPropertyCount: EventEmitter<boolean> = new EventEmitter<boolean>(); // only for hasDeclareOption @@ -51,6 +50,8 @@ export class PropertiesTableComponent implements OnChanges { @Output() deleteProperty: EventEmitter<PropertyFEModel> = new EventEmitter<PropertyFEModel>(); private selectedPropertyToDelete: PropertyFEModel; + + sortBy: String; reverse: boolean; direction: number; @@ -59,7 +60,7 @@ export class PropertiesTableComponent implements OnChanges { readonly ascUpperLettersFirst = 1; readonly descLowerLettersFirst = -1; - constructor(private propertiesService: PropertiesService, private modalService: ModalService ) { + constructor(private propertiesService: PropertiesService, private modalService: ModalService) { } ngOnChanges(changes: SimpleChanges): void { @@ -113,6 +114,7 @@ export class PropertiesTableComponent implements OnChanges { this.togggleToscaBtn.emit(prop.isSelected); }; + onDeleteProperty = () => { this.deleteProperty.emit(this.selectedPropertyToDelete); this.modalService.closeCurrentModal(); diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html index 1d8a01d4c8..17c67f4929 100644 --- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html +++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.html @@ -29,7 +29,8 @@ [readonly]="isReadonly || resourceIsReadonly" [isLoading]="loadingProperties || savingChangedData" [hasDeclareOption]="true" - [showDelete]="!isReadOnly && isSelf()" + [showDelete]="!isReadonly && isSelf()" + [disablePropertyValue] = "disablePropertyValue()" (propertyChanged)="dataChanged($event)" (propertySelected)="propertySelected($event)" (selectPropertyRow)="selectPropertyRow($event)" @@ -38,14 +39,15 @@ (updateCheckedChildPropertyCount)="updateCheckedChildPropertyCount($event)" (togggleToscaBtn)="togggleToscaBtn($event)" (selectInstanceRow)="selectInstanceRow($event)" - (deleteProperty)="deleteProperty($event)"> + (deleteProperty)="deleteProperty($event)" + > </properties-table> </tab> <tab tabTitle="Inputs" [show]="isSelf()"> <inputs-table class="properties-table" [fePropertiesMap]="instanceFePropertiesMap" [readonly]="isReadonly" - [showDelete]="!isReadOnly && isSelf()" + [showDelete]="!isReadonly && isSelf()" [inputs]="inputs | searchFilter:'name':searchQuery" [instanceNamesMap]="componentInstanceNamesMap" [componentInstancePropertyMap]="componentInstancePropertyMap" @@ -90,7 +92,7 @@ </div> <div class="right-column"> <div *ngIf="!isReadonly && !isInputsTabSelected" class="add-btn" - (click)="addProperty(component.model)" data-tests-id="properties-add-button" [ngClass]="{'disabled': !showAddProperties()}">Add Property</div> + (click)="addProperty(component.model)" data-tests-id="properties-add-button" [ngClass]="{'disabled': !showAddProperties()}" >Add Property</div> <div *ngIf="!isReadonly && isInputsTabSelected" class="add-btn" (click)="addInput()" [ngClass]="{'disabled': !isSelf()}">Add Input</div> <tabs #hierarchyNavTabs tabStyle="simple-tabs" class="gray-border"> diff --git a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts index a987564df4..834f28ed27 100644 --- a/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts +++ b/catalog-ui/src/app/ng2/pages/properties-assignment/properties-assignment.page.component.ts @@ -71,6 +71,7 @@ import {TranslateService} from "../../shared/translator/translate.service"; import {ToscaFunction} from "../../../models/tosca-function"; import {SubPropertyToscaFunction} from "../../../models/sub-property-tosca-function"; import {DeclareInputComponent} from "./declare-input/declare-input.component"; +import {ElementService} from "../../services/element.service"; import {CustomToscaFunction} from "../../../models/default-custom-functions"; import {ToscaFunctionType} from "../../../models/tosca-function-type.enum"; @@ -128,6 +129,7 @@ export class PropertiesAssignmentComponent { selectedInstance_FlattenCapabilitiesList: Capability[]; componentInstancePropertyMap : PropertiesGroup; defaultInputName: string; + doNotExtendBaseType: boolean; @ViewChild('hierarchyNavTabs') hierarchyNavTabs: Tabs; @ViewChild('propertyInputTabs') propertyInputTabs: Tabs; @@ -150,7 +152,8 @@ export class PropertiesAssignmentComponent { private modalService: ModalService, private keysPipe: KeysPipe, private topologyTemplateService: TopologyTemplateService, - private translateService: TranslateService) { + private translateService: TranslateService, + private service: ElementService) { this.instanceFePropertiesMap = new InstanceFePropertiesMap(); /* This is the way you can access the component data, please do not use any data except metadata, all other data should be received from the new api calls on the first time @@ -236,7 +239,19 @@ export class PropertiesAssignmentComponent { }, error => { this.loadingInstances = false; }); //ignore error + let modelName = this.component.model ? this.component.model : null; + const categoryName= this.component.categories[0].name; + if (this.component.categories[0].name != null && this.component.model != null) { + this.service.getCategoryBaseTypes(categoryName, modelName).subscribe((response: ListBaseTypesResponse) => { + this.doNotExtendBaseType = response.doNotExtendBaseType; + this.loadingProperties = false; + }, error => { + //ignore error + }, () => { + this.loadingProperties = false; + }); + } this.stateChangeStartUnregister = this.$scope.$on('$stateChangeStart', (event, toState, toParams) => { // stop if has changed properties if (this.hasChangedData) { @@ -251,7 +266,7 @@ export class PropertiesAssignmentComponent { this.loadDataTypesByComponentModel(this.component.model); } - ngOnDestroy() { + ngOnDestroy(){ this.eventListenerService.unRegisterObserver(EVENTS.ON_LIFECYCLE_CHANGE); this.stateChangeStartUnregister(); } @@ -278,8 +293,26 @@ export class PropertiesAssignmentComponent { showAddProperties = (): boolean => { if (this.component.isService() && !(<Service>this.component).isSubstituteCandidate()) { return false; + } else if (this.hideAddProperties()) { + return false; } return this.isSelf(); + + } + + hideAddProperties = (): boolean => { + if (this.component.isService() && this.doNotExtendBaseType && this.isSelf) { + return true; + } + return false; + + } + + disablePropertyValue = () : boolean => { + if (this.component.isService() && this.doNotExtendBaseType){ + return true; + } + return false; } getServiceProperties() { |