aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts')
-rw-r--r--catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts63
1 files changed, 52 insertions, 11 deletions
diff --git a/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts b/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts
index 89aa251252..bfa2b11b1c 100644
--- a/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts
+++ b/catalog-ui/src/app/ng2/pages/interface-operation/operation-creator/param-row/param-row.component.ts
@@ -1,9 +1,20 @@
import {Component, Input} from '@angular/core';
import {DataTypeService} from "app/ng2/services/data-type.service";
-import {OperationParameter, InputBEModel} from 'app/models';
+import {OperationModel, OperationParameter, InputBEModel} from 'app/models';
import {DropDownOption} from "../operation-creator.component";
import {DropdownValue} from "app/ng2/components/ui/form-components/dropdown/ui-element-dropdown.component";
+class DropdownValueType extends DropdownValue {
+ type: String;
+
+ constructor(value: string, label: string, type?: String) {
+ super(value, label);
+ if (type) {
+ this.type = type;
+ }
+ }
+}
+
@Component({
selector: 'param-row',
templateUrl: './param-row.component.html',
@@ -13,6 +24,7 @@ import {DropdownValue} from "app/ng2/components/ui/form-components/dropdown/ui-e
export class ParamRowComponent {
@Input() param: OperationParameter;
@Input() inputProps: Array<InputBEModel>;
+ @Input() operationOutputs: Array<OperationModel>;
@Input() onRemoveParam: Function;
@Input() isAssociateWorkflow: boolean;
@Input() readonly: boolean;
@@ -20,6 +32,7 @@ export class ParamRowComponent {
@Input() validityChanged: Function;
propTypeEnum: Array<string> = [];
+ operationOutputCats: Array<{ operationName: string, outputs: Array<DropdownValueType> }> = [];
filteredInputProps: Array<DropdownValue> = [];
constructor(private dataTypeService: DataTypeService) {}
@@ -31,6 +44,7 @@ export class ParamRowComponent {
prop => prop.type
)
);
+
this.onChangeType();
this.validityChanged();
}
@@ -48,14 +62,31 @@ export class ParamRowComponent {
prop => new DropdownValue(prop.uniqueId, prop.name)
);
+ this.operationOutputCats = _.filter(
+ _.map(
+ this.operationOutputs,
+ op => {
+ return {
+ operationName: `${op.displayType()}.${op.name}`,
+ outputs: _.map(
+ _.filter(op.outputs.listToscaDataDefinition, output => !this.param.type || output.type === this.param.type),
+ output => new DropdownValueType(
+ `${op.interfaceType}.${op.name}.${output.name}`,
+ output.name,
+ output.type
+ )
+ )
+ };
+ }
+ ),
+ category => category.outputs.length > 0
+ );
+
if (this.param.inputId) {
- const selProp = _.find(
- this.getPrimitiveSubtypes(),
- prop => prop.uniqueId === this.param.inputId
- );
+ const selProp = this.getSelectedProp();
if (selProp && selProp.type === this.param.type) {
this.param.inputId = '-1';
- setTimeout(() => this.param.inputId = selProp.uniqueId, 100);
+ setTimeout(() => this.param.inputId = selProp.uniqueId || selProp.value, 0);
} else {
this.param.inputId = null;
}
@@ -65,10 +96,7 @@ export class ParamRowComponent {
}
onChangeProperty() {
- const newProp = _.find(
- this.getPrimitiveSubtypes(),
- prop => this.param.inputId === prop.uniqueId
- );
+ const newProp = this.getSelectedProp();
if (!this.param.type) {
this.param.type = newProp.type;
@@ -76,7 +104,7 @@ export class ParamRowComponent {
}
if (!this.param.name) {
- this.param.name = newProp.name;
+ this.param.name = newProp.name || newProp.label;
}
this.validityChanged();
@@ -108,6 +136,19 @@ export class ParamRowComponent {
return flattenedProps;
}
+ getSelectedProp() {
+ return _.find(
+ this.getPrimitiveSubtypes(),
+ prop => this.param.inputId === prop.uniqueId
+ ) || _.find(
+ _.reduce(
+ this.operationOutputCats,
+ (acc, cat) => [...acc, ...cat.outputs],
+ []),
+ (out: DropdownValueType) => this.param.inputId === out.value
+ );
+ }
+
isTypePrimitive(type): boolean {
return (
type === 'string' ||