Merge "update template&mapping create view."
[ccsdk/cds.git] / cds-ui / designer-client / src / app / modules / feature-modules / packages / package-creation / template-mapping / templ-mapp-creation / templ-mapp-creation.component.html
1 <h6 class="create-title">CREATE</h6>
2 <div class="card creat-card">
3     <div class="single-line-model">
4         <label class="label-name">Name
5             <span _ngcontent-uew-c3="">*</span>
6         </label>
7
8         <div class="label-input">
9             <input type="input" [(ngModel)]="fileName" placeholder="Template name" name="templateName" autofocus
10                 [autofocus]="true">
11         </div>
12     </div>
13 </div>
14
15 <div class="template-mapping-accordion">
16     <div class="accordion" id="accordion">
17         <div class="card">
18             <div class="card-header" id="headingOne">
19                 <h5 class="mb-0 d-flex justify-content-between">
20                     <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true"
21                         aria-controls="collapseOne">
22                         1. Template <span class="accordian-title">{{currentTemplate?.fileName?.split('/')[1]}}</span>
23                     </button>
24
25                 </h5>
26             </div>
27
28             <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
29                 <div class="card-body">
30                     <div class="single-line">
31                         <label class="label-name">Template Type</label>
32                         <div class="label-input">
33                             <label name="trst" (click)="allowedExt=['.vtl']">
34                                 <input class="form-check-input" [(ngModel)]="templateExt" type="radio"
35                                     name="exampleRadios" id="exampleRadios1" value=Velcoity>
36                                 <span>
37                                     Velcoity
38                                 </span>
39                             </label>
40                             <label name="trst" (click)="allowedExt=['.j2','.jinja2']">
41                                 <input class="form-check-input" [(ngModel)]="templateExt" type="radio"
42                                     name="exampleRadios" id="exampleRadios1" value=Jinja>
43
44                                 <span>
45                                     Jinja
46                                 </span>
47                             </label>
48                             <label name="trst" (click)="allowedExt=['.kt']">
49                                 <input class="form-check-input" [(ngModel)]="templateExt" type="radio"
50                                     name="exampleRadios" id="exampleRadios1" value=Kotlin>
51
52                                 <span>
53                                     Kotlin
54                                 </span>
55                             </label>
56                         </div>
57                     </div>
58                     <div class="create-template-import">Use the editor to add parameters or you can also
59                         <a href="#" data-toggle="modal" (click)="allowedExt=[getFileExtension()]"
60                             data-target="#templateModal"><b>Import
61                                 File</b></a></div>
62                     <div class="editor-container mb-4">
63                         <app-source-editor (textChange)="textChanges($event,templateInfo.fileName)"
64                             [(text)]="templateFileContent"></app-source-editor>
65                     </div>
66                 </div>
67             </div>
68         </div>
69         <div class="card">
70             <div class="card-header" id="headingTwo">
71                 <h5 class="mb-0">
72                     <button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapseTwo"
73                         aria-expanded="false" aria-controls="collapseTwo">
74                         2. Manage Mapping <span
75                             class="accordian-title">{{currentMapping?.fileName?.split('/')[1]}}</span>
76                     </button>
77                 </h5>
78             </div>
79             <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
80                 <div class="card-body">
81                     <p class="text-center"><b>Select a source to load config parameters</b></p>
82                     <div class="text-center">
83                         <button [disabled]="!(variables?.length>0 && templateFileContent?.trim()?.length > 0)"
84                             (click)="getMappingTableFromTemplate($event)" class="mapping-source-load" [ngClass]="variables?.length>0 && templateFileContent?.trim()?.length > 0
85                             ?'hover-enable':'hover-disable'">
86                             <i class="icon-use-attributes"></i>
87                             <br />
88                             <span>Use Current Template Instance</span>
89                         </button>
90                         <a href="#" (click)="allowedExt=['.csv']" data-toggle="modal" data-target="#templateModal"
91                             class="mapping-source-load">
92                             <i class="icon-upload-attributes"></i>
93                             <br />
94                             <div>Upload Attributes List</div>
95                             <div class="source-load-note">(Should be comma delimited file)</div>
96                         </a>
97                         <!-- <a href="#" class="mapping-source-load">
98                             <i class="icon-import-cds"></i>
99                         <br/>
100                             <span>Import from SDC Model</span>
101                         </a> -->
102                     </div>
103
104                     <div class="table-container">
105
106
107                     </div>
108                 </div>
109                 <div id="mapping-table" [hidden]="resourceDictionaryRes?.length == 0" class="mx-4 my-2">
110                     <table datatable [dtOptions]="dtOptions" [dtTrigger]="dtTrigger" class="row-border hover">
111                         <thead>
112                             <tr>
113                                 <th>Required</th>
114                                 <th>Parameter Name</th>
115                                 <th>Dictionary Name</th>
116                                 <th>Dictionary Source</th>
117                                 <th>Dependancies</th>
118                                 <th>Default</th>
119                                 <th>Data Type</th>
120                                 <th>Entry Schema</th>
121                             </tr>
122                         </thead>
123                         <tbody>
124                             <tr *ngFor="let dict of resourceDictionaryRes">
125                                 <td>
126                                     <img *ngIf="dict.definition?.property?.required"
127                                         src="/assets/img/icon-required-yes.svg">
128                                     <img *ngIf="!dict.definition?.property?.required"
129                                         src="/assets/img/icon-required-no.svg">
130                                 </td>
131                                 <td>{{ dict.name }}</td>
132                                 <td>{{ dict.name }}</td>
133                                 <td>
134                                     <select class="custom-select" (click)="selectSource(dict,$event)">
135                                         <option *ngFor="let val of dict.definition.sources | keyvalue">
136                                             {{initMap(dict.name,val)}}
137                                         </option>
138
139                                     </select>
140                                 </td>
141                                 <td>
142                                     <!-- <select class="custom-select">
143                                         <option *ngFor="let val of getKeys(dependancies)">
144                                             {{ getValue(dict.name)}}</option>
145
146                                     </select> -->
147                                     <input type="text" class="form-control" [ngModel]="getValue(dict.name)">
148                                     <!-- {{ dict.definition.sources }} -->
149                                 </td>
150                                 <td>{{ dict.definition?.property?.default }}</td>
151                                 <td>{{ dict.definition?.property?.type }}</td>
152                                 <td>{{ dict.definition?.property['entry_schema'] }}</td>
153                             </tr>
154                         </tbody>
155                     </table>
156                 </div>
157
158                 <div id="mapping-table" [hidden]="mappingRes?.length == 0" class="mx-4 my-2">
159                     <table datatable [dtOptions]="dtOptions" [dtTrigger]="resTableDtTrigger" class="row-border hover">
160                         <thead>
161                             <tr>
162                                 <th>Required</th>
163                                 <th>Parameter Name</th>
164                                 <th>Dictionary Name</th>
165                                 <th>Dictionary Source</th>
166                                 <th>Dependancies</th>
167                                 <th>Default</th>
168                                 <th>Data Type</th>
169                                 <th>Entry Schema</th>
170                             </tr>
171                         </thead>
172                         <tbody>
173                             <tr *ngFor="let dict of mappingRes">
174                                 <td>
175                                     <img *ngIf="dict.definition?.property?.required"
176                                         src="/assets/img/icon-required-yes.svg">
177                                     <img *ngIf="!dict.definition?.property?.required"
178                                         src="/assets/img/icon-required-no.svg">
179                                 </td>
180                                 <td>{{ dict['name'] }}</td>
181                                 <td>{{ dict['name'] }}</td>
182                                 <td>
183                                     <input type="text" class="form-control" [value]="dict['dictionary-source']"
184                                         disabled>
185
186                                 </td>
187                                 <td>
188                                     <input type="text" class="form-control" [value]="dict['dependencies']" disabled>
189                                     <!-- {{ dict.definition.sources }} -->
190                                 </td>
191                                 <td>{{ dict['property']['default'] }}</td>
192                                 <td>{{ dict['property']['type'] }}</td>
193                                 <td>{{ dict['property']['entry_schema'] }}</td>
194                             </tr>
195                         </tbody>
196                     </table>
197                 </div>
198
199
200             </div>
201
202
203         </div>
204         <div class="template-mapping-action">
205             <button (click)="cancel()" [disabled]="fileName?.length <=0"
206                 class="btn btn-outline-secondary">Cancel</button>
207             <button (click)="saveToStore()" [disabled]="fileName?.length <=0" class="btn btn-primary">Submit</button>
208         </div>
209     </div>
210 </div>
211
212
213 <div class="modal fade" id="templateModal" tabindex="-1" role="dialog" aria-labelledby="templateModalLabel"
214     aria-hidden="true">
215     <div class="modal-dialog" role="document">
216         <div class="modal-content">
217             <div class="modal-header">
218                 <h5 class="modal-title" id="templateModalLabel">Import File</h5>
219                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
220                     <img src="assets/img/icon-close.svg" />
221                 </button>
222             </div>
223             <div class="modal-body">
224                 <ngx-file-drop [multiple]="false" [accept]="allowedExt" dropZoneLabel="Drop files here"
225                     (onFileDrop)="dropped($event)" (onFileOver)="fileOver($event)" (onFileLeave)="fileLeave($event)">
226                     <ng-template ngx-file-drop-content-tmp let-openFileSelector="openFileSelector">
227                         <div class="folder-upload">
228                             <img src="assets/img/folder-upload.svg" />
229                         </div>
230                         <div class="folder-upload-text">
231                             Drag & Drop file
232                         </div>
233                         <div class="folder-upload-text">or
234                             <button type="button" class="btn btn-sm btn-primary" (click)="openFileSelector()">Browse
235                                 Files
236                             </button>
237                         </div>
238                         <div class="folder-upload-type">Allowed file type:
239                             {{allowedExt}}
240                         </div>
241                     </ng-template>
242                 </ngx-file-drop>
243                 <div class="upload-table">
244                     <table class="table">
245                         <thead>
246                             <tr *ngFor="let item of uploadedFiles; let i=index">
247                                 <th width="40"><img src="assets/img/icon-file-code.svg" /></th>
248                                 <th>{{ item.name }}</th>
249                                 <th width="40" class="text-right"><img src="assets/img/icon-remove-file.svg" /></th>
250                             </tr>
251                         </thead>
252                     </table>
253                 </div>
254             </div>
255
256             <div class="modal-footer">
257                 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal"
258                     (click)="resetTheUploadedFiles()">Cancel
259                 </button>
260
261                 <button (click)="uploadFile();openListView()" class="btn btn-sm btn-primary" data-dismiss="modal"
262                     type="button">
263                     Import
264                 </button>
265             </div>
266         </div>
267     </div>
268 </div>