Apply style to mat-table in Mapping
[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
index 34644c4..70b1644 100644 (file)
@@ -5,9 +5,11 @@
                 class="fa fa-chevron-left mr-2"></i>Template List</button>
     </div>
     <div class="col text-right">
+        <button (click)="cancel()" [hidden]="!templatesExist || edit" class="btn btn-outline-danger"
+            title="Delete Template">Cancel</button>
         <button data-toggle="modal" [hidden]="!edit" data-target="#templateDeletionModal2"
             class="btn btn-outline-danger" title="Delete Template">Delete</button>
-        <button (click)="cancel()" [hidden]="fileName?.length <=0 || edit"
+        <button (click)="clear()" [hidden]="fileName?.length <=0 || edit"
             class="btn btn-outline-secondary">Clear</button>
         <button tourAnchor="tm-templateFinish" (click)="saveToStore()" [disabled]="fileName?.length <=0"
             title="Submit template and close" class="btn btn-primary">Finish</button>
@@ -71,7 +73,8 @@
                         </div>
                     </div>
                     <div class="create-template-import">Use the editor to add parameters or you can also
-                        <a href="#" data-toggle="modal" data-target="#templateModal"><b>Import
+                        <a href="#" data-toggle="modal" (click)="allowedExt=['.'+templateExt]"
+                            data-target="#templateModal"><b>Import
                                 File</b></a>. <br /> <span class="templateNote"><i class="icon-info"
                                 aria-hidden="true"></i> When you import new file, the new attributes will replace
                             current attributes.</span></div>
                 <div class="card-body">
                     <p class="text-center"><b>Select a source to load config parameters</b></p>
                     <div class="text-center">
-                        <button [disabled]="!(variables?.length>0 && templateFileContent?.trim()?.length > 0)"
-                            (click)="getMappingTableFromTemplate($event)" class="mapping-source-load" [ngClass]="variables?.length>0 && templateFileContent?.trim()?.length > 0
+                        <button [disabled]="!(templateFileContent?.trim()?.length > 0)"
+                            (click)="getMappingTableFromTemplate($event)" class="mapping-source-load" [ngClass]="templateFileContent?.trim()?.length > 0
                             ?'hover-enable':'hover-disable'">
                             <i class="icon-use-attributes"></i>
                             <br />
 
 
                     </div>
-                    
+
                 </div>
-                
+
                 <div id="mapping-table" [hidden]="resourceDictionaryRes?.length == 0" class="mapping-table mx-4 my-2">
-                    <div class="btn-group mapping-editBar" role="group">
-                          <div class="custom-control custom-checkbox" tooltip="Select All" placement="bottom">
-                            <input type="checkbox" class="custom-control-input" id="customCheck1" checked>
-                            <label class="custom-control-label" for="customCheck1"></label>
-                          </div>
-                        <button type="button" class="btn" tooltip="Re-mapping" placement="bottom"><i class="icon-autoMap"></i></button>
-                        <button type="button" class="btn" tooltip="Remove" placement="bottom"><i class="icon-delete-sm"></i></button>
-                      </div>
-                    <table datatable [dtOptions]="initDtOptions" [dtTrigger]="dtTrigger" class="row-border hover">
-                        <thead>
-                            <tr>
-                                <th></th>
-                                <th>Required</th>
-                                <th>Parameter Name</th>
-                                <th>Dictionary Name</th>
-                                <th>Dictionary Source</th>
-                                <th>Dependancies</th>
-                                <th>Default</th>
-                                <th>Data Type</th>
-                                <th>Entry Schema</th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                            <tr *ngFor="let dict of resourceDictionaryRes">
-                                <td>
-                                <div class="custom-control custom-checkbox" tooltip="Select" placement="bottom">
-                            <input type="checkbox" class="custom-control-input" id="customCheck2" [checked]="selectedProps.has(dict.name)"
-                                        (click)="selectProp(dict.name)">
-                            <label class="custom-control-label" for="customCheck2"></label>
-                          </div>
-                                <!-- <input type="checkbox" [checked]="selectedProps.has(dict.name)"
-                                        (click)="selectProp(dict.name)"></td> -->
-                                <td>
-                                    <img *ngIf="dict.definition?.property?.required"
-                                        src="/assets/img/icon-required-yes.svg">
-                                    <img *ngIf="!dict.definition?.property?.required"
-                                        src="/assets/img/icon-required-no.svg">
+                    <div class="mat-elevation-z8">
+                        <!--Edit Buttons-->
+                        <div class="btn-group mapping-editBar" role="group">
+                            <div class="custom-control custom-checkbox" tooltip="Select All" placement="bottom">
+                                <input type="checkbox" (click)="selectAllProps()" class="custom-control-input"
+                                    id="customCheck1"
+                                    [checked]="resourceDictionaryRes.length>0&&resourceDictionaryRes.length === this.selectedProps.size">
+                                <label class="custom-control-label" for="customCheck1"></label>
+                            </div>
+                            <button [disabled]="selectedProps.size <=0" type="button" class="btn" (click)="reMap()"
+                                tooltip="Re-mapping" placement="bottom"><i class="icon-autoMap"></i></button>
+                            <button [disabled]="selectedProps.size <=0" type="button" class="btn"
+                                (click)="removeProps()" tooltip="Remove" placement="bottom"><i
+                                    class="icon-delete-sm"></i></button>
+                            <div style="line-height: 35px;font-size: 10px;">
+                                <span>{{selectedProps.size}} selected </span>
+                                <span>({{resourceDictionaryRes.length}} attributes in total)</span>
+                            </div>
+                        </div>
+                        <mat-paginator [pageSizeOptions]="[10, 25,50, 100]"></mat-paginator>
+                        <mat-form-field class="tableFilter float-right">
+                            <mat-label>Filter</mat-label>
+                            <input matInput (keyup)="initApplyFilter($event)" placeholder="Ex. Mia" #input>
+                        </mat-form-field>
+                        <table mat-table [dataSource]="initDataSource" matSort>
+                            <!-- select Column -->
+                            <ng-container matColumnDef="select">
+                                <th mat-header-cell *matHeaderCellDef> </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <div class="custom-control custom-checkbox" tooltip="Select" placement="bottom">
+                                        <input type="checkbox" class="custom-control-input"
+                                            id="customCheck-{{dict.name}}" [checked]="selectedProps.has(dict.name)"
+                                            (click)="selectProp(dict.name)">
+                                        <label class="custom-control-label" for="customCheck-{{dict.name}}"></label>
+                                    </div>
+                                </td>
+                            </ng-container>
+                            <!-- Required Column -->
+                            <ng-container matColumnDef="Required">
+                                <th mat-header-cell *matHeaderCellDef> Required </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <div class="custom-control custom-checkbox reuiredInput">
+                                        <input type="checkbox" class="custom-control-input" #requiredInput
+                                            (click)="setProp(requiredInput,'required',initDataSource.filteredData.indexOf(dict))"
+                                            id="requiredCheck-{{dict.name}}">
+                                        <label class="custom-control-label" for="requiredCheck-{{dict.name}}"></label>
+                                    </div>
+                                </td>
+                            </ng-container>
+                            <!-- Template Input Column -->
+                            <ng-container matColumnDef="Template Input">
+                                <th mat-header-cell *matHeaderCellDef> Template Input </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <div class="custom-control custom-checkbox reuiredInput">
+                                        <input type="checkbox" class="custom-control-input" #tempInput
+                                            (click)="setProp(tempInput,'input-param',initDataSource.filteredData.indexOf(dict))"
+                                            id="inputCheck-{{dict.name}}">
+                                        <label class="custom-control-label" for="inputCheck-{{dict.name}}"></label>
+                                    </div>
                                 </td>
-                                <td>{{ dict.name }}</td>
-                                <td>{{ dict.name }}</td>
-                                <td>
+                            </ng-container>
+                            <!-- Parameter Name Column -->
+                            <ng-container matColumnDef="name">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Parameter Name </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['name'] }} </td>
+                            </ng-container>
+                            <!-- Dictionary Name Column -->
+                            <ng-container matColumnDef="Dictionary Name">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Dictionary Name </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['name'] }} </td>
+                            </ng-container>
+                            <!-- Dictionary Source Column -->
+                            <ng-container matColumnDef="dictionary-source">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Dictionary Source </th>
+                                <td mat-cell *matCellDef="let dict">
                                     <select class="custom-select" (click)="selectSource(dict,$event)">
                                         <option *ngFor="let val of dict.definition.sources | keyvalue">
                                             {{initMap(dict.name,val)}}
 
                                     </select>
                                 </td>
