tango-app-ui-analyse-report 3.3.1-alpha.2 → 3.3.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.eslintrc.json +37 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -25
  4. package/src/lib/components/get-download-report/get-download-report.component.html +15 -0
  5. package/src/lib/components/get-download-report/get-download-report.component.scss +6 -0
  6. package/src/lib/components/get-download-report/get-download-report.component.spec.ts +23 -0
  7. package/src/lib/components/get-download-report/get-download-report.component.ts +61 -0
  8. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.html +1 -0
  9. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.scss +0 -0
  10. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.spec.ts +23 -0
  11. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.ts +26 -0
  12. package/src/lib/components/user-report/user-report.component.html +241 -0
  13. package/src/lib/components/user-report/user-report.component.scss +196 -0
  14. package/src/lib/components/user-report/user-report.component.spec.ts +23 -0
  15. package/src/lib/components/user-report/user-report.component.ts +296 -0
  16. package/src/lib/service/analysereport.service.spec.ts +16 -0
  17. package/src/lib/service/analysereport.service.ts +74 -0
  18. package/src/lib/tango-analyse-report-routing.module.ts +16 -0
  19. package/src/lib/tango-analyse-report.module.ts +28 -0
  20. package/{public-api.d.ts → src/public-api.ts} +6 -2
  21. package/tsconfig.lib.json +14 -0
  22. package/tsconfig.lib.prod.json +10 -0
  23. package/tsconfig.spec.json +14 -0
  24. package/esm2022/lib/components/get-download-report/get-download-report.component.mjs +0 -61
  25. package/esm2022/lib/components/tango-analyse-report/tango-analyse-report.component.mjs +0 -28
  26. package/esm2022/lib/components/user-report/user-report.component.mjs +0 -234
  27. package/esm2022/lib/service/analysereport.service.mjs +0 -65
  28. package/esm2022/lib/tango-analyse-report-routing.module.mjs +0 -24
  29. package/esm2022/lib/tango-analyse-report.module.mjs +0 -43
  30. package/esm2022/public-api.mjs +0 -6
  31. package/esm2022/tango-app-ui-analyse-report.mjs +0 -5
  32. package/fesm2022/tango-app-ui-analyse-report.mjs +0 -445
  33. package/fesm2022/tango-app-ui-analyse-report.mjs.map +0 -1
  34. package/index.d.ts +0 -5
  35. package/lib/components/get-download-report/get-download-report.component.d.ts +0 -17
  36. package/lib/components/tango-analyse-report/tango-analyse-report.component.d.ts +0 -11
  37. package/lib/components/user-report/user-report.component.d.ts +0 -57
  38. package/lib/service/analysereport.service.d.ts +0 -23
  39. package/lib/tango-analyse-report-routing.module.d.ts +0 -7
  40. package/lib/tango-analyse-report.module.d.ts +0 -14
