2 ~ Copyright © 2016-2018 European Support Limited
4 ~ Licensed under the Apache License, Version 2.0 (the "License");
5 ~ you may not use this file except in compliance with the License.
6 ~ You may obtain a copy of the License at
8 ~ http://www.apache.org/licenses/LICENSE-2.0
10 ~ Unless required by applicable law or agreed to in writing, software
11 ~ distributed under the License is distributed on an "AS IS" BASIS,
12 ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 ~ See the License for the specific language governing permissions and
14 ~ limitations under the License.
17 <div class="operation-creator">
18 <loader [display]="isLoading" [size]="'large'" [relative]="true"></loader>
20 <form class="w-sdc-form">
22 <div class="side-by-side">
23 <div class="form-item">
25 label="{{ 'OPERATION_INTERFACE_TYPE' | translate }}"
27 testId="interface-name"
28 [selectedOption]="getSelectedDropdown(interfaceNames, operation.interfaceType)"
29 placeHolder="Select..."
31 (changed)="onSelectInterface($event)"
32 [options]="interfaceNames">
36 <div class="form-item" *ngIf="!isInterfaceOther()">
38 #operationNamesDropdown
39 label="{{ 'OPERATION_NAME' | translate }}"
41 testId="operation-name"
42 [selectedOption]="getSelectedDropdown(operationNames, operation.name)"
43 placeHolder="Select..."
45 (changed)="onSelectOperationName($event)"
46 [options]="operationNames">
49 <div class="form-item" *ngIf="isInterfaceOther()">
51 label="{{ 'OPERATION_NAME' | translate }}"
52 [(value)]="operation.name"
53 testId="operationName"
54 (valueChange)="onChangeName()"
55 [disabled]="readonly">
61 <div class="i-sdc-form-item sdc-input">
62 <span class="sdc-input__label">{{ 'OPERATION_DESCRIPTION' | translate }}</span>
64 data-tests-id="operationDescription"
67 [(ngModel)]="descriptionValue"
68 [ngClass]="{'disabled': readonly}">
72 <div class="side-by-side" *ngIf="enableWorkflowAssociation">
73 <div class="form-item">
75 #workflowAssignmentDropdown
76 label="{{ 'OPERATION_WORKFLOW_ASSIGNMENT' | translate }}"
77 placeHolder="Select..."
78 testId="association-type"
79 [selectedOption]="toDropDownOption(workflowAssociationType)"
80 [options]="associationOptions"
81 (changed)="toggleAssociateWorkflow($event)"
82 [disabled]="readonly">
86 <div class="form-item" *ngIf="!isUsingExistingWF() && !isUsingExternalWF()"></div>
89 *ngIf="isUsingExternalWF()"
90 class="form-item sdc-input">
91 <label class="sdc-input__label">{{ 'OPERATION_ARTIFACT' | translate }}</label>
92 <div class="i-sdc-form-item i-sdc-form-file-upload">
94 class="i-sdc-form-file-name"
95 data-tests-id="artifactFilename">
96 {{ operation.artifactFileName }}
99 *ngIf="operation.artifactFileName"
100 class="i-sdc-form-file-upload-x-btn"
101 data-tests-id="clearArtifact"
102 (click)="onChangeArtifactFile({ target: {} })"></div>
104 class="i-sdc-form-file-upload-label"
105 [ngClass]="{'disabled': readonly}">
108 base-sixty-four-input
110 data-tests-id="artifactUpload"
111 (change)="onChangeArtifactFile($event)"
112 (click)="$event.target.value = ''"
114 <div class="file-upload-browse-btn">Browse</div>
119 <div class="form-item sdc-input" *ngIf="isUsingExistingWF()">
120 <label class="sdc-input__label required">{{ 'OPERATION_WORKFLOW' | translate }}
121 <span class="archive-warning" *ngIf="workflowIsOnline && archivedWorkflowId === operation.workflowId">({{ 'OPERATION_WORKFLOW_ARCHIVED' | translate }})</span>
122 <span class="no-workflow-warning" *ngIf="!workflowIsOnline">{{ 'OPERATION_NO_WORKFLOW_CONNECTION' | translate }}</span>
123 <span class="no-workflow-warning" *ngIf="workflowIsOnline && !workflows.length">{{ 'OPERATION_NO_WORKFLOW_ERROR' | translate }}</span>
126 placeHolder="Select..."
127 testId="associated-workflow"
128 [selectedOption]="getSelectedDropdown(workflows, operation.workflowId)"
129 [options]="workflows"
130 (changed)="onSelectWorkflow($event)"
131 [disabled]="readonly || !workflows.length || !workflowIsOnline">
135 <div class="form-item sdc-input" *ngIf="isUsingExistingWF()">
137 *ngIf="workflowIsOnline && workflows.length"
138 label="{{ 'OPERATION_WORKFLOW_VERSION' | translate }}"
139 testId="associated-workflow-version"
140 [selectedOption]="getSelectedDropdown(workflowVersions, operation.workflowVersionId)"
141 [options]="workflowVersions"
142 (changed)="changeWorkflowVersion($event)"
143 [disabled]="!operation.workflowId || archivedWorkflowId === operation.workflowId || readonly">
148 <div class="separator-buttons">
149 <tabs #propertyInputTabs tabStyle="round-tabs" (tabChanged)="tabChanged($event)" [hideIndicationOnTabChange]="true">
150 <tab tabTitle="Inputs"></tab>
151 <tab tabTitle="Outputs"></tab>
154 class="add-param-link add-btn"
155 *ngIf="!isUsingExistingWF() && !readonly"
156 data-tests-id="addInputParameter"
157 [ngClass]="{'disabled':!canAdd()}"
158 (click)="addParam()">{{ currentTab === TYPE_INPUT ? 'Add Input' : 'Add Output' }}</a>
161 <div class="generic-table">
162 <div class="header-row table-row">
163 <span class="cell header-cell field-name">{{ 'OPERATION_PARAM_NAME' | translate }}</span>
164 <span class="cell header-cell field-type">{{ 'OPERATION_PARAM_TYPE' | translate }}</span>
165 <span class="cell header-cell field-property" *ngIf="currentTab == TYPE_INPUT">
166 {{ 'OPERATION_PARAM_PROPERTY' | translate }}
168 *ngIf="!isUsingExistingWF()"
169 class="sprite-new info-icon"
170 tooltip="{{propertyTooltipText}}"
174 <span class="cell header-cell field-mandatory" *ngIf="!isUsingExistingWF()">{{ 'OPERATION_PARAM_MANDATORY' | translate }}</span>
175 <span class="cell header-cell remove" *ngIf="!isUsingExistingWF() && !readonly">●●●</span>
178 <div class="empty-msg data-row" *ngIf="tableParameters.length === 0">
179 <div>{{ 'EMPTY_PARAM_TABLE_HEADER' | translate }}</div>
180 <div *ngIf="isUsingExistingWF() && !operation.workflowVersionId">
181 <div *ngIf="workflows.length">
182 <span class="bold-message">{{ 'EMPTY_PARAM_TABLE_NO_SELECTED_WORKFLOW_1' | translate }}</span>
183 <span>{{ 'EMPTY_PARAM_TABLE_NO_SELECTED_WORKFLOW_2' | translate }}</span>
185 <div *ngIf="!workflows.length">
186 Only <span class="bold-message">certified</span> workflow versions can be assigned to an operation
192 *ngFor="let param of tableParameters"
194 [isInputParam]="currentTab === TYPE_INPUT"
195 [isAssociateWorkflow]="isUsingExistingWF()"
197 [inputProps]="inputProperties"
198 [capabilitiesProps]="componentCapabilities"
199 [operationOutputs]="operationOutputs"
200 [onRemoveParam]="onRemoveParam"
201 [readonly]="readonly"
202 [validityChanged]="validityChanged">