-                                <td>
-                                    <!-- <select class="custom-select">
-                                        <option *ngFor="let val of getKeys(dependancies)">
-                                            {{ getValue(dict.name)}}</option>
-
-                                    </select> -->
+                            </ng-container>
+                            <!-- Dependancies Column -->
+                            <ng-container matColumnDef="dependencies">
+                                <th mat-header-cell *matHeaderCellDef> Dependancies </th>
+                                <td mat-cell *matCellDef="let dict">
                                     <input type="text" class="form-control" [ngModel]="getValue(dict.name)">
-                                    <!-- {{ dict.definition.sources }} -->
                                 </td>
-                                <td>{{ dict.definition?.property?.default }}</td>
-                                <td>{{ dict.definition?.property?.type }}</td>
-                                <td>{{ dict.definition?.property['entry_schema'] }}</td>
+                            </ng-container>
+                            <!-- Default Column -->
+                            <ng-container matColumnDef="default">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Default </th>
+                                <td mat-cell *matCellDef="let dict"> {{ dict.definition?.property?.default }} </td>
+                            </ng-container>
+                            <!-- Velocity Column -->
+                            <ng-container matColumnDef="Velocity">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Velocity </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <input type="text" class="form-control" #velocity
+                                        (input)="setVelocity(initDataSource.filteredData.indexOf(dict),velocity.value)">
+                                </td>
+
+
+
+                            </ng-container>
+                            <!-- Data Type Column -->
+                            <ng-container matColumnDef="Data Type">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Data Type </th>
+                                <td mat-cell *matCellDef="let dict"> {{  dict.definition?.property?.type  }} </td>
+                            </ng-container>
+                            <!-- Entry Schema Column -->
+                            <ng-container matColumnDef="Entry Schema">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Entry Schema </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict.definition?.property['entry_schema']}} </td>
+                            </ng-container>
+                            <tr mat-header-row *matHeaderRowDef="initColumn"></tr>
+                            <tr mat-row *matRowDef="let row; columns: initColumn;"></tr>
+                            <!-- Row shown when there is no matching data. -->
+                            <tr class="mat-row" *matNoDataRow>
+                                <td class="mat-cell" colspan="4">No data matching the filter "{{input.value}}"</td>
                             </tr>
