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