8746569ba355ec8db1880e34db411821701e860a
[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.active]="this.inputActionAttribute.type === 'string'"
175                                         class="list-group-item list-group-item-action" (click)="setInputType('string')">
176                                         String
177                                     </button>
178                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'integer'"
179                                         class="list-group-item list-group-item-action"
180                                         (click)="setInputType('integer')">Integer
181                                     </button>
182                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'boolean'"
183                                         class="list-group-item list-group-item-action"
184                                         (click)="setInputType('boolean')">Boolean
185                                     </button>
186                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'list'"
187                                         class="list-group-item list-group-item-action"
188                                         (click)="setInputType('list')">List
189                                     </button>
190                                     <button type="button" [class.active]="this.inputActionAttribute.type === 'Other'"
191                                         class="list-group-item list-group-item-action"
192                                         (click)="setInputType('Other')">Other
193                                     </button>
194                                 </div>
195                                 <input [hidden]="!isInputOtherType" type="text" class="form-control mt-2 mb-2"
196                                     id="inputPassword4" placeholder="Add Other type name" [(ngModel)]="inputOtherType"
197                                     (change)="setInputType(inputOtherType)">
198
199                             </div>
200                         </div>
201                         <div class="form-group row">
202                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
203                             <div class="col-sm-9">
204                                 <div class="custom-control custom-radio custom-control-inline">
205                                     <input type="radio" id="customRadioInline1" name="customRadioInline1"
206                                         class="custom-control-input" (click)="setInputRequired(true)">
207                                     <label class="custom-control-label" for="customRadioInline1">True</label>
208                                 </div>
209                                 <div class="custom-control custom-radio custom-control-inline">
210                                     <input type="radio" id="customRadioInline2" name="customRadioInline1"
211                                         class="custom-control-input" (click)="setInputRequired(false)">
212                                     <label class="custom-control-label" for="customRadioInline2">False</label>
213                                 </div>
214                             </div>
215                         </div>
216                     </div>
217                     <!--OUTPUTS Tab-->
218                     <div class="tab-pane fade create-form" id="profile" role="tabpanel" aria-labelledby="profile-tab">
219                         <div class="form-group row">
220                             <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
221                             <div class="col-sm-9">
222                                 <input [(ngModel)]="outputActionAttribute.name" type="email" class="form-control"
223                                     id="inputEmail3" placeholder="Attribute name">
224                             </div>
225                         </div>
226                         <div class="form-group row">
227                             <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
228                             <div class="col-sm-9">
229                                 <input [(ngModel)]="outputActionAttribute.description" type="text" class="form-control"
230                                     id="inputPassword3" placeholder="Add some description">
231                             </div>
232                         </div>
233                         <div class="form-group row">
234                             <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
235                             <div class="col-sm-9">
236                                 <div class="custom-control custom-radio custom-control-inline">
237                                     <input type="radio" id="customRadioInline3" name="customRadioInline3"
238                                         class="custom-control-input" (click)="setOutputRequired(true)">
239                                     <label class="custom-control-label" for="customRadioInline3">True</label>
240                                 </div>
241                                 <div class="custom-control custom-radio custom-control-inline">
242                                     <input type="radio" id="customRadioInline4" name="customRadioInline3"
243                                         class="custom-control-input">
244                                     <label class="custom-control-label" for="customRadioInline4"
245                                         (click)="setOutputRequired(false)">False</label>
246                                 </div>
247                             </div>
248                         </div>
249                         <div class="form-group row">
250                             <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
251                             <div class="col-sm-9">
252                                 <div class="list-group list-group-horizontal">
253                                     <button type="button" class="list-group-item list-group-item-action"
254                                         (click)="setOutputType('string')">String
255                                     </button>
256                                     <button type="button" class="list-group-item list-group-item-action"
257                                         (click)="setOutputType('integer')">
258                                         Integer
259                                     </button>
260                                     <button type="button" class="list-group-item list-group-item-action"
261                                         (click)="setOutputType('boolean')">
262                                         Boolean
263                                     </button>
264                                     <button type="button" class="list-group-item list-group-item-action"
265                                         (click)="setOutputType('list')">
266                                         List
267                                     </button>
268                                     <button type="button" class="list-group-item list-group-item-action"
269                                         (click)="setOutputType('Other')">
270                                         Other
271                                     </button>
272                                 </div>
273                                 <input [hidden]="!isOutputOtherType" type="text" class="form-control mt-2 mb-2"
274                                     id="inputPassword3" placeholder="Add Other type name" [(ngModel)]="outputOtherType"
275                                     (change)="setOutputType(outputOtherType)">
276                             </div>
277                         </div>
278                         <!--Get Attribute Value-->
279                         <div class="form-group row mb-0">
280                             <label class="col-form-label col pt-0">
281                                 Value <span class="notation">(get_attribute)</span>
282                             </label>
283                         </div>
284                         <div class="form-group row">
285                             <div class="col">
286                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
287                                 <div class="container p-0">
288                                     <!-- <div *ngFor="let tempInput of steps" class="selectedWrapper">{{tempInput}}</div> -->
289                                 </div>
290                             </div>
291                         </div>
292
293
294                         <section class="carousel" aria-label="Gallery">
295
296                             <ol class="carousel__viewport">
297                                 <!--Function-->
298                                 <li id="carousel__slide1" tabindex="0" class="carousel__slide">
299                                     <b class="listBoxTitle">1. Choose Function Name</b>
300                                     <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
301                                         <input type="text" class="form-control input-search-controller"
302                                             placeholder="Functions">
303                                         <div class="scrollWrapper" *ngFor="let step of steps">
304                                             <a class="list-group-item list-group-item-action active" id="list-home-list"
305                                                 data-toggle="list" href="#list-home" role="tab" aria-controls="home">
306                                                 <i class="icon-resource_resolution mr-1" aria-hidden="true"></i>
307                                                 {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="getAttributesAndOutputs(
308                                                                     this.designerState.template.workflows[actionName]['steps'][step]['target']
309                                                                     )"></i></a>
310                                         </div>
311                                     </div>
312                                 </li>
313                                 <!--Attribute-->
314                                 <li id="carousel__slide2" tabindex="1" class="carousel__slide">
315                                     <b class="listBoxTitle">2. Choose Attribute Name</b>
316                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
317                                         <input type="text" class="form-control input-search-controller"
318                                             placeholder="Attributes">
319                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
320                                             aria-labelledby="list-home-list">
321                                             <div class="scrollWrapper">
322                                                 <div *ngIf="suggestedAttributes.length>0"
323                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
324                                                     <label class="btn tooltipHTML tooltipGetAtt"
325                                                         *ngFor="let suggestedAttribute of suggestedAttributes"
326                                                         [id]="suggestedAttribute"
327                                                         (click)="addTempOutputAttr(suggestedAttribute)">
328                                                         <span class="tooltiptext">
329                                                             <h5>integer</h5>
330                                                         </span>
331                                                         <input type="radio" name="options"
332                                                             [id]="suggestedAttribute+'.,.'" autocomplete="off"
333                                                             [checked]="suggestedAttributes[0]?.includes(suggestedAttribute)">
334                                                         {{suggestedAttribute}}
335                                                         <i class="icon-required-star" type="button"
336                                                             aria-hidden="true"></i>
337                                                     </label>
338
339                                                 </div>
340                                                 <div *ngIf="suggestedAttributes.length == 0">
341                                                     <p class="noAttributes">No Attributes Available</p>
342                                                 </div>
343                                             </div>
344                                         </div>
345                                     </div>
346                                 </li>
347                                 <!--Artifact-->
348                                 <li id="carousel__slide3" [hidden]="isNotComponentResourceResolution" tabindex="2"
349                                     class="carousel__slide">
350                                     <b class="listBoxTitle">3. Choose Artifact Name</b>
351                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
352                                         <input type="text" class="form-control input-search-controller"
353                                             placeholder="Attributes">
354                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
355                                             aria-labelledby="list-home-list">
356                                             <div class="scrollWrapper">
357                                                 <div *ngIf="currentArtifacts.length>0"
358                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
359                                                     <label class="btn btn-secondary"
360                                                         *ngFor="let suggestedArtifact of currentArtifacts"
361                                                         (click)="addArtifactFile(suggestedArtifact)">
362                                                         <input type="radio" name="options" [id]="suggestedArtifact"
363                                                             autocomplete="off"
364                                                             (click)="addArtifactFile(suggestedArtifact)"
365                                                             [checked]="currentArtifacts[0]?.includes(suggestedArtifact)">
366                                                         {{suggestedArtifact}}
367                                                     </label>
368
369                                                 </div>
370                                                 <div *ngIf="currentArtifacts.length == 0">
371                                                     <p class="noAttributes">No Artifacts Available</p>
372                                                 </div>
373                                             </div>
374                                         </div>
375                                     </div>
376                                 </li>
377                                 <!--Parameter-->
378                                 <li id="carousel__slide4" [hidden]="isParametersHidden" tabindex="3"
379                                     class="carousel__slide">
380                                     <b class="listBoxTitle">4. Choose Parameter Name</b>
381                                     <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
382                                         <input type="text" class="form-control input-search-controller"
383                                             placeholder="Attributes">
384                                         <div class="tab-pane fade show active" id="list-home" role="tabpanel"
385                                             aria-labelledby="list-home-list">
386                                             <div class="scrollWrapper">
387                                                 <div *ngIf="suggestedMappingParameters.length>0"
388                                                     class="btn-group btn-group-toggle" data-toggle="buttons">
389                                                     <label class="btn btn-secondary"
390                                                         *ngFor="let suggestedMappingParameter of suggestedMappingParameters"
391                                                         (click)="addSuggestedMappingParameter(suggestedMappingParameter)">
392                                                         <!--[class]="suggestedMappingParameters[0].includes(suggestedMappingParameter)?'btn btn-secondary active':'btn btn-secondary'">
393                                                     --> <input type="radio" name="options"
394                                                             [id]="suggestedMappingParameter" autocomplete="off"
395                                                             (click)="addSuggestedMappingParameter(suggestedMappingParameter)"
396                                                             [checked]="suggestedMappingParameters[0]?.includes(suggestedMappingParameter)">
397                                                         {{suggestedMappingParameter}}
398                                                     </label>
399
400                                                 </div>
401                                                 <div *ngIf="suggestedMappingParameters.length == 0">
402                                                     <p class="noAttributes">No Attributes Available</p>
403                                                 </div>
404                                             </div>
405                                         </div>
406                                     </div>
407                                 </li>
408                             </ol>
409                             <aside class="carousel__navigation">
410                                 <ol class="carousel__navigation-list">
411                                     <li class="carousel__navigation-item">
412                                         <a href="#carousel__slide1" class="carousel__navigation-button">Functions</a>
413                                     </li>
414                                     <li class="carousel__navigation-item">
415                                         <a href="#carousel__slide2" class="carousel__navigation-button">Attributes</a>
416                                     </li>
417                                     <li class="carousel__navigation-item" [hidden]="isNotComponentResourceResolution">
418                                         <a href="#carousel__slide3" class="carousel__navigation-button">Artifacts</a>
419                                     </li>
420                                     <li class="carousel__navigation-item" [hidden]="isParametersHidden">
421                                         <a href="#carousel__slide4" class="carousel__navigation-button">Parameters</a>
422                                     </li>
423                                 </ol>
424                             </aside>
425                         </section>
426                     </div>
427                 </div>
428             </div>
429             <div class="modal-footer">
430                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
431                 <button type="button" class="btn btn-primary" (click)="submitAttributes()">Submit Attributes</button>
432             </div>
433         </div>
434     </div>
435 </div>
436
437 <!--Action - Add Attribute From Function - Modal-->
438 <div class="modal fade" id="exampleModalScrollable3" tabindex="-1" role="dialog"
439     aria-labelledby="exampleModalScrollableTitle3" aria-hidden="true">
440     <div class="modal-dialog  modal-dialog-scrollable" role="document">
441         <div class="modal-content">
442             <div class="modal-header">
443                 <h5 class="modal-title" id="exampleModalScrollableTitle3">
444                     Add Attributes from Function</h5>
445                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
446                     <img src="assets/img/icon-close.svg" />
447                 </button>
448             </div>
449             <div class="modal-body createAttributeTabs">
450                 <!--Action - Inputs & Outputs Attribute-->
451                 <ul class="nav nav-tabs" id="myTab" role="tablist">
452                     <li class="nav-item">
453                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#input" role="tab"
454                             aria-controls="home" aria-selected="true">Inputs</a>
455                     </li>
456                     <li class="nav-item">
457                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#output" role="tab"
458                             aria-controls="profile" aria-selected="false">Outputs</a>
459                     </li>
460                 </ul>
461                 <div class="tab-content border-0" id="myTabContent">
462                     <!--INPUTS Tab-->
463                     <div class="tab-pane fade show active create-form" id="input" role="tabpanel"
464                         aria-labelledby="input-tab">
465                         <div class="form-group row">
466                             <div class="col">
467                                 <!--<input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">-->
468                                 <div class="container p-0">
469                                     <label>Selected Attributes</label>
470                                     <div *ngFor="let tempInput of tempInputs" class="selectedWrapper">{{tempInput}}
471                                     </div>
472                                 </div>
473                             </div>
474                         </div>
475
476                         <div class="row">
477                             <div class="col-6">
478                                 <b class="listBoxTitle">1. Choose Function Name</b>
479                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
480                                     <input type="text" class="form-control input-search-controller"
481                                         placeholder="Functions">
482                                     <div class="scrollWrapper">
483                                         <a [class]="steps.indexOf(step) === 0?
484                                         'list-group-item list-group-item-action active':
485                                         'list-group-item list-group-item-action'" [id]="step" data-toggle="list"
486                                             href="#list-home" role="tab" aria-controls="home"
487                                             *ngFor="let step of steps">
488
489                                             <i class="icon-resource_resolution mr-1" aria-hidden="true" (click)="setInputAndOutputs(
490                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
491                                             )"></i>
492                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
493                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
494                                             )"></i></a>
495                                     </div>
496                                 </div>
497                             </div>
498                             <div class="col-6">
499                                 <b class="listBoxTitle">2. Choose Input Attribute Name</b>
500                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
501                                     <input type="text" class="form-control input-search-controller"
502                                         placeholder="Attributes">
503                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
504                                         aria-labelledby="list-home-list">
505                                         <div class="scrollWrapper">
506                                             <div *ngIf="suggestedInputs.length>0" class="btn-group btn-group-toggle"
507                                                 data-toggle="buttons">
508                                                 <label class="btn tooltipHTML tooltipGetAtt active"
509                                                     *ngFor="let suggestedInput of suggestedInputs"
510                                                     (click)="addTempInput(suggestedInput)">
511                                                     <span class="tooltiptext">
512                                                         <h5>integer</h5>
513                                                     </span>
514                                                     <input type="radio" name="options" [id]="suggestedInput"
515                                                         autocomplete="off" (click)="addTempInput(suggestedInput)">
516                                                     {{suggestedInput}}
517                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
518                                                 </label>
519                                             </div>
520                                             <div *ngIf="suggestedInputs.length == 0">
521                                                 <p class="noAttributes">No Attributes Available</p>
522                                             </div>
523                                         </div>
524                                     </div>
525                                 </div>
526                             </div>
527                         </div>
528                     </div>
529                     <!--OUTPUTS Tab-->
530                     <div class="tab-pane fade create-form" id="output" role="tabpanel" aria-labelledby="output-tab">
531                         <div class="form-group row">
532                             <div class="col">
533                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
534                                 <div class="container p-0">
535                                     <div *ngFor="let tempOutput of tempOutputs" class="selectedWrapper">{{tempOutput}}
536                                     </div>
537                                 </div>
538                             </div>
539                         </div>
540
541                         <div class="row">
542                             <div class="col-6">
543                                 <b class="listBoxTitle">1. Choose Function Name</b>
544                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
545                                     <input type="text" class="form-control input-search-controller"
546                                         placeholder="Functions">
547                                     <div class="scrollWrapper" *ngFor="let step of steps">
548                                         <a [class]="steps.indexOf(step) === 0?
549                                         'list-group-item list-group-item-action active':
550                                         'list-group-item list-group-item-action'" [id]="step"
551                                             *ngFor="let step of steps" data-toggle="list" href="#list-home" role="tab"
552                                             aria-controls="home"><i class="icon-resource_resolution mr-1"
553                                                 aria-hidden="true"></i>
554                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
555                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
556                                             )"></i></a>
557                                     </div>
558                                 </div>
559                             </div>
560                             <div class="col-6">
561                                 <b class="listBoxTitle">2. Choose output Attribute Name</b>
562                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
563                                     <input type="text" class="form-control input-search-controller"
564                                         placeholder="Attributes">
565                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
566                                         aria-labelledby="list-home-list">
567                                         <div class="scrollWrapper">
568                                             <div *ngIf="suggestedOutputs.length > 0" class="btn-group btn-group-toggle"
569                                                 data-toggle="buttons">
570                                                 <label class="btn tooltipHTML tooltipGetAtt active"
571                                                     *ngFor="let suggestedOutput of suggestedOutputs">
572                                                     <span class="tooltiptext">
573                                                         <h5>integer</h5>
574                                                     </span>
575                                                     <input type="radio" name="options" [id]="suggestedOutput"
576                                                         autocomplete="off" (dblclick)="addTempOutput(suggestedOutput)">
577                                                     {{suggestedOutput}}
578                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
579                                                 </label>
580
581                                             </div>
582                                             <div *ngIf="suggestedOutputs.length == 0">
583                                                 <p class="noAttributes">No Attributes Available</p>
584                                             </div>
585                                         </div>
586                                     </div>
587                                 </div>
588                             </div>
589                         </div>
590                     </div>
591                 </div>
592             </div>
593             <div class="modal-footer">
594                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
595                 <button type="button" class="btn btn-primary" (click)="submitTempAttributes()">Submit
596                     Attributes
597                 </button>
598             </div>
599         </div>
600     </div>
601 </div>
602
603 <!--Delete Action - Modal-->
604 <div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
605     aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
606     <div class="modal-dialog modal-dialog-scrollable" role="document" style="width: 30%;">
607         <div class="modal-content">
608             <div class="modal-header">
609                 <h5 class="modal-title" id="exampleModalScrollableTitle1">
610                     Delete Action "{{actionName}}"</h5>
611                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
612                     <img src="assets/img/icon-close.svg" />
613                 </button>
614             </div>
615             <div class="modal-body">
616                 Are you sure you want to delete <b>{{suggestedDeletedInput.name}}</b> action "{{actionName}}"?
617             </div>
618             <div class="modal-footer">
619                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
620                 <button type="button" class="btn btn-danger" data-dismiss="modal" (click)="deleteActionAttribute()">
621                     Delete
622                 </button>
623             </div>
624         </div>
625     </div>
626 </div>
627 <!--Action - Edit Custom Attribute - Modal-->
628 <div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
629     aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
630     <div class="modal-dialog modal-dialog-scrollable" role="document">
631         <div class="modal-content">
632             <div class="modal-header">
633                 <h5 class="modal-title" id="exampleModalScrollableTitle2">
634                     Edit Custom Attributes</h5>
635                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
636                     <img src="assets/img/icon-close.svg" />
637                 </button>
638             </div>
639             <div class="modal-body createAttributeTabs">
640                 <div class="create-form">
641                     <div class="form-group row">
642                         <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
643                         <div class="col-sm-9">
644                             <input type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
645                                 [ngModel]="this.suggestedEditedAttribute.name">
646                         </div>
647                     </div>
648                     <div class="form-group row">
649                         <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
650                         <div class="col-sm-9">
651                             <input type="text" class="form-control" id="inputPassword3"
652                                 placeholder="Add some description"
653                                 [ngModel]="this.suggestedEditedAttribute.description">
654                         </div>
655                     </div>
656                     <div class="form-group row">
657                         <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
658                         <div class="col-sm-9">
659                             <div class="list-group list-group-horizontal">
660                                 <button type="button" class="list-group-item list-group-item-action"
661                                     [className]="suggestedEditedAttribute?.type?.includes('string')?'' +
662                                  'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">String
663                                 </button>
664                                 <button type="button" class="list-group-item list-group-item-action"
665                                     [className]="suggestedEditedAttribute?.type?.includes('integer')?'' +
666                                          ' list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Integer</button>
667                                 <button type="button" class="list-group-item list-group-item-action"
668                                     [className]="suggestedEditedAttribute?.type?.includes('boolean')?'' +
669                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Boolean</button>
670                                 <button type="button" class="list-group-item list-group-item-action"
671                                     [className]="suggestedEditedAttribute?.type?.includes('list')?'' +
672                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">List</button>
673                                 <button type="button" class="list-group-item list-group-item-action">Other
674                                 </button>
675                             </div>
676                             <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
677                                 placeholder="Add Other type name" value="dt-resource-assignment-properties">
678                         </div>
679                     </div>
680                     <div class="form-group row">
681                         <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
682                         <div class="col-sm-9">
683                             <div class="custom-control custom-radio custom-control-inline">
684                                 <input type="radio" id="customRadioInline1" name="customRadioInline1"
685                                     class="custom-control-input" [ngModel]="suggestedEditedAttribute.required"
686                                     [checked]="suggestedEditedAttribute.required">
687                                 <label class="custom-control-label" for="customRadioInline1">True</label>
688                             </div>
689                             <div class="custom-control custom-radio custom-control-inline">
690                                 <input type="radio" id="customRadioInline2" name="customRadioInline1"
691                                     class="custom-control-input" [checked]="!suggestedEditedAttribute.required">
692                                 <label class="custom-control-label" for="customRadioInline2">False</label>
693                             </div>
694                         </div>
695                     </div>
696                 </div>
697                 <div class="modal-footer">
698                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
699                     <button type="button" class="btn btn-primary">Save</button>
700                 </div>
701             </div>
702         </div>
703     </div>
704 </div>