-                        </tbody>
-                    </table>
+                        </table>
+                    </div>
                 </div>
-
+                <!------ View Table------->
                 <div id="mapping-table-res" [hidden]="mappingRes?.length == 0" class="mapping-table mx-4 my-2">
-                    <table datatable [dtOptions]="dtOptions" [dtTrigger]="resTableDtTrigger" class="row-border hover">
-                        <thead>
-                            <tr>
-                                <th>Required</th>
-                                <th>Parameter Name</th>
-                                <th>Dictionary Name</th>
-                                <th>Dictionary Source</th>
-                                <th>Dependancies</th>
-                                <th>Default</th>
-                                <th>Data Type</th>
-                                <th>Entry Schema</th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                            <tr *ngFor="let dict of mappingRes">
-                                <td>
-                                    <img *ngIf="dict.definition?.property?.required"
-                                        src="/assets/img/icon-required-yes.svg">
-                                    <img *ngIf="!dict.definition?.property?.required"
-                                        src="/assets/img/icon-required-no.svg">
+                    <div class="mat-elevation-z8">
+                        <mat-form-field class="tableFilter float-right">
+                            <mat-label>Filter</mat-label>
+                            <input matInput (keyup)="applyFilter($event)" placeholder="Ex. Mia" #input>
+                        </mat-form-field>
+                        <mat-paginator [pageSizeOptions]="[10, 25,50, 100]"></mat-paginator>
+                        <table mat-table [dataSource]="dataSource" matSort>
+                            <!-- Required Column -->
+                            <ng-container matColumnDef="Required">
+                                <th mat-header-cell *matHeaderCellDef> Required </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <img *ngIf="dict?.property?.required" src="/assets/img/icon-required-yes.svg">
+                                    <img *ngIf="!dict?.property?.required" src="/assets/img/icon-required-no.svg">
+                                </td>
+                            </ng-container>
+                            <!-- Template Input Column -->
+                            <ng-container matColumnDef="Template Input">
+                                <th mat-header-cell *matHeaderCellDef> Template Input </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <img *ngIf="dict['input-param']" src="/assets/img/icon-required-yes.svg">
+                                    <img *ngIf="!dict['input-param']" src="/assets/img/icon-required-no.svg">
                                 </td>