package/.eslintrc.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "extends": "../../.eslintrc.json",
3
+ "ignorePatterns": [
4
+ "!**/*"
5
+ ],
6
+ "overrides": [
7
+ {
8
+ "files": [
9
+ "*.ts"
10
+ ],
11
+ "rules": {
12
+ "@angular-eslint/directive-selector": [
13
+ "error",
14
+ {
15
+ "type": "attribute",
16
+ "prefix": "lib",
17
+ "style": "camelCase"
18
+ }
19
+ ],
20
+ "@angular-eslint/component-selector": [
21
+ "error",
22
+ {
23
+ "type": "element",
24
+ "prefix": "lib",
25
+ "style": "kebab-case"
26
+ }
27
+ ]
28
+ }
29
+ },
30
+ {
31
+ "files": [
32
+ "*.html"
33
+ ],
34
+ "rules": {}
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/tango-analyse-report",
4
+ "lib": {
5
+ "entryFile": "src/public-api.ts"
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,25 +1,12 @@
1
- {
2
- "name": "tango-app-ui-analyse-report",
3
- "version": "3.3.1-alpha.2",
4
- "peerDependencies": {
5
- "@angular/common": "^17.3.0",
6
- "@angular/core": "^17.3.0"
7
- },
8
- "dependencies": {
9
- "tslib": "^2.3.0"
10
- },
11
- "sideEffects": false,
12
- "module": "fesm2022/tango-app-ui-analyse-report.mjs",
13
- "typings": "index.d.ts",
14
- "exports": {
15
- "./package.json": {
16
- "default": "./package.json"
17
- },
18
- ".": {
19
- "types": "./index.d.ts",
20
- "esm2022": "./esm2022/tango-app-ui-analyse-report.mjs",
21
- "esm": "./esm2022/tango-app-ui-analyse-report.mjs",
22
- "default": "./fesm2022/tango-app-ui-analyse-report.mjs"
23
- }
24
- }
25
- }
1
+ {
2
+ "name": "tango-app-ui-analyse-report",
3
+ "version": "3.3.1-alpha.3",
4
+ "peerDependencies": {
5
+ "@angular/common": "^17.3.0",
6
+ "@angular/core": "^17.3.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false
12
+ }
@@ -0,0 +1,15 @@
1
+ <div class="card border-0">
2
+ <div class="card-header">
3
+ <span class="card-title">Report History</span>
4
+ </div>
5
+ <div *ngIf="!noData" class="card-body">
6
+ <div *ngFor="let list of reportList">
7
+ <div class="DownloadReport mb-5 cursor-pointer" (click)="downLoadData(list?.Key)">{{list?.Key.split('/').splice(1).join('/')}}||{{list?.LastModified}}</div>
8
+ </div>
9
+ </div>
10
+ <div *ngIf="noData" class="card-body border-0">
11
+ <div class="card-body d-flex justify-content-center align-items-center flex-column">
12
+ <img class="img-src w-25" src="./assets/tango/Icons/Nodata.svg" alt="">
13
+ </div>
14
+ </div>
15
+ </div>
@@ -0,0 +1,6 @@
1
+ .DownloadReport{
2
+ font-size: 16px;
3
+ font-weight: 600;
4
+ text-decoration: underline;
5
+ color: #00A3FF;
6
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { GetDownloadReportComponent } from './get-download-report.component';
4
+
5
+ describe('GetDownloadReportComponent', () => {
6
+ let component: GetDownloadReportComponent;
7
+ let fixture: ComponentFixture<GetDownloadReportComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [GetDownloadReportComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(GetDownloadReportComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,61 @@
1
+ import { Component,Input, OnInit } from '@angular/core';
2
+ import { AnalysereportService } from '../../service/analysereport.service';
3
+
4
+ @Component({
5
+ selector: 'lib-get-download-report',
6
+ templateUrl: './get-download-report.component.html',
7
+ styleUrl: './get-download-report.component.scss'
8
+ })
9
+ export class GetDownloadReportComponent implements OnInit {
10
+ @Input() data:any;
11
+ activeData: any;
12
+ reportList: any;
13
+ noData:boolean = false;
14
+
15
+ constructor(private service:AnalysereportService){
16
+
17
+ }
18
+
19
+ ngOnInit(){
20
+ this.getReportList();
21
+ }
22
+
23
+ getReportList(){
24
+ let payload = {
25
+ fileDate : this.data?.fileDate,
26
+ clientId : this.data?.clientId
27
+ }
28
+ this.service.getReportList(payload).subscribe({
29
+ next:(res:any) => {
30
+ if(res && res.code === 200){
31
+ this.reportList = res?.data?.result;
32
+ }else{
33
+ this.noData = true;
34
+ }
35
+ },
36
+ complete:()=>{
37
+
38
+ },
39
+ error:(err)=>{
40
+ this.noData = true;
41
+ },
42
+ })
43
+ }
44
+
45
+ downLoadData(type:any){
46
+ this.service.downloadReport(type).subscribe((res)=>{
47
+ this.saveFile(res, type.split('/').pop())
48
+ })
49
+ }
50
+
51
+ saveFile(buffer: ArrayBuffer, filename: string) {
52
+ const blob = new Blob([buffer], { type: 'application/octet-stream' });
53
+ const url = window.URL.createObjectURL(blob);
54
+ const anchor = document.createElement('a');
55
+ anchor.href = url;
56
+ anchor.download = filename;
57
+ anchor.click();
58
+ window.URL.revokeObjectURL(url);
59
+ }
60
+
61
+ }
@@ -0,0 +1 @@
1
+ <lib-user-report></lib-user-report>
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { TangoAnalyseReportComponent } from './tango-analyse-report.component';
4
+
5
+ describe('TangoAnalyseReportComponent', () => {
6
+ let component: TangoAnalyseReportComponent;
7
+ let fixture: ComponentFixture<TangoAnalyseReportComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [TangoAnalyseReportComponent]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(TangoAnalyseReportComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,26 @@
1
+ import { Component, OnInit } from '@angular/core';
2
+ import { PageInfoService } from 'tango-app-ui-global';
3
+
4
+ @Component({
5
+ selector: 'lib-tango-analyse-report',
6
+ templateUrl: './tango-analyse-report.component.html',
7
+ styleUrl: './tango-analyse-report.component.scss'
8
+ })
9
+ export class TangoAnalyseReportComponent implements OnInit {
10
+
11
+ constructor(public pageInfo:PageInfoService) {}
12
+
13
+ ngOnInit(): void {
14
+ this.setPageData();
15
+ }
16
+
17
+ setPageData() {
18
+ this.pageInfo.setTitle('Reports')
19
+ this.pageInfo.setDescription('Reports')
20
+ this.pageInfo.setBreadcrumbs([
21
+ { title: 'Analyze', path: '/manage/traffic', isActive: false, isSeparator: false },
22
+ { title: 'Analyze', path: '/manage/traffic', isActive: false, isSeparator: true },
23
+ ])
24
+ }
25
+
26
+ }
@@ -0,0 +1,241 @@
1
+ <div class="row mb-5">
2
+ <div [ngClass]="showsidenav ? 'col-sm-3':'d-none'">
3
+ <div class="card position-relative h-100">
4
+ <div class="card-body p-0">
5
+ <div ngbAccordion [closeOthers]="true">
6
+ <!-- Standard Template Start -->
7
+
8
+ <div ngbAccordionItem [collapsed]="openAccordian">
9
+ <div class="d-flex" ngbAccordionHeader>
10
+ <button class="mainheading" ngbAccordionButton (click)="reset()">
11
+ <div class="d-grid">Standard Template</div>
12
+ <div class="divider"></div>
13
+ </button>
14
+ </div>
15
+ <div ngbAccordionCollapse>
16
+ <div ngbAccordionBody class="pt-0 border-0">
17
+ <ng-template class="d-flex flex-column justify-content-between">
18
+ <div class="card-body h-auto p-0">
19
+ <div class="card-label">
20
+ Please select a report to preview
21
+ </div>
22
+ <div *ngFor="let data of standardData" class="mt-5 cursor-pointer">
23
+ <div (click)="selectRadio(data)" class="d-flex align-items-center">
24
+ <input [checked]="selectedData.name === data.name" type="radio" class="radio">
25
+ <span class="ms-5 standard">{{data.name}}</span>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </ng-template>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <!-- Standard Template End -->
34
+ <!-- Custom Template Start -->
35
+ <!-- *ngIf="!openCustom" -->
36
+ <div ngbAccordionItem [collapsed]="!openCustom">
37
+ <div class="d-flex" ngbAccordionHeader>
38
+ <button class="mainheading pt-0" ngbAccordionButton (click)="resetValues()">
39
+ <div class="d-grid">Custom Template</div>
40
+ <div class="divider"></div>
41
+ </button>
42
+ </div>
43
+ <div ngbAccordionCollapse>
44
+ <div ngbAccordionBody>
45
+ <ng-template>
46
+ <div class="card-body h-100px p-0">
47
+ <div class="card-label">
48
+ Please select your data points to add into the reports
49
+ </div>
50
+ <div class="btnheader w-100 p-2 mt-5">
51
+ <span class="cursor-pointer px-2" (click)="customOption(button)" [ngClass]="this.custombtn === button ? 'btn px-3':'px-3'" *ngFor="let button of costomButtons">{{button}}</span>
52
+ </div>
53
+ <div [ngClass]="!infraTable.length ? 'h-100 overflow-auto' : ''">
54
+ <div *ngIf="custombtn === 'Metrics'">
55
+ <div *ngFor="let data of metricsData" class="mt-5">
56
+ <div>
57
+ <input type="checkbox" class="mt-2 cursor-pointer" [(ngModel)]="data.checked">
58
+ <span class="ms-5 standard fs-4">{{data.name}}</span>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ <div *ngIf="custombtn === 'Comparision'">
63
+ <div *ngFor="let data of comparisionData" class="mt-5">
64
+ <div class="cursor-pointer d-flex align-items-center" (click)="getComparision(data)">
65
+ <input [checked]="comparisionFilter === data" type="radio" class="radio">
66
+ <span class="ms-5 standard fs-4">{{data}}</span>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ <div *ngIf="custombtn === 'Time Filter'">
71
+ <div *ngFor="let data of filterData" class="mt-5">
72
+ <div class="cursor-pointer d-flex align-items-center" (click)="getFilter(data)">
73
+ <input [checked]="filterDataList === data" type="radio" class="radio">
74
+ <span class="ms-5 standard fs-4">{{data === 'hour' ? 'By Hour' : 'By Date'}}</span>
75
+ </div>
76
+ </div>
77
+ </div>
78
+
79
+ </div>
80
+ <div *ngIf="openCustom" class="d-flex w-100" [ngClass]="!loading ? 'mt-5':''">
81
+ <button class="btn btn-default btn-outline w-50 me-3" [ngClass]="custombtn === 'Metrics' ? 'hidden' : ''" (click)="movetoBack()">Back</button>
82
+ <button *ngIf="custombtn !== 'Time Filter'" (click)="movetoNext()" class="btn btn-default btn-primary w-50 ms-3">Next</button>
83
+ <button *ngIf="custombtn === 'Time Filter'" (click)="customCreate()" class="btn btn-default btn-primary w-50 ms-3">View</button>
84
+ </div>
85
+ </div>
86
+ </ng-template>
87
+ </div>
88
+ </div>
89
+
90
+ </div>
91
+ <!-- Custom Template End -->
92
+
93
+ </div>
94
+
95
+
96
+ </div>
97
+ <div class="card-footer border-0 mt-5">
98
+ <!-- <button *ngIf="!openAccordian" (click)="createCustom()" class="btn btn-primary w-100">
99
+ Create Custom Template
100
+ </button> -->
101
+ <!-- <div *ngIf="openCustom" class="d-flex w-100 mt-5">
102
+ <button class="btn btn-default btn-outline w-50 me-3" [ngClass]="custombtn === 'Metrics' ? 'hidden' : ''" (click)="movetoBack()">Back</button>
103
+ <button *ngIf="custombtn !== 'Time Filter'" (click)="movetoNext()" class="btn btn-default btn-primary w-50 ms-3">Next</button>
104
+ <button *ngIf="custombtn === 'Time Filter'" (click)="customCreate()" class="btn btn-default btn-primary w-50 ms-3">View</button>
105
+ </div> -->
106
+ </div>
107
+ <div *ngIf="showsidenav" (click)="sidenav()" class="backButtonright text-center pt-1 cursor-pointer">
108
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
109
+ <path d="M8.27259 12.6363L4.63623 8.99989L8.27259 5.36353M13.3635 12.6363L9.72714 8.99989L13.3635 5.36353" stroke="#101828" stroke-width="1.45455" stroke-linecap="round" stroke-linejoin="round"/>
110
+ </svg>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ <div [ngClass]="showsidenav ? 'col-sm-9':'col-sm-12'">
115
+ <div class="card position-relative h-100">
116
+ <div *ngIf="!showsidenav" (click)="sidenav()" class="backButtonleft text-center pt-1 cursor-pointer">
117
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none">
118
+ <path d="M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377" stroke="#101828" stroke-width="1.45455" stroke-linecap="round" stroke-linejoin="round"/>
119
+ </svg>
120
+ </div>
121
+ <div class="card-header border-0">
122
+ <div class="card-title">
123
+ <span class="card-label">{{selectedData?.name || 'Custom Template'}}</span>
124
+ </div>
125
+ <div class="card-toolbar">
126
+ <div class="d-flex align-items-center position-relative my-1">
127
+ <span class="svg-icon svg-icon-1 position-absolute ms-3">
128
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
129
+ viewBox="0 0 24 24" fill="none">
130
+ <rect opacity="0.5" x="17.0365" y="15.1223" width="8.15546"
131
+ height="2" rx="1" transform="rotate(45 17.0365 15.1223)"
132
+ fill="currentColor"></rect>
133
+ <path
134
+ d="M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z"
135
+ fill="currentColor"></path>
136
+ </svg>
137
+ </span>
138
+ <input type="text" class="form-control ps-14 me-2" (change)="searchData()" [(ngModel)]="searchValue" placeholder="Search"
139
+ autocomplete="off"/>
140
+ </div>
141
+ <button class="btn btn-default btn-outline me-3" (click)="ExportasXlsx()" [disabled]="!infraTable.length"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
142
+ <path d="M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
143
+ </svg> <span class="ms-3">Export</span></button>
144
+ <!-- <button class="btn btn-default btn-outline" (click)="shareData()">
145
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
146
+ <g clip-path="url(#clip0_10164_5579)"><path d="M18.3332 1.66675L9.1665 10.8334M18.3332 1.66675L12.4998 18.3334L9.1665 10.8334M18.3332 1.66675L1.6665 7.50008L9.1665 10.8334" stroke="#344054" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round"/>
147
+ </g><defs><clipPath id="clip0_10164_5579"><rect width="20" height="20" fill="white"/></clipPath></defs></svg><span *ngIf="!showsidenav" class="ms-3">Share</span>
148
+ </button> -->
149
+ </div>
150
+ </div>
151
+ <div class="card-body">
152
+ <ng-container *ngIf="loading">
153
+ <div class="row loader card d-flex justify-content-center align-items-center">
154
+ <div class="shimmer">
155
+ <div class="wrapper">
156
+ <div class="stroke animate title"></div>
157
+ <div class="stroke animate link"></div>
158
+ <div class="stroke animate description"></div>
159
+ </div>
160
+ </div>
161
+ <div class="shimmer">
162
+ <div class="wrapper">
163
+ <div class="stroke animate title"></div>
164
+ <div class="stroke animate link"></div>
165
+ <div class="stroke animate description"></div>
166
+ </div>
167
+ </div>
168
+ </div>
169
+ </ng-container>
170
+ <div class="row" *ngIf="!loading && noData">
171
+ <div class="col-lg-12">
172
+ <div class="card-body my-8 d-flex justify-content-center align-items-center flex-column">
173
+ <img class="img-src" src="./assets/tango/Icons/Nodata1.svg" alt="">
174
+ <div class="nodatamaintext mt-3">No data found</div>
175
+ <div class="nodatasubtext">There is no result for Report Analysis</div>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ <div class="table-responsive" *ngIf="!loading && !noData && infraTable.length">
180
+ <table class="table bottom-border text-nowrap w-100">
181
+ <thead>
182
+ <tr>
183
+ <th *ngFor="let column of displayedColumns;let i=index">
184
+ <div class="cursor-pointer" (click)="sortData(column)">
185
+ <span>{{column}}</span>
186
+ <span *ngIf="sortColumName === column && sortBy !== 1 || sortColumName !== column" class="ms-3">
187
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
188
+ <path d="M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004"
189
+ [attr.stroke]="sortColumName === column ? '#00A3FF' :'#667085'" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round" />
190
+ </svg>
191
+ </span>
192
+ <span *ngIf="sortColumName === column && sortBy !== -1" class="ms-3">
193
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
194
+ <path d="M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004"
195
+ [attr.stroke]="sortColumName === column ? '#00A3FF' :'#667085'" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round" />
196
+ </svg>
197
+ </span>
198
+
199
+ </div>
200
+ </th>
201
+ </tr>
202
+ </thead>
203
+ <tbody>
204
+ <tr *ngFor="let data of infraTable; let i = index">
205
+ <td *ngFor="let key of displayedColumns">
206
+ <span>{{key === 'date' ? (data[key] | date:'dd MMM, YYYY') : (data[key]) }}</span>
207
+ </td>
208
+ </tr>
209
+ </tbody>
210
+ </table>
211
+ </div>
212
+ <lib-pagination [itemsPerPage]="dynamicData.limit"
213
+ [currentPage]="(dynamicData.offset + 1)" [totalItems]="totalCount"
214
+ [paginationSizes]="[10,20,30]" [pageSize]="dynamicData.limit"
215
+ (pageChange)="onPageChange($event)"
216
+ (pageSizeChange)="onPageSizeChange($event)" *ngIf="!loading && !noData && infraTable.length"></lib-pagination>
217
+
218
+ </div>
219
+ </div>
220
+ </div>
221
+ </div>
222
+
223
+ <ng-template #confirmationModal let-modal>
224
+ <div class="card border-0">
225
+ <div class="card-body">
226
+ <img src="./assets/tango/Images/custompopup-icon.png">
227
+ <div class=" mt-5">
228
+ <span class="header fw-bold">Custom Template Name</span>
229
+ <div class="mt-3 sub-header fw-semibold">Are you sure you want to delete the user globally?</div>
230
+ </div>
231
+ <div class="mt-10">
232
+ <label class="sub-header" style="color: #344054; font-weight: 400;" for="custom-name">Template Name</label>
233
+ <input type="text" [(ngModel)]="customName" class="form-control mt-2" id="custom-Name">
234
+ </div>
235
+ <div class="d-flex justify-content-between mt-10">
236
+ <button type="button" class="btn btn-default btn-outline w-50 me-2" (click)="modal.dismiss()">Cancel</button>
237
+ <button type="button" class="btn btn-primary w-50 ms-2" [disabled]="customName === ''" (click)="modal.close()">Apply</button>
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </ng-template>