Stop clearing angular store after deploy to avoid script problem.
[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">Cancel</button>
431                 <button type="button" class="btn btn-primary" data-dismiss="modal" (click)="submitAttributes()">Submit
432                     Attributes</button>
433             </div>
434         </div>
435     </div>
436 </div>
437
438 <!--Action - Add Attribute From Function - Modal-->
439 <div class="modal fade" id="exampleModalScrollable3" tabindex="-1" role="dialog"
440     aria-labelledby="exampleModalScrollableTitle3" aria-hidden="true">
441     <div class="modal-dialog  modal-dialog-scrollable" role="document">
442         <div class="modal-content">
443             <div class="modal-header">
444                 <h5 class="modal-title" id="exampleModalScrollableTitle3">
445                     Add Attributes from Function</h5>
446                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
447                     <img src="assets/img/icon-close.svg" />
448                 </button>
449             </div>
450             <div class="modal-body createAttributeTabs">
451                 <!--Action - Inputs & Outputs Attribute-->
452                 <ul class="nav nav-tabs" id="myTab" role="tablist">
453                     <li class="nav-item">
454                         <a class="nav-link active" id="home-tab" data-toggle="tab" href="#input" role="tab"
455                             aria-controls="home" aria-selected="true">Inputs</a>
456                     </li>
457                     <li class="nav-item">
458                         <a class="nav-link" id="profile-tab" data-toggle="tab" href="#output" role="tab"
459                             aria-controls="profile" aria-selected="false">Outputs</a>
460                     </li>
461                 </ul>
462                 <div class="tab-content border-0" id="myTabContent">
463                     <!--INPUTS Tab-->
464                     <div class="tab-pane fade show active create-form" id="input" role="tabpanel"
465                         aria-labelledby="input-tab">
466                         <div class="form-group row">
467                             <div class="col">
468                                 <!--<input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">-->
469                                 <div class="container p-0">
470                                     <label>Selected Attributes</label>
471                                     <div *ngFor="let tempInput of tempInputs" class="selectedWrapper">{{tempInput}}
472                                     </div>
473                                 </div>
474                             </div>
475                         </div>
476
477                         <div class="row">
478                             <div class="col-6">
479                                 <b class="listBoxTitle">1. Choose Function Name</b>
480                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
481                                     <input type="text" class="form-control input-search-controller"
482                                         placeholder="Functions">
483                                     <div class="scrollWrapper">
484                                         <a [class]="steps.indexOf(step) === 0?
485                                         'list-group-item list-group-item-action active':
486                                         'list-group-item list-group-item-action'" [id]="step" data-toggle="list"
487                                             href="#list-home" role="tab" aria-controls="home"
488                                             *ngFor="let step of steps">
489
490                                             <i class="icon-resource_resolution mr-1" aria-hidden="true" (click)="setInputAndOutputs(
491                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
492                                             )"></i>
493                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
494                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
495                                             )"></i></a>
496                                     </div>
497                                 </div>
498                             </div>
499                             <div class="col-6">
500                                 <b class="listBoxTitle">2. Choose Input Attribute Name</b>
501                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
502                                     <input type="text" class="form-control input-search-controller"
503                                         placeholder="Attributes">
504                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
505                                         aria-labelledby="list-home-list">
506                                         <div class="scrollWrapper">
507                                             <div *ngIf="suggestedInputs.length>0" class="btn-group btn-group-toggle"
508                                                 data-toggle="buttons">
509                                                 <label class="btn tooltipHTML tooltipGetAtt active"
510                                                     *ngFor="let suggestedInput of suggestedInputs"
511                                                     (click)="addTempInput(suggestedInput)">
512                                                     <span class="tooltiptext">
513                                                         <h5>integer</h5>
514                                                     </span>
515                                                     <input type="radio" name="options" [id]="suggestedInput"
516                                                         autocomplete="off" (click)="addTempInput(suggestedInput)">
517                                                     {{suggestedInput}}
518                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
519                                                 </label>
520                                             </div>
521                                             <div *ngIf="suggestedInputs.length == 0">
522                                                 <p class="noAttributes">No Attributes Available</p>
523                                             </div>
524                                         </div>
525                                     </div>
526                                 </div>
527                             </div>
528                         </div>
529                     </div>
530                     <!--OUTPUTS Tab-->
531                     <div class="tab-pane fade create-form" id="output" role="tabpanel" aria-labelledby="output-tab">
532                         <div class="form-group row">
533                             <div class="col">
534                                 <input type="email" class="form-control" id="inputEmail3" placeholder="Attributes">
535                                 <div class="container p-0">
536                                     <div *ngFor="let tempOutput of tempOutputs" class="selectedWrapper">{{tempOutput}}
537                                     </div>
538                                 </div>
539                             </div>
540                         </div>
541
542                         <div class="row">
543                             <div class="col-6">
544                                 <b class="listBoxTitle">1. Choose Function Name</b>
545                                 <div class="list-group addedFunctionsList" id="list-tab" role="tablist">
546                                     <input type="text" class="form-control input-search-controller"
547                                         placeholder="Functions">
548                                     <div class="scrollWrapper" *ngFor="let step of steps">
549                                         <a [class]="steps.indexOf(step) === 0?
550                                         'list-group-item list-group-item-action active':
551                                         'list-group-item list-group-item-action'" [id]="step"
552                                             *ngFor="let step of steps" data-toggle="list" href="#list-home" role="tab"
553                                             aria-controls="home"><i class="icon-resource_resolution mr-1"
554                                                 aria-hidden="true"></i>
555                                             {{step}} <i class="icon-next_arrow" aria-hidden="true" (click)="setInputAndOutputs(
556                                             this.designerState.template.workflows[actionName]['steps'][step]['target']
557                                             )"></i></a>
558                                     </div>
559                                 </div>
560                             </div>
561                             <div class="col-6">
562                                 <b class="listBoxTitle">2. Choose output Attribute Name</b>
563                                 <div class="tab-content nestedAttributes mt-0 p-0" id="nav-tabContent">
564                                     <input type="text" class="form-control input-search-controller"
565                                         placeholder="Attributes">
566                                     <div class="tab-pane fade show active" id="list-home" role="tabpanel"
567                                         aria-labelledby="list-home-list">
568                                         <div class="scrollWrapper">
569                                             <div *ngIf="suggestedOutputs.length > 0" class="btn-group btn-group-toggle"
570                                                 data-toggle="buttons">
571                                                 <label class="btn tooltipHTML tooltipGetAtt active"
572                                                     *ngFor="let suggestedOutput of suggestedOutputs">
573                                                     <span class="tooltiptext">
574                                                         <h5>integer</h5>
575                                                     </span>
576                                                     <input type="radio" name="options" [id]="suggestedOutput"
577                                                         autocomplete="off" (dblclick)="addTempOutput(suggestedOutput)">
578                                                     {{suggestedOutput}}
579                                                     <i class="icon-required-star" type="button" aria-hidden="true"></i>
580                                                 </label>
581
582                                             </div>
583                                             <div *ngIf="suggestedOutputs.length == 0">
584                                                 <p class="noAttributes">No Attributes Available</p>
585                                             </div>
586                                         </div>
587                                     </div>
588                                 </div>
589                             </div>
590                         </div>
591                     </div>
592                 </div>
593             </div>
594             <div class="modal-footer">
595                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
596                 <button type="button" class="btn btn-primary" (click)="submitTempAttributes()">Submit
597                     Attributes
598                 </button>
599             </div>
600         </div>
601     </div>
602 </div>
603
604 <!--Delete Action - Modal-->
605 <div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
606     aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
607     <div class="modal-dialog modal-dialog-scrollable" role="document" style="width: 30%;">
608         <div class="modal-content">
609             <div class="modal-header">
610                 <h5 class="modal-title" id="exampleModalScrollableTitle1">
611                     Delete Action "{{actionName}}"</h5>
612                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
613                     <img src="assets/img/icon-close.svg" />
614                 </button>
615             </div>
616             <div class="modal-body">
617                 Are you sure you want to delete <b>{{suggestedDeletedInput.name}}</b> action "{{actionName}}"?
618             </div>
619             <div class="modal-footer">
620                 <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
621                 <button type="button" class="btn btn-danger" data-dismiss="modal" (click)="deleteActionAttribute()">
622                     Delete
623                 </button>
624             </div>
625         </div>
626     </div>
627 </div>
628 <!--Action - Edit Custom Attribute - Modal-->
629 <div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
630     aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
631     <div class="modal-dialog modal-dialog-scrollable" role="document">
632         <div class="modal-content">
633             <div class="modal-header">
634                 <h5 class="modal-title" id="exampleModalScrollableTitle2">
635                     Edit Custom Attributes</h5>
636                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
637                     <img src="assets/img/icon-close.svg" />
638                 </button>
639             </div>
640             <div class="modal-body createAttributeTabs">
641                 <div class="create-form">
642                     <div class="form-group row">
643                         <label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
644                         <div class="col-sm-9">
645                             <input type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
646                                 [ngModel]="this.suggestedEditedAttribute.name">
647                         </div>
648                     </div>
649                     <div class="form-group row">
650                         <label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
651                         <div class="col-sm-9">
652                             <input type="text" class="form-control" id="inputPassword3"
653                                 placeholder="Add some description"
654                                 [ngModel]="this.suggestedEditedAttribute.description">
655                         </div>
656                     </div>
657                     <div class="form-group row">
658                         <label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
659                         <div class="col-sm-9">
660                             <div class="list-group list-group-horizontal">
661                                 <button type="button" class="list-group-item list-group-item-action"
662                                     [className]="suggestedEditedAttribute?.type?.includes('string')?'' +
663                                  'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">String
664                                 </button>
665                                 <button type="button" class="list-group-item list-group-item-action"
666                                     [className]="suggestedEditedAttribute?.type?.includes('integer')?'' +
667                                          ' list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Integer</button>
668                                 <button type="button" class="list-group-item list-group-item-action"
669                                     [className]="suggestedEditedAttribute?.type?.includes('boolean')?'' +
670                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">Boolean</button>
671                                 <button type="button" class="list-group-item list-group-item-action"
672                                     [className]="suggestedEditedAttribute?.type?.includes('list')?'' +
673                                          'list-group-item list-group-item-action active':'list-group-item list-group-item-action'">List</button>
674                                 <button type="button" class="list-group-item list-group-item-action">Other
675                                 </button>
676                             </div>
677                             <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
678                                 placeholder="Add Other type name" value="dt-resource-assignment-properties">
679                         </div>
680                     </div>
681                     <div class="form-group row">
682                         <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
683                         <div class="col-sm-9">
684                             <div class="custom-control custom-radio custom-control-inline">
685                                 <input type="radio" id="customRadioInline1" name="customRadioInline1"
686                                     class="custom-control-input" [ngModel]="suggestedEditedAttribute.required"
687                                     [checked]="suggestedEditedAttribute.required">
688                                 <label class="custom-control-label" for="customRadioInline1">True</label>
689                             </div>
690                             <div class="custom-control custom-radio custom-control-inline">
691                                 <input type="radio" id="customRadioInline2" name="customRadioInline1"
692                                     class="custom-control-input" [checked]="!suggestedEditedAttribute.required">
693                                 <label class="custom-control-label" for="customRadioInline2">False</label>
694                             </div>
695                         </div>
696                     </div>
697                 </div>
698                 <div class="modal-footer">
699                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
700                     <button type="button" class="btn btn-primary">Save</button>
701                 </div>
702             </div>
703         </div>
704     </div>
705 </div>