-                                <td>{{ dict['name'] }}</td>
-                                <td>{{ dict['name'] }}</td>
-                                <td>
+                            </ng-container>
+                            <!-- Parameter Name Column -->
+                            <ng-container matColumnDef="name">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Parameter Name </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['name'] }} </td>
+                            </ng-container>
+                            <!-- Dictionary Name Column -->
+                            <ng-container matColumnDef="Dictionary Name">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Dictionary Name </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['name'] }} </td>
+                            </ng-container>
+                            <!-- Dictionary Source Column -->
+                            <ng-container matColumnDef="dictionary-source">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Dictionary Source </th>
+                                <td mat-cell *matCellDef="let dict">
                                     <input type="text" class="form-control" [value]="dict['dictionary-source']"
                                         disabled>
-
                                 </td>
-                                <td>
+                            </ng-container>
+                            <!-- Dependancies Column -->
+                            <ng-container matColumnDef="dependencies">
+                                <th mat-header-cell *matHeaderCellDef> Dependancies </th>
+                                <td mat-cell *matCellDef="let dict">
                                     <input type="text" class="form-control" [value]="dict['dependencies']" disabled>
-                                    <!-- {{ dict.definition.sources }} -->
                                 </td>
-                                <td>{{ dict['property']['default'] }}</td>
-                                <td>{{ dict['property']['type'] }}</td>
-                                <td>{{ dict['property']['entry_schema'] }}</td>
-                            </tr>
-                        </tbody>
-                    </table>
-                </div>
-
+                            </ng-container>
+                            <!-- default Column -->
+                            <ng-container matColumnDef="default">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Default </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['property']['default']}} </td>
+                            </ng-container>
+                            <!-- Velocity Column -->
+                            <ng-container matColumnDef="Velocity">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Velocity </th>
+                                <td mat-cell *matCellDef="let dict">
+                                    <span *ngIf="dict?.property?.metadata">
+                                        {{dict?.property?.metadata['transform-template']}}
+                                    </span>
+                                    <span *ngIf="!dict?.property?.metadata"></span>
+                                </td>
 
-            </div>
 
 
+                            </ng-container>
+                            <!-- Data Type Column -->
+                            <ng-container matColumnDef="Data Type">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Data Type </th>
+                                <td mat-cell *matCellDef="let dict"> {{ dict['property']['type'] }} </td>
+                            </ng-container>
+                            <!-- Entry Schema Column -->
+                            <ng-container matColumnDef="Entry Schema">
+                                <th mat-header-cell *matHeaderCellDef mat-sort-header> Entry Schema </th>
+                                <td mat-cell *matCellDef="let dict"> {{dict['property']['entry_schema']}} </td>
+                            </ng-container>
+                            <tr mat-header-row *matHeaderRowDef="resColumns"></tr>
+                            <tr mat-row *matRowDef="let row; columns: resColumns;"></tr>
+                            <!-- Row shown when there is no matching data. -->
+                            <tr class="mat-row" *matNoDataRow>
+                                <td class="mat-cell" colspan="4">No data matching the filter "{{input.value}}"</td>
+                            </tr>
+                        </table>
+                    </div>
+                </div>
+            </div>
         </div>
-
     </div>
 </div>