9ec99dcc78924ff9c43b222555508d53b675cbb8
[ccsdk/cds.git] /
1 <div class="scrollWrapper">
2     <div class="row m-0">
3         <div class="col">
4             <div class="form-group">
5                 <label for="actionName">Action Name</label>
6                 <input type="text" class="form-control" id="actionName"
7                     placeholder="Action Name" [(ngModel)]="actionName"
8                     (change)="onActionNameChange($event)">
9             </div>
10         </div>
11     </div>
12     <!--Add Attribute-->
13     <div class="row m-b add-attribute">
14         <div class="col">
15             <h5>Add Attribute</h5>
16             <div class="row">
17                 <div class="col pr-0 text-center">
18                     <button type="button" data-toggle="modal" data-target="#exampleModalScrollable"
19                         class="btn btn-secondary" (click)="clearFormInputs()"><i class="icon-custom-attribute"
20                             type="button" aria-hidden="true"></i></button>
21                     <span>Create Custom</span>
22                 </div>
23                 <div class="col text-center">
24                     <button (click)="printSomethings()" [disabled]="!isFunctionAttributeActive" type="button"
25                         data-toggle="modal" data-target="#exampleModalScrollable3" class="btn btn-secondary"><i
26                             class="icon-function-attribute" type="button" aria-hidden="true"></i></button>
27                     <span>Import From Function</span>
28                 </div>
29             </div>
30         </div>
31     </div>
32     <!--INPUTS-->
33     <div class="accordion action-accordion" id="accordionExample">
34         <div class="card">
35             <div class="card-header" id="headingOne">
36                 <h2 class="mb-0">
37                     <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne"
38                         aria-expanded="true" aria-controls="collapseOne">
39                         Inputs
40                     </button>
41                 </h2>
42             </div>
43             <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
44                 <div class="card-body action-attributes">
45                     <div class="row">
46                         <div class="col">
47                             <div class="form-group" *ngFor="let input of inputs">
48                                 <label class="tooltipHTML">{{input.name}}
49                                     <span class="tooltiptext">
50                                         <h5>{{input.type}}</h5>
51                                         <div *ngIf="input.value">
52                                             <h6>Value:</h6>
53                                             <span>{{input.value}}</span>
54                                         </div>
55                                     </span>
56                                     <i [hidden]="!input.required" class="icon-required-star" type="button"
57                                         aria-hidden="true"></i>
58                                     <i [hidden]="input.required" class="icon-required-star optional-attribute"
59                                         type="button" aria-hidden="true"></i>
60                                 </label>
61                                 <div class="attributeOptions">
62                                     <!--<a data-toggle="modal" data-target="#exampleModalScrollable2"
63                                         class="accordion-delete editAttribute" tooltip="Edit Attribute"
64                                         placement="bottom" (click)="editAttribute(input)"><i class="icon-edit"></i></a>-->
65                                     <a class="accordion-delete deleteAttribute" tooltip="Delete Attribute"
66                                         (click)="markDeletedInput(input)" data-toggle="modal"
67                                         data-target="#exampleModalScrollable1" placement="bottom"><i
68                                             class="icon-delete-sm"></i></a>
69                                 </div>
70                             </div>
71                         </div>
72                     </div>
73                 </div>
74             </div>
75         </div>
76     </div>
77     <!--OUTPUTS-->
78     <div class="accordion action-accordion" id="accordionExample1">
79         <div class="card">
80             <div class="card-header" id="headingOne">
81                 <h2 class="mb-0">
82                     <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseTwo"
83                         aria-expanded="true" aria-controls="collapseTwo">
84                         Outputs
85                     </button>
86                 </h2>
87             </div>
88
89             <div id="collapseTwo" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample1">
90                 <div class="card-body">
91                     <div class="row">
92                         <div class="col">
93                             <div class="form-group" *ngFor="let output of outputs">
94                                 <label class="tooltipHTML">{{output.name}}
95                                     <span class="tooltiptext">
96                                         <h5>{{output.type}}</h5>
97                                         <div *ngIf="output?.value !=null
98                                        && output?.value['get_attribute'] !=null">
99                                             <h6>Value:</h6>
100                                             <span>{{output.value.get_attribute[0]}}</span>
101                                             <span>{{output.value.get_attribute[1]}}</span>
102                                             <span>{{output.value.get_attribute[2]}}</span>
103                                             <span>{{output.value.get_attribute[3]}}</span>
104                                             <span>{{output.value.get_attribute[4]}}</span>
105                                         </div>
106                                     </span>
107                                     <i [hidden]="!output.required" class="icon-required-star" type="button"
108                                         aria-hidden="true"></i>
109                                     <i [hidden]="output.required" class="icon-required-star optional-attribute"
110                                         type="button" aria-hidden="true"></i>
111
112                                 </label>
113                                 <div class="attributeOptions">
114                                     <a data-toggle="modal" data-target="#exampleModalScrollablte"
115                                         class="accordion-delete editAttribute" tooltip="Edit Attribute"
116                                         placement="bottom" (click)="editAttribute(output)"><i class="icon-edit"></i></a>
117                                     <a class="accordion-delete deleteAttribute" tooltip="Delete Attribute"
118                                         (click)="markDeletedInput(output)" data-toggle="modal"
119                                         data-target="#exampleModalScrollable1" placement="bottom"><i
120                                             class="icon-delete-sm"></i></a>
121                                 </div>
122                             </div>
123                         </div>
124                     </div>
125                 </div>
126             </div>
127         </div>
128     </div>
129 </div>
130 <!--Action - Add Custom Attribute - Modal-->
131 <div class="modal fade" id="exampleModalScrollable" tabindex="-1" role="dialog"
132     aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
133     <div class="modal-dialog  modal-dialog-scrollable" role="document">
134         <div class="modal-content">
135             <div class="modal-header">
136                 <h5 class="modal-title" id="exampleModalScrollableTitle">
137                     Add Custom Attributes</h5>
138                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
139                     <img src="assets/img/icon-close.svg" />
140                 </button>
141             </div>
142             <div class="modal-body createAttributeTabs">
143                 <!--Action - Inputs & Outputs Attribute-->
144                 <ul class="nav nav-tabs" id="myTab" role="tablist">
145                     <li class="nav-item">
146                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab"
147                             aria-controls="home" aria-selected="true">Inputs</a>
148                     </li>
149                     <li class="nav-item">
150                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab"
151                             aria-controls="profile" aria-selected="false">Outputs</a>
152                     </li>
153                 </ul>
154                 <div class="tab-content" id="myTabContent">
155                     <!--INPUTS Tab-->
156                     <div class="tab-pane fade show active create-form" id="home" role="tabpanel"
157                         aria-labelledby="home-tab">
158                         <div class="form-group row">
159                             <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
160                             <div class="col-sm-9">
161                                 <input [(ngModel)]="inputActionAttribute.name" type="email" class="form-control"
162                                     id="inputEmail3" placeholder="Attribute name">
163                             </div>
164                         </div>
165                         <div class="form-group row">
166                             <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
167                             <div class="col-sm-9">
168                                 <input [(ngModel)]="inputActionAttribute.description" type="text" class="form-control"
169                                     id="inputPassword3" placeholder="Add some description">
170                             </div>
171                         </div>
172                         <div class="form-group row">
173                             <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
174                             <div class="col-sm-9">
175                                 <div class="list-group list-group-horizontal">
176                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'string'"
177                                         class="list-group-item list-group-item-action" (click)="setInputType('string')">
178                                         String
179                                     </button>
180                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'integer'"
181                                         class="list-group-item list-group-item-action"
182                                         (click)="setInputType('integer')">Integer
183                                     </button>
184                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'boolean'"
185                                         class="list-group-item list-group-item-action"
186                                         (click)="setInputType('boolean')">Boolean
187                                     </button>
188                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'list'"
189                                         class="list-group-item list-group-item-action"
190                                         (click)="setInputType('list')">List
191                                     </button>
192                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'Other'"
193                                         class="list-group-item list-group-item-action"
194                                         (click)="setInputType('Other')">Other
195                                     </button>
196                                 </div>
197                                 <input [hidden]="!isInputOtherType" type="text" class="form-control mt-2 mb-2"
198                                     id="inputPassword4" placeholder="Add Other type name" [(ngModel)]="inputOtherType"
199                                     (change)="setInputType(inputOtherType)">
200
201                             </div>
202                         </div>
203                         <div class="form-group row">
204                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
205                             <div class="col-sm-9">
206                                 <div class="custom-control custom-radio custom-control-inline">
207                                     <input type="radio" id="customRadioInline1" name="customRadioInline1"
208                                         class="custom-control-input" (click)="setInputRequired(true)">
209                                     <label class="custom-control-label" for="customRadioInline1">True</label>
210                                 </div>
211                                 <div class="custom-control custom-radio custom-control-inline">
212                                     <input type="radio" id="customRadioInline2" name="customRadioInline1"
213                                         class="custom-control-input" (click)="setInputRequired(false)">
214                                     <label class="custom-control-label" for="customRadioInline2">False</label>
215                                 </div>
216                             </div>
217                         </div>
218                     </div>
219                     <!--OUTPUTS Tab-->
220                     <div class="tab-pane fade create-form" id="profile" role="tabpanel" aria-labelledby="profile-tab">
221                         <div class="form-group row">
222                             <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
223                             <div class="col-sm-9">
224                                 <input [(ngModel)]="outputActionAttribute.name" type="email" class="form-control"
225                                     id="inputEmail3" placeholder="Attribute name">
226                             </div>
227                         </div>
228                         <div class="form-group row">
229                             <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
230                             <div class="col-sm-9">
231                                 <input [(ngModel)]="outputActionAttribute.description" type="text" class="form-control"
232                                     id="inputPassword3" placeholder="Add some description">
233                             </div>
234                         </div>
235                         <div class="form-group row">
236                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
237                             <div class="col-sm-9">
238                                 <div class="custom-control custom-radio custom-control-inline">
239                                     <input type="radio" id="customRadioInline3" name="customRadioInline3"
240                                         class="custom-control-input" (click)="setOutputRequired(true)">
241                                     <label class="custom-control-label" for="customRadioInline3">True</label>
242                                 </div>
243                                 <div class="custom-control custom-radio custom-control-inline">
244                                     <input type="radio" id="customRadioInline4" name="customRadioInline3"
245                                         class="custom-control-input">
246                                     <label class="custom-control-label" for="customRadioInline4"
247                                         (click)="setOutputRequired(false)">False</label>
248                                 </div>
249                             </div>
250                         </div>
251                         <div class="form-group row">
252                             <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
253                             <div class="col-sm-9">
254                                 <div class="list-group list-group-horizontal">
255                                     <button type="button" class="list-group-item list-group-item-action" [class.active]="this.outputActionAttribute.type === 'string'"
256                                         (click)="setOutputType('string')">String
257                                     </button>
258                                     <button type="button" class="list-group-item list-group-item-action" [class.active]="this.outputActionAttribute.type === 'integer'"
259                                         (click)="setOutputType('integer')">
260                                         Integer
261                                     </button>
262                                     <button type="button" class="list-group-item list-group-item-action" [class.active]="this.outputActionAttribute.type === 'boolean'"
263                                         (click)="setOutputType('boolean')">
264                                         Boolean
265                                     </button>
266                                     <button type="button" class="list-group-item list-group-item-action" [class.active]="this.outputActionAttribute.type === 'list'"
267                                         (click)="setOutputType('list')">
268                                         List
269                                     </button>
270                                     <button type="button" class="list-group-item list-group-item-action" [class.active]="this.outputActionAttribute.type === 'Other'"
271                                         (click)="setOutputType('Other')">
272                                         Other
273                                     </button>
274                                 </div>
275                                 <input [hidden]="!isOutputOtherType" type="text" class="form-control mt-2 mb-2"
276                                     id="inputPassword3" placeholder="Add Other type name" [(ngModel)]="outputOtherType"
277                                     (change)="setOutputType(outputOtherType)">
278                             </div>
279                         </div>
280                         <!--Get Attribute Value-->
281                         <div class="form-group row mb-0">
282                             <label class="col-form-label col pt-0">
283                                 Value <span class="notation">(get_attribute)</span>
284                             </label>
285                         </div>
286                         <div class="form-group row">
287                             <div class="col">
288                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
289                                 <div class="container p-0">
290                                     <!-- <div *ngFor="let tempInput of steps" class="selectedWrapper">{{tempInput}}</div> -->
291                                 </div>
292                             </div>
293                         </div>
294
295
296                         <section class="carousel" aria-label="Gallery">
297
298                             <ol class="carousel__viewport">
299                                 <!--Function-->
300                                 <li id="carousel__slide1" tabindex="0" class="carousel__slide">
301                                     <b class="listBoxTitle">1. Choose Function Name</b>
302                                     <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
303                                         <input type="text" class="form-control input-search-controller"
304                                             placeholder="Functions">
305                                         <div class="scrollWrapper" *ngFor="let step of steps">
306                                             <a class="list-group-item list-group-item-action active" id="list-home-list"
307                                                 data-toggle="list" href="#list-home" role="tab" aria-controls="home">
308                                                 <i class="icon-resource_resolution mr-1" aria-hidden="true"></i>
309                                                 {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="getAttributesAndOutputs(
310                                                                     this.designerState.template.workflows[actionName]['steps'][step]['target']
311                                                                     )"></i></a>
312                                         </div>
313                                     </div>
314                                 </li>
315                                 <!--Attribute-->
316                                 <li id="carousel__slide2" tabindex="1" class="carousel__slide">
317                                     <b class="listBoxTitle">2. Choose Attribute Name</b>
318                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
319                                         <input type="text" class="form-control input-search-controller"
320                                             placeholder="Attributes">
321                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
322                                             aria-labelledby="list-home-list">
323                                             <div class="scrollWrapper">
324                                                 <div *ngIf="suggestedAttributes.length>0"
325                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
326                                                     <label class="btn tooltipHTML tooltipGetAtt"
327                                                         *ngFor="let suggestedAttribute of suggestedAttributes"
328                                                         [id]="suggestedAttribute"
329                                                         (click)="addTempOutputAttr(suggestedAttribute)">
330                                                         <span class="tooltiptext">
331                                                             <h5>integer</h5>
332                                                         </span>
333                                                         <input type="radio" name="options"
334                                                             [id]="suggestedAttribute+'.,.'" autocomplete="off"
335                                                             [checked]="suggestedAttributes[0]?.includes(suggestedAttribute)">
336                                                         {{suggestedAttribute}}
337                                                         <i class="icon-required-star" type="button"
338                                                             aria-hidden="true"></i>
339                                                     </label>
340
341                                                 </div>
342                                                 <div *ngIf="suggestedAttributes.length == 0">
343                                                     <p class="noAttributes">No Attributes Available</p>
344                                                 </div>
345                                             </div>
346                                         </div>
347                                     </div>
348                                 </li>
349                                 <!--Artifact-->
350                                 <li id="carousel__slide3" [hidden]="isNotComponentResourceResolution" tabindex="2"
351                                     class="carousel__slide">
352                                     <b class="listBoxTitle">3. Choose Artifact Name</b>
353                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
354                                         <input type="text" class="form-control input-search-controller"
355                                             placeholder="Attributes">
356                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
357                                             aria-labelledby="list-home-list">
358                                             <div class="scrollWrapper">
359                                                 <div *ngIf="currentArtifacts.length>0"
360                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
361                                                     <label class="btn btn-secondary"
362                                                         *ngFor="let suggestedArtifact of currentArtifacts"
363                                                         (click)="addArtifactFile(suggestedArtifact)">
364                                                         <input type="radio" name="options" [id]="suggestedArtifact"
365                                                             autocomplete="off"
366                                                             (click)="addArtifactFile(suggestedArtifact)"
367                                                             [checked]="currentArtifacts[0]?.includes(suggestedArtifact)">
368                                                         {{suggestedArtifact}}
369                                                     </label>
370
371                                                 </div>
372                                                 <div *ngIf="currentArtifacts.length == 0">
373                                                     <p class="noAttributes">No Artifacts Available</p>
374                                                 </div>
375                                             </div>
376                                         </div>
377                                     </div>
378                                 </li>
379                                 <!--Parameter-->
380                                 <li id="carousel__slide4" [hidden]="isParametersHidden" tabindex="3"
381                                     class="carousel__slide">
382                                     <b class="listBoxTitle">4. Choose Parameter Name</b>
383                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
384                                         <input type="text" class="form-control input-search-controller"
385                                             placeholder="Attributes">
386                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
387                                             aria-labelledby="list-home-list">
388                                             <div class="scrollWrapper">
389                                                 <div *ngIf="suggestedMappingParameters.length>0"
390                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
391                                                     <label class="btn btn-secondary"
392                                                         *ngFor="let suggestedMappingParameter of suggestedMappingParameters"
393                                                         (click)="addSuggestedMappingParameter(suggestedMappingParameter)">
394                                                         <!--[class]="suggestedMappingParameters[0].includes(suggestedMappingParameter)?'btn btn-secondary active':'btn btn-secondary'">
395                                                     --> <input type="radio" name="options"
396                                                             [id]="suggestedMappingParameter" autocomplete="off"
397                                                             (click)="addSuggestedMappingParameter(suggestedMappingParameter)"
398                                                             [checked]="suggestedMappingParameters[0]?.includes(suggestedMappingParameter)">
399                                                         {{suggestedMappingParameter}}
400                                                     </label>
401
402                                                 </div>
403                                                 <div *ngIf="suggestedMappingParameters.length == 0">
404                                                     <p class="noAttributes">No Attributes Available</p>
405                                                 </div>
406                                             </div>
407                                         </div>
408                                     </div>
409                                 </li>
410                             </ol>
411                             <aside class="carousel__navigation">
412                                 <ol class="carousel__navigation-list">
413                                     <li class="carousel__navigation-item">
414                                         <a href="#carousel__slide1" class="carousel__navigation-button">Functions</a>
415                                     </li>
416                                     <li class="carousel__navigation-item">
417                                         <a href="#carousel__slide2" class="carousel__navigation-button">Attributes</a>
418                                     </li>
419                                     <li class="carousel__navigation-item" [hidden]="isNotComponentResourceResolution">
420                                         <a href="#carousel__slide3" class="carousel__navigation-button">Artifacts</a>
421                                     </li>
422                                     <li class="carousel__navigation-item" [hidden]="isParametersHidden">
423                                         <a href="#carousel__slide4" class="carousel__navigation-button">Parameters</a>
424                                     </li>
425                                 </ol>
426                             </aside>
427                         </section>
428                     </div>
429                 </div>
430             </div>
431             <div class="modal-footer">
432                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
433                 <button type="button" class="btn btn-primary" data-dismiss="modal" (click)="submitAttributes()">Submit
434                     Attributes</button>
435             </div>
436         </div>
437     </div>
438 </div>
439
440 <!--Action - Add Attribute From Function - Modal-->
441 <div class="modal fade" id="exampleModalScrollable3" tabindex="-1" role="dialog"
442     aria-labelledby="exampleModalScrollableTitle3" aria-hidden="true">
443     <div class="modal-dialog  modal-dialog-scrollable" role="document">
444         <div class="modal-content">
445             <div class="modal-header">
446                 <h5 class="modal-title" id="exampleModalScrollableTitle3">
447                     Add Attributes from Function</h5>
448                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
449                     <img src="assets/img/icon-close.svg" />
450                 </button>
451             </div>
452             <div class="modal-body createAttributeTabs">
453                 <!--Action - Inputs & Outputs Attribute-->
454                 <ul class="nav nav-tabs" id="myTab" role="tablist">
455                     <li class="nav-item">
456                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#input" role="tab"
457                             aria-controls="home" aria-selected="true">Inputs</a>
458                     </li>
459                     <li class="nav-item">
460                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#output" role="tab"
461                             aria-controls="profile" aria-selected="false">Outputs</a>
462                     </li>
463                 </ul>
464                 <div class="tab-content border-0" id="myTabContent">
465                     <!--INPUTS Tab-->
466                     <div class="tab-pane fade show active create-form" id="input" role="tabpanel"
467                         aria-labelledby="input-tab">
468                         <div class="form-group row">
469                             <div class="col">
470                                 <!--<input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">-->
471                                 <div class="container p-0">
472                                     <label>Selected Attributes</label>
473                                     <div *ngFor="let tempInput of tempInputs" class="selectedWrapper">{{tempInput}}
474                                     </div>
475                                 </div>
476                             </div>
477                         </div>
478
479                         <div class="row">
480                             <div class="col-6">
481                                 <b class="listBoxTitle">1. Choose Function Name</b>
482                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
483                                     <input type="text" class="form-control input-search-controller"
484                                         placeholder="Functions">
485                                     <div class="scrollWrapper">
486                                         <a [class]="steps.indexOf(step) === 0?
487                                         'list-group-item list-group-item-action active':
488                                         'list-group-item list-group-item-action'" [id]="step" data-toggle="list"
489                                             href="#list-home" role="tab" aria-controls="home"
490                                             *ngFor="let step of steps">
491
492                                             <i class="icon-resource_resolution mr-1" aria-hidden="true" (click)="setInputAndOutputs(
493                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
494                                             )"></i>
495                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
496                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
497                                             )"></i></a>
498                                     </div>
499                                 </div>
500                             </div>
501                             <div class="col-6">
502                                 <b class="listBoxTitle">2. Choose Input Attribute Name</b>
503                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
504                                     <input type="text" class="form-control input-search-controller"
505                                         placeholder="Attributes">
506                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
507                                         aria-labelledby="list-home-list">
508                                         <div class="scrollWrapper">
509                                             <div *ngIf="suggestedInputs.length>0" class="btn-group btn-group-toggle"
510                                                 data-toggle="buttons">
511                                                 <label class="btn tooltipHTML tooltipGetAtt active"
512                                                     *ngFor="let suggestedInput of suggestedInputs"
513                                                     (click)="addTempInput(suggestedInput)">
514                                                     <span class="tooltiptext">
515                                                         <h5>integer</h5>
516                                                     </span>
517                                                     <input type="radio" name="options" [id]="suggestedInput"
518                                                         autocomplete="off" (click)="addTempInput(suggestedInput)">
519                                                     {{suggestedInput}}
520                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
521                                                 </label>
522                                             </div>
523                                             <div *ngIf="suggestedInputs.length == 0">
524                                                 <p class="noAttributes">No Attributes Available</p>
525                                             </div>
526                                         </div>
527                                     </div>
528                                 </div>
529                             </div>
530                         </div>
531                     </div>
532                     <!--OUTPUTS Tab-->
533                     <div class="tab-pane fade create-form" id="output" role="tabpanel" aria-labelledby="output-tab">
534                         <div class="form-group row">
535                             <div class="col">
536                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
537                                 <div class="container p-0">
538                                     <div *ngFor="let tempOutput of tempOutputs" class="selectedWrapper">{{tempOutput}}
539                                     </div>
540                                 </div>
541                             </div>
542                         </div>
543
544                         <div class="row">
545                             <div class="col-6">
546                                 <b class="listBoxTitle">1. Choose Function Name</b>
547                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
548                                     <input type="text" class="form-control input-search-controller"
549                                         placeholder="Functions">
550                                     <div class="scrollWrapper" *ngFor="let step of steps">
551                                         <a [class]="steps.indexOf(step) === 0?
552                                         'list-group-item list-group-item-action active':
553                                         'list-group-item list-group-item-action'" [id]="step"
554                                             *ngFor="let step of steps" data-toggle="list" href="#list-home" role="tab"
555                                             aria-controls="home"><i class="icon-resource_resolution mr-1"
556                                                 aria-hidden="true"></i>
557                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
558                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
559                                             )"></i></a>
560                                     </div>
561                                 </div>
562                             </div>
563                             <div class="col-6">
564                                 <b class="listBoxTitle">2. Choose output Attribute Name</b>
565                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
566                                     <input type="text" class="form-control input-search-controller"
567                                         placeholder="Attributes">
568                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
569                                         aria-labelledby="list-home-list">
570                                         <div class="scrollWrapper">
571                                             <div *ngIf="suggestedOutputs.length > 0" class="btn-group btn-group-toggle"
572                                                 data-toggle="buttons">
573                                                 <label class="btn tooltipHTML tooltipGetAtt active"
574                                                     *ngFor="let suggestedOutput of suggestedOutputs">
575                                                     <span class="tooltiptext">
576                                                         <h5>integer</h5>
577                                                     </span>
578                                                     <input type="radio" name="options" [id]="suggestedOutput"
579                                                         autocomplete="off" (dblclick)="addTempOutput(suggestedOutput)">
580                                                     {{suggestedOutput}}
581                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
582                                                 </label>
583
584                                             </div>
585                                             <div *ngIf="suggestedOutputs.length == 0">
586                                                 <p class="noAttributes">No Attributes Available</p>
587                                             </div>
588                                         </div>
589                                     </div>
590                                 </div>
591                             </div>
592                         </div>
593                     </div>
594                 </div>
595             </div>
596             <div class="modal-footer">
597                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
598                 <button type="button" class="btn btn-primary" (click)="submitTempAttributes()">Submit
599                     Attributes
600                 </button>
601             </div>
602         </div>
603     </div>
604 </div>
605
606 <!--Delete Action - Modal-->
607 <div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
608     aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
609     <div class="modal-dialog modal-dialog-scrollable" role="document" style="width: 30%;">
610         <div class="modal-content">
611             <div class="modal-header">
612                 <h5 class="modal-title" id="exampleModalScrollableTitle1">
613                     Delete Action "{{actionName}}"</h5>
614                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
615                     <img src="assets/img/icon-close.svg" />
616                 </button>
617             </div>
618             <div class="modal-body">
619                 Are you sure you want to delete <b>{{suggestedDeletedInput.name}}</b> action "{{actionName}}"?
620             </div>
621             <div class="modal-footer">
622                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
623                 <button type="button" class="btn btn-danger" data-dismiss="modal" (click)="deleteActionAttribute()">
624                     Delete
625                 </button>
626             </div>
627         </div>
628     </div>
629 </div>
630 <!--Action - Edit Custom Attribute - Modal-->
631 <div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
632     aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
633     <div class="modal-dialog modal-dialog-scrollable" role="document">
634         <div class="modal-content">
635             <div class="modal-header">
636                 <h5 class="modal-title" id="exampleModalScrollableTitle2">
637                     Edit Custom Attributes</h5>
638                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
639                     <img src="assets/img/icon-close.svg" />
640                 </button>
641             </div>
642             <div class="modal-body createAttributeTabs">
643                 <div class="create-form">
644                     <div class="form-group row">
645                         <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
646                         <div class="col-sm-9">
647                             <input type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
648                                 [ngModel]="this.suggestedEditedAttribute.name">
649                         </div>
650                     </div>
651                     <div class="form-group row">
652                         <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
653                         <div class="col-sm-9">
654                             <input type="text" class="form-control" id="inputPassword3"
655                                 placeholder="Add some description"
656                                 [ngModel]="this.suggestedEditedAttribute.description">
657                         </div>
658                     </div>
659                     <div class="form-group row">
660                         <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
661                         <div class="col-sm-9">
662                             <div class="list-group list-group-horizontal">
663                                 <button type="button" class="list-group-item list-group-item-action"
664                                     [className]="suggestedEditedAttribute?.type?.includes('string')?'' +
665                                  'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">String
666                                 </button>
667                                 <button type="button" class="list-group-item list-group-item-action"
668                                     [className]="suggestedEditedAttribute?.type?.includes('integer')?'' +
669                                          ' list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Integer</button>
670                                 <button type="button" class="list-group-item list-group-item-action"
671                                     [className]="suggestedEditedAttribute?.type?.includes('boolean')?'' +
672                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Boolean</button>
673                                 <button type="button" class="list-group-item list-group-item-action"
674                                     [className]="suggestedEditedAttribute?.type?.includes('list')?'' +
675                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">List</button>
676                                 <button type="button" class="list-group-item list-group-item-action">Other
677                                 </button>
678                             </div>
679                             <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
680                                 placeholder="Add Other type name" value="dt-resource-assignment-properties">
681                         </div>
682                     </div>
683                     <div class="form-group row">
684                         <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
685                         <div class="col-sm-9">
686                             <div class="custom-control custom-radio custom-control-inline">
687                                 <input type="radio" id="customRadioInline1" name="customRadioInline1"
688                                     class="custom-control-input" [ngModel]="suggestedEditedAttribute.required"
689                                     [checked]="suggestedEditedAttribute.required">
690                                 <label class="custom-control-label" for="customRadioInline1">True</label>
691                             </div>
692                             <div class="custom-control custom-radio custom-control-inline">
693                                 <input type="radio" id="customRadioInline2" name="customRadioInline1"
694                                     class="custom-control-input" [checked]="!suggestedEditedAttribute.required">
695                                 <label class="custom-control-label" for="customRadioInline2">False</label>
696                             </div>
697                         </div>
698                     </div>
699                 </div>
700                 <div class="modal-footer">
701                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
702                     <button type="button" class="btn btn-primary">Save</button>
703                 </div>
704             </div>
705         </div>
706     </div>
707 </div>