gamma-app-controller 1.0.1
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.
- package/README.md +24 -0
- package/esm2020/gamma-app-controller.mjs +2 -0
- package/esm2020/lib/application-controller/app.http.service.mjs +24 -0
- package/esm2020/lib/application-controller/application-content.service.mjs +482 -0
- package/esm2020/lib/application-controller/application-controller.module.mjs +324 -0
- package/esm2020/lib/application-controller/application-dataset-call.service.mjs +321 -0
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +390 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.mjs +349 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.mjs +148 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +167 -0
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.mjs +17 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.mjs +57 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.mjs +409 -0
- package/esm2020/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.mjs +61 -0
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +186 -0
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +134 -0
- package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +559 -0
- package/esm2020/lib/application-controller/common-header/common-header.component.mjs +33 -0
- package/esm2020/lib/application-controller/common.mjs +1207 -0
- package/esm2020/lib/application-controller/environment.mjs +26 -0
- package/esm2020/lib/application-controller/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/application-controller/kpi-service.mjs +108 -0
- package/esm2020/lib/application-controller/loading/loading.component.mjs +16 -0
- package/esm2020/lib/application-controller/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/application-controller/moment-helper.mjs +4 -0
- package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +977 -0
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +172 -0
- package/esm2020/lib/application-controller/page-templates/cdr-config/cdr-config.component.mjs +227 -0
- package/esm2020/lib/application-controller/page-templates/dynamic-route-service.mjs +22 -0
- package/esm2020/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.mjs +118 -0
- package/esm2020/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.mjs +181 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.mjs +71 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +266 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +159 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.mjs +144 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.mjs +20 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.mjs +168 -0
- package/esm2020/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.mjs +74 -0
- package/esm2020/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.mjs +118 -0
- package/esm2020/lib/application-controller/shared/api.service.mjs +117 -0
- package/esm2020/lib/application-controller/shared/app-title/app-title.component.mjs +67 -0
- package/esm2020/lib/application-controller/shared/gamam-widget/gamam-widget.component.mjs +37 -0
- package/esm2020/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.mjs +229 -0
- package/esm2020/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.mjs +144 -0
- package/esm2020/lib/application-controller/shared/kpi-comon-service.mjs +537 -0
- package/esm2020/lib/application-controller/shared/loader/loader.component.mjs +14 -0
- package/esm2020/lib/application-controller/shared/loading/loading.component.mjs +16 -0
- package/esm2020/lib/application-controller/shared/loading/loadingModule.mjs +28 -0
- package/esm2020/lib/application-controller/shared/safeHtmlPipe.mjs +20 -0
- package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +294 -0
- package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +287 -0
- package/esm2020/lib/application-controller/support-components/geo-map/geo-map.component.mjs +255 -0
- package/esm2020/lib/application-controller/support-components/table-with-bar/table-with-bar.component.mjs +269 -0
- package/esm2020/lib/gamma-app-controller.component.mjs +16 -0
- package/esm2020/lib/gamma-app-controller.module.mjs +43 -0
- package/esm2020/lib/gamma-app-controller.service.mjs +20 -0
- package/esm2020/lib/icons.module.mjs +23 -0
- package/esm2020/public-api.mjs +49 -0
- package/fesm2015/gamma-app-controller.mjs +10250 -0
- package/fesm2015/gamma-app-controller.mjs.map +1 -0
- package/fesm2020/gamma-app-controller.mjs +10248 -0
- package/fesm2020/gamma-app-controller.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/lib/application-controller/app.http.service.d.ts +15 -0
- package/lib/application-controller/application-content.service.d.ts +79 -0
- package/lib/application-controller/application-controller.module.d.ts +51 -0
- package/lib/application-controller/application-dataset-call.service.d.ts +20 -0
- package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +55 -0
- package/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.d.ts +121 -0
- package/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.d.ts +38 -0
- package/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.d.ts +42 -0
- package/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.d.ts +7 -0
- package/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.d.ts +21 -0
- package/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.d.ts +62 -0
- package/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.d.ts +22 -0
- package/lib/application-controller/application-filter/application-filter.component.d.ts +36 -0
- package/lib/application-controller/application-view-components/application-views/application-views.component.d.ts +47 -0
- package/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.d.ts +73 -0
- package/lib/application-controller/common-header/common-header.component.d.ts +15 -0
- package/lib/application-controller/common.d.ts +148 -0
- package/lib/application-controller/environment.d.ts +25 -0
- package/lib/application-controller/kpi-comon-service.d.ts +14 -0
- package/lib/application-controller/kpi-service.d.ts +6 -0
- package/lib/application-controller/loading/loading.component.d.ts +9 -0
- package/lib/application-controller/loading/loadingModule.d.ts +10 -0
- package/lib/application-controller/moment-helper.d.ts +3 -0
- package/lib/application-controller/page-controller/page-config/page-config.component.d.ts +188 -0
- package/lib/application-controller/page-controller/page-controller/page-controller.component.d.ts +47 -0
- package/lib/application-controller/page-templates/cdr-config/cdr-config.component.d.ts +44 -0
- package/lib/application-controller/page-templates/dynamic-route-service.d.ts +8 -0
- package/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.d.ts +33 -0
- package/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.d.ts +43 -0
- package/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.d.ts +20 -0
- package/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.d.ts +51 -0
- package/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.d.ts +32 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.d.ts +31 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.d.ts +10 -0
- package/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.d.ts +26 -0
- package/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.d.ts +21 -0
- package/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.d.ts +29 -0
- package/lib/application-controller/shared/api.service.d.ts +26 -0
- package/lib/application-controller/shared/app-title/app-title.component.d.ts +28 -0
- package/lib/application-controller/shared/gamam-widget/gamam-widget.component.d.ts +20 -0
- package/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.d.ts +45 -0
- package/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.d.ts +32 -0
- package/lib/application-controller/shared/kpi-comon-service.d.ts +14 -0
- package/lib/application-controller/shared/loader/loader.component.d.ts +8 -0
- package/lib/application-controller/shared/loading/loading.component.d.ts +9 -0
- package/lib/application-controller/shared/loading/loadingModule.d.ts +10 -0
- package/lib/application-controller/shared/safeHtmlPipe.d.ts +10 -0
- package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +83 -0
- package/lib/application-controller/support-components/dash-table/dash-table.component.d.ts +67 -0
- package/lib/application-controller/support-components/geo-map/geo-map.component.d.ts +70 -0
- package/lib/application-controller/support-components/table-with-bar/table-with-bar.component.d.ts +70 -0
- package/lib/gamma-app-controller.component.d.ts +5 -0
- package/lib/gamma-app-controller.module.d.ts +10 -0
- package/lib/gamma-app-controller.service.d.ts +7 -0
- package/lib/icons.module.d.ts +11 -0
- package/package.json +33 -0
- package/public-api.d.ts +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gamma-app-controller.mjs","sources":["../../../projects/gamma-app-controller/src/lib/gamma-app-controller.service.ts","../../../projects/gamma-app-controller/src/lib/gamma-app-controller.component.ts","../../../projects/gamma-app-controller/src/lib/icons.module.ts","../../../projects/gamma-app-controller/src/lib/gamma-app-controller.module.ts","../../../projects/gamma-app-controller/src/lib/application-controller/app.http.service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/environment.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-content.service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/moment-helper.ts","../../../projects/gamma-app-controller/src/lib/application-controller/common.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/loader/loader.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/loader/loader.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/common-header/common-header.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/common-header/common-header.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-filter/application-filter.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-filter/application-filter.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/kpi-service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-view-components/application-views/application-views.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-view-components/application-views/application-views.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-mongo/dataset-mongo.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-query-bulder/dataset-query-bulder.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/dataset-rest-api/dataset-rest-api.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/google-geo-map/google-geo-map.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/geo-map/geo-map.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/geo-map/geo-map.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/dash-chart/dash-chart.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/dash-chart/dash-chart.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/dash-table/dash-table.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/dash-table/dash-table.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/contentSafeHtml.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/table-with-bar/table-with-bar.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/support-components/table-with-bar/table-with-bar.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-today-previous/gamma-today-previous.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/api.service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/kpi-comon-service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamma-advance-filter/gamma-advance-filter.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamma-bread-crumbs/bread-crumbs.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/app-advance-header/app-header.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/app-title/app-title.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/app-title/app-title.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/kpi-comon-service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-call.service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/loading/loading.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/loading/loading.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset-sql/sqlFormatter.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset-json/create-dataset-json.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-dataset-component/create-dataset/create-dataset.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/page-controller/page-config/page-config.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/page-controller/page-config/page-config.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/page-templates/dynamic-route-service.ts","../../../projects/gamma-app-controller/src/lib/application-controller/page-controller/page-controller/page-controller.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/page-controller/page-controller/page-controller.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/safeHtmlPipe.ts","../../../projects/gamma-app-controller/src/lib/application-controller/page-templates/cdr-config/cdr-config.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/page-templates/cdr-config/cdr-config.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamam-widget/gamam-widget.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/shared/gamam-widget/gamam-widget.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/shared/loading/loadingModule.ts","../../../projects/gamma-app-controller/src/lib/application-controller/application-controller.module.ts","../../../projects/gamma-app-controller/src/lib/application-controller/loading/loading.component.ts","../../../projects/gamma-app-controller/src/lib/application-controller/loading/loading.component.html","../../../projects/gamma-app-controller/src/lib/application-controller/loading/loadingModule.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GammaAppControllerService {\n\n constructor(@Inject('APP_ENVIRONMENT') private env: any) {\n console.log(this.env.apiEndpoint);\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'lib-gamma-app-controller',\n template: `\n <router-outlet></router-outlet>\n `,\n styles: [\n ],\n encapsulation: ViewEncapsulation.None\n\n})\nexport class GammaAppControllerComponent {\n\n}\n","import { NgModule } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\n\n@NgModule()\nexport class IconsModule\n{\n /**\n * Constructor\n */\n constructor(\n private _domSanitizer: DomSanitizer,\n private _matIconRegistry: MatIconRegistry\n )\n {\n // Register icon sets\n this._matIconRegistry.addSvgIconSet(this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-twotone.svg'));\n this._matIconRegistry.addSvgIconSetInNamespace('mat_outline', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-outline.svg'));\n this._matIconRegistry.addSvgIconSetInNamespace('mat_solid', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/material-solid.svg'));\n this._matIconRegistry.addSvgIconSetInNamespace('feather', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/feather.svg'));\n this._matIconRegistry.addSvgIconSetInNamespace('heroicons_outline', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-outline.svg'));\n this._matIconRegistry.addSvgIconSetInNamespace('heroicons_solid', this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/heroicons-solid.svg'));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Route, RouterModule } from '@angular/router';\nimport { GammaAppControllerComponent } from './gamma-app-controller.component';\nimport { CommonModule } from '@angular/common';\nimport { IconsModule } from './icons.module';\nconst routes: Route[] = [\n {\n path: '',\n loadChildren: () =>\n import('./application-controller/application-controller.module').then(\n (m) => m.PackageApplicationControllerModule\n ),\n },\n];\n\n\n@NgModule({\n declarations: [\n GammaAppControllerComponent\n ],\n imports: [\n CommonModule,\n IconsModule,\n RouterModule.forChild(routes),\n ],\n exports: [\n RouterModule,\n GammaAppControllerComponent,\n IconsModule,\n ]\n})\nexport class GammaAppControllerModule { }\n","import { throwError, Observable } from 'rxjs';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n@Injectable({\n providedIn: 'root',\n})\nexport class AppHttpService {\n\n public headers = new HttpHeaders().set('Content-Type', 'application/json');\n public options = { headers: this.headers, withCredentials: true };\n\n constructor(public http: HttpClient) {\n }\n\n handleError(error: any): Observable<Response> {\n return throwError(error);\n }\n\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n hmr: false,\n apiVersion: '/api/v1',\n basePath: '/',\n appName: 'pronto',\n appLogo: \"assets/images/logo/logo.png\",\n kibanaBase: 'http://app1.pronto.lebara.sa/monitoring',\n documentationFrameworkBase: 'http://app1.pronto.lebara.sa:3000',\n appUrl: 'http://68.183.16.242:6602',\n // appUrl: 'http://127.0.0.1:6602',\n // appUrl: 'https://app.pronto.sbin.bj/prontoapiserver',\n gatewayUrl: 'http://localhost:4204/',\n gatewayServerUrl: 'http://68.183.16.242:6601',\n authServerUrl: 'http://68.183.16.242:6600/auth',\n ruleServerUrl: 'http://68.183.16.242:6603',\n caseServerUrl: 'http://68.183.16.242:6605',\n chatUrl: \"http://68.183.16.242:5000/\",\n authenticationType: 'token',\n footerText: 'Powered by Latro',\n appLogoutUri: 'logout',\n appClientId: '8825302933668759552',\n appClientSecret: 'c6ef2c22-134b-4c13-bcaa-4a36a7b5462c',\n appLogoutLogo: 'assets/images/logo/logo.png',\n iamAppUrl: 'https://app1.pronto.lebara.sa/iam-server',\n caseTrackerGuiUrl: \"/casetracker/\"\n};\n\n// c6ef2c22-134b-4c13-bcaa-4a36a7b5462c\n\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, catchError, map, Observable, throwError } from 'rxjs';\nimport { AppHttpService } from './app.http.service';\nimport { environment } from './environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApplicationContentService extends AppHttpService {\n\n\n constructor(private httpClient: HttpClient) {\n super(httpClient)\n }\n\n private kpiFilter = new BehaviorSubject<any>([]);\n userkpiFilter$ = this.kpiFilter.asObservable();\n\n private datasets = new BehaviorSubject<any>([]);\n updateDatssets$ = this.datasets.asObservable();\n\n getFilterForKpi(pins: any) {\n this.kpiFilter.next(pins);\n }\n\n getCurrentKpiFilterValue() {\n return this.kpiFilter.getValue();\n }\n setCurrentDatasetValue(data: any) {\n return this.datasets.next(data);\n }\n\n\n\n getDataSet(): any {\n const apiUrl = '/assets/api-data/data-set.json';\n // const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';\n return this.http.get(apiUrl, { withCredentials: true }).pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n getComponentDataConfigSet(): any {\n const apiUrl = '/assets/api-data/component_config.json';\n // const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';\n return this.http.get(apiUrl, { withCredentials: true }).pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n listColumnEnrichmentFunctions(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi/listColumnEnrichmentFunctions';\n return this.http\n .post(apiUrl, this.options)\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n validateAggregatePaginatedQuery(transformedObject): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi/validateAggregatePaginatedQuery';\n return this.http\n .post(apiUrl, JSON.stringify(transformedObject), this.options)\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n getKpiBrowserConfigById(id): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n getData(body, requestID): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + requestID, JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getSimpleApiPostRequest(requestApi, body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + requestApi, JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getSimpleApiGetRequest(requestApi): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + requestApi, { withCredentials: true })\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getJsonDatasetPayload(requestApi): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + requestApi, { withCredentials: true })\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n genericSqlQueryResponse(requestApi, body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + requestApi, JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n // dataset apis\n createAppDataset(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createAppDataset', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n updateAppDatasetConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/updateAppDatasetConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n deleteAppDatasetConfig(datasetId): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/kpi-config/deleteAppDatasetConfig/' + datasetId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAppDatasetConfigs(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppDatasetConfigs';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n getAppDatasetConfig(datasetId): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n //views component apis\n createAppViewConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createAppViewConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n updateAppViewConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/updateAppViewConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAppViewConfigs(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppViewConfigs';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n getAppViewConfig(viewId): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppViewConfig?viewId=' + viewId;\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n }\n\n deleteAppViewConfig(datasetId): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/kpi-config/deleteAppViewConfig/' + datasetId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n //filter content apis\n createAppFilterConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createAppFilterConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n editAppFilterConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/editAppFilterConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAppFilterConfigs(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppFilterConfigs';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n deleteAppFilterConfig(filterId): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/kpi-config/deleteAppFilterConfig/' + filterId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n\n\n\n\n\n\n\n getMapData(body, requestID): any {\n const apiUrl = '/assets/api-data/mapjson.json';\n // const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/mapjson.json';\n\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: any): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n getDashBoardJson(): any {\n const apiUrl = '/assets/api-data/dashboard_lebara.json';\n // const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';\n return this.http.get(apiUrl, { withCredentials: true }).pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n getAppPageConfigs(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getAppPageConfigs';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n createAppPageConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createAppPageConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n editAppPageConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/editAppPageConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n deleteAppPageConfig(pageId): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/kpi-config/deleteAppPageConfig/' + pageId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n // create widget\n createAppWidgetConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createAppWidgetConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n editAppWidgetConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/editAppWidgetConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAppPageDetailConfig(pageId): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n deleteAppWidgetConfig(filterId): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/kpi-config/deleteAppWidgetConfig/' + filterId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAppFilterConfig(filterId): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getKPIReferenceEndPoints(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getKPIReferenceEndPoints';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n\n // page template\n loadKpiBrowser(): any {\n\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/kpi/loadKpiBrowser', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getlistKpiBrowser(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/listKpiBrowser';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n getBookmarkedResource(): any {\n\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/kpi/getBookmarkedResource', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n bookmarkResource(body): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi/bookmarkResource';\n return this.http\n .post(apiUrl, JSON.stringify(body), this.options)\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n\n // create kpi\n configureKpiBrowserConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/configureKpiBrowserConfig', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getCreateKpi(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/createKpi', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n uploadDatasetJsonPayload(formData): any {\n const headers = new HttpHeaders({\n 'enctype': 'multipart/form-data',\n });\n const options = { headers: headers, withCredentials: true };\n\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi-config/uploadDatasetJsonPayload', formData, options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n // cdr config service\n\n getKpiData(): any {\n return this.http\n .get(`${environment.basePath}assets/api-data/policy.json`, { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getGroupDetails(): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/jobs/getGroupDetails', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n loadtableName(): any {\n const appUrl = environment.appUrl + environment.apiVersion + '/search/getSearchDatasourceDetails';\n // const appUrl = '/assets/api-data/getSearchDatasourceDetails.json';\n return this.http.get(appUrl);\n }\n\n\n getSearchResultForDatasource(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/search/getSearchResultForDatasource', JSON.stringify(body), this.options)\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n ajaxSelfPrevActivityLogs(): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getUserCdrBrowserActivityLogs?activityCount=50')\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getCdrBrowserActivityLogs(startDate, endDate): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getCdrBrowserActivityLogs?startDate=' + startDate + '&endDate=' + endDate)\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n getAvailableTables(): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getAvailableTables', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n getTableMetadata(tableName): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getTableMetadata?tableName=' + tableName, { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n getCdrBrowserOperations(): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getCdrBrowserOperations', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n getSearchDatasourceDetails(): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/search/getSearchDatasourceDetails', { withCredentials: true })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n saveDatasourceConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/search/saveDatasourceConfig', JSON.stringify(body), this.options)\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n editDatasourceConfig(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/search/editDatasourceConfig', JSON.stringify(body), this.options)\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError));\n }\n deleteDatasourceConfig(tableName): any {\n return this.http\n .delete(environment.appUrl + environment.apiVersion + '/search/deleteDatasourceConfig/' + tableName, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }), catchError(this.handleError));\n }\n\n // view with datasets\n\n getKpiConfigaration(): any {\n return (\n this.http\n // .get(environment.appUrl + environment.apiVersion + '/reports/getAppConfiguredReportConfig', { withCredentials: true })\n .get(environment.gatewayUrl + environment.appName + 'assets/api-data/kpi-config.json', {\n withCredentials: true,\n })\n .pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n )\n );\n }\n\n\n\n getlistKpiBrowserTwo(): any {\n // const apiUrl = '/assets/api-data/dashboard.json';\n const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';\n return this.http.get(apiUrl, { withCredentials: true }).pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n getfilterData(): any {\n return this.http\n .get(\"/assets/api-data/filter-direction.json\")\n // .get(environment.appUrl + environment.apiVersion + api + '?'+ url )\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n\n genericDetailDataResponse(body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + '/kpi/genericDetailDataResponse', JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n getUniqueData(api): Observable<Response> {\n return this.http\n .get(environment.appUrl + environment.apiVersion + api, { withCredentials: true })\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n\n getFilterDataByDrillDown(apiName): any {\n const apiUrl = environment.appUrl + apiName;\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n}\n","import momentNamespace from 'moment';\nconst moment: typeof momentNamespace = momentNamespace;\nexport default moment;\n\n// const moment = require('moment');\n// export default moment;\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport \"rxjs\";\nimport { ToastrService } from \"ngx-toastr\";\nimport moment from './moment-helper';\nimport { DomSanitizer } from \"@angular/platform-browser\";\n// declare let $;\n\n@Injectable({ providedIn: \"root\" })\nexport class CommonService {\n kpiListDataObject: any;\n G_DEFAULT_START_DATE = moment().subtract(\"30\", \"days\").format(\"YYYY-MM-DD\");\n G_DEFAULT_END_DATE = moment().format(\"YYYY-MM-DD\");\n defaultCurrentDate = moment().format(\"YYYY-MM-DD_hh:mm:ss:SS\");\n defaultCurrentDateMillis = moment().format(\"YYYYMMDDhhmmssSS\");\n global_loading: any;\n public selectedOperator: any;\n public KpiId: any;\n public kpiUrlObjectContainer = [];\n public allKpibrowserDetailContainer: any;\n public GlOBAL_AUTO_RELOADING_TIME_SET = 300000;\n breadCumbsListArray = [];\n breadCumbsListId: any;\n public currentUrl: any;\n global_kpi_name: any;\n // selectPickerRefresh = $('.selectpicker').selectpicker('refresh');\n // selectPickerDestory = \"$('.selectpicker').selectpicker('destroy')\";\n globalDocLink = \"http://203.215.33.222:33001/product/Pronto/kpi/RS2002\";\n mapChartDetailHolder!: object;\n fusionThemeName: any;\n\n //buttons start\n public btnPrimaryBlue =\n \"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n public btnPrimaryBlueSm =\n \"text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm px-3 py-1.5 mr-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n public btnSecondaryAlternet =\n \"py-2.5 px-5 mr-2 mb-2 text-sm font-medium text-gray-900 focus:outline-none bg-white rounded border border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-700\";\n public BtnDarkBlack =\n \"text-white bg-gray-800 hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700\";\n public BtnLightWhite =\n \"text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-600 dark:focus:ring-gray-700\";\n public btnSuccessGreen =\n \"focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800\";\n public btnDangerRed =\n \"focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900\";\n public btnDangerRedSm =\n \"focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded text-sm px-3 py-1.5 mr-2 mb-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900\";\n public btnWarningYellow =\n \"focus:outline-none text-black bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 font-medium rounded text-sm px-5 py-2.5 mr-2 mb-2 dark:focus:ring-yellow-900\";\n public btnOthersPurple =\n \"focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 font-medium rounded text-sm px-5 py-2.5 mb-2 dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-900\";\n public inputOne = \"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\";\n //buttons end\n\n\n //--------------------Success /green Button----------------------------------------------\n public btn_success_lg = \"cursor-pointer focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded text-sm px-5 py-5 mr-2 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800\";\n public btn_success_md = \"cursor-pointer focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded text-sm px-3 py-3 mr-2 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800\";\n public btn_success_sm = \"cursor-pointer focus:outline-none text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded text-sm px-1 py-1 mr-2 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800\";\n\n //------------------------Primary/ Blue Buttons---------------------------------------------\n public btn_primary_lg = \"cursor-pointer text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm px-5 py-5 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n public btn_primary_md = \"cursor-pointer text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm px-3 py-3 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n public btn_primary_sm = \"cursor-pointer text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm px-1 py-1 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n public badge_primary_sm = \"cursor-pointer text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded text-sm inline px-0.5 py-0.5 mr-1 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n\n //------------------------------Danger/ Red Button ---------------------------------------------\n public btn_danger_lg = \"cursor-pointer focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded text-sm px-5 py-5 mr-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900\";\n public btn_danger_md = \"cursor-pointer focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded text-sm px-3 py-3 mr-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900\";\n public btn_danger_sm = \"cursor-pointer focus:outline-none text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded text-sm px-1 py-1 mr-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900\";\n\n //-----------------------------Warning/ Yellow Buttons --------------------------------------------\n public btn_warning_lg = \"cursor-pointer focus:outline-none text-black bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 font-medium rounded text-sm px-5 py-5 mr-2 dark:focus:ring-yellow-900\";\n public btn_warning_md = \"cursor-pointer focus:outline-none text-black bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 font-medium rounded text-sm px-3 py-3 mr-2 dark:focus:ring-yellow-900\";\n public btn_warning_sm = \"cursor-pointer focus:outline-none text-black bg-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 font-medium rounded text-sm px-1 py-1 mr-2 dark:focus:ring-yellow-900\";\n\n //------------------------------reset/ Gray Buttons-------------------------------------------------\n public btn_dark_lg = \"cursor-pointer text-white bg-gray-800 hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded text-sm px-5 py-5 mr-2 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700\";\n public btn_dark_md = \"cursor-pointer text-white bg-gray-800 hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded text-sm px-3 py-3 mr-2 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700\";\n public btn_dark_sm = \"cursor-pointer text-white bg-gray-800 hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded text-sm px-1 py-1 mr-2 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700\";\n\n\n public btn_light_lg = \"ms-3 text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-lg border border-gray-200 text-sm font-medium px-5 py-5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600\";\n public btn_light_md = \"ms-3 text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-lg border border-gray-200 text-sm font-medium px-3 py-3 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600\";\n public btn_light_sm = \"ms-3 text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:outline-none focus:ring-blue-300 rounded-lg border border-gray-200 text-sm font-medium px-1 py-1 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-600\";\n\n\n public btnDarkBlack = \"cursor-pointer text-white bg-gray-800 hover:bg-gray-900 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded text-sm px-5 py-2.5 mr-2 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700\";\n public btnLightWhite = \"cursor-pointer text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 font-medium rounded text-sm px-5 py-2.5 mr-2 dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-600 dark:focus:ring-gray-700\";\n // small button\n public btnPrimaryBlue_sm = \"cursor-pointer text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-small rounded text-sm px-2 py-1.5 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800\";\n\n\n constructor(private http: HttpClient, private toastr: ToastrService, private sanitizer: DomSanitizer) { }\n\n ngOnInit() { }\n\n chartRenderNew(caption: any) {\n let charts: any = {};\n charts[\"baseFont\"] = \"Verdana\";\n charts[\"caption\"] = \"\";\n charts[\"subCaption\"] = caption;\n charts[\"subcaptionFontColor\"] = \"#d4d0d0\";\n charts[\"xAxisName\"] = \"\";\n charts[\"yAxisName\"] = \"\";\n charts[\"pYAxisName\"] = \"\";\n charts[\"sYAxisName\"] = \"\";\n charts[\"showValues\"] = \"0\";\n charts[\"numberPrefix\"] = \"\";\n charts[\"paletteColors\"] =\n \"#1e88e5,#f44336,#1aaf5d,#1fb622,#7e00b0,#E74C3C,#AAB7B8,#D35400,#273746,#17A589,#273746,\";\n charts[\"plotGradientColor\"] = \"\";\n charts['bgColor'] = '#424242';\n charts[\"BgAlpha\"] = \"100\";\n charts[\"baseFontColor\"] = \"#fff\";\n charts[\"canvasBgAlpha\"] = \"0\";\n charts[\"showBorder\"] = \"0\";\n charts[\"showCanvasBorder\"] = \"0\";\n charts[\"usePlotGradientColor\"] = \"0\";\n charts[\"plotBorderAlpha\"] = \"10\";\n charts[\"legendBorderAlpha\"] = \"0\";\n charts[\"legendBgAlpha\"] = \"0\";\n charts[\"legendShadow\"] = \"0\";\n charts[\"showHoverEffect\"] = \"1\";\n charts[\"valueFontColor\"] = \"#000000\";\n charts[\"rotateValues\"] = \"1\";\n charts[\"placeValuesInside\"] = \"1\";\n charts[\"divlineColor\"] = \"#6699cc\";\n charts[\"divLineIsDashed\"] = \"0\";\n charts[\"divLineDashLen\"] = \"0\";\n charts[\"divLineGapLen\"] = \"0\";\n charts[\"divLineAlpha\"] = \"60\";\n charts[\"showAlternateVGridColor\"] = \"0\";\n charts['canvasBgColor'] = '#424242';\n charts[\"captionFontSize\"] = \"12\";\n charts[\"subcaptionFontSize\"] = \"10\";\n charts[\"exportEnabled\"] = \"1\";\n charts[\"exportFormats\"] = \"PNG|JPG\";\n charts[\"exportFileName\"] = new Date().getTime();\n charts[\"slantLabels\"] = \"0\";\n charts[\"showCanvasBorder\"] = \"0\";\n charts[\"showAlternateHGridColor\"] = \"0\";\n charts[\"toolTipColor\"] = \"#ffffff\";\n charts[\"toolTipBorderThickness\"] = \"0\";\n charts[\"toolTipBgColor\"] = \"#000000\";\n charts[\"toolTipBgAlpha\"] = \"80\";\n charts[\"toolTipBorderRadius\"] = \"2\";\n charts[\"toolTipPadding\"] = \"5\";\n charts[\"outCnvBaseFontSize\"] = \"9\";\n charts[\"labelDisplay\"] = \"rotate\";\n charts[\"drawCrossLine\"] = \"0\";\n charts[\"theme\"] = this.fusionThemeName;\n return charts;\n }\n\n getNewmscombidy2d(pYAxisName: any, sYAxisName: any) {\n let charts: any = {};\n charts[\"baseFont\"] = \"Verdana\";\n charts[\"caption\"] = \"\";\n charts[\"subCaption\"] = \"\";\n charts[\"subcaptionFontColor\"] = \"#d4d0d0\";\n charts[\"xAxisName\"] = \"\";\n charts[\"yAxisName\"] = \"\";\n charts[\"pYAxisName\"] = pYAxisName;\n charts[\"sYAxisName\"] = sYAxisName;\n charts[\"showValues\"] = \"0\";\n charts[\"numberPrefix\"] = \"\";\n charts[\"paletteColors\"] =\n \"#1e88e5,#f44336,#1aaf5d,#cfe320,#7e00b0,#E74C3C,#AAB7B8,#D35400,#273746,#17A589,#273746, \";\n charts[\"plotGradientColor\"] = \"\";\n charts['bgColor'] = '#1e293b';\n charts[\"BgAlpha\"] = \"100\";\n charts[\"baseFontColor\"] = \"#fff\";\n charts[\"showBorder\"] = \"0\";\n charts[\"showCanvasBorder\"] = \"0\";\n charts[\"usePlotGradientColor\"] = \"0\";\n charts[\"plotBorderAlpha\"] = \"10\";\n charts[\"legendBorderAlpha\"] = \"0\";\n charts[\"legendBgAlpha\"] = \"0\";\n charts[\"legendShadow\"] = \"0\";\n charts[\"showHoverEffect\"] = \"1\";\n charts[\"valueFontColor\"] = \"#000000\";\n charts[\"rotateValues\"] = \"1\";\n charts[\"placeValuesInside\"] = \"1\";\n charts[\"divlineColor\"] = \"#6699cc\";\n charts[\"divLineIsDashed\"] = \"0\";\n charts[\"divLineDashLen\"] = \"0\";\n charts[\"divLineGapLen\"] = \"0\";\n charts[\"divLineAlpha\"] = \"60\";\n charts[\"showAlternateVGridColor\"] = \"0\";\n charts['canvasBgColor'] = '#1e293b';\n charts[\"captionFontSize\"] = \"10\";\n charts[\"subcaptionFontSize\"] = \"10\";\n charts[\"exportEnabled\"] = \"1\";\n charts[\"exportFormats\"] = \"PNG|JPG\";\n charts[\"exportFileName\"] = new Date().getTime();\n charts[\"labelDisplay\"] = \"\";\n charts[\"slantLabels\"] = \"0\";\n charts[\"showCanvasBorder\"] = \"0\";\n charts[\"showAlternateHGridColor\"] = \"0\";\n charts[\"toolTipColor\"] = \"#ffffff\";\n charts[\"toolTipBorderThickness\"] = \"0\";\n charts[\"toolTipBgColor\"] = \"#000000\";\n charts[\"toolTipBgAlpha\"] = \"80\";\n charts[\"toolTipFontSize\"] = \"12\";\n charts[\"toolTipBorderRadius\"] = \"2\";\n charts[\"toolTipPadding\"] = \"5\";\n charts[\"labelDisplay\"] = \"rotate\";\n charts[\"outCnvBaseFontSize\"] = \"9\";\n charts[\"drawCrossLine\"] = \"0\";\n charts[\"theme\"] = this.fusionThemeName;\n\n return charts;\n }\n\n // json to csv convertor\n JSONToCSVConvertor(JSONData, ReportTitle, ShowLabel) {\n //If JSONData is not an object then JSON.parse will parse the JSON string in an Object\n let arrData = typeof JSONData != \"object\" ? JSON.parse(JSONData) : JSONData;\n\n let CSV = \"\";\n //Set Report title in first row or line\n\n CSV += ReportTitle + \"\\r\\n\\n\";\n\n //This condition will generate the Label/Header\n if (ShowLabel) {\n let row = \"\";\n\n //This loop will extract the label from 1st index of on array\n for (let index in arrData[0]) {\n //Now convert each value to string and comma-seprated\n row += index + \",\";\n }\n\n row = row.slice(0, -1);\n\n //append Label row with line break\n CSV += row + \"\\r\\n\";\n }\n\n //1st loop is to extract each row\n for (let i = 0; i < arrData.length; i++) {\n let row = \"\";\n\n //2nd loop will extract each column and convert it in string comma-seprated\n for (let index in arrData[i]) {\n row += '\"' + arrData[i][index] + '\",';\n }\n\n row.slice(0, row.length - 1);\n\n //add a line break after each row\n CSV += row + \"\\r\\n\";\n }\n\n if (CSV == \"\") {\n alert(\"Invalid data\");\n return;\n }\n\n //Generate a file name\n let fileName = \"report_\";\n //this will remove the blank-spaces from the title and replace it with an underscore\n fileName += ReportTitle.replace(/ /g, \" \");\n\n //Initialize file format you want csv or xls\n let uri = \"data:text/csv;charset=utf-8,%EF%BB%BF\" + encodeURI(CSV);\n\n // Now the little tricky part.\n // you can use either>> window.open(uri);\n // but this will not work in some browsers\n // or you will not get the correct file extension\n\n //this trick will generate a temp <a /> tag\n let link = document.createElement(\"a\");\n link.href = uri;\n\n if (ReportTitle === \"Datasource Missing Files\") {\n link.download = fileName + \"_\" + this.defaultCurrentDateMillis + \".txt\";\n } else {\n link.download = fileName + \"_\" + this.defaultCurrentDateMillis + \".csv\";\n }\n\n //set the visibility hidden so it will not effect on your web-layout\n\n //this part will append the anchor tag and remove it after automatic click\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n // html for color bar\n createHtml(width, data, color) {\n return (\n '<div style=\"display: inline\"> ' +\n '<div class=\"no-padding\" style=\"float:left; width: ' +\n width +\n \"%; background-color: \" +\n color +\n \"; \" +\n 'height: 15px; position: relative;\"></div>' +\n '<div class=\"no-padding bar\" style=\"float: left\">' +\n data +\n \"</div>\" +\n \"</div>\"\n );\n }\n\n // scale for colorbar\n scaleNumber(inputY, yMin, yMax, xMin, xMax) {\n if (yMin == yMax) {\n if (inputY == yMin) {\n return xMax;\n }\n return xMin;\n } else {\n let percent = (inputY - yMin) / (yMax - yMin);\n return percent * (xMax - xMin) + xMin;\n }\n }\n\n // thousend separetor\n ThousandSeparator(value) {\n if (Number(value)) {\n if (value > 0 && value < 1) {\n return value;\n }\n return Number(value).toLocaleString();\n }\n return value;\n }\n reformatNumberWithThousandSeparator(value) {\n if (Number(value)) {\n if (value > 0 && value < 1) {\n return value;\n }\n return Number(value).toLocaleString();\n }\n return value;\n }\n\n reformatNumberWithThousandSeparatorV2(value, exp) {\n if (exp == undefined) {\n exp = 0;\n }\n if (Number(value)) {\n if (value > 0 && value < 1) {\n return this.roundOffTillTwo(value, exp);\n }\n return Number(value).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n });\n }\n return value;\n }\n reformatNumberWithThousandSeparatorV3(value, exp) {\n\n let val;\n if (exp == undefined) {\n exp = 0;\n }\n if (Number(value)) {\n val = value.toFixed(exp);\n } else if (value == 0) {\n val = value.toFixed(exp);\n } else {\n val = \"NAN\";\n }\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n reformatNumberWithThousandSeparatorV4(value, exp = 0) {\n let val;\n\n // Convert value to a number if it's not already one\n const numericValue = Number(value);\n\n if (!isNaN(numericValue)) { // Check if the conversion result is a number\n val = numericValue.toFixed(exp);\n } else {\n\n if (value == \"-\") {\n val = \"-\";\n return val;\n } else {\n\n val = \"NAN\";\n return val; // Early return as further processing is not meaningful\n }\n\n }\n // Format the number with thousand separator and specified decimal places\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n // for number return\n reformatNumberWithThousandSeparatorV5(value, exp = 0) {\n let val;\n\n // Convert value to a number if it's not already one\n const numericValue = Number(value);\n\n if (!isNaN(numericValue)) { // Check if the conversion result is a number\n val = numericValue.toFixed(exp);\n } else {\n if (value == \"-\") {\n val = \"-\";\n return NaN; // Return NaN to indicate an invalid number\n } else {\n return NaN; // Return NaN to indicate an invalid number\n }\n }\n\n // Convert the string back to a number\n return Number(val);\n }\n\n reformatNumberWithThousandSeparatorIfrsType(value, exp = 0) {\n let val;\n\n // Convert value to a number if it's not already one\n const numericValue = Number(value);\n\n if (!isNaN(numericValue)) { // Check if the conversion result is a number\n val = numericValue.toFixed(exp);\n } else {\n val = \"-\";\n return val;\n }\n // Format the number with thousand separator and specified decimal places\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n\n foramteValueForAmount(value, exp) {\n let val;\n if (exp === undefined) {\n exp = 0;\n }\n // Divide the value by 10000 at the outset\n value = Number(value) / 10000;\n\n // Check if the result is a finite number\n if (isFinite(value)) {\n val = value.toFixed(exp);\n } else {\n // If the input or the division result is not a number, handle gracefully\n val = \"0\"; // Defaulting to \"0\" to ensure the toLocaleString call does not fail\n }\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n foramteValueForCharge(value, exp) {\n let val;\n if (exp === undefined) {\n exp = 0;\n }\n // Divide the value by 10000 at the outset\n value = Number(value) / 10000;\n\n // Check if the result is a finite number\n if (isFinite(value)) {\n val = value.toFixed(exp);\n } else {\n // If the input or the division result is not a number, handle gracefully\n val = \"0\"; // Defaulting to \"0\" to ensure the toLocaleString call does not fail\n }\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n foramteValueForMoU(value, exp) {\n let val;\n if (exp === undefined) {\n exp = 0;\n }\n // Divide the value by 10000 at the outset\n value = Number(value) / 60;\n\n // Check if the result is a finite number\n if (isFinite(value)) {\n val = value.toFixed(exp);\n } else {\n // If the input or the division result is not a number, handle gracefully\n val = \"0\"; // Defaulting to \"0\" to ensure the toLocaleString call does not fail\n }\n return Number(val).toLocaleString(undefined, {\n maximumFractionDigits: exp,\n minimumFractionDigits: exp,\n });\n }\n\n abbreviateNumber(number) {\n let SI_POSTFIXES = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let tier = (Math.log10(Math.abs(number)) / 3) | 0;\n if (tier == 0) {\n return this.roundOffTillTwo(number, 2);\n }\n let postfix = SI_POSTFIXES[tier];\n let scale = Math.pow(10, tier * 3);\n let scaled = number / scale;\n let formatted = scaled.toFixed(1) + \"\";\n if (/\\.0$/.test(formatted)) {\n formatted = formatted.substr(0, formatted.length - 2);\n }\n return formatted + postfix;\n }\n\n createVarianceHtmlForCount(width, data1, data2) {\n let columnColor = \"\";\n let columnData = data1 - data2;\n if (columnData > 0) {\n columnColor = \"#fd0000\";\n } else {\n columnColor = \"#db1500\";\n }\n\n return (\n '<div style=\"display: inline\"> ' +\n '<div class=\"no-padding\" style=\"float:left; width: ' +\n width +\n \"%; background-color: \" +\n columnColor +\n \"; \" +\n 'height: 15px; position: relative;\"></div>' +\n '<div class=\"no-padding\" style=\"float: left\">' +\n this.reformatNumberWithThousandSeparator(columnData) +\n \"</div>\" +\n \"</div>\"\n );\n }\n\n roundOffTillTwo(value, exp) {\n if (typeof exp === \"undefined\" || +exp === 0) {\n return Math.round(value);\n }\n value = +value;\n exp = +exp;\n\n if (isNaN(value) || !(typeof exp === \"number\" && exp % 1 === 0)) {\n return NaN;\n }\n\n // Shift\n value = value.toString().split(\"e\");\n value = Math.round(+(value[0] + \"e\" + (value[1] ? +value[1] + exp : exp)));\n\n // Shift back\n value = value.toString().split(\"e\");\n return +(value[0] + \"e\" + (value[1] ? +value[1] - exp : -exp));\n }\n\n getmapChartDetailHolder(val) {\n this.mapChartDetailHolder = val;\n }\n\n\n\n get_percentage_change(prev, now) {\n let perc = undefined;\n if (prev !== 0) {\n perc = ((now - prev) / prev) * 100;\n perc = this.roundOffTillTwo(perc, 2);\n } else if (now !== 0) {\n perc = 100;\n }\n let badge_label = \"\";\n if (perc === undefined) {\n perc = \"<b class='wig-na'> NA</b>\";\n badge_label = \"<b>\" + perc + \"</b>\";\n } else if (perc > 0) {\n badge_label =\n '<span><b class=\"green-badge\"> +' +\n perc +\n '<i class=\"fa fa-chevron-up\" ></i></b></span>';\n } else {\n badge_label =\n '<span><b class=\"r-bg\"> ' +\n perc +\n '<i class=\"fa fa-chevron-down\" ></i></b><span>';\n }\n return badge_label;\n }\n\n getLabel(attr_name) {\n let label_name = \"\";\n if (attr_name != undefined) {\n if (attr_name.indexOf(\"-\") > 0) {\n attr_name = attr_name.replace(/-/g, \" \");\n } else if (attr_name.indexOf(\"_\") > 0) {\n attr_name = attr_name.replace(/_/g, \" \");\n } else {\n attr_name = attr_name.replace(/([A-Z])/g, \" $1\");\n }\n label_name = this.capitaliseWord(attr_name);\n }\n return label_name;\n }\n\n capitaliseWord(content) {\n let ret = \"\";\n let text = content,\n tokens = text.split(\" \").filter(function (t) {\n return t != \"\";\n }),\n res = [],\n i,\n len,\n component;\n for (i = 0, len = tokens.length; i < len; i++) {\n component = tokens[i];\n res.push(component.substring(0, 1).toUpperCase());\n res.push(component.substring(1));\n res.push(\" \"); // put space back in\n }\n ret += res.join(\"\");\n return ret;\n }\n\n convertToSpaceSeparatedCapitalized(input) {\n return input\n .replace(/_/g, ' ')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')\n .replace(/\\b\\w/g, firstChar => firstChar.toUpperCase());\n }\n\n capitalizeFirstLetter(text): any {\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n }\n\n formatMillisec(value): any {\n let millisecInDay = 86400000;\n let millisecInHour = 3600000;\n let millisecInMin = 60000;\n let millisecInSec = 1000;\n\n if (value >= millisecInDay) {\n let dayValue = value / 86400000;\n let day = dayValue.toFixed(1);\n if (day === \"1\") {\n return day + \" day\";\n } else {\n return day + \" days\";\n }\n } else if (value >= millisecInHour) {\n let hour = value / 3600000;\n return hour + \" hr\";\n } else if (value >= millisecInMin) {\n let min = value / 60000;\n return min + \" min\";\n } else if (value >= millisecInSec) {\n let sec = value / 1000;\n return sec + \" sec\";\n } else if (value < 1000) {\n return value + \" mil\";\n }\n }\n\n formatBytes(bytes, decimals) {\n if (bytes == 0) {\n return \"0 Byte\";\n }\n let k = 1024;\n let dm = decimals;\n if (decimals == undefined || decimals == \"\") {\n dm = 2;\n }\n let sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n let i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n }\n\n formatBytesv2(bytes, decimals) {\n\n if (bytes == 0) {\n return \"0\";\n }\n if (bytes == \"No Data\") {\n return \"No Data\";\n }\n let k = 1024;\n let dm = decimals;\n if (decimals == undefined || decimals == \"\") {\n dm = 2;\n }\n let sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n let i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n }\n\n formatBytsToKb(bytes, decimals) {\n if (bytes == 0) {\n return \"0\";\n }\n let k = 1024;\n let dm = decimals;\n if (decimals == undefined || decimals == \"\") {\n dm = 2;\n }\n let i = bytes / k;\n // return parseFloat(i).toLocaleString().toFixed(dm) + ' ' + 'KB';\n let v = Number(i).toLocaleString(undefined, { maximumFractionDigits: dm });\n return v;\n // console.log(v)\n }\n formatBytsToGb(bytes, decimals) {\n if (bytes == 0) {\n return \"0\";\n }\n let g = 1024 * 1024 * 1024;\n let dm = decimals;\n if (decimals == undefined || decimals == \"\") {\n dm = 2;\n }\n let i = bytes / g;\n // return parseFloat(i).toLocaleString().toFixed(dm) + ' ' + 'KB';\n let v = Number(i).toLocaleString(undefined, { maximumFractionDigits: dm });\n return v;\n // console.log(v)\n }\n\n reformatNumber(value) {\n let newValue = \"\";\n newValue = value;\n if (value >= 1000) {\n let suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let suffixNum = Math.floor((\"\" + value).length / 3);\n let shortValue;\n for (let precision = 2; precision >= 1; precision--) {\n shortValue = parseFloat(\n (suffixNum != 0\n ? value / Math.pow(1000, suffixNum)\n : value\n ).toPrecision(precision)\n );\n let dotLessShortValue = (shortValue + \"\").replace(\"a-z A-Z 0-9\", \"\");\n if (dotLessShortValue.length <= 2) {\n break;\n }\n }\n newValue = shortValue + suffixes[suffixNum];\n }\n return newValue;\n }\n\n ifNullUndefined(data) {\n if (data == null || data == undefined) {\n return \" \";\n }\n return data;\n }\n\n getVarianceOfMou(value1, value2) {\n let variance;\n variance = Math.abs(value1 - value2);\n return variance;\n }\n\n getVarianceOfCount(value1, value2) {\n let variance;\n variance = Math.abs(value1 - value2);\n return variance;\n }\n\n getPercentageMou(value1, value2) {\n let percentageValue;\n // value1 = 4344569.9985;\n // value2 = 6558978.9445;\n if (value1 <= 0) {\n percentageValue = \"NA\";\n } else {\n let percentage = ((value1 - value2) * 100) / value1;\n percentageValue = Math.abs(this.roundOffTillTwo(percentage, 2));\n }\n // stmt += percentage + \"<i class ='fa fa-clock'></i>\";\n\n return percentageValue;\n }\n\n getPercentageCount(value1, value2) {\n let percentage;\n // value1 = 4344569.9985;\n // value2 = 6558978.9445;\n if (value1 <= 0) {\n percentage += \"NA\";\n } else {\n percentage = ((value1 - value2) * 100) / value1;\n }\n // stmt += percentage + \"<i class ='fa fa-clock'></i>\";\n let percentageValue = Math.abs(this.roundOffTillTwo(percentage, 2));\n return percentageValue;\n }\n // for changing span color code\n getColorCodeSpan(data) {\n if (data >= -1 && data <= 1) {\n if (data == 0) {\n return (\n Math.abs(data) +\n \" <i class='fa fa-lg fa-check-circle text-green-400'></i>\"\n );\n } else {\n return (\n this.reformatNumberWithThousandSeparator(Math.abs(data)) +\n \" <i class='fa fa-lg fa-arrow-circle-up text-green-400'></i>\"\n );\n }\n } else if (data < -1 || data > 1) {\n if (data > 0) {\n return (\n this.reformatNumberWithThousandSeparator(Math.abs(data)) +\n \" <i class='fa fa-lg fa-arrow-circle-up text-red-500'></i>\"\n );\n } else {\n return (\n this.reformatNumberWithThousandSeparator(Math.abs(data)) +\n \" <i class='fa fa-lg fa-arrow-circle-down text-red-500 '></i>\"\n );\n }\n } else if (data == \"NA\" || data == isNaN(data)) {\n return \"NA\";\n } else {\n return (\n this.reformatNumberWithThousandSeparator(Math.abs(data)) +\n \" <i class='fa fa-lg fa-arrow-circle-down text-red-500 '></i>\"\n );\n }\n }\n\n // operator color map\n get_operator_color_code_map() {\n return {\n AFGAT: \"#d1d2d4\",\n AFGAW: \"#f47a20\",\n AFGEA: \"#b7cc87\",\n AFGAR: \"#ffcb05\",\n AFGTD: \"#fbb6c2\",\n };\n }\n\n getOperatorByKey() {\n return {\n AFGAT: \"AFTEL\",\n AFGAW: \"AWCC\",\n AFGEA: \"ETISALAT\",\n AFGAR: \"MTNAF\",\n AFGTD: \"ROSHAN\",\n }\n }\n\n getOperatorBylogo() {\n return {\n AFGAT: \"data:image/png;base64,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\",\n AFGAW: \"data:image/png;base64,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\",\n AFGEA: \"data:image/png;base64,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\",\n AFGAR: \"data:image/png;base64,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\",\n AFGTD: \"data:image/png;base64,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\",\n }\n }\n\n getOperatorProfile(opName) {\n let operator_profile = {\n AFGAW: {\n name: 'Afghan Telecom',\n mobile: \"\",\n address: \"4th Floor Post Parcel Building Mohammad Jan Khan Watt Kabul Afghanistan \",\n email: \"\"\n },\n AFGAT: {\n name: 'Afghan Wireless Communication Company',\n mobile: \"\",\n address: \"Shar-e-Naw, Charayee Hahi Yaqob\",\n email: \"\"\n },\n AFGEA: {\n name: 'Etisalat Afghanistan',\n mobile: \"0700 830 830\",\n address: \"Darulaman Road, Hajari Najari, Kabul, Afghanistan\",\n email: \"\"\n },\n AFGAR: {\n name: 'MTN Afghanistan',\n mobile: \"\",\n address: \"Park Plaza, Opposite Park-e-Shahr-e-Naw, Kabul, Afghanistan\",\n email: \"\"\n },\n AFGTD: {\n name: 'Roshan/Telecom Development Company Afghanistan Corp.',\n mobile: \"\",\n address: \"House#13 Main Street, Wazir Akbar Khan, Kabul Afghanistan\",\n email: \"\"\n }\n }\n\n return operator_profile[opName];\n }\n\n\n\n // convert_ms_payload_date_to_latest(data, seriesKeys, dayKey, dayKeyFormat, dayKeyOrderAsc) \n // if (data == null || data == undefined) {\n // return data;\n // }\n // if (dayKey == undefined || dayKey == null) {\n // dayKey = 'recordDate';\n // }\n // if (seriesKeys == undefined || seriesKeys == null) {\n // seriesKeys = 'series';CommonService\n // }\n // if (dayKeyFormat == undefined || dayKeyFormat == null) {\n // dayKeyFormat = 'YYYY-MM-DD';\n // }\n // if (dayKeyOrderAsc == undefined || dayKeyOrderAsc == null) {\n // dayKeyOrderAsc = true;\n // }\n\n // if (data['returnCode'] == 200) {\n // let series_container = {};\n // let payloadArray = [];\n // if (dayKeyOrderAsc) {\n // data['Payload'].reverse();\n // }\n\n // $.each(data['Payload'], function (index, record) {\n // let s = '';\n // let sa = seriesKeys.split('|');\n // $.each(sa, function (k, v) {\n // s += record[v];\n // s += '#';\n // });\n // let key;\n // if (s in series_container) {\n // key = series_container[s];\n // key = moment(key, dayKeyFormat).subtract(1, 'days').format(dayKeyFormat);\n // } else {\n // key = moment().format(dayKeyFormat);\n // }\n // series_container[s] = key;\n // record[dayKey] = key;\n // payloadArray.push(record);\n // });\n // if (dayKeyOrderAsc) {\n // payloadArray.reverse();\n // }\n // data['Payload'] = payloadArray;\n // }\n // return data;\n // }\n\n isEmptyOrNullOrUndefinedForNan(data) {\n if (data == null || data == undefined) {\n return 0;\n } else {\n return data;\n }\n }\n\n getabsoluteVal(data) {\n return Math.abs(data);\n }\n\n returnNullValueIfEmptyOrUndefined(value) {\n if (value == undefined || value == \"\") {\n return null;\n } else {\n return value;\n }\n }\n\n // customValueSorter(value1, value2): any {\n\n // // Handling null values\n // if (!value1 && value2) { return -1; }\n // if (!value1 && !value2) { return 0; }\n // if (value1 && !value2) { return 1; }\n\n // // Determines whether two strings are equivalent in the current locale\n // let o1, o2;\n // if (typeof value1 === 'string') {\n // o1 = value1.replace(' MB', '');\n // o1 = value1.replace(' GB', '');\n // o1 = value1.replace(' TB', '');\n // o1 = value1.replace(' KB', '');\n // o1 = value1.replace(' Byte', '');\n // o1 = value1.replace(' Bytes', '');\n // o2 = value2.replace(' MB', '');\n // o2 = value2.replace(' GB', '');\n // o2 = value2.replace(' TB', '');\n // o2 = value2.replace(' KB', '');\n // o2 = value2.replace(' Byte', '');\n // o2 = value2.replace(' Bytes', '');\n // o1 = o1.replaceAll(',', '');\n // o2 = o2.replaceAll(',', '');\n // } else {\n // o1 = value1;\n // o2 = value2;\n // }\n // const v1 = parseFloat(o1);\n // const v2 = parseFloat(o2);\n // // return value1.localeCompare(value2);\n // if (v1 > v2) {\n // return 1;\n // }\n // else if (v1 < v2) {\n // return -1;\n // }\n // return 0;\n // }\n\n customValueSorter(value1, value2): any {\n\n // Handling null values\n if (!value1 && value2) {\n return -1;\n }\n if (!value1 && !value2) {\n return 0;\n }\n if (value1 && !value2) {\n return 1;\n }\n // Determines whether two strings are equivalent in the current locale\n\n const v1 = convertString(value1);\n const v2 = convertString(value2);\n // return value1.localeCompare(value2);\n if (v1 > v2) {\n return 1;\n } else if (v1 < v2) {\n return -1;\n }\n function convertString(value) {\n if (typeof value === \"string\") {\n let out: any;\n out = value;\n out = out.replace(\"MB\", \"\");\n out = out.replace(\"GB\", \"\");\n out = out.replace(\"TB\", \"\");\n out = out.replaceAll(\",\", \"\");\n return parseFloat(out);\n }\n return value;\n }\n return 0;\n }\n\n customValueSorterForBar(valueOne, valueTwo) {\n\n const parser1 = new DOMParser();\n const parser2 = new DOMParser();\n const docOne = parser1.parseFromString(valueOne, 'text/html');\n const docTwo = parser2.parseFromString(valueTwo, 'text/html');\n\n const valueElement = docOne.querySelector('.bar');\n const numberTextOne = Number(valueElement.textContent.trim().replace(/,/g, ''));\n const valueElementTwo = docTwo.querySelector('.bar');\n const numberTextTwo = Number(valueElementTwo.textContent.trim().replace(/,/g, ''));\n\n if (!numberTextOne && numberTextTwo) {\n return -1;\n }\n if (!numberTextOne && !numberTextTwo) {\n return 0;\n }\n if (numberTextOne && !numberTextTwo) {\n return 1;\n }\n // Determines whether two strings are equivalent in the current locale\n\n const v1 = convertString(numberTextOne);\n const v2 = convertString(numberTextTwo);\n // return value1.localeCompare(value2);\n if (v1 > v2) {\n return 1;\n } else if (v1 < v2) {\n return -1;\n }\n function convertString(value) {\n if (typeof value === \"string\") {\n let out: any;\n out = value;\n out = out.replace(\"MB\", \"\");\n out = out.replace(\"GB\", \"\");\n out = out.replace(\"TB\", \"\");\n out = out.replaceAll(\",\", \"\");\n return parseFloat(out);\n }\n return value;\n }\n return 0;\n\n }\n\n // formatToByte(value, size) {\n // let sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n // let index = sizes.findIndex(x => x === size);\n\n // console.log(index);\n // }\n\n onExcelExporting(e, excel_data, report_name) {\n this.JSONToCSVConvertor(excel_data, report_name, true);\n e.cancel = true;\n }\n\n removeHtmlContentFromData(columns, rows) {\n // .replace(/<\\/?[^>]+(>|$)/g, \"\");\n\n rows.forEach(function (row) {\n let rowValues = row.values;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i] != undefined) {\n if (rowValues[i].toString().includes(\"</i>\"))\n rowValues[i] = rowValues[i].replace(/[^0-9\\.\\,]/g, \"\");\n }\n }\n });\n }\n\n customizeExcelCell(options) {\n if (options.value && typeof options.value === \"string\") {\n const numericString = options.value.replace(/,/g, '');\n if (!isNaN(Number(numericString))) {\n options.value = Number(numericString);\n }\n }\n }\n\n removeHtmlForJobsummaryContentFromData(columns, rows) {\n // .replace(/<\\/?[^>]+(>|$)/g, \"\");\n rows.forEach(function (row) {\n let rowValues = row.values;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i] != undefined) {\n if (rowValues[i].toString().includes(\"</span>\"))\n rowValues[i] = rowValues[i].replace(/<\\/?[^>]+>/g, '').trim();\n }\n\n }\n })\n }\n\n getDaysBetweenDates(start, end, dayName) {\n let result = [];\n let days = { sun: 0, mon: 1, tue: 2, wed: 3, thu: 4, fri: 5, sat: 6 };\n let day = days[dayName.toLowerCase().substr(0, 3)];\n // Copy start date\n let current = new Date(start);\n // Shift to next of required days\n current.setDate(current.getDate() + ((day - current.getDay() + 7) % 7));\n // While less than end date, add dates to result array\n while (current < new Date(end)) {\n result.push(new Date(+current));\n current.setDate(current.getDate() + 7);\n }\n return result;\n }\n\n getAllSeviceApiJson(apiJsonObject) {\n let service_api: any;\n service_api = {\n requestId: apiJsonObject.requestId,\n filter: {\n conditionGroup: {\n connector: \"and\",\n conditions: [\n {\n sourceName: \"startDate\",\n targetName: \"record_date\",\n operator: \"greaterThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.startDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },\n {\n sourceName: \"endDate\",\n targetName: \"record_date\",\n operator: \"lessThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.endDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },\n ],\n },\n },\n };\n\n if (apiJsonObject.srvType != undefined || apiJsonObject.srvType != null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"srvType\",\n targetName: \"srv_type\",\n operator: apiJsonObject.srvTypeOperator,\n type: \"string\",\n value: apiJsonObject.srvType,\n });\n }\n if (apiJsonObject.recordType != undefined || apiJsonObject.recordType != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"recordType\",\n \"targetName\": \"record_type\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.recordType\n });\n }\n if (\n apiJsonObject.sourceValue != undefined ||\n apiJsonObject.sourceValue != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"source\",\n targetName: \"source\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.sourceValue,\n });\n }\n if (\n apiJsonObject.inTrunkValue != undefined ||\n apiJsonObject.inTrunkValue != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"inTrunk\",\n targetName: \"in_trunk\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.inTrunkValue,\n });\n }\n if (\n apiJsonObject.outTrunkValue != undefined ||\n apiJsonObject.outTrunkValue != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"outTrunk\",\n targetName: \"out_trunk\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.outTrunkValue,\n });\n }\n if (\n apiJsonObject.eventType != undefined ||\n apiJsonObject.eventType != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventTypeKey\",\n targetName: \"event_type\",\n operator: apiJsonObject.eventType.length > 1 ? \"in\" : \"equals\",\n type: \"string\",\n value: apiJsonObject.eventType,\n });\n }\n if (\n apiJsonObject.event != undefined ||\n apiJsonObject.event != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"event_type\",\n \"targetName\": \"event_type\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.event\n });\n }\n\n if (\n apiJsonObject.direction != undefined ||\n apiJsonObject.direction != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"direction\",\n targetName: \"direction\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.direction,\n });\n }\n if (apiJsonObject.country != undefined || apiJsonObject.country != null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"country\",\n targetName: \"country\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.country,\n });\n }\n if (apiJsonObject.apn != undefined || apiJsonObject.apn != null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"apn\",\n targetName: \"apn\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.apn,\n });\n }\n if (\n apiJsonObject.nwCallType != undefined ||\n apiJsonObject.nwCallType != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"nwCallType\",\n targetName: \"nw_call_type\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.nwCallType,\n });\n }\n if (\n apiJsonObject.ratingGroup != undefined ||\n apiJsonObject.ratingGroup != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"ratingGroup\",\n targetName: \"rating_group\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.ratingGroup,\n });\n }\n if (\n apiJsonObject.terminationValue != undefined ||\n apiJsonObject.terminationValue != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"terminationCode\",\n targetName: \"term_code\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.terminationValue,\n });\n }\n if (\n apiJsonObject.cellIdValue != undefined ||\n apiJsonObject.cellIdValue != null\n ) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"cellId\",\n targetName: \"cell_id\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.cellIdValue,\n });\n }\n\n return service_api;\n }\n\n // make saome rendome number\n primeryRendomeId(length) {\n let mask = \"\";\n mask += \"0123456789\";\n let result = \"\";\n for (var i = length; i > 0; --i)\n result += mask[Math.round(Math.random() * (mask.length - 1))];\n return result;\n }\n\n\n // for chart tooltip\n chartTooltip(a: any, b: any, c: any, d: any): any {\n return '<table width=100% height=30 border=0 style=\\'font-size: 13px\\'>' +\n '<tr><td style=\\'text-align: left; color: white\\'> ' + a + ':' + b + '</td></tr>' +\n '<tr><td style=\\'text-align: left; color: white; padding-top: 5px\\'> ' + c + ':' + d + '</td></tr>' +\n '</table>';\n }\n\n\n convertToTitleCase(value) {\n const words = value.split(/(?=[A-Z])|_/);\n const capitalizedWords = words.map(word => word.charAt(0).toUpperCase() + word.slice(1));\n const result = capitalizedWords.join(' ');\n\n return result;\n }\n\n formatKeyValuePairs(keys, values) {\n if (keys.length !== values.length) {\n throw new Error('Keys and values arrays must have the same length');\n }\n\n const formattedPairs = [];\n\n for (let i = 0; i < keys.length; i++) {\n const key = this.convertToTitleCase(keys[i]);\n const value = values[i];\n formattedPairs.push(`${key} = ${value}`);\n }\n\n const result = formattedPairs.join(' | ');\n return result;\n }\n\n getValuesByKey(obj, keys) {\n const values = [];\n\n for (const key of keys) {\n if (key in obj) {\n values.push(obj[key]);\n } else {\n values.push('');\n }\n }\n\n return values;\n }\n\n transformHeaderAsKeyName(mainobj: any): any[] {\n return Object.keys(mainobj).map(key => {\n return {\n visible: true,\n dataField: key,\n caption: key\n };\n });\n }\n\n formatDecimalValuesForCdrDataTable(dataSource) {\n return dataSource.map(item => {\n let newItem = {};\n\n Object.keys(item).forEach(key => {\n let value = item[key];\n let numValue = Number(value);\n\n if (!isNaN(numValue)) {\n if (numValue % 1 !== 0) {\n\n newItem[key] = this.reformatNumberWithThousandSeparatorV3(numValue, 2);\n } else {\n newItem[key] = value;\n }\n } else {\n newItem[key] = value;\n }\n });\n\n return newItem;\n });\n }\n\n generateSampleData(startDate: string, endDate: string, fields: string[]): any[] {\n let dataset = [];\n let currentDate = moment(startDate);\n const endDateMoment = moment(endDate);\n\n while (currentDate <= endDateMoment) {\n let record = {};\n\n for (const field of fields) {\n if (field === 'recordDate') {\n record[field] = currentDate.format('YYYY-MM-DD');\n } else {\n record[field] = this.getRendomNumberWithdecimals(3, 0);\n }\n }\n\n dataset.push(record);\n currentDate = currentDate.add(1, 'days');\n }\n\n return dataset;\n }\n getRendomNumberWithdecimals(length, exp) {\n let mask = \"\";\n mask += \"0123456789\";\n let result = \"\";\n for (var i = length; i > 0; --i)\n result += mask[Math.round(Math.random() * (mask.length - 1))];\n return this.reformatNumberWithThousandSeparatorV4(result, exp);\n }\n\n formatTimestamp(timestamp: string): string {\n const numericTimestamp = parseInt(timestamp, 10);\n return moment(numericTimestamp).format('dddd, DD MMMM YYYY HH:mm:ss.SSS [GMT]ZZ');\n }\n\n formatDurationFromMilisecond(milliseconds) {\n let totalSeconds = Math.floor(milliseconds / 1000);\n let seconds = totalSeconds % 60;\n let totalMinutes = Math.floor(totalSeconds / 60);\n let minutes = totalMinutes % 60;\n let hours = Math.floor(totalMinutes / 60);\n\n let result = [];\n\n if (hours > 0) {\n result.push(`${hours} hour${hours > 1 ? 's' : ''}`);\n }\n if (minutes > 0) {\n result.push(`${minutes} minute${minutes > 1 ? 's' : ''}`);\n }\n if (seconds > 0 || result.length === 0) {\n result.push(`${seconds} second${seconds > 1 ? 's' : ''}`);\n }\n\n return result.join(' ');\n }\n\n\n removeDuplicates(jobArray, context) {\n const seen = new Set();\n return jobArray.filter(item => {\n const duplicate = seen.has(item[context]);\n seen.add(item[context]);\n return !duplicate;\n });\n }\n\n getKey = (obj) => {\n const keys = Object.keys(obj);\n return keys.find(key => key !== \"event_date\");\n };\n\n convertString(input) {\n let result = input\n .replace(/_/g, ' ')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/\\b([a-z])/g, function (match) {\n return match.toUpperCase();\n });\n\n result = result.replace(/([A-Z]{2,})/g, function (match) {\n return match.toUpperCase();\n });\n\n return result;\n\n return result;\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"h-20 mb-2\">\n <div class=\"container\">\n <div class=\"loader\"></div>\n </div>\n</div>\n\n","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { CommonService } from '../common';\n\n@Component({\n selector: 'lib-common-header',\n templateUrl: './common-header.component.html',\n styleUrls: ['./common-header.component.scss']\n})\nexport class CommonHeaderComponent {\n\n @Input() pageTitle: any;\n constructor(\n public commonService: CommonService,\n private router: Router\n ) {\n }\n\n gotoViews() {\n this.router.navigate(['apps/controlPanel/applicationViews']);\n }\n gotoPages() {\n this.router.navigate(['apps/controlPanel/applicationDashboard']);\n }\n gotoFilters() {\n this.router.navigate(['apps/controlPanel/applicationFilter']);\n }\n gotoDataSets() {\n this.router.navigate(['apps/controlPanel/applicationDataset']);\n }\n\n}\n","<div class=\"flex justify-between border-b bg-card dark:bg-transparent\">\n <div class=\"flex-1 min-w-0\" *ngIf=\"pageTitle !== ''\">\n <div class=\"flex items-center py-3 pl-2 pr-6 float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2 class=\"text-3xl md:text-3xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n {{pageTitle}}\n </h2>\n </div>\n </div>\n <div class=\"flex justify-between items-center p-0 m-0\" [ngClass]=\"{'border-l-2': pageTitle !== ''}\">\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"gotoDataSets()\">\n All Dataset\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"gotoViews()\">\n All Views\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"gotoPages()\">\n All Pages\n </button>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_light_md}}\" (click)=\"gotoFilters()\">\n All Filters\n </button>\n </div>\n\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\nimport { ApplicationContentService } from '../application-content.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { Router } from '@angular/router';\nimport { CommonService } from '../common';\n\n@Component({\n selector: 'app-application-filter',\n templateUrl: './application-filter.component.html',\n styleUrls: ['./application-filter.component.scss']\n})\nexport class ApplicationFilterComponent implements OnInit {\n filterDataSource: any = [];\n isNewFilterCreate: boolean;\n isLoader: boolean;\n creatFilterObject: any = {\n filterName: \"\",\n filterItems: [{\n \"apiName\": \"startDate\",\n \"label\": \"Start Date\",\n \"filterType\": \"date\",\n \"display\": true,\n \"operatorName\": \"\",\n \"defaultFilterType\": \"dynamic\",\n \"defaultFilterValue\": \"15,days\",\n \"momentFunction\": \"subtract\",\n \"momentFormat\": \"YYYY-MM-DD\"\n },\n {\n \"apiName\": \"endDate\",\n \"label\": \"End Date\",\n \"display\": true,\n \"filterType\": \"date\",\n \"operatorName\": \"\",\n \"defaultFilterType\": \"dynamic\",\n \"defaultFilterValue\": \"1,days\",\n \"momentFunction\": \"subtract\",\n \"momentFormat\": \"YYYY-MM-DD\"\n }]\n }\n\n filter_type = ['single', 'multiple', 'date', 'datetime', \"content\"]\n defaultFilterTypeDataSource = ['static', 'dynamic']\n\n momentFunction = [\"subtract\", \"add\", \"startOf\", \"endOf\"]\n kpiFilterConfigService: any;\n constructor(\n private service: ApplicationContentService,\n public commonService: CommonService,\n private toastr: ToastrService,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n this.isLoader = true;\n this.getKPIReferenceEndPoints();\n this.getFilterDataSet();\n\n }\n\n getFilterDataSet() {\n this.isLoader = true;\n this.service.getAppFilterConfigs().subscribe({\n next: (data: any) => {\n this.filterDataSource = data;\n this.isLoader = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Filter Creation')\n\n }\n })\n }\n\n addFilter() {\n let obj = {\n \"apiName\": \"\",\n \"display\": true,\n \"label\": \"\",\n \"filterType\": \"\",\n \"operatorName\": \"\",\n \"defaultFilterType\": \"\",\n \"defaultFilterValue\": \"\"\n }\n this.creatFilterObject.filterItems.push(obj);\n }\n\n deleteFilters(i) {\n this.creatFilterObject.filterItems.splice(i, 1)\n }\n\n\n getCreateNewFilter() {\n this.isNewFilterCreate = true;\n }\n\n editFilter(data) {\n this.creatFilterObject = data;\n this.isNewFilterCreate = true;\n }\n\n deleteFilter(item) {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Filter\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.isLoader = true;\n this.service.deleteAppFilterConfig(item.filterId).subscribe((val: any) => {\n this.getFilterDataSet();\n this.isLoader = false;\n this.toastr.success('Filter Deleted Successfully')\n }, err => {\n console.log(err);\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Rule Module');\n })\n }\n });\n }\n\n createFilterItems() {\n this.isLoader = true;\n\n if (this.creatFilterObject['filterId']) {\n this.service.editAppFilterConfig(this.creatFilterObject).subscribe({\n next: (data: any) => {\n this.getFilterDataSet();\n this.isNewFilterCreate = false;\n this.isLoader = false;\n this.toastr.success('Filter Created Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Filter Creation')\n }\n })\n } else {\n this.service.createAppFilterConfig(this.creatFilterObject).subscribe({\n next: (data: any) => {\n this.getFilterDataSet();\n this.isNewFilterCreate = false;\n this.isLoader = false;\n this.toastr.success('Filter Created Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Filter Creation')\n }\n })\n }\n }\n\n\n getKPIReferenceEndPoints() {\n this.kpiFilterConfigService = [];\n let firstObject = {\n \"apiName\": \"Start Date\",\n \"apiUrl\": \"startDate\"\n };\n let secondObject = {\n \"apiName\": \"End Date\",\n \"apiUrl\": \"endDate\"\n };\n let thirdObject = {\n \"apiName\": \"Text Box\",\n \"apiUrl\": \"\"\n };\n let operator_key = {\n \"apiName\": \"Operator Key\",\n \"apiUrl\": \"operator_key\"\n };\n this.kpiFilterConfigService.push(firstObject);\n this.kpiFilterConfigService.push(secondObject);\n this.kpiFilterConfigService.push(thirdObject);\n this.kpiFilterConfigService.push(operator_key);\n this.service.getKPIReferenceEndPoints().subscribe({\n next: (data: any) => {\n data.forEach(element => {\n this.kpiFilterConfigService.push(element);\n });\n // let lastObject = {\n // \"apiName\": \"By MSISDN\",\n // \"apiUrl\": \"\"\n // };\n // this.kpiFilterConfigService.push(lastObject);\n\n }, error: (err: any) => {\n this.toastr.error(\"Unexpected Server Exception. Please contact System Admin.\", \"KPI service Config\")\n }\n })\n }\n\n\n // navigation of controllers\n\n gotoViews() {\n this.router.navigate(['apps/controlPanel/applicationViews']);\n }\n gotoPages() {\n this.router.navigate(['apps/controlPanel/applicationDashboard']);\n }\n gotoFilters() {\n this.router.navigate(['apps/controlPanel/applicationFilter']);\n }\n gotoDataSets() {\n this.router.navigate(['apps/controlPanel/applicationDataset']);\n }\n\n}\n","<div class=\"flex flex-col flex-auto min-w-0\">\n <lib-common-header [pageTitle]=\"'Application Filters'\"></lib-common-header>\n\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Filters\n <div class=\"ml-auto\">\n <button class=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-1 px-3 rounded\"\n (click)=\"getCreateNewFilter()\">\n Add Filter\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"filterDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n\n <dxi-column dataField=\"filterName\"></dxi-column>\n <dxi-column dataField=\"filterId\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editFilter(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteFilter(data.data)\">\n Delete\n </button>\n </div>\n\n\n </dx-data-grid>\n </div>\n </div>\n <div class=\"p-2 w-full\" *ngIf=\"isNewFilterCreate\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Filters\n\n </h6>\n <div class=\"flex flex-row my-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Filter Name</div>\n <dx-text-box [(ngModel)]=\"creatFilterObject.filterName\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-5 border\">\n <div class=\"flex flex-col flex-auto min-w-0 \">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Select Filters\n </div>\n <div class=\"pt-2 border-x border-b \">\n <ng-container *ngFor=\"let item of creatFilterObject.filterItems; let i = index;\">\n <div class=\"my-2 flex flex-row justify-between border-b\">\n\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2 mt-5\"> </div>\n <dx-check-box [(ngModel)]=\"item.display\" text=\"Display\"></dx-check-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\">Filter Name </div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpiFilterConfigService\"\n displayExpr=\"apiName\" valueExpr=\"apiUrl\"\n [(ngModel)]=\"item.apiName\"></dx-select-box>\n </div>\n\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\">Operator Key Name </div>\n <dx-text-box [(ngModel)]=\"item.operatorName\"></dx-text-box>\n\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Label</div>\n <dx-text-box [(ngModel)]=\"item.label\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Container</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.filterType\"></dx-select-box>\n\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"defaultFilterTypeDataSource\"\n [(ngModel)]=\"item.defaultFilterType\"\n value=\"defaultFilterTypeDataSource[0]\"></dx-select-box>\n\n </div>\n\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType == 'date' || item.filterType == 'datetime')\">\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Function </div>\n <dx-select-box [items]=\"momentFunction\"\n [(ngModel)]=\"item.momentFunction\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Additionals </div>\n <dx-text-box [(ngModel)]=\"item.momentFormat\"></dx-text-box>\n </div>\n\n </ng-container>\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType !== 'date' || item.filterType !== 'datetime')\">\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultFilterValue\"></dx-text-box>\n </div>\n </ng-container>\n\n <div class=\"px-2 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilters(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addFilter()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createFilterItems()\">\n Submit Filter\n </button>\n </div>\n\n </div>\n </div>\n\n\n\n</div>","import { Injectable } from '@angular/core';\n@Injectable({\n providedIn: 'root'\n })\n\nexport class kpicommonService {\n\ngetAllSeviceApiJson(apiJsonObject) {\n let service_api: any;\n service_api = {\n 'requestId': apiJsonObject.requestId,\n \"filter\": {\n \"conditionGroup\": {\n \"connector\": \"and\",\n \"conditions\": [\n {\n \"sourceName\": \"startDate\",\n \"targetName\": \"record_date\",\n \"operator\": \"greaterThanOrEqualsTo\",\n \"type\": \"string\",\n \"value\": apiJsonObject.startDate,\n \"enrichClz\": \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n \"enrichMethod\": \"convertNarrowStringToShortString\"\n },\n {\n \"sourceName\": \"endDate\",\n \"targetName\": \"record_date\",\n \"operator\": \"lessThanOrEqualsTo\",\n \"type\": \"string\",\n \"value\": apiJsonObject.endDate,\n \"enrichClz\": \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n \"enrichMethod\": \"convertNarrowStringToShortString\"\n }\n ]\n }\n }\n };\n\n if (apiJsonObject.srvType != undefined || apiJsonObject.srvType != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"srvType\",\n \"targetName\": \"srv_type\",\n \"operator\": apiJsonObject.srvTypeOperator,\n \"type\": \"string\",\n \"value\": apiJsonObject.srvType\n })\n }\n if (apiJsonObject.eventType != undefined || apiJsonObject.eventType != null) {\n\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"eventTypeKey\",\n \"targetName\": \"event_type\",\n \"operator\": (apiJsonObject.eventType.length > 1) ? \"in\" : \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.eventType\n })\n }\n\n if (apiJsonObject.direction != undefined || apiJsonObject.direction != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"direction\",\n \"targetName\": \"direction\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.direction\n })\n }\n if (apiJsonObject.country != undefined || apiJsonObject.country != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"country\",\n \"targetName\": \"country\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.country\n })\n }\n if (apiJsonObject.apn != undefined || apiJsonObject.apn != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"apn\",\n \"targetName\": \"apn\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.apn\n })\n }\n if (apiJsonObject.nwCallType != undefined || apiJsonObject.nwCallType != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"nwCallType\",\n \"targetName\": \"nw_call_type\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.nwCallType\n })\n }\n if (apiJsonObject.ratingGroup != undefined || apiJsonObject.ratingGroup != null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"ratingGroup\",\n \"targetName\": \"rating_group\",\n \"operator\": \"equals\",\n \"type\": \"string\",\n \"value\": apiJsonObject.ratingGroup\n })\n\n }\n\n return service_api;\n}\n}","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { Title } from \"@angular/platform-browser\";\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { ApplicationContentService } from '../../application-content.service';\nimport moment from './../../moment-helper';\nimport { CommonService } from '../../common';\nimport { kpicommonService } from '../../kpi-service';\n@Component({\n selector: 'app-application-dataset',\n templateUrl: './application-dataset.component.html',\n styleUrls: ['./application-dataset.component.scss']\n})\nexport class ApplicationDatasetComponent implements OnInit {\n dataSettableDataSource: any;\n isLoader: boolean;\n isDuplidateView: boolean;\n isNewDataSetCreateView: boolean;\n\n pageViewId: boolean;\n pageConfigId: boolean;\n\n @ViewChild('scrollToElement') scrollToElement!: ElementRef;\n defaultStartDate: any;\n defaultEndDate: any;\n isDatasetPreview: boolean;\n isFilterInputs: boolean;\n isDatasetloader: boolean;\n dataSourceModal: any = {};\n selectedDataSet: any;\n\n\n\n constructor(\n private service: ApplicationContentService,\n public commonService: CommonService,\n private toastr: ToastrService,\n private activatedRoute: ActivatedRoute,\n private router: Router,\n private title: Title,\n private kpiService: kpicommonService\n ) {\n this.title.setTitle('Application Datasets');\n }\n\n ngOnInit(): void {\n let contentViewId = this.activatedRoute.snapshot.queryParams['viewId'];\n if (contentViewId) {\n this.pageViewId = true;\n }\n let contentPageId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentPageId) {\n this.pageConfigId = true;\n }\n this.getDataSet();\n }\n\n getDataSet() {\n this.isLoader = true;\n this.service.getAppDatasetConfigs().subscribe({\n next: (data: any) => {\n this.dataSettableDataSource = data;\n let contentDataset = this.activatedRoute.snapshot.queryParams['datasetId'];\n if (contentDataset) {\n const foundObject = this.dataSettableDataSource.find(view => view.datasetId === contentDataset);\n this.editDataset(foundObject)\n }\n this.isLoader = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n\n }\n })\n }\n\n getCreateNewDataset() {\n this.router.navigate(['/apps/controlPanel/applicationDataset/datasetEditor'])\n\n }\n\n\n duplicateDataset(data) {\n // this.service.setCurrentDatasetValue(data)\n let navigationExtra: NavigationExtras = {\n queryParams: {\n datasetId: data.datasetId,\n contentType: \"clone\"\n }\n }\n this.router.navigate(['/apps/controlPanel/applicationDataset/datasetEditor'], navigationExtra)\n }\n\n\n\n editDataset(data) {\n\n this.service.setCurrentDatasetValue(data)\n let navigationExtra: NavigationExtras = {\n queryParams: {\n datasetId: data.datasetId,\n contentType: \"edit\"\n }\n }\n this.router.navigate(['/apps/controlPanel/applicationDataset/datasetEditor'], navigationExtra)\n\n }\n\n deleteDataset(data) {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Dataset\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.isLoader = true;\n this.service.deleteAppDatasetConfig(data.datasetId).subscribe((val: any) => {\n this.getDataSet();\n this.isLoader = false;\n this.toastr.success('Dataset Deleted Successfully')\n }, err => {\n console.log(err);\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Rule Module');\n })\n }\n });\n }\n\n\n backToView() {\n let contentViewId = this.activatedRoute.snapshot.queryParams['viewId'];\n let contentPageId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentViewId && contentPageId) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'viewId': contentViewId,\n 'pageId': contentPageId\n }\n };\n this.router.navigate(['apps/controlPanel/applicationViews'], navigation);\n } else {\n let navigation: NavigationExtras = {\n queryParams: {\n 'viewId': contentViewId,\n }\n };\n this.router.navigate(['apps/controlPanel/applicationViews'], navigation);\n }\n\n }\n\n backToPage() {\n let contentPageId = this.activatedRoute.snapshot.queryParams['pageId'];\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': contentPageId,\n 'contentType': 'edit'\n }\n };\n this.router.navigate(['apps/controlPanel/pageConfigController'], navigation);\n }\n\n gotoViews() {\n let contentPageId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentPageId) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': contentPageId\n }\n };\n this.router.navigate(['apps/controlPanel/applicationViews'], navigation);\n } else {\n this.router.navigate(['apps/controlPanel/applicationViews']);\n }\n }\n\n\n getCapitalize(item: string) {\n return this.commonService.convertToSpaceSeparatedCapitalized(item)\n }\n getFilter(item) {\n let col_name = item.toLowerCase();\n if (col_name.includes('date')) {\n return true;\n } else {\n return false;\n }\n }\n\n startDateChange(e, item) {\n if (this.dataSourceModal.datasetType == \"simpleApi\") {\n item.defaultValue = moment(e.value).format(\"YYYY-MM-DD\")\n } else {\n item.defaultValue = moment(e.value).format(\"YYYY-MM-DD\")\n }\n\n }\n\n testDataset(data) {\n this.isDatasetPreview = true;\n this.dataSourceModal = {};\n this.dataSourceModal = data;\n if (this.dataSourceModal.datasetType == \"querybuilder\") {\n this.isFilterInputs = true;\n } else if (this.dataSourceModal.datasetType == \"simpleApi\") {\n this.isFilterInputs = true;\n } else if (this.dataSourceModal.datasetType == \"plainjson\") {\n this.isFilterInputs = false;\n this.getDataPreview();\n } else if (this.dataSourceModal.datasetType == \"sqlQuery\") {\n this.isFilterInputs = true;\n } else {\n this.isFilterInputs = true;\n this.getDataPreview();\n }\n\n }\n\n\n getDataPreview() {\n this.isDatasetloader = true;\n\n if (this.dataSourceModal.datasetType == \"mongo\") {\n this.getDataSetForMongo(this.dataSourceModal);\n } else if (this.dataSourceModal.datasetType == \"querybuilder\") {\n this.getDatasetForImpala(this.dataSourceModal);\n } else if (this.dataSourceModal.datasetType == \"simpleApi\") {\n this.getDatasetForSimpleApiImpala(this.dataSourceModal);\n } else if (this.dataSourceModal.datasetType == \"plainjson\") {\n this.getDatasetForPlainJson(this.dataSourceModal);\n } else if (this.dataSourceModal.datasetType == \"sqlQuery\") {\n this.getDatasetForSqlTemplate(this.dataSourceModal);\n } else {\n // this.getDatasetForImpala(this.selectedDataSet)\n }\n }\n\n getDataSetForMongo(dataset) {\n let apiJsonObject = {\n requestId: dataset.config.serviceId,\n };\n if (dataset.config.fixOperationLevles && dataset.config.fixOperationLevles.length != 0) {\n for (const item of dataset.config.fixOperationLevles) {\n Object.assign(apiJsonObject, item);\n }\n }\n const mon_config = this.kpiService.getAllSeviceApiJson(apiJsonObject);\n this.service.getData(mon_config, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload.slice(0, 1);\n this.isDatasetloader = false;\n }\n })\n }\n\n getDatasetForImpala(dataset) {\n let request = dataset.config.queryConfig;\n let transformedObject: any = {};\n for (let item of request.reqFields) {\n const key = Object.keys(item)[0];\n const value = Object.values(item)[0];\n if (key === 'startDate') {\n transformedObject.recordDate = value;\n } else {\n transformedObject[key] = value;\n }\n }\n\n transformedObject['measures'] = request.measures;\n transformedObject['dimensions'] = request.dimensions;\n let defaultFilters = { operationFilter: { startDate: moment().subtract('15', 'days').format('YYYY-MM-DD'), endDate: moment().format('YYYY-MM-DD') } };\n // transformedObject['filters'] = request.mapedFilters;\n // const operator = Object.keys(defaultFilters.operationFilter).map(key => ({ [key]: defaultFilters.operationFilter[key] }));\n transformedObject['filters'] = this.transformDataForMFilter([], request.mapedFilters);\n\n transformedObject['sorters'] = request.sorters;\n transformedObject[\"paginationRequired\"] = false;\n console.log(transformedObject);\n\n this.service.getData(transformedObject, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data['dataset'];\n this.dataSourceModal['data'] = payload.slice(0, 1);\n this.isDatasetloader = false;\n\n }\n })\n\n }\n\n\n transformDataForMFilter(filterdata, mapData) {\n\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n // value: (mapping.operatorName == \"in\" || mapping.operatorName == \"notIn\") ? [mapping.defaultValue] : mapping.defaultValue\n value: mapping.defaultValue\n };\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));\n if (filter) {\n if (mapping.defaultValue === \"\") {\n const value = filter[mapping.localColumn];\n\n if (Array.isArray(value)) {\n resultObj.operator = \"in\";\n resultObj.value = value;\n } else {\n resultObj.value = value;\n }\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n }\n } else if (mapping.defaultValue === \"\") {\n return;\n }\n result.push(resultObj);\n });\n result = result.filter(obj => obj.value !== null && obj.value !== \"\");\n return result;\n }\n\n getDatasetForSimpleApiImpala(dataset: any) {\n if (dataset.config.apiType === \"post\") {\n let serviceJson: any = {};\n dataset.config.queryConfig.mapedFilters.forEach((filter: any) => {\n serviceJson[filter.serverColumn] = filter.defaultValue;\n let datecolumn = filter.serverColumn.toLowerCase();\n if (datecolumn.includes('date') && typeof filter.dataType === 'string') {\n serviceJson[filter.serverColumn] = moment(filter.defaultValue, \"YYYYMMDD\").format(\"YYYY-MM-DD\");\n } else {\n serviceJson[filter.serverColumn] = filter.defaultValue;\n }\n\n\n });\n\n this.service.getSimpleApiPostRequest(dataset.config.api, serviceJson).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload.slice(0, 1);;\n this.isDatasetloader = false;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n } else if (dataset.config.apiType === \"get\") {\n // Construct GET URL with parameters\n let requestUrl = dataset.config.api + \"?\";\n dataset.config.queryConfig.mapedFilters.forEach((filter: any, index: number) => {\n requestUrl += `${filter.serverColumn}=${filter.defaultValue}`;\n if (index < dataset.config.queryConfig.mapedFilters.length - 1) {\n requestUrl += \"&\";\n }\n });\n\n // Make GET request\n this.service.getSimpleApiGetRequest(requestUrl).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload.slice(0, 1);;\n this.isDatasetloader = false;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n }\n\n\n\n\n getDatasetForPlainJson(dataset) {\n let requestapi = dataset.config.api + '?datasetId=' + dataset.datasetId;\n this.service.getJsonDatasetPayload(requestapi).subscribe({\n next: (data: any) => {\n this.dataSourceModal['data'] = data.slice(0, 1);\n this.isDatasetloader = false;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n\n getDatasetForSqlTemplate(dataset) {\n let requestAp = dataset.config.api;\n let request_params = {\n 'dbConfig': dataset.config.queryConfig.dbConfig,\n 'databaseName': dataset.config.queryConfig.databaseName,\n 'filters': this.transformDataForMFilterForSQl(dataset.config.queryConfig.mapedFilters),\n 'templateQuery': dataset.config.queryConfig.templateQuery,\n }\n this.service.genericSqlQueryResponse(requestAp, request_params).subscribe({\n next: (data: any) => {\n this.dataSourceModal['data'] = data.slice(0, 1);\n this.isDatasetloader = false;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n\n\n transformDataForMFilterForSQl(mapData) {\n\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n aliasColumnName: mapping.localColumn,\n // value: (mapping.operatorName == \"in\" || mapping.operatorName == \"notIn\") ? [mapping.defaultValue] : mapping.defaultValue\n value: mapping.defaultValue\n };\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n\n result.push(resultObj);\n });\n return result;\n }\n\n\n\n}\n","<div class=\"flex flex-col flex-auto min-w-0\">\n <lib-common-header [pageTitle]=\"'Application Datasets'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Datasets\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToView()\" *ngIf=\"pageViewId\">\n Back To View\n </button>\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageConfigId\">\n Back To Page\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"getCreateNewDataset()\">\n Add Dataset\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"dataSettableDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n\n <dxi-column dataField=\"datasetName\"></dxi-column>\n <dxi-column dataField=\"datasetType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editDataset(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateDataset(data.data)\">\n Duplicate\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"testDataset(data.data)\">\n Test Data\n </button>\n </div>\n\n\n </dx-data-grid>\n </div>\n </div>\n\n\n</div>\n\n\n<dx-popup [(visible)]=\"isDatasetPreview\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"800\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"{{dataSourceModal.datasetName}}\">\n <div *dxTemplate=\"let data of 'content'\">\n <!-- <div class=\"text-2xl \">{{dataSourceModal.datasetName}}</div> -->\n <div class=\"flex flex-row mt-2\">\n <ng-container *ngIf=\"isFilterInputs\">\n <ng-container *ngIf=\"dataSourceModal.config.queryConfig\">\n <ng-container *ngFor=\"let request of dataSourceModal.config.queryConfig.mapedFilters\">\n <div class=\"m-2\">\n <div class=\"text-md mb-1\"> {{getCapitalize(request.localColumn)}}</div>\n <dx-date-box displayFormat=\"yyyy-MM-dd\" type=\"date\"\n (onValueChanged)=\"startDateChange($event,request)\"\n *ngIf=\"getFilter(request.localColumn)\">\n </dx-date-box>\n <dx-text-box [(ngModel)]=\"request.defaultValue\"\n *ngIf=\"!getFilter(request.localColumn)\"></dx-text-box>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"mt-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer my-4\" (click)=\"getDataPreview()\">\n Check\n </button>\n </div>\n </ng-container>\n </div>\n\n\n <div class=\"w-full border p-3\">\n <app-loader *ngIf=\"isDatasetloader\"></app-loader>\n <ng-container *ngIf=\"!isDatasetloader\">\n\n <pre><code>{{dataSourceModal.data | json}}</code></pre>\n </ng-container>\n </div>\n </div>\n</dx-popup>","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { take, tap } from 'rxjs/operators';\nimport { ToastrService } from 'ngx-toastr';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { Title } from \"@angular/platform-browser\";\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-application-views',\n templateUrl: './application-views.component.html',\n styleUrls: ['./application-views.component.scss']\n})\nexport class ApplicationViewsComponent implements OnInit {\n componentViewTableDataSource: any;\n dataSettableDataSource: any;\n isLoader: boolean = false;\n isEditClick: boolean = false;\n isFilterInputs: boolean = false;\n isNewComponentViewCreate: boolean = false;\n isDuplidateView: boolean = false;\n\n isCreateViewFromKpi: boolean;\n isCreateViewFromKpiLoader: boolean;\n isCreateNewView: boolean;\n treeListForSearchBox: any = [];\n selectedDataSet: any = {};\n viewId: any;\n pageId: any;\n componentNamesOthers = [\n { \"compName\": \"GammaTodayPreviousComponent\", \"item\": \"Today vs Previous Day \" },\n { \"compName\": \"GammaTableWithPercentageComponent\", \"item\": \"Table View with percentage\" },\n { \"compName\": \"GammSingleNumberCardComponent\", \"item\": \"Single Number Card\" }\n ]\n componentName: any;\n @ViewChild('scrollToElement') scrollToElement!: ElementRef;\n\n constructor(\n private service: ApplicationContentService,\n public commonService: CommonService,\n private toastr: ToastrService,\n private title: Title,\n private activatedRoute: ActivatedRoute,\n private router: Router\n ) {\n this.title.setTitle('Application Views');\n }\n\n ngOnInit(): void {\n let contentViewId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentViewId) {\n this.pageId = true;\n }\n\n\n this.getComponentViewSet();\n }\n\n createNewComponentView() {\n this.router.navigate(['/apps/controlPanel/applicationViews/viewEditor'])\n }\n\n\n getComponentViewSet() {\n this.isLoader = true;\n this.service.getAppViewConfigs().subscribe({\n next: (data: any) => {\n this.componentViewTableDataSource = data;\n this.isLoader = false;\n this.isNewComponentViewCreate = false;\n this.isDuplidateView = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n\n }\n })\n }\n\n\n\n\n\n\n\n\n\n\n\n\n\n editViews(data) {\n let navigationExtra: NavigationExtras = {\n queryParams: {\n viewId: data.viewId,\n contentType: \"edit\"\n }\n }\n this.router.navigate(['/apps/controlPanel/applicationViews/viewEditor'], navigationExtra)\n\n }\n\n duplicateViews(data) {\n let navigationExtra: NavigationExtras = {\n queryParams: {\n viewId: data.viewId,\n contentType: \"clone\"\n }\n }\n this.router.navigate(['/apps/controlPanel/applicationViews/viewEditor'], navigationExtra)\n }\n\n deleteDataset(data) {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Dataset\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.isLoader = true;\n this.service.deleteAppViewConfig(data.viewId).subscribe((val: any) => {\n this.getComponentViewSet();\n this.isLoader = false;\n this.isEditClick = false;\n this.toastr.success('Dataset Deleted Successfully')\n }, err => {\n console.log(err);\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Rule Module');\n })\n }\n });\n }\n\n\n getCapitalize(item: string) {\n return this.commonService.convertToSpaceSeparatedCapitalized(item)\n }\n\n backToPage() {\n let contentViewId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentViewId) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': contentViewId,\n \"contentType\": 'edit'\n }\n };\n this.router.navigate(['/apps/controlPanel/pageConfigController'], navigation);\n }\n }\n\n gotoDataset() {\n let contentViewId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (contentViewId) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': contentViewId,\n }\n };\n this.router.navigate(['/apps/controlPanel/applicationDataset'], navigation);\n } else {\n this.router.navigate(['/apps/controlPanel/applicationDataset']);\n }\n }\n\n\n}\n","<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Application Views'\"></lib-common-header>\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900\n dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Views\n <div class=\"ml-auto\">\n\n\n <button class=\"{{commonService.btnLightWhite}}\" (click)=\"backToPage()\" *ngIf=\"pageId\">\n Back To Page\n </button>\n\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewComponentView()\">\n Add View\n </button>\n\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"componentViewTableDataSource\"\n [hoverStateEnabled]=\"true\" *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\"\n [showColumnLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"viewName\"></dxi-column>\n <!-- <dxi-column dataField=\"datasetName\"></dxi-column>-->\n <!-- <dxi-column dataField=\"viewLabel\"></dxi-column> -->\n <dxi-column dataField=\"kpiConfig.formate\"></dxi-column>\n <dxi-column dataField=\"kpiConfig.componentName\"></dxi-column>\n <dxi-column dataField=\"viewType\"></dxi-column>\n <dxi-column dataField=\"createdBy\"></dxi-column>\n <dxi-column dataField=\"creationDate\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editViews(data.data)\">\n Edit\n </button>\n <!-- <button class=\"{{commonService.btn_warning_md}}\" (click)=\"duplicateViews(data.data)\">\n Duplicate\n </button> -->\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteDataset(data.data)\">\n Delete\n </button>\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-dataset-mongo',\n templateUrl: './dataset-mongo.component.html',\n styleUrls: ['./dataset-mongo.component.scss']\n})\nexport class DatasetMongoComponent implements OnInit {\n // mongoDataset = {\n // \"api\": \"/kpi/trends/msc/get-stats-by-daily\",\n // \"serviceId\": \"getMscDailyStats\",\n // \"filterItems\": [\n // {\n // \"apiName\": \"\",\n // \"label\": \"\",\n // \"filterType\": false,\n // \"operatorName\": \"\",\n // \"defaultFilterType\": \"\",\n // \"defaultFilterValue\": \"\"\n // }\n // ]\n // }\n @Input() mongoDataset: any;\n filter_type = ['single', 'multiple', 'date', 'datetime']\n defaultFilterTypeDataSource = ['static', 'dynamic']\n\n momentFunction = [\"subtract\", \"add\", \"startOf\", \"endOf\"]\n fixOperationArray: any = [];\n @Output() public getMongoServiceDataSet: EventEmitter<any> = new EventEmitter();\n\n\n constructor(\n public commonService: CommonService\n ) { }\n\n ngOnInit(): void {\n }\n\n addFilter() {\n let obj = {\n \"apiName\": \"\",\n \"label\": \"\",\n \"filterType\": false,\n \"operatorName\": \"\",\n \"defaultFilterType\": \"\",\n \"defaultFilterValue\": \"\"\n }\n this.mongoDataset.filterItems.push(obj);\n }\n\n deleteFilters(i) {\n this.mongoDataset.filterItems.splice(i, 1)\n }\n\n deleteFixoperation(i) {\n this.mongoDataset.fixOperationLevles.splice(i, 1)\n }\n\n addFixOperation() {\n let obj = {\n \"key\": '',\n \"value\": ''\n }\n this.mongoDataset.fixOperationLevles.push(obj)\n }\n\n createDataSet() {\n this.getMongoServiceDataSet.emit(this.mongoDataset)\n }\n\n}\n","<div class=\"m-2\">\n <div class=\"flex flex-row\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">End Point</div>\n <dx-text-box [(ngModel)]=\"mongoDataset.api\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Service Id</div>\n <dx-text-box [(ngModel)]=\"mongoDataset.serviceId\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-1\"> Select Filters\n </div>\n <div class=\"pt-2 border-x border-b \">\n <ng-container *ngFor=\"let item of mongoDataset.filterItems; let i = index;\">\n <div class=\"my-2 flex flex-row justify-between border-b\">\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Filter Key Name </div>\n <dx-text-box displayExpr=\"apiName\" valueExpr=\"apiUrl\" [(ngModel)]=\"item.apiName\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Operator Key Name </div>\n <dx-text-box [(ngModel)]=\"item.operatorName\"></dx-text-box>\n\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Label</div>\n <dx-text-box [(ngModel)]=\"item.label\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Container</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.filterType\"></dx-select-box>\n\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"defaultFilterTypeDataSource\"\n [(ngModel)]=\"item.defaultFilterType\" value=\"defaultFilterTypeDataSource[0]\"></dx-select-box>\n\n </div>\n\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType == 'date' || item.filterType == 'datetime')\">\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Function </div>\n <dx-select-box [items]=\"momentFunction\" [(ngModel)]=\"item.momentFunction\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Additionals </div>\n <dx-text-box [(ngModel)]=\"item.momentFormate\"></dx-text-box>\n </div>\n\n </ng-container>\n <ng-container\n *ngIf=\"item.defaultFilterType == 'dynamic' && (item.filterType !== 'date' || item.filterType !== 'datetime')\">\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> FIlter Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultFilterValue\"></dx-text-box>\n </div>\n </ng-container>\n\n <!-- <div class=\"text-center mt-8 w-full\">\n\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForFilters(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== mongoDataset.filterItems.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForFilters(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div> -->\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\" (click)=\"deleteFilters(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addFilter()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div class=\"mt-4\">\n <div class=\"text-md m-3\">Fix Operation Levles</div>\n <ng-container *ngFor=\"let item of mongoDataset.fixOperationLevles; let i = index\">\n <div class=\"flex justify-between mb-2\">\n <div class=\"w-1/2 px-1\">\n <dx-text-box [(ngModel)]=\"item.key\" placeholder=\"key Name\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-1\">\n <dx-text-box [(ngModel)]=\"item.value\" placeholder=\"Value\"></dx-text-box>\n </div>\n <div class=\"w-1/6 px-1 mt-1\">\n <button type=\"button\" class=\"{{commonService.btn_danger_sm}}\"\n (click)=\"deleteFixoperation(i)\">Delete</button>\n\n </div>\n </div>\n\n </ng-container>\n <div class=\"pb-2 border-t\">\n <button type=\"button\" class=\"{{commonService.btn_warning_md}} text-center mt-3\"\n (click)=\"addFixOperation()\">Add</button>\n </div>\n </div>\n\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createDataSet()\">\n Submit DataSet\n </button>\n </div>\n\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-dataset-query-bulder',\n templateUrl: './dataset-query-bulder.component.html',\n styleUrls: ['./dataset-query-bulder.component.scss']\n})\nexport class DatasetQueryBulderComponent implements OnInit {\n\n // @Input() queryBulderDataset: any;\n reqFieldsDataSource: any = [];\n isreqFields: boolean = false;\n iscdrParams: boolean = false;\n cdrFieldsDataSource: any = [];\n kpi_function: any = [\"sum\", \"count\", \"avg\", \"max\", \"min\", \"stddev\", \"count_distinct\"]\n kpi_operator: any = [\"eq\", \"gte\", \"lte\", \"ne\", \"in\", \"notIn\", \"contains\", \"startsWith\", \"endsWith\"]\n kpi_enrichment_name: any = [];\n reqShortDataSource: any = [];\n filterMapingDatasource: any = [];\n query_data: any;\n isModelVisible: boolean = false;\n isSqlCopiedText: boolean = false;\n queryBulderDataset: any;\n isReconColume: boolean = false;\n @Output() public getQueryBulbderDataSet: EventEmitter<any> = new EventEmitter();\n\n reconColumeDatasource = [];\n\n selectedDataSource: any;\n isQueryTypeSelect: boolean = false;\n\n @Input('bulderDataset')\n set bulderDataset(value) {\n\n if (value.queryConfig.reqFields && value.queryConfig.reqFields.length < 2) {\n this.reqFieldsDataSource = [\n {\n \"name\": \"pageNumber\",\n \"value\": 1,\n },\n {\n \"name\": \"pageSize\",\n \"value\": 2010,\n },\n {\n \"name\": \"dbConfig\",\n \"value\": \"\",\n },\n {\n \"name\": \"databaseName\",\n \"value\": \"\",\n },\n {\n \"name\": \"tableName\",\n \"value\": \"\",\n },\n {\n \"name\": \"paginationRequired\",\n \"value\": \"false\",\n }\n ]\n } else {\n this.reqFieldsDataSource = this.processParamsformatData(value.queryConfig.reqFields);\n this.selectedDataSource = value.queryConfig.reqFields.find(item => item.dbConfig !== undefined)?.dbConfig;\n this.isQueryTypeSelect = true;\n }\n if (value.queryConfig.mapedFilters == undefined) {\n value.queryConfig.mapedFilters = [];\n value.queryConfig.mapedFilters.push({ \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" })\n }\n\n if (value.queryConfig.sorters == undefined) {\n value.queryConfig.sorters = [];\n value.queryConfig.sorters.push({ \"columnName\": \"\", \"descending\": false })\n }\n if (value.queryConfig.columns == undefined) {\n value.queryConfig.columns = [];\n let obj = {\n \"measures\": true,\n \"dataField\": \"\",\n \"columnName\": \"\",\n \"functionName\": \"\",\n \"enrichFunction\": \"\",\n \"advancedColumn\": \"\",\n \"caption\": \"\",\n }\n value.queryConfig.columns.push(obj);\n }\n if (value.queryConfig.havings == undefined) {\n value.queryConfig.havings = [];\n }\n\n\n this.queryBulderDataset = value;\n }\n\n\n constructor(public commonService: CommonService, private toastr: ToastrService, private service: ApplicationContentService) { }\n\n ngOnInit(): void {\n this.service.listColumnEnrichmentFunctions().subscribe(data => {\n this.kpi_enrichment_name = data;\n })\n\n this.reconColumeDatasource = [\n {\n \"dataField\": \"\",\n \"enrichFunction\": \"\",\n \"columeOne\": \"\",\n \"columeTwo\": \"\",\n \"reconType\": \"\",\n \"caption\": \"\"\n }\n ]\n }\n\n processParamsformatData(data) {\n const formatted_data = data.map(item => {\n const [name, value] = Object.entries(item)[0];\n\n return {\n name,\n value: name === 'paginationRequired' ? value.toString() : value\n };\n });\n\n return formatted_data;\n }\n\n\n\n addColumns() {\n let obj = {\n \"measures\": true,\n \"dataField\": \"\",\n \"columnName\": \"\",\n \"functionName\": \"\",\n \"advancedColumn\": \"\",\n \"enrichFunction\": \"\",\n \"caption\": \"\",\n }\n this.queryBulderDataset.queryConfig.columns.push(obj);\n }\n\n\n deleteColumns(i) {\n this.queryBulderDataset.queryConfig.columns.splice(i, 1)\n }\n\n addReconColume() {\n let obj = {\n \"dataField\": \"\",\n \"columeOne\": \"\",\n \"columeTwo\": \"\",\n \"enrichFunction\": \"\",\n \"reconType\": \"\",\n \"caption\": \"\"\n }\n this.reconColumeDatasource.push(obj);\n }\n\n deleteReconColume(i) {\n this.reconColumeDatasource.splice(i, 1)\n }\n\n saveReconsColume() {\n // { '$divide': [{ '$subtract': ['$cbsCount', '$mscCount'] }, '$cbsCount'] }\n // { '$subtract': ['$cbsMou', '$mscMou'] }\n\n this.reconColumeDatasource.forEach(element => {\n if (element.reconType == \"variance\") {\n let columeString = \"{'$subtract': ['$\" + element.columeOne + \"','$\" + element.columeTwo + \"']}\";\n let node = {\n \"measures\": true,\n \"dataField\": element.dataField,\n \"columnName\": element.dataField,\n \"functionName\": \"\",\n \"advancedColumn\": columeString,\n \"enrichFunction\": element.enrichFunction,\n \"caption\": element.caption,\n 'deriveField': true\n }\n this.queryBulderDataset.queryConfig.columns.push(node)\n console.log(columeString);\n } else if (element.reconType == \"percentage\") {\n let columeString = \"{'$cond': { if: { $eq: [ '$\" + element.columeOne + \"', 0 ] }, then: 0, else: {'$divide':[{'$subtract': ['$\" + element.columeOne + \"','$\" + element.columeTwo + \"']},'$\" + element.columeOne + \"']} }}\";\n let node = {\n \"measures\": true,\n \"dataField\": element.dataField,\n \"columnName\": element.dataField,\n \"functionName\": \"\",\n \"advancedColumn\": columeString,\n \"enrichFunction\": element.enrichFunction,\n \"caption\": element.caption,\n 'deriveField': true\n }\n this.queryBulderDataset.queryConfig.columns.push(node)\n } else if (element.reconType == \"absolute\") {\n let columeString = \"{'$abs': {'$cond': { if: { $eq: [ '$\" + element.columeOne + \"', 0 ] }, then: 0, else: {'$divide': [{'$subtract': ['$\" + element.columeOne + \"', '$\" + element.columeTwo + \"']}, '$\" + element.columeOne + \"']}}}}\";\n let node = {\n \"measures\": true,\n \"dataField\": element.dataField,\n \"columnName\": element.dataField,\n \"functionName\": \"\",\n \"advancedColumn\": columeString,\n \"enrichFunction\": element.enrichFunction,\n \"caption\": element.caption,\n 'deriveField': true\n }\n this.queryBulderDataset.queryConfig.columns.push(node)\n }\n })\n }\n\n\n saveColumnsAndMasures() {\n this.queryBulderDataset.queryConfig.measures = [];\n this.queryBulderDataset.queryConfig.dimensions = [];\n this.queryBulderDataset.queryConfig.columns.forEach(element => {\n // Check if element.advancedColumn is an empty string and set it to null\n const advancedColumnValue = element.advancedColumn === \"\" ? null : element.advancedColumn;\n\n if (element.measures) {\n let obj = {\n columnName: element.columnName,\n functionName: element.functionName,\n enrichFunction: element.enrichFunction,\n advancedColumn: advancedColumnValue,\n aliasName: element.dataField,\n }\n if (element.deriveField) {\n obj['deriveField'] = element.deriveField\n }\n this.queryBulderDataset.queryConfig.measures.push(obj);\n } else {\n let obj = {\n columnName: element.columnName,\n enrichFunction: element.enrichFunction,\n aliasName: element.dataField,\n }\n this.queryBulderDataset.queryConfig.dimensions.push(obj);\n }\n });\n this.toastr.success('Columns Saved Successfully');\n // this.saveDataToStore()\n }\n\n saveDataToStore() {\n const buildDate = localStorage.getItem('querybuilder');\n if (buildDate) {\n localStorage.removeItem(buildDate);\n }\n localStorage.setItem('querybuilder', JSON.stringify(this.queryBulderDataset))\n }\n\n transformColumnsForMesurs(inputColumns) {\n const measure = []\n inputColumns.forEach(col => {\n\n\n });\n\n return measure;\n }\n\n\n addFilter() {\n let obj = {\n \"type\": \"\",\n \"value\": \"\",\n \"key\": \"\",\n \"display\": \"\",\n \"placeholder\": \"\"\n }\n this.queryBulderDataset.queryConfig.filter.push(obj);\n }\n\n deleteFilter(i) {\n this.queryBulderDataset.queryConfig.filter.splice(i, 1);\n }\n addParams() {\n let obj = {\n \"name\": \"\",\n \"value\": \"\",\n }\n this.reqFieldsDataSource.push(obj);\n }\n\n\n deleteParams(i) {\n this.reqFieldsDataSource.splice(i, 1)\n }\n\n addShortColumns() {\n this.queryBulderDataset.queryConfig.sorters.push({ \"columnName\": \"\", \"descending\": false })\n }\n\n\n deleteShortColumns(i) {\n this.queryBulderDataset.queryConfig.sorters.splice(i, 1)\n }\n\n saveParams() {\n let paginationRequiredExists = false;\n this.queryBulderDataset.queryConfig.reqFields = this.reqFieldsDataSource.map(item => {\n const newObj: any = {};\n if (item.name === \"paginationRequired\") {\n paginationRequiredExists = true;\n newObj[item.name] = item.value === \"true\";\n } else if (typeof item.value === \"string\" && !isNaN(item.value as any) && item.value.trim() !== \"\") {\n newObj[item.name] = Number(item.value);\n } else {\n newObj[item.name] = item.value;\n }\n\n return newObj;\n });\n\n if (!paginationRequiredExists) {\n this.queryBulderDataset.queryConfig.reqFields.push({ paginationRequired: \"false\" });\n }\n\n // this.saveDataToStore();\n this.toastr.success('Pagination Request Params Saved Successfully');\n }\n\n\n addFilterMapingColumns() {\n let obj = { \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" }\n this.queryBulderDataset.queryConfig.mapedFilters.push(obj);\n\n }\n\n deleteFilterMapingColumns(i) {\n this.queryBulderDataset.queryConfig.mapedFilters.splice(i, 1)\n }\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.queryBulderDataset.queryConfig.mapedFilters.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.queryBulderDataset.queryConfig.mapedFilters.length) return;\n\n // Move item\n const itemToMove = this.queryBulderDataset.queryConfig.mapedFilters[index];\n this.queryBulderDataset.queryConfig.mapedFilters.splice(index, 1); // Remove item from current position\n this.queryBulderDataset.queryConfig.mapedFilters.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n moveItemForMeasuresColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.queryBulderDataset.queryConfig.columns.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.queryBulderDataset.queryConfig.columns.length) return;\n\n // Move item\n const itemToMove = this.queryBulderDataset.queryConfig.columns[index];\n this.queryBulderDataset.queryConfig.columns.splice(index, 1); // Remove item from current position\n this.queryBulderDataset.queryConfig.columns.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n\n\n\n checkForQuery() {\n let transformedObject: any = {};\n\n for (let item of this.queryBulderDataset.queryConfig.reqFields) {\n const key = Object.keys(item)[0];\n const value = Object.values(item)[0];\n\n if (key === 'startDate') {\n transformedObject.recordDate = value;\n } else {\n transformedObject[key] = value;\n }\n }\n transformedObject['dimensions'] = this.queryBulderDataset.queryConfig.dimensions;\n transformedObject['measures'] = this.queryBulderDataset.queryConfig.measures;\n transformedObject['filters'] = this.transformDataForMFilter(this.queryBulderDataset.queryConfig.mapedFilters);;\n transformedObject['sorters'] = this.queryBulderDataset.queryConfig.sorters;\n transformedObject[\"paginationRequired\"] = true;\n console.log(transformedObject);\n\n this.service.validateAggregatePaginatedQuery(transformedObject).subscribe(data => {\n console.log(data);\n this.query_data = data.query\n this.isModelVisible = true;\n }, err => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.')\n })\n }\n\n closeModalVisibleModal() {\n this.isModelVisible = false;\n this.query_data = '';\n }\n\n transformDataForMFilter(mapfilter) {\n let result = [];\n mapfilter.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n value: mapping.defaultValue\n };\n result.push(resultObj);\n });\n return result;\n }\n\n\n copySqlFromModal() {\n const listener = (e: ClipboardEvent) => {\n e.clipboardData!.setData('text/plain', this.query_data);\n e.preventDefault();\n };\n this.isSqlCopiedText = true;\n document.addEventListener('copy', listener);\n document.execCommand('copy');\n document.removeEventListener('copy', listener);\n }\n\n createDataSet() {\n this.getQueryBulbderDataSet.emit(this.queryBulderDataset)\n }\n\n getQueryForDetailsData(e) {\n if (e.value == 'Basic') {\n this.queryBulderDataset.api = '/kpi/genericDetailDataResponse'\n this.queryBulderDataset.queryConfig.columns = [];\n } else {\n this.queryBulderDataset.api = '/kpi/genericAggregatePaginatedKpiServiceResponse';\n }\n }\n\n\n getDataConfig(e) {\n\n if (e.event) {\n this.selectedDataSource = e.value;\n this.isQueryTypeSelect = true;\n }\n\n }\n\n\n addHavingsColume() {\n let obj = {\n \"columnName\": \"\",\n \"advancedColumn\": \"\",\n \"dataType\": \"\",\n \"operator\": \"\",\n \"value\": \"\"\n }\n this.queryBulderDataset.queryConfig.havings.push(obj);\n }\n\n deleteHavingsColume(i) {\n this.queryBulderDataset.queryConfig.havings.splice(i, 1);\n }\n\n\n}\n","<div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">End Point</div>\n <dx-text-box [(ngModel)]=\"queryBulderDataset.api\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Query Type</div>\n <dx-select-box [dataSource]=\"['Aggregate','Basic']\" (onValueChanged)=\"getQueryForDetailsData($event)\">\n </dx-select-box>\n </div>\n <div class=\"mx-2 w-1/3 mt-6\" *ngIf=\"selectedDataSource == 'mongo'\">\n <dx-check-box [(ngModel)]=\"isReconColume\" text='Recon Column'>\n </dx-check-box>\n </div>\n </div>\n\n <div class=\"flex flex-col flex-auto min-w-0 my-3\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Request Params\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"grid grid-cols-2 gap-4 w-full p-2\">\n <div class=\"my-2 flex flex-row px-2 border-r\" *ngFor=\"let item of reqFieldsDataSource; let i = index;\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-2\"> Params Name</div>\n <dx-text-box [(ngModel)]=\"item.name\"></dx-text-box>\n\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-2\"> Params Value </div>\n <ng-container *ngIf=\"item.name == 'dbConfig'\">\n <dx-select-box [items]=\"['mongo','impala','postgres','mysql','bigquery']\"\n (onValueChanged)=\"getDataConfig($event)\" [(ngModel)]=\"item.value\"></dx-select-box>\n </ng-container>\n <ng-container *ngIf=\"item.name !== 'dbConfig'\">\n <dx-text-box [(ngModel)]=\"item.value\"></dx-text-box>\n </ng-container>\n\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-center mt-8\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\" (click)=\"deleteParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row my-2 justify-end\">\n <p class=\"text-sm italic text-gray-300 mr-6\">** Please Save Request Params Before Submit\n Dataset\n </p>\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\" (click)=\"saveParams()\">Save\n Params</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addParams()\">Add\n Params</button>\n\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"isQueryTypeSelect\">\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Columns and Measures\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\"\n *ngFor=\"let item of queryBulderDataset.queryConfig.columns; let i = index;\">\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Measures</div>\n <dx-check-box [value]=\"item.measures\" [(ngModel)]=\"item.measures\"></dx-check-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Value Field(aliasName)</div>\n <dx-text-box [(ngModel)]=\"item.dataField\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Server Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Function Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_function\"\n [(ngModel)]=\"item.functionName\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Enrich Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\"\n [(ngModel)]=\"item.enrichFunction\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Advanced Column</div>\n <dx-text-box [(ngModel)]=\"item.advancedColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForMeasuresColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== queryBulderDataset.queryConfig.columns.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForMeasuresColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\" (click)=\"deleteColumns(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-end my-2\">\n <p class=\"text-sm italic text-gray-300 mr-6\">** Please Save Columns And Measures Before Submit\n Dataset\n </p>\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\"\n (click)=\"saveColumnsAndMasures()\">Save\n Columns</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n\n\n <ng-container *ngIf=\"isReconColume\">\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Add Recon Column\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\" *ngFor=\"let item of reconColumeDatasource; let i = index;\">\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Value Field(aliasName)</div>\n <dx-text-box [(ngModel)]=\"item.dataField\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> First Key</div>\n <dx-text-box [(ngModel)]=\"item.columeOne\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Second Key</div>\n <dx-text-box [(ngModel)]=\"item.columeTwo\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Enrich Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\"\n [(ngModel)]=\"item.enrichFunction\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Recon Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['variance','percentage','absolute']\"\n [(ngModel)]=\"item.reconType\"></dx-select-box>\n </div>\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mt-8 text-center\">\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteReconColume(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\"\n (click)=\"saveReconsColume()\">Save To\n Columns</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addReconColume()\">Add\n </button>\n </div>\n </div>\n </div>\n\n </ng-container>\n\n <ng-container>\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Add Having Column\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\"\n *ngFor=\"let item of queryBulderDataset.queryConfig.havings; let i = index;\">\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Advanced Column</div>\n <dx-text-box [(ngModel)]=\"item.advancedColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-text-box [(ngModel)]=\"item.dataType\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Operator</div>\n <dx-select-box [items]=\"['get','lte']\" [(ngModel)]=\"item.operator\"></dx-select-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value</div>\n <dx-text-box [(ngModel)]=\"item.value\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteHavingsColume(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addHavingsColume()\">Add\n Havings\n </button>\n </div>\n </div>\n </div>\n\n </ng-container>\n\n <div class=\"flex flex-col flex-auto min-w-0 my-3\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Sort By\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"grid grid-cols-2 gap-4 w-full p-2\">\n <div class=\"my-2 flex flex-row px-2 border-r\"\n *ngFor=\"let item of queryBulderDataset.queryConfig.sorters; let i = index;\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-2\"> Params Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n\n </div>\n <div class=\"px-2 mt-8\">\n\n <dx-check-box text=\"Descending\" [(ngModel)]=\"item.descending\"></dx-check-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-center mt-8\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteShortColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row my-2 justify-end\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addShortColumns()\">Add\n Column</button>\n\n </div>\n </div>\n </div>\n\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Maping\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex flex-row justify-between\"\n *ngFor=\"let item of queryBulderDataset.queryConfig.mapedFilters; let i = index;\">\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Local Column</div>\n <dx-text-box [(ngModel)]=\"item.localColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Server Column</div>\n <dx-text-box [(ngModel)]=\"item.serverColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Operator</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_operator\"\n [(ngModel)]=\"item.operatorName\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Datatype</div>\n <dx-select-box [searchEnabled]=\"true\"\n [items]=\"['date','string','timestamp','int', 'double', 'boolean']\"\n [(ngModel)]=\"item.dataType\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultValue\"></dx-text-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== queryBulderDataset.queryConfig.mapedFilters.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilterMapingColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row\">\n <div class=\"w-1/2\" *ngIf=\"selectedDataSource !== 'mongo'\">\n <div class=\"flex flex-row justify-start my-2\">\n <button class=\"{{commonService.btnOthersPurple}} cursor-pointer\" (click)=\"checkForQuery()\">Check\n Query</button>\n </div>\n </div>\n <div class=\"w-full\">\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addFilterMapingColumns()\">Add\n Maping</button>\n </div>\n </div>\n </div>\n\n </div>\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createDataSet()\">\n Submit DataSet\n </button>\n </div>\n </ng-container>\n\n\n</div>\n\n\n<ng-container *ngIf=\"isModelVisible\">\n <div class=\"fixed inset-0 flex items-center justify-center z-50 bg-black bg-opacity-50\">\n <div class=\"relative p-4 w-full max-w-3xl max-h-full\">\n <div class=\"relative bg-white rounded-lg shadow \">\n <div class=\"flex items-center justify-between p-4 md:p-5 border-b rounded-t \">\n <h3 class=\"text-xl font-semibold text-gray-900 \">\n Query </h3>\n <button type=\"button\" (click)=\"closeModalVisibleModal()\"\n class=\"text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center \"\n data-modal-hide=\"static-modal\">\n <svg class=\"w-3 h-3\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 14 14\">\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\" />\n </svg>\n <span class=\"sr-only\">Close</span>\n </button>\n </div>\n <!-- Modal body -->\n <div class=\"w-69 p-5\">\n <div class=\"flex flex-row bg-gray-800 text-white text-lg p-4 rounded-md text-wrap\">\n <code>\n {{query_data}}\n </code>\n </div>\n </div>\n <div class=\"flex items-center border-t border-gray-200 rounded-b p-2 justify-end\">\n <span class=\"text-gray-700 px-2\" *ngIf=\"isSqlCopiedText\">Copied</span>\n <button data-modal-hide=\"static-modal\" type=\"button\" class=\"{{commonService.btn_success_sm}} py-2\"\n (click)=\"copySqlFromModal()\">Copy</button>\n </div>\n </div>\n </div>\n </div>\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-dataset-rest-api',\n templateUrl: './dataset-rest-api.component.html',\n styleUrls: ['./dataset-rest-api.component.scss']\n})\nexport class DatasetRestApiComponent implements OnInit {\n kpi_function: any = [\"sum\", \"count\", \"avg\", \"max\", \"min\", \"stddev\", \"count_distinct\"]\n kpi_operator: any = [\"eq\", \"gte\", \"lte\", \"ne\", \"in\", \"notIn\", \"contains\", \"startsWith\", \"endsWith\"]\n @Output() public getRestApiBulbderDataSet: EventEmitter<any> = new EventEmitter();\n apiBulderDataset: any;\n\n\n @Input('restApiDataset')\n set restApiDataset(value) {\n\n if (value.queryConfig.mapedFilters == undefined) {\n value.queryConfig.mapedFilters = [];\n value.queryConfig.mapedFilters.push({ \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" })\n }\n\n this.apiBulderDataset = value;\n }\n\n constructor(\n private toastr: ToastrService,\n public commonService: CommonService\n ) { }\n\n ngOnInit(): void {\n }\n\n addFilterMapingColumns() {\n let obj = { \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" }\n this.apiBulderDataset.queryConfig.mapedFilters.push(obj);\n\n }\n\n deleteFilterMapingColumns(i) {\n this.apiBulderDataset.queryConfig.mapedFilters.splice(i, 1)\n\n }\n\n saveColumnMaping() {\n this.toastr.success('Maped Filter Successfully');\n\n }\n\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n\n // Move item\n const itemToMove = this.apiBulderDataset.queryConfig.mapedFilters[index];\n this.apiBulderDataset.queryConfig.mapedFilters.splice(index, 1); // Remove item from current position\n this.apiBulderDataset.queryConfig.mapedFilters.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n createDataSet() {\n this.getRestApiBulbderDataSet.emit(this.apiBulderDataset)\n }\n\n\n}\n","<div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">End Point</div>\n <dx-text-box [(ngModel)]=\"apiBulderDataset.api\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Api Type</div>\n <dx-select-box [dataSource]=\"['get','post']\" [(ngModel)]=\"apiBulderDataset.apiType\">\n </dx-select-box>\n </div>\n </div>\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Maping\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\"\n *ngFor=\"let item of apiBulderDataset.queryConfig.mapedFilters; let i = index;\">\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Local Column</div>\n <dx-text-box [(ngModel)]=\"item.localColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Server Column</div>\n <dx-text-box [(ngModel)]=\"item.serverColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Operator</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_operator\"\n [(ngModel)]=\"item.operatorName\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Datatype</div>\n <dx-select-box [searchEnabled]=\"true\"\n [items]=\"['date','string','timestamp','int', 'double', 'boolean']\"\n [(ngModel)]=\"item.dataType\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultValue\"></dx-text-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== apiBulderDataset.queryConfig.mapedFilters.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilterMapingColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row\">\n <div class=\"w-1/2\">\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\" (click)=\"saveColumnMaping()\">Save\n Maping</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addFilterMapingColumns()\">Add\n Maping</button>\n </div>\n </div>\n </div>\n\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createDataSet()\">\n Submit DataSet\n </button>\n </div>\n\n </div>\n</div>","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from \"@angular/core\";\nimport { CommonService } from \"../../../common\";\ndeclare var google: any;\n\n@Component({\n selector: 'app-google-geo-map',\n templateUrl: './google-geo-map.component.html',\n styleUrls: ['./google-geo-map.component.scss']\n})\nexport class GoogleGeoMapComponent {\n @ViewChild(\"inRommerGeoChart\") inRoamerGeoChart: ElementRef;\n charData: any;\n chartHeight: any;\n bacgroundColor: any;\n mapColors: any;\n chartType: any;\n tootTipColumn: any;\n @Output() public getTableConfigOutPut: EventEmitter<any> = new EventEmitter();\n @Output() public oRowClick: EventEmitter<any> = new EventEmitter();\n @Output() public onrightClickContextSelection: EventEmitter<any> = new EventEmitter();\n @Input() rightClickEnable: boolean = true;\n isLoader: boolean;\n page_config: any;\n page_parms: any;\n @Input(\"chartDataSource\")\n set chartDataSource(value) {\n console.log(value, 'chartDataSource for geo chart');\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.isLoader = true;\n this.page_config = value;\n this.page_parms = value.titleParams;\n // this.inRoamerGeoChart.nativeElement.innerHTML = '';\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n if (value.kpiConfig.formate == \"monthly\") {\n this.tootTipColumn = value.kpiConfig.dataConfig.chart_config;\n let data = value.kpiConfig.dataSource;\n this.chartHeight = `${value.kpiConfig.dataConfig.size}px`;\n this.chartType = value.kpiConfig.dataConfig.chartType;\n this.bacgroundColor =\n value.kpiConfig.dataConfig.backgroundColor;\n this.mapColors = value.kpiConfig.dataConfig.colors;\n // let config = value.chartConfig;\n const formattedData = [\n [\n value.kpiConfig.dataConfig[\"argumentField\"],\n value.kpiConfig.dataConfig[\"chartValueField\"],\n { type: 'string', role: 'tooltip', 'p': { 'html': true } }\n ],\n ].concat(\n data.map((item) => {\n const tooltip = this.getTooltip(item);\n return [\n item[value.kpiConfig.dataConfig[\"argumentField\"]],\n item[value.kpiConfig.dataConfig[\"chartValueField\"]],\n tooltip\n ];\n })\n );\n // console.log(formattedData);\n this.charData = formattedData;\n // this.loadGoogleCharts();\n setTimeout(() => {\n this.isLoader = false;\n this.loadGoogleCharts();\n }, 200);\n\n }\n\n }\n\n\n }\n\n }\n\n constructor(public commonService: CommonService) { }\n\n ngOnInit(): void { }\n\n ngAfterViewInit(): void {\n // this.loadGoogleCharts();\n }\n\n loadGoogleCharts() {\n google.charts.load(\"current\", {\n packages: [this.chartType],\n });\n google.charts.setOnLoadCallback(this.drawChart.bind(this));\n }\n\n drawChart() {\n const data = google.visualization.arrayToDataTable(this.charData);\n\n const options = {\n backgroundColor: this.bacgroundColor,\n tooltip: { isHtml: true },\n colorAxis: { colors: this.mapColors }\n };\n\n const chart = new google.visualization.GeoChart(\n this.inRoamerGeoChart.nativeElement\n );\n this.inRoamerGeoChart.nativeElement.style.height = '250px';\n chart.draw(data, options);\n }\n\n getTooltip(data) {\n // debugger\n let toolTipData = \"\";\n this.tootTipColumn.forEach((element) => {\n if (typeof data[element.dataField] === 'number') {\n toolTipData +=\n \"<div class='inline'><b>\" +\n element.caption +\n \":</b></div> \" +\n this.commonService.roundOffTillTwo(data[element.dataField], 2) +\n \"<br />\";\n } else {\n toolTipData +=\n \"<div class='inline'><b>\" +\n element.caption +\n \":</b></div> \" +\n data[element.dataField] +\n \"<br />\";\n }\n\n\n });\n // console.log(toolTipData);\n return toolTipData;\n }\n}\n","\n<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n\n <ng-container>\n <div id=\"regions_div\" #inRommerGeoChart style=\"width: 100%\" ></div> \n </ng-container>\n \n \n\n </div>\n\n\n</div>\n","\nimport { ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { CommonService } from '../../common';\n\n\n@Component({\n selector: 'app-geo-map',\n templateUrl: './geo-map.component.html',\n styleUrls: ['./geo-map.component.scss']\n})\nexport class GeoMapComponent {\n chartDataSourceForMap: any;\n colors: string[] = []; // Array to hold selected colors\n isJsonPreview: boolean\n dataSourseForTable: any = [];\n jsaonDatasource: any;\n configColume: any;\n allConfiguredViews: any = [];\n // groupOfViews: any;\n viewProperties: any = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n optionalDrilDownDataSource: any = [];\n table_columns_config = {\n \"kpiConfig\": {\n \"serviceId\": \"\",\n \"api\": \"/kpi/trends/network/get-metric-data\",\n \"displayType\": \"googleChart\",\n \"formate\": \"\",\n \"keyToPass\": [],\n \"componentName\": \"GammaGeoChartComponent\",\n \"dataConfig\": {}\n },\n };\n\n tableDataConfig = {\n\n \"chart_config\": [\n\n ],\n\n \"title\": \"\",\n \"argumentField\": \"\",\n \"chartValueField\": \"\",\n \"size\": \"450\",\n \"chartType\": \"geochart\",\n \"backgroundColor\": \"#1e293b\",\n \"colors\": ['#e7f0fd', '#003566', '#fd0000']\n\n }\n\n enrichNameList = [\"abbreviateNumber\", \"getColorCodeSpan\", \"ThousandSeparator\"]\n selectedTableViewType: any;\n isLoader: boolean = true;\n\n selectedViewConfigs: any;\n\n\n constructor(public commonService: CommonService, private cdr: ChangeDetectorRef, private service: ApplicationContentService, private taostr: ToastrService) { }\n\n activeTab: string = 'basic';\n @Output() public createOtherComponentView: EventEmitter<any> = new EventEmitter();\n selectedViews = [];\n\n @Input('datasetmodal')\n set chartconfigData(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.jsaonDatasource = value.data[0];\n this.configColume = Object.keys(value.data[0]);\n this.dataSourseForTable = value.data;\n this.selectedViewConfigs = value;\n this.selectedTableViewType = value.selectedViewType;\n if (value.selectedWidgetConfig) {\n // debugger\n this.table_columns_config['kpiConfig'] = value.selectedWidgetConfig;\n this.tableDataConfig = value.selectedWidgetConfig.dataConfig;\n this.tableDataConfig.chart_config = value.selectedWidgetConfig.dataConfig.chart_config;\n if (value.selectedWidgetConfig.viewProperties && value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews) {\n this.viewProperties = value.selectedWidgetConfig.viewProperties;\n this.viewProperties = {\n \"enableClickEvent\": value.selectedWidgetConfig.viewProperties.enableClickEvent,\n \"enableRightClickEvent\": value.selectedWidgetConfig.viewProperties.enableRightClickEvent\n }\n\n if (value.selectedWidgetConfig.viewProperties.enableClickEvent) {\n this.viewProperties['clickEventOptions'] = {\n \"eventType\": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,\n \"associatedViews\": value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews\n }\n } else {\n this.viewProperties['clickEventOptions'] = {}\n }\n\n }\n\n this.cdr.detectChanges();\n } else {\n this.tableDataConfig.chart_config = value.columnData;\n if (this.tableDataConfig.chart_config) {\n this.tableDataConfig.chart_config.forEach(element => {\n // element['color'] = '';\n // element['isShowBar'] = true;\n });\n\n } else {\n this.tableDataConfig.chart_config = [];\n this.configColume.forEach(element => {\n let obj = {\n // \"visible\": true,\n // \"isShowBar\": true,\n \"dataField\": element,\n \"caption\": this.commonService.convertString(element),\n // \"enrichName\": \"\",\n // \"color\": \"\",\n }\n\n this.tableDataConfig.chart_config.push(obj);\n\n });\n console.log(this.configColume);\n }\n\n this.cdr.detectChanges();\n }\n }\n }\n\n\n ngOnInit(): void {\n this.isLoader = true;\n this.service.getAppViewConfigs().subscribe({\n next: (data: any) => {\n this.allConfiguredViews = data;\n\n this.isLoader = false;\n }, error: (err: any) => {\n this.taostr.error('Unexpected Server Exception. Please contact System Admin.', 'All Views')\n }\n })\n\n this.optionalDrilDownDataSource = [\n {\n 'viewId': \"\",\n 'filterCondition': \"\"\n }\n ]\n }\n addColumns() {\n let obj = {\n // \"visible\": true,\n // \"isShowBar\": true,\n \"dataField\": \"\",\n \"caption\": \"\",\n // \"enrichName\": \"\",\n // \"color\": \"\",\n }\n\n this.tableDataConfig.chart_config.push(obj);\n }\n\n deleteColumns(i) {\n this.tableDataConfig.chart_config.splice(i, 1)\n }\n\n getEnrichClassName(e, item) {\n item.enrichName = e.value;\n\n }\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.tableDataConfig.chart_config.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.tableDataConfig.chart_config.length) return;\n\n // Move item\n const itemToMove = this.tableDataConfig.chart_config[index];\n this.tableDataConfig.chart_config.splice(index, 1); // Remove item from current position\n this.tableDataConfig.chart_config.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n getObjectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n\n getGroupColumns(columns) {\n const groupedColumns = columns.reduce((acc, column) => {\n let group = acc.find(item => item.caption === column.group);\n if (!group) {\n group = {\n caption: column.group,\n columns: []\n };\n acc.push(group);\n }\n group.columns.push({\n dataField: column.dataField,\n // visible: column.visible,\n caption: column.caption\n });\n return acc;\n }, []);\n return groupedColumns;\n }\n geColumnsFromGroup(columns) {\n const newColumns = [];\n\n columns.forEach(group => {\n group.columns.forEach(col => {\n newColumns.push({\n dataField: col.dataField,\n // visible: col.visible,\n caption: col.caption,\n });\n });\n });\n return newColumns;\n }\n\n\n getSaveChartConfig() {\n\n this.table_columns_config.kpiConfig['dataConfig'] = this.tableDataConfig;\n if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;\n }\n\n this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;\n // alert(JSON.stringify(this.table_columns_config, null, 2));\n // console.log(this.table_columns_config);\n console.log(this.table_columns_config);\n\n // this.createOtherComponentView.emit(this.table_columns_config);\n // this.table_columns_config.kpiConfig['dataSource']= this.dataSourseForTable;\n // this.chartDataSourceForMap = this.table_columns_config;\n\n }\n\n deleteAssociatedParams(index) {\n this.optionalDrilDownDataSource.splice(index, 1)\n }\n\n addAssociatedParams() {\n this.optionalDrilDownDataSource.push({\n 'viewId': \"\",\n 'filterCondition': \"\"\n })\n }\n\n getSelectedEventType(e) {\n\n if (e.event) {\n this.optionalDrilDownDataSource = [];\n if (this.viewProperties.clickEventOptions.eventType == 'drilldown') {\n this.table_columns_config.kpiConfig['viewProperties']['associatedViews'] = [];\n }\n }\n\n\n }\n\n resetViewProprstise() {\n this.viewProperties = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n }\n\n addColor() {\n this.tableDataConfig.colors.push('#000000'); // Add default color\n }\n\n removeColor(index: number) {\n this.tableDataConfig.colors.splice(index, 1);\n }\n\n onColorChange(value: string, index: number) {\n this.tableDataConfig.colors[index] = value; // Update color at index\n }\n\n viewMapForTest() {\n this.table_columns_config.kpiConfig['dataConfig'] = this.tableDataConfig;\n if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;\n }\n\n this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;\n\n this.table_columns_config.kpiConfig['dataSource'] = this.dataSourseForTable;\n this.chartDataSourceForMap = this.table_columns_config;\n\n this.isJsonPreview = true;\n\n }\n}\n","<div class=\"flex flex-wrap\">\n <div class=\"w-full mx-2 border-r\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\">\n <!-- <app-gamma-geo-chart [chartDataSource]=\"chartDataSourceForMap\"></app-gamma-geo-chart> -->\n <app-google-geo-map [chartDataSource]=\"chartDataSourceForMap\"></app-google-geo-map>\n\n <div #dynamicContainer></div>\n\n </ng-container>\n </div>\n <div class=\"w-full mx-2\">\n\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{ \n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic' \n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{ \n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'chart_config',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'chart_config' \n }\" (click)=\"setActiveTab('chart_config')\" type=\"button\" role=\"tab\">\n Chart Columns\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'properties',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'properties'\n }\" (click)=\"setActiveTab('properties')\" type=\"button\" role=\"tab\">\n Properties\n </button>\n </li>\n\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\">\n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Title\n Config\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\">\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Title</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.title\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Argument Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.argumentField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Chartvalu Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.chartValueField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> size</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.size\"></dx-text-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Background Color</div>\n <dx-color-box [(ngModel)]=\"tableDataConfig.backgroundColor\"></dx-color-box>\n </div>\n <!-- <div class=\"px-4 mt-6 w-full\">\n <dx-check-box [value]=\"tableDataConfig.commonConfig.isSearchBox\"\n [(ngModel)]=\"tableDataConfig.commonConfig.isSearchBox\"\n text=\"Search Box\"></dx-check-box>\n\n </div> -->\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"table_columns_config.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Key To Pass </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"table_columns_config.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n </div>\n </div>\n <div class=\" pt-2 border-x border-b \">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Colors\n </div>\n <div class=\"flex flex-wrap px-1 mb-2 mt-2\">\n <div class=\"flex mr-2 mb-2\" *ngFor=\"let color of tableDataConfig.colors; let i = index\">\n <div class=\"mr-2\">\n <dx-color-box [(ngModel)]=\"tableDataConfig.colors[i]\"\n (onValueChanged)=\"onColorChange($event.value, i)\"></dx-color-box>\n </div>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer px-2\"\n (click)=\"removeColor(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n <!-- <div class=\"px-2\"> <button class=\"{{commonService.btn_danger_sm}}\" (click)=\"removeColor(i)\">Remove</button></div> -->\n </div>\n \n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_success_sm}}\" (click)=\"addColor()\">Add Color</button>\n </div>\n </div>\n </div>\n <!-- <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Table Config\n </div>\n <div class=\"flex flse-row py-3 border-x border-b \">\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <dx-check-box [value]=\"tableDataConfig.searchPanel\"\n [(ngModel)]=\"tableDataConfig.searchPanel\" text=\"Search Panel\"></dx-check-box>\n </div>\n <div class=\" px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">File Name</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.file_name\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Number Of Row</div>\n <dx-number-box [value]=\"tableDataConfig.numberOfRow\"\n [(ngModel)]=\"tableDataConfig.numberOfRow\"></dx-number-box>\n </div>\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <dx-check-box [value]=\"tableDataConfig.pageInfo\" [(ngModel)]=\"tableDataConfig.pageInfo\"\n text=\"Page Info\"></dx-check-box>\n </div>\n\n </div>\n\n </div> -->\n\n\n </div>\n <div *ngIf=\"activeTab === 'chart_config'\">\n <div class=\"h-full overflow-x-auto\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> \n Tooltip Columns\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 border-b flex flex-row\"\n *ngFor=\"let item of tableDataConfig.chart_config; let i = index;\">\n <!-- <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [value]=\"item.visible\" [(ngModel)]=\"item.visible\"\n text=\"Visiblity\"></dx-check-box>\n </div> -->\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <!-- <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> UI Function</div>\n <dx-select-box [items]=\"enrichNameList\" [(ngModel)]=\"item.enrichName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [value]=\"item.isShowBar\" [(ngModel)]=\"item.isShowBar\"\n text=\"Allow Bar\"></dx-check-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Color</div>\n <dx-color-box [(ngModel)]=\"item.color\"></dx-color-box>\n </div> -->\n <div class=\"text-center mt-8 w-full\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== tableDataConfig.chart_config.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'properties'\">\n <div class=\"h-full overflow-x-auto\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-row justify-between border-b py-3\">\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableClickEvent\"\n [(ngModel)]=\"viewProperties.enableClickEvent\"\n text=\"Enable Click Event\"></dx-check-box>\n </div>\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableRightClickEvent\"\n [(ngModel)]=\"viewProperties.enableRightClickEvent\"\n text=\"Enable Right Click\"></dx-check-box>\n </div>\n </div>\n <div class=\"w-full p-2\" *ngIf=\"viewProperties.enableClickEvent\">\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Event\n Type\n Option\n </div>\n <div class=\"w-full p-3 border-x border-b \">\n <div class=\"flex flex-row\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Event Type</div>\n </div>\n <div class=\"w-full\">\n <dx-select-box [items]=\"['drilldown','optionalDrillDown']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'drilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType == 'optionalDrillDown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <ng-container\n *ngFor=\"let item of optionalDrilDownDataSource;let i = index;\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"item.viewId\" valueExpr=\"viewId\"\n displayExpr=\"viewName\" [showSelectionControls]=\"true\"\n [maxDisplayedTags]=\"2\"\n [searchEnabled]=\"true\"></dx-tag-box>\n\n </div>\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"item.filterCondition\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <button\n class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteAssociatedParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end mt-4\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addAssociatedParams()\">Add\n Params</button>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </ng-container>\n <button class=\"{{commonService.btn_light_md}} cursor-pointer mt-2\"\n (click)=\"resetViewProprstise()\">Reset All</button>\n </div>\n </div>\n\n </div>\n\n\n </div>\n</div>\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"viewMapForTest()\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit</button>\n </div>\n</div>","\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonService } from '../../common';\nimport moment from './../../moment-helper';\n@Component({\n selector: 'app-dash-chart',\n templateUrl: './dash-chart.component.html',\n styleUrls: ['./dash-chart.component.scss']\n})\nexport class DashChartComponent implements OnInit {\n kpi_config;\n kpi_columns;\n chartConfig: any;\n widGetConfig: any;\n selectedChartType: any;\n chartAccess: any;\n componentName: any;\n isJsonPreview: boolean;\n dataSourseForChart: any = [];\n chartAxisSource = [\n {\n name: \"Single Axis\",\n value: \"single\"\n },\n {\n name: \"Multi Axis\",\n value: \"multy\"\n }\n ]\n\n mainChartCourceObject = {\n \"kpiConfig\": {\n \"serviceId\": \"\",\n \"api\": \"\",\n \"displayType\": \"chart\",\n \"formate\": \"\",\n \"componentName\": \"GammaAdvanceChartComponent\",\n \"dataConfig\": {\n \"title\": \"\",\n \"argumentField\": \"\",\n \"verticalAlignment\": \"bottom\",\n \"horizontalAlignment\": \"center\",\n \"size\": \"250\",\n \"chartType\": \"single\",\n \"chartAxis\": \"\",\n \"legendDisplay\": true,\n \"caption\": \"\",\n \"chart_config\": [\n\n ]\n }\n },\n };\n\n widget_width = ['w-full', 'w-1/2', 'w-1/3', 'w-1/4', 'w-1/5', 'w-1/6', 'w-2/3', 'w-3/4', 'w-4/5', 'w-5/6']\n\n\n\n componentNamesForMultyAccess = [\n { \"compName\": \"GammaAdvanceChartComponent\", \"item\": \"Line, Bar & Combile Bar-Line Chart\" },\n { \"compName\": \"GammaAdvanceChartComponent\", \"item\": \"Line, Bar & Combine Bar-Line Chart Chart With Simple Query\" },\n ]\n componentNamesForSingleAccess = [\n { \"compName\": \"GammaAdvanceChartComponent\", \"item\": \"spline\" },\n { \"compName\": \"GammaAdvanceChartComponent\", \"item\": \"bar\" },\n { \"compName\": \"GammaAdvanceChartComponent\", \"item\": \"area\" },\n ]\n\n chartTypeSource = [\"spline\", \"bar\", \"area\", \"stackedBar\", \"doughnut\", \"funnel\", \"bubble\"]\n doughnut_color_palette = ['Material', 'Soft Pastel', 'Harmony Light', 'Pastel', 'Bright', 'Soft', 'Ocean', 'Office', 'Vintage', 'Violet', 'Carmine', 'Dark Moon', 'Soft Blue', 'Dark Violet', 'Green Mist']\n\n configColume: any;\n jsaonDatasource: any;\n chartType: any;\n activeTab: string = 'basic';\n isEditWidget: boolean;\n\n heatChartDataSource: any;\n bubbleChartData: any;\n\n @Output() public getChartConfigOutPut: EventEmitter<any> = new EventEmitter();\n @Input('datasetmodal')\n set chartconfigData(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.isJsonPreview = false;\n this.jsaonDatasource = value.data[0];\n this.configColume = (value.data[0]) ? Object.keys(value.data[0]) : [];\n this.dataSourseForChart = value.data.slice(0, 10);\n this.bubbleChartData = value.data;\n if (value.selectedWidgetConfig) {\n this.mainChartCourceObject['kpiConfig'] = value.selectedWidgetConfig;\n this.chartConfig = value.selectedWidgetConfig.dataConfig;\n\n if (value.selectedWidgetConfig.dataConfig['chartType'] && value.selectedWidgetConfig.dataConfig['chartType'] == 'bubble') {\n this.getHeatmapData()\n }\n\n if (value.selectedWidgetConfig.dataConfig['chartAccess']) {\n this.chartAccess = value.selectedWidgetConfig.dataConfig['chartAccess'];\n this.componentName = value.selectedWidgetConfig.componentName;\n } else {\n let chartTypes = value.selectedWidgetConfig.dataConfig.chart_config.map(config => config.type);\n if (chartTypes.every(type => type === chartTypes[0])) {\n this.chartAccess = \"single\";\n } else {\n this.chartAccess = \"multy\";\n this.componentName = value.selectedWidgetConfig.componentName;\n }\n }\n if (value.selectedWidgetConfig.dataConfig['chartType']) {\n this.chartType = value.selectedWidgetConfig.dataConfig['chartType'];\n } else {\n let chartTypes = value.selectedWidgetConfig.dataConfig.chart_config.map(config => config.type);\n this.chartType = chartTypes[0];\n }\n\n this.isEditWidget = true;\n this.isJsonPreview = true;\n } else {\n this.isEditWidget = false;\n this.chartConfig = this.mainChartCourceObject.kpiConfig['dataConfig'];\n\n }\n }\n }\n\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n\n\n\n constructor(public commonService: CommonService) {\n }\n\n ngOnInit(): void {\n }\n getChartAccessType(e) {\n if (e.event) {\n this.chartConfig.chart_config = [];\n this.chartConfig = {\n \"argumentField\": \"\",\n \"verticalAlignment\": \"bottom\",\n \"size\": \"250\",\n \"horizontalAlignment\": \"center\",\n \"caption\": \"\",\n \"chart_config\": [\n {\n \"type\": (this.chartAccess == 'multy') ? \"\" : this.chartType,\n \"valueField\": \"\",\n \"name\": \"\",\n \"axis\": \"\",\n \"position\": (this.chartAccess == 'multy') ? \"\" : \"left\"\n }\n ]\n }\n this.mainChartCourceObject['widget'] = \"\";\n this.mainChartCourceObject['kpiConfig'].formate = \"\";\n this.isJsonPreview = true;\n }\n\n }\n\n getChartType(e) {\n this.chartType = e.value;\n if (e.value == 'doughnut') {\n this.chartConfig['palette'] = \"\";\n }\n if (e.value == 'bubble') {\n this.getHeatmapData();\n }\n\n this.chartConfig.chart_config.forEach(element => {\n element.type = this.chartType;\n });\n\n\n }\n\n addColumns() {\n let obj = {\n \"type\": (this.chartAccess == 'multy') ? \"\" : this.chartType,\n \"valueField\": \"\",\n \"name\": \"\",\n \"axis\": \"\",\n \"color\": (this.chartAccess == 'multy') ? \"\" : undefined,\n \"position\": (this.chartAccess == 'multy') ? \"\" : \"left\"\n }\n this.chartConfig.chart_config.push(obj);\n }\n\n deleteColumns(i) {\n this.chartConfig.chart_config.splice(i, 1)\n }\n\n moveItem(index: number, direction: 'up' | 'down'): void {\n if (index < 0 || index >= this.chartConfig.chart_config.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n if (newPosition < 0 || newPosition >= this.chartConfig.chart_config.length) return;\n\n const itemToMove = this.chartConfig.chart_config[index];\n this.chartConfig.chart_config.splice(index, 1);\n this.chartConfig.chart_config.splice(newPosition, 0, itemToMove);\n }\n\n getSaveChartConfig() {\n this.chartConfig['chartType'] = this.chartType;\n this.chartConfig['chartAxis'] = this.chartAccess;\n this.mainChartCourceObject.kpiConfig['dataConfig'] = this.chartConfig;\n this.getChartConfigOutPut.emit(this.mainChartCourceObject);\n }\n\n\n customizeTooltip(arg) {\n return { text: `${arg.argumentText}<br>${arg.seriesName}: ${arg.valueText}B` };\n }\n\n calculateTotal(pieChart) {\n const totalValue = pieChart.getAllSeries()[0].getVisiblePoints().reduce((s, p) => s + p.originalValue, 0);\n return this.commonService.reformatNumber(totalValue);\n }\n\n pointClickHandler(arg) {\n arg.target.select();\n }\n\n // bubble chart\n\n\n getHeatmapData() {\n this.heatChartDataSource = {};\n const { result, uniqueDates } = this.generateData(this.bubbleChartData, this.chartConfig)\n // result.forEach(element => {\n // element.dataset.sort((a, b) => moment(a.recordDate, 'YYYYMMDD').diff(moment(b.recordDate, 'YYYYMMDD')));\n // });\n // uniqueDates.sort();\n this.heatChartDataSource[\"dataSet\"] = result;\n this.heatChartDataSource[\"argumentValue\"] = uniqueDates;\n }\n\n generateData(data, chartConfig) {\n const result = [];\n const uniqueDates = new Set();\n const dataSourceMap = {};\n\n const sourceField = chartConfig.sourceField;\n const argumentField = chartConfig.argumentField;\n const valueField = chartConfig.chart_config[0].valueField;\n const minBubbleSize = (this.chartConfig.minBubbleSize) ? parseInt(this.chartConfig.minBubbleSize) : 8;\n const maxBubbleSize = (this.chartConfig.maxBubbleSize) ? parseInt(this.chartConfig.maxBubbleSize) : 20;\n\n data.forEach(item => {\n const sourceFieldValue = item[sourceField];\n const argumentFieldValue = item[argumentField];\n const { [sourceField]: _, [argumentField]: __, ...rest } = item;\n\n if (!dataSourceMap[sourceFieldValue]) {\n dataSourceMap[sourceFieldValue] = {\n datasource: sourceFieldValue,\n dataset: []\n };\n }\n dataSourceMap[sourceFieldValue].dataset.push({\n ...rest,\n [argumentField]: moment(argumentFieldValue).format('YYYY-MM-DD')\n });\n uniqueDates.add(moment(argumentFieldValue).format('YYYY-MM-DD'));\n });\n\n const uniqueDatesArray = Array.from(uniqueDates);\n\n for (const key in dataSourceMap) {\n const dataset = dataSourceMap[key].dataset;\n const formattedDataset = this.getFormateDataByColorCode(dataset, valueField, minBubbleSize, maxBubbleSize);\n\n const dateToItemMap = {};\n formattedDataset.forEach(item => {\n dateToItemMap[item[argumentField]] = item;\n });\n\n const completeDataset = uniqueDatesArray.map((date: any) => {\n if (dateToItemMap[date]) {\n return dateToItemMap[date];\n } else {\n return {\n fileCount: 0,\n [argumentField]: date,\n [valueField]: 0,\n color: \"rgb(242, 118, 109)\"\n };\n }\n });\n\n result.push({\n datasource: key,\n dataset: completeDataset\n });\n }\n\n return {\n result: result,\n uniqueDates: uniqueDatesArray\n };\n }\n\n\n\n getFormateDataByColorCode(filedata, valueField, minBubbleSize, maxBubbleSize) {\n filedata.forEach(item => {\n item[valueField] = parseFloat(item[valueField]);\n });\n\n let maxRechargeCount = Math.max(...filedata.map(item => item[valueField]));\n let minRechargeCount = Math.min(...filedata.map(item => item[valueField]));\n\n let minColor = [43, 224, 91];\n let maxColor = [65, 135, 24];\n let hover = [135, 184, 106];\n\n filedata.forEach(item => {\n let size = this.mapRange(item[valueField], minRechargeCount, maxRechargeCount, minBubbleSize, maxBubbleSize);\n item.size = size;\n item.toolTip = item[valueField];\n item.hover = `rgb(${hover.join(',')})`;\n if (item[valueField] == 0) {\n item.color = `rgb(${minColor.join(',')})`;\n } else {\n item.color = `rgb(${maxColor.join(',')})`;\n }\n });\n\n return filedata;\n }\n\n mapRange(value, inMin, inMax, outMin, outMax) {\n return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n }\n\n}\n","<div class=\"mx-2\">\n <div class=\"w-full m-2 border\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\">\n <ng-container *ngIf=\"chartType == 'doughnut'\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <!-- <h6 class=\"mb-1 text-md font-bold tracking-tight text-gray-900 dark:text-white border-b pb-3\">\n {{widGetConfig.widgetTitle}}\n </h6> -->\n <dx-pie-chart id=\"pie\" type=\"doughnut\" [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\"\n palette=\"Soft Pastel\" [dataSource]=\"dataSourseForChart\" centerTemplate=\"centerTemplate\"\n (onPointClick)=\"pointClickHandler($event)\" [palette]=\"chartConfig.palette\">\n\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item.color\">\n <dxi-series argumentField={{chartConfig.argumentField}} valueField=\"{{item.valueField}}\"\n name=\"{{item.name}}\" color=\"{{item.color}}\">\n <dxo-label [visible]=\"chartConfig.labelDisplay\" format=\"#,##0.##\">\n <dxo-connector [visible]=\"true\"></dxo-connector>\n </dxo-label>\n </dxi-series>\n </ng-container>\n <ng-container *ngIf=\"!item.color\">\n <dxi-series argumentField={{chartConfig.argumentField}} valueField=\"{{item.valueField}}\"\n name=\"{{item.name}}\">\n <dxo-label [visible]=\"chartConfig.labelDisplay\" format=\"#,##0.##\">\n <dxo-connector [visible]=\"true\"></dxo-connector>\n </dxo-label>\n </dxi-series>\n </ng-container>\n </ng-container>\n <dxo-legend [visible]=\"chartConfig.legendDisplay\"\n horizontalAlignment=\"{{chartConfig.horizontalAlignment}}\"\n verticalAlignment=\"{{chartConfig.verticalAlignment}}\"></dxo-legend>\n <!-- <dxo-export [enabled]=\"true\"></dxo-export> -->\n <dxo-tooltip [enabled]=\"true\" [customizeTooltip]=\"customizeTooltip\" format=\"#,##0.##\">\n </dxo-tooltip>\n <svg *dxTemplate=\"let pieChart of 'centerTemplate'\">\n <circle cx=\"100\" cy=\"100\" [attr.r]=\"pieChart.getInnerRadius() - 6\" fill=\"gray\"\n opacity=\"0.0001\">\n </circle>\n\n <text text-anchor=\"middle\" style=\"font-size: 28px\" x=\"100\" y=\"100\" fill=\"#eee\">\n <tspan x=\"100\">{{ calculateTotal(pieChart) }}</tspan>\n <!-- display: inline -->\n <!-- <tspan x=\"100\" dy=\"20px\" style=\"font-weight: 600\"></tspan> -->\n </text>\n </svg>\n </dx-pie-chart>\n </div>\n </ng-container>\n <ng-container *ngIf=\"chartType !== 'doughnut' && chartType !== 'funnel' && chartType !== 'bubble'\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <!-- <h6 class=\"mb-1 text-md font-bold tracking-tight text-gray-900 dark:text-white border-b pb-3\">\n {{widGetConfig.widgetTitle}}\n </h6> -->\n <dx-chart id=\"chart\" [dataSource]=\"dataSourseForChart\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\"\n [valueAxis]=\"chartConfig.valueAxisConfig\">\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item.axis\">\n <dxi-value-axis [name]=\"item.axis\" [position]=\"item.position\">\n <dxo-title [text]=\"item.name\"></dxo-title>\n </dxi-value-axis>\n </ng-container>\n </ng-container>\n <dxo-argument-axis>\n <dxo-label overlappingBehavior=\"rotate\" [rotationAngle]=\"270\"></dxo-label>\n </dxo-argument-axis>\n <dxo-tooltip [enabled]=\"true\" [shared]=\"true\"></dxo-tooltip>\n <dxo-common-series-settings\n [argumentField]=\"chartConfig.argumentField\"></dxo-common-series-settings>\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item.color\">\n <dxi-series type=\"{{item.type}}\" valueField=\"{{item.valueField}}\" axis=\"{{item.axis}}\"\n name=\"{{item.name}}\" color=\"{{item.color}}\">\n </dxi-series>\n </ng-container>\n <ng-container *ngIf=\"!item.color\">\n <dxi-series type=\"{{item.type}}\" valueField=\"{{item.valueField}}\" axis=\"{{item.axis}}\"\n name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n\n </ng-container>\n <dxo-size [height]=\"chartConfig.size\"></dxo-size>\n <dxo-legend [visible]=\"chartConfig.legendDisplay\"\n [verticalAlignment]=\"chartConfig.verticalAlignment\"\n [horizontalAlignment]=\"chartConfig.horizontalAlignment\"></dxo-legend>\n </dx-chart>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"chartType == 'funnel'\">\n\n </ng-container>\n <ng-container *ngIf=\"chartType == 'bubble'\">\n <div class=\"mx-5\">\n <ng-container *ngFor=\"let item of heatChartDataSource.dataSet\">\n <div class=\"flex flex-row\">\n <div class=\"h-10 text-sm items-center min-w-24 max-w-[30%] justify-center flex\">\n {{item.datasource}}\n </div>\n <div class=\"inline-block \">\n <div class=\"flex flex-nowrap justify-center \">\n <ng-container *ngFor=\"let box of item.dataset\">\n <div class=\"flex-shrink-0 min-w-10 max-w-[20%] h-10 text-sm cursor-pointer flex items-center justify-center text-gray-800\"\n [matTooltip]=\"'Record Date: ' + box.recordDate + '\\nRecharge Count: ' + box.toolTip\"\n matTooltipClass=\"custom-tooltip\">\n <div class=\"rounded-full\" [ngStyle]=\"{\n 'background-color': box.isHovered ? 'rgb(135, 184, 106)' : box.color,\n 'width.px': box.size,\n 'hover': box.hover,\n 'height.px': box.size\n }\" (mouseenter)=\"box.isHovered = true\" (mouseleave)=\"box.isHovered = false\">\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <div class=\"inline-block\">\n <div class=\"flex flex-nowrap justify-center\">\n <div class=\"flex-shrink-0 w-24 max-w-[20%] h-full flex items-center justify-center\"></div>\n <div *ngFor=\"let item of heatChartDataSource.argumentValue\"\n class=\"flex-shrink-0 w-10 max-w-[20%] min-h-14 flex text-sm items-center justify-center my-1\"\n [ngStyle]=\"{'height': 'auto'}\">\n <span class=\"text-rotate\">\n {{item}}\n </span>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n </ng-container>\n\n </div>\n <div class=\"w-full m-2 border\">\n <div class=\"flex flex-row mb-1\">\n <div class=\"w-1/3 mx-1\">\n <dx-select-box [dataSource]=\"chartAxisSource\" [(ngModel)]=\"chartAccess\" placeholder=\"Chart Type\"\n displayExpr=\"name\" valueExpr=\"value\" (onValueChanged)=\"getChartAccessType($event)\">\n </dx-select-box>\n </div>\n <div class=\"w-1/3 mx-1\">\n <ng-container *ngIf=\"chartAccess == 'single'\">\n <dx-select-box [items]=\"chartTypeSource\" (onValueChanged)=\"getChartType($event)\"\n [(ngModel)]=\"chartType\"></dx-select-box>\n </ng-container>\n <ng-container *ngIf=\"chartAccess == 'multy'\">\n <dx-select-box [items]=\"componentNamesForMultyAccess\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"componentName\"></dx-select-box>\n </ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"chartAccess == 'single'\">\n\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic'\n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns'\n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <!-- <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'widget',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'widget'\n }\" (click)=\"setActiveTab('widget')\" type=\"button\" role=\"tab\">\n Widget\n </button>\n </li> -->\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\">\n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-wrap justify-between my-2\">\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1 \">Legend Horizontal Alignment</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['right','left','center']\"\n [(ngModel)]=\"chartConfig.horizontalAlignment\"></dx-select-box>\n\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Legend Vertical Alignment</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['top','bottom']\"\n [(ngModel)]=\"chartConfig.verticalAlignment\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1 mt-8\"></div>\n <dx-check-box [(ngModel)]=\"chartConfig.legendDisplay\" text=\"Legend Display\"></dx-check-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Argument Field</div>\n <dx-select-box [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.argumentField\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Size</div>\n <dx-text-box [(ngModel)]=\"chartConfig.size\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Caption</div>\n <dx-text-box [(ngModel)]=\"chartConfig.caption\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n <div class=\"w-2/3 px-2 mt-2\" *ngIf=\"chartType == 'doughnut'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2\">\n <div class=\"text-md mb-1\"> Color Palette</div>\n <dx-select-box [items]=\"doughnut_color_palette\"\n [(ngModel)]=\"chartConfig.palette\"></dx-select-box>\n </div>\n <div class=\"mt-5\">\n <dx-check-box [value]=\"chartConfig.labelDisplay\"\n [(ngModel)]=\"chartConfig.labelDisplay\" text=\"Label Display\"></dx-check-box>\n </div>\n </div>\n\n\n </div>\n <div class=\"w-2/3 px-2 mt-2\" *ngIf=\"chartType == 'bubble'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2\">\n <div class=\"text-md mb-1\"> Source Field</div>\n <dx-select-box [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.sourceField\"></dx-select-box>\n </div>\n <div class=\"mr-2\">\n <div class=\"text-md mb-1\"> Min Bubble Size</div>\n <dx-text-box [(ngModel)]=\"chartConfig.minBubbleSize\"></dx-text-box>\n </div>\n <div class=\"mr-2\">\n <div class=\"text-md mb-1\"> Max bubble size</div>\n <dx-text-box [(ngModel)]=\"chartConfig.maxBubbleSize\"></dx-text-box>\n </div>\n </div>\n </div>\n <div class=\"w-1/3 px-2 mt-2\" *ngIf=\"chartType == 'doughnut'\">\n\n </div>\n\n </div>\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <div class=\"h-60 overflow-x-auto\">\n <div class=\" border-x border-b \">\n <div class=\"py-1 flex flex-row border-b\"\n *ngFor=\"let item of chartConfig.chart_config; let i = index\">\n\n <div class=\"px-1 mb-1 w-1/3\">\n <div class=\"text-md mb-1\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.valueField\"></dx-select-box>\n </div>\n\n <div class=\"px-1 mb-1 w-1/4\" *ngIf=\"chartType !== 'doughnut'\">\n <div class=\"text-md mb-1\"> Axis</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.axis\"></dx-select-box>\n </div>\n <div class=\" px-2 mb-1 w-1/3\">\n <div class=\"text-md mb-1\"> Position</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['right','left']\"\n [(ngModel)]=\"item.position\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-1/4\">\n <div class=\"text-md mb-1\"> Name</div>\n <dx-text-box [(ngModel)]=\"item.name\"></dx-text-box>\n </div>\n <div class=\"text-center mt-6 w-1/6\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItem(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n <button *ngIf=\"i !== chartConfig.chart_config.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItem(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\" *ngIf=\"chartType == 'doughnut'\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addColumns()\">Add\n Series</button>\n </div>\n </div>\n </div>\n </div>\n <!-- <div *ngIf=\"activeTab === 'widget'\">\n <div class=\"flex flex-wrap justify-between my-2\">\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Widget level</div>\n <dx-text-box [value]=\"mainChartCourceObject.widget\"\n [(ngModel)]=\"mainChartCourceObject.widget\" [readOnly]=\"isEditWidget\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Title</div>\n <dx-text-box [value]=\"widGetConfig.widgetTitle\"\n [(ngModel)]=\"widGetConfig.widgetTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Width </div>\n <dx-select-box [value]=\"widGetConfig.width\" [items]=\"widget_width\"\n [(ngModel)]=\"widGetConfig.width\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-1 pt-6 text-center\">\n <dx-check-box [value]=\"widGetConfig.display\" [(ngModel)]=\"widGetConfig.display\"\n text=\"Display\"></dx-check-box>\n </div>\n </div>\n\n </div> -->\n </div>\n </ng-container>\n <ng-container *ngIf=\"chartAccess == 'multy'\">\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic'\n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns'\n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <!-- <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'widget',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'widget'\n }\" (click)=\"setActiveTab('widget')\" type=\"button\" role=\"tab\">\n Widget\n </button>\n </li> -->\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\">\n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-wrap justify-between my-2\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-1\">Legend Horizontal Alignment</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['right','left','center']\" [value]=\"'center'\"\n [(ngModel)]=\"chartConfig.horizontalAlignment\"></dx-select-box>\n\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> legent Vertical Alignment</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['top','bottom']\" [value]=\"'bottom'\"\n [(ngModel)]=\"chartConfig.verticalAlignment\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1 mt-8\"></div>\n <dx-check-box [(ngModel)]=\"chartConfig.legendDisplay\" text=\"Legend Display\"></dx-check-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Argument Field</div>\n <dx-select-box [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.argumentField\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Size</div>\n <dx-text-box [(ngModel)]=\"chartConfig.size\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-1\"> Caption</div>\n <dx-text-box [(ngModel)]=\"chartConfig.caption\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <dx-scroll-view class=\"h-full\" [width]=\"'100%'\" [height]=\"'100%'\">\n <div class=\" border-x border-b \">\n <div class=\"py-1 flex flex-wrap border-b\"\n *ngFor=\"let item of chartConfig.chart_config; let i = index;\">\n\n <div class=\"px-2 mb-1 w-1/3\">\n <div class=\"text-md mb-2\"> Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"chartTypeSource\" [value]=\"'spline'\"\n [(ngModel)]=\"item.type\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-1 w-1/3\">\n <div class=\"text-md mb-1\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.valueField\"></dx-select-box>\n </div>\n\n <div class=\"px-2 mb-1 w-1/3\">\n <div class=\"text-md mb-1\"> Axis</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.axis\"></dx-select-box>\n </div>\n <div class=\" px-2 mb-1 w-1/4\">\n <div class=\"text-md mb-1\"> Position</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"['right','left']\"\n [(ngModel)]=\"item.position\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-1 w-1/4\">\n <div class=\"text-md mb-1\"> Name</div>\n <dx-text-box [(ngModel)]=\"item.name\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-1 w-1/4\">\n <div class=\"text-md mb-2\"> Color</div>\n <dx-color-box [(ngModel)]=\"item.color\"></dx-color-box>\n </div>\n <div class=\"text-center my-1 w-1/4\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItem(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n <button *ngIf=\"i !== chartConfig.chart_config.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItem(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n <!-- <div *ngIf=\"activeTab === 'widget'\">\n <div class=\"flex flex-wrap justify-between my-2\">\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Widget level</div>\n <dx-text-box [value]=\"mainChartCourceObject.widget\"\n [(ngModel)]=\"mainChartCourceObject.widget\" [readOnly]=\"isEditWidget\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Title</div>\n <dx-text-box [value]=\"widGetConfig.widgetTitle\"\n [(ngModel)]=\"widGetConfig.widgetTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Width </div>\n <dx-select-box [value]=\"widGetConfig.width\" [items]=\"widget_width\"\n [(ngModel)]=\"widGetConfig.width\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-1 mb-1\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-1 pt-6 text-center\">\n <dx-check-box [value]=\"widGetConfig.display\" [(ngModel)]=\"widGetConfig.display\"\n text=\"Display\"></dx-check-box>\n </div>\n </div>\n\n </div> -->\n </div>\n </ng-container>\n\n\n </div>\n\n</div>\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = true\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit</button>\n </div>\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-dash-table',\n templateUrl: './dash-table.component.html',\n styleUrls: ['./dash-table.component.scss']\n})\nexport class DashTableComponent implements OnInit {\n isJsonPreview: boolean\n dataSourseForTable: any = [];\n jsaonDatasource: any;\n configColume: any;\n allConfiguredViews: any = [];\n // groupOfViews: any;\n viewProperties: any = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n optionalDrilDownDataSource: any = [];\n table_columns_config = {\n \"kpiConfig\": {\n \"serviceId\": \"\",\n \"api\": \"/kpi/trends/network/get-metric-data\",\n \"displayType\": \"table\",\n \"formate\": \"\",\n \"keyToPass\": [],\n \"componentName\": \"GammaAdvanceOperatorTableComponent\",\n \"dataConfig\": {}\n },\n };\n\n tableDataConfig = {\n \"searchPanel\": true,\n \"file_name\": \"\",\n \"numberOfRow\": 10,\n \"pageInfo\": true,\n \"allowedPageSizes\": [\n 10,\n 20,\n 50,\n 100\n ],\n \"columns\": [\n\n ],\n \"commonConfig\": {\n \"title\": \"\",\n \"dataField\": \"\",\n \"checkedKey\": \"\",\n \"isSearchBox\": false\n }\n }\n\n enrichNameList = [\"abbreviateNumber\", \"getColorCodeSpan\", \"ThousandSeparator\", \"ThousandSeparatorWithTwoDecimals\"]\n selectedTableViewType: any;\n isLoader: boolean = true;\n\n selectedViewConfigs: any;\n\n\n constructor(public commonService: CommonService, private cdr: ChangeDetectorRef, private service: ApplicationContentService, private taostr: ToastrService) { }\n\n activeTab: string = 'basic';\n @Output() public getTableConfigOutPut: EventEmitter<any> = new EventEmitter();\n\n\n @Input('datasetmodal')\n set chartconfigData(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.jsaonDatasource = value.data[0];\n this.configColume = Object.keys(value.data[0]);\n this.dataSourseForTable = value.data.slice(0, 10);\n this.selectedViewConfigs = value;\n\n this.selectedTableViewType = value.selectedViewType;\n if (value.selectedWidgetConfig) {\n this.table_columns_config['kpiConfig'] = value.selectedWidgetConfig;\n this.tableDataConfig = value.selectedWidgetConfig.dataConfig;\n this.tableDataConfig.columns = value.selectedWidgetConfig.dataConfig.columns;\n if (value.selectedWidgetConfig.viewProperties && value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews) {\n this.viewProperties = value.selectedWidgetConfig.viewProperties;\n this.viewProperties = {\n \"enableClickEvent\": value.selectedWidgetConfig.viewProperties.enableClickEvent,\n \"enableRightClickEvent\": value.selectedWidgetConfig.viewProperties.enableRightClickEvent\n }\n if (value.selectedWidgetConfig.viewProperties.enableClickEvent) {\n if (value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.optionalDrilDownDataSource = value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews;\n this.viewProperties['clickEventOptions'] = {\n \"eventType\": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,\n \"associatedViews\": []\n }\n } else if (value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType == 'drilldown') {\n this.viewProperties['clickEventOptions'] = {\n \"eventType\": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,\n \"associatedViews\": value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews\n }\n } else {\n this.viewProperties = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n }\n\n } else {\n this.viewProperties['clickEventOptions'] = {}\n }\n\n }\n\n if (value.selectedViewType === 'groupTable') {\n this.tableDataConfig.columns = this.geColumnsFromGroup(this.tableDataConfig.columns)\n }\n this.cdr.detectChanges();\n } else {\n this.tableDataConfig.columns = value.columnData;\n if (this.tableDataConfig.columns) {\n if (this.selectedTableViewType === 'groupTable') {\n this.tableDataConfig.columns.forEach(element => {\n element['group'] = '';\n });\n }\n } else {\n this.tableDataConfig.columns = [];\n this.configColume.forEach(element => {\n let obj = {\n \"visible\": true,\n \"dataField\": element,\n \"caption\": this.commonService.convertString(element),\n \"enrichName\": \"\",\n }\n if (this.selectedTableViewType === 'groupTable') {\n obj['group'] = '';\n }\n this.tableDataConfig.columns.push(obj);\n\n });\n console.log(this.configColume);\n }\n\n this.cdr.detectChanges();\n }\n }\n }\n\n\n ngOnInit(): void {\n this.isLoader = true;\n this.service.getAppViewConfigs().subscribe({\n next: (data: any) => {\n this.allConfiguredViews = data;\n\n this.isLoader = false;\n }, error: (err: any) => {\n this.taostr.error('Unexpected Server Exception. Please contact System Admin.', 'All Views')\n }\n })\n if (this.optionalDrilDownDataSource.length == 0) {\n this.optionalDrilDownDataSource = [\n {\n 'viewId': \"\",\n 'filterCondition': \"\"\n }\n ]\n }\n\n }\n addColumns() {\n let obj = {\n \"visible\": true,\n \"dataField\": \"\",\n \"caption\": \"\",\n \"enrichName\": \"\",\n }\n if (this.selectedTableViewType === 'groupTable') {\n obj['group'] = '';\n }\n this.tableDataConfig.columns.push(obj);\n }\n\n deleteColumns(i) {\n this.tableDataConfig.columns.splice(i, 1)\n }\n\n getEnrichClassName(e, item) {\n item.enrichName = e.value;\n\n }\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.tableDataConfig.columns.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.tableDataConfig.columns.length) return;\n\n // Move item\n const itemToMove = this.tableDataConfig.columns[index];\n this.tableDataConfig.columns.splice(index, 1); // Remove item from current position\n this.tableDataConfig.columns.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n getObjectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n\n getGroupColumns(columns) {\n const groupedColumns = columns.reduce((acc, column) => {\n let group = acc.find(item => item.caption === column.group);\n if (!group) {\n group = {\n caption: column.group,\n columns: []\n };\n acc.push(group);\n }\n group.columns.push({\n dataField: column.dataField,\n visible: column.visible,\n caption: column.caption\n });\n return acc;\n }, []);\n return groupedColumns;\n }\n geColumnsFromGroup(columns) {\n const newColumns = [];\n\n columns.forEach(group => {\n group.columns.forEach(col => {\n newColumns.push({\n dataField: col.dataField,\n visible: col.visible,\n caption: col.caption,\n group: group.caption\n });\n });\n });\n return newColumns;\n }\n\n\n getSaveChartConfig() {\n if (this.selectedTableViewType === 'groupTable') {\n this.tableDataConfig.columns = this.getGroupColumns(this.tableDataConfig.columns);\n }\n if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;\n }\n\n this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;\n this.table_columns_config.kpiConfig['dataConfig'] = this.tableDataConfig;\n this.getTableConfigOutPut.emit(this.table_columns_config);\n }\n\n deleteAssociatedParams(index) {\n this.optionalDrilDownDataSource.splice(index, 1)\n }\n\n addAssociatedParams() {\n this.optionalDrilDownDataSource.push({\n 'viewId': \"\",\n 'filterCondition': \"\"\n })\n }\n\n getSelectedEventType(e) {\n if (e.event) {\n this.optionalDrilDownDataSource = [];\n if (this.viewProperties.clickEventOptions.eventType == 'drilldown') {\n this.table_columns_config.kpiConfig['viewProperties']['associatedViews'] = [];\n }\n }\n\n }\n\n\n resetViewProprstise() {\n this.viewProperties = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n }\n\n}\n","<div class=\"m-2\">\n <div class=\"w-full m-2 border-r\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\">\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"dataSourseForTable\" [hoverStateEnabled]=\"true\"\n [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\" [columns]=\"tableDataConfig.columns\"\n [showRowLines]=\"true\" id=\"gridContainer\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableDataConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableDataConfig.file_name}}\"\n [customizeExcelCell]=\"commonService.customizeExcelCell\"></dxo-export>\n <dxo-paging [pageSize]=\"5\"></dxo-paging>\n <!-- <dxo-pager [showInfo]=\"tableDataConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableDataConfig.allowedPageSizes\">\n </dxo-pager> -->\n <!-- <ng-container *ngFor=\"let item of dataSourseForTable\">\n <div *ngFor=\"let key of getObjectKeys(item)\">\n <dxi-column dataField=\"{{ key }}\" *ngIf=\"key == 'recordDate'\" sortOrder=\"desc\"></dxi-column>\n <dxi-column [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ key }}\"\n alignment=\"right\"></dxi-column>\n </div>\n </ng-container> -->\n <ng-container *ngFor=\"let item of tableDataConfig.columns\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\"\n [sortingMethod]=\"commonService.customValueSorter\" [caption]=\"item.caption\"\n dataField=\"{{ item.dataField }}\" alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n </div>\n <div class=\"w-full mx-2 border-r\">\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic'\n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns'\n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'properties',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'properties'\n }\" (click)=\"setActiveTab('properties')\" type=\"button\" role=\"tab\">\n Properties\n </button>\n </li>\n\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\">\n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Title Config\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\">\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Title</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.commonConfig.title\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Data Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"table_columns_config.kpiConfig.formate\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Key To Pass </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"table_columns_config.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n <!-- <div class=\"px-1 mb-1\">\n <div class=\"text-md mb-1\"> Checked Key</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.commonConfig.checkedKey\"></dx-select-box>\n </div>\n <div class=\"px-4 mt-6\">\n <dx-check-box [value]=\"tableDataConfig.commonConfig.isSearchBox\"\n [(ngModel)]=\"tableDataConfig.commonConfig.isSearchBox\"\n text=\"Search Box\"></dx-check-box>\n\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"flex flex-col flex-auto min-w-0\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Table Config\n </div>\n <div class=\"flex flse-row border-x border-b\">\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <!-- <div class=\"text-md mb-2\"> </div> -->\n <dx-check-box [value]=\"tableDataConfig.searchPanel\"\n [(ngModel)]=\"tableDataConfig.searchPanel\" text=\"Search Panel\"></dx-check-box>\n </div>\n <div class=\" px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">File Name</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.file_name\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Number Of Row</div>\n <dx-number-box [value]=\"tableDataConfig.numberOfRow\"\n [(ngModel)]=\"tableDataConfig.numberOfRow\"></dx-number-box>\n </div>\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <dx-check-box [value]=\"tableDataConfig.pageInfo\" [(ngModel)]=\"tableDataConfig.pageInfo\"\n text=\"Page Info\"></dx-check-box>\n </div>\n </div>\n </div>\n\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <div class=\"h-full overflow-x-auto\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 border-b flex flex-row\"\n *ngFor=\"let item of tableDataConfig.columns; let i = index;\">\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [value]=\"item.visible\" [(ngModel)]=\"item.visible\"\n text=\"Visiblity\"></dx-check-box>\n </div>\n <ng-container *ngIf=\"item.group !== undefined\">\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Group Name</div>\n <dx-text-box [(ngModel)]=\"item.group\"></dx-text-box>\n </div>\n </ng-container>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> UI Function</div>\n <dx-select-box [items]=\"enrichNameList\" [(ngModel)]=\"item.enrichName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"text-center mt-8 w-full\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== tableDataConfig.columns.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'properties'\">\n <div class=\"h-full overflow-x-auto\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-row justify-between border-b py-3\">\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableClickEvent\"\n [(ngModel)]=\"viewProperties.enableClickEvent\"\n text=\"Enable Click Event\"></dx-check-box>\n </div>\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableRightClickEvent\"\n [(ngModel)]=\"viewProperties.enableRightClickEvent\"\n text=\"Enable Right Click\"></dx-check-box>\n </div>\n </div>\n <div class=\"w-full p-2\" *ngIf=\"viewProperties.enableClickEvent\">\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Event\n Type\n Option\n </div>\n <div class=\"w-full p-3 border-x border-b \">\n <div class=\"flex flex-row\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Event Type</div>\n </div>\n <div class=\"w-full\">\n <dx-select-box [items]=\"['drilldown','optionalDrillDown']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'drilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType == 'optionalDrillDown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <ng-container\n *ngFor=\"let item of optionalDrilDownDataSource;let i = index;\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"item.viewId\" valueExpr=\"viewId\"\n displayExpr=\"viewName\" [showSelectionControls]=\"true\"\n [maxDisplayedTags]=\"2\"\n [searchEnabled]=\"true\"></dx-tag-box>\n\n </div>\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"item.filterCondition\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <button\n class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteAssociatedParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end mt-4\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addAssociatedParams()\">Add\n Params</button>\n </div>\n </div>\n </div>\n </ng-container>\n <button class=\"{{commonService.btn_light_md}} cursor-pointer mt-4\"\n (click)=\"resetViewProprstise()\">Reset All Event</button>\n </div>\n </div>\n\n </div>\n </ng-container>\n </div>\n </div>\n\n </div>\n\n\n </div>\n</div>\n\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = true\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit</button>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Generated class for the SafeHtmlPipe pipe.\n *\n * See https://angular.io/api/core/Pipe for more info on Angular Pipes.\n */\n@Pipe({\n name: 'contentSafeHtml',\n})\nexport class contentSafeHtml implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n }\n\n transform(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from 'moment';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamma-table-clumn-bar-chart',\n templateUrl: './gamma-table-clumn-bar-chart.component.html',\n styleUrls: ['./gamma-table-clumn-bar-chart.component.scss']\n})\nexport class GammaTableClumnBarChartComponent {\n dataConfig: any;\n argumentValue: any;\n percentageDataSource: any;\n tableConfig: any;\n page_config: any;\n page_parms: any;\n\n isLoader: boolean\n currentDateData\n @Output() public getTableConfigOutPut: EventEmitter<any> = new EventEmitter();\n @Output() public oRowClick: EventEmitter<any> = new EventEmitter();\n @Output() public onrightClickContextSelection: EventEmitter<any> = new EventEmitter();\n @Input() rightClickEnable: boolean = true;\n @Input('chartDataSource')\n set chartDataSource(value) {\n // debugger\n // console.log(value);\n if (value === undefined || value.length === 0) {\n return;\n } else {\n this.isLoader = true;\n this.page_config = value;\n this.page_parms = value.titleParams;\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n\n\n\n this.tableConfig = value.kpiConfig.dataConfig;\n const columns = value.kpiConfig.dataConfig.columns;\n\n\n\n let mainDatasource: any;\n\n let tableColumns = (value.kpiConfig.dataConfig.columns) ? value.kpiConfig.dataConfig.columns : [];\n if (tableColumns && tableColumns.length !== 0) {\n const dataSource = value.kpiConfig.dataSource.map(obj => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n\n // const foundMatchObject = tableColumns.find(obj => obj.dataField === key);\n // if (foundMatchObject) {\n // if (foundMatchObject.enrichName && foundMatchObject.enrichName !== \"\") {\n // console.log(foundMatchObject.enrichName);\n // newObj[key] = this.callServiceFunction(foundMatchObject.enrichName, newObj[key])\n // }\n // }\n\n\n if (key.toLowerCase().includes('date') && newObj[key]) {\n newObj[key] = moment(newObj[key]).format(\"YYYY-MM-DD\");\n }\n });\n return newObj;\n });\n this.percentageDataSource = this.loadDailyMscVoiceTable(dataSource, columns)\n }\n\n\n\n\n this.isLoader = false;\n } else {\n\n }\n\n }\n }\n\n\n tableDataSource: any = [];\n constructor(\n public commonService: CommonService,\n private toastr: ToastrService,\n private sanitizer: DomSanitizer\n ) { }\n\n ngOnInit(): void {\n\n }\n\n\n\n loadDailyMscVoiceTable(data: any[], datacolumns: string[]) {\n this.argumentValue = datacolumns.filter(\n (column: any) => column.isShowBar == false\n );\n this.dataConfig = datacolumns.filter(\n (column: any) => column.isShowBar == true\n );\n let keys = this.dataConfig;\n const result = {};\n let finalDatasource = [];\n data.forEach((elementOne) => {\n keys.forEach((key) => {\n const values = data.map(\n (item) => parseFloat(item[key['dataField']]) || 0\n ); // Parse numbers safely\n const maxValue = Math.max(...values);\n const minValue = Math.min(...values);\n result[key['dataField']] = { maxValue, minValue };\n });\n let obj = {};\n keys.forEach((key) => {\n let widthVal = this.commonService.scaleNumber(\n parseFloat(elementOne[key['dataField']]),\n result[key['dataField']]['minValue'],\n result[key['dataField']]['maxValue'],\n 10,\n 75\n );\n let Bar = this.commonService.createHtml(\n widthVal,\n this.commonService.reformatNumberWithThousandSeparator(\n elementOne[key['dataField']]\n ),\n key['color']\n );\n obj[key['dataField']] = Bar;\n });\n this.argumentValue.forEach((element) => {\n obj[element.dataField] = elementOne[element.dataField];\n\n\n });\n finalDatasource.push(obj);\n });\n return finalDatasource;\n }\n\n\n onRowClick(e) {\n\n const title_params = e.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']]\n let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;\n let obj = {\n data: e.data,\n keyToPass: this.page_config.kpiConfig.keyToPass,\n tableTitle: (this.page_parms) ? this.page_parms + title : title,\n viewId: this.page_config.viewId,\n drillDownType: \"natural\",\n drilldownFrom: this.page_config.viewId,\n drilldownTo: \"\",\n }\n this.oRowClick.emit(obj);\n }\n\n addMenuItems(e) {\n\n const title_params = e.row.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']]\n let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;\n\n if (this.rightClickEnable && e.columnIndex == 0) {\n if (e.target == 'content') {\n if (!e.items) e.items = [];\n\n this.page_config.kpiConfig.contextMenu.forEach(element => {\n if (!this.page_config.kpiConfig.keyToPass.some(key => element.displayKey.includes(key))) {\n e.items.push({\n text: element.displayKey,\n onItemClick: () => {\n let rightclickData = {\n data: e.row.data,\n keyToPass: this.page_config.kpiConfig.keyToPass,\n tableTitle: (this.page_parms) ? this.page_parms + title : title,\n viewId: this.page_config.viewId,\n drillDownType: \"context\",\n drilldownFrom: this.page_config.viewId,\n drilldownTo: element.viewId,\n\n }\n this.onrightClickContextSelection.emit(rightclickData)\n }\n });\n }\n });\n }\n }\n }\n}\n","<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid (onRowClick)=\"onRowClick($event)\" [dataSource]=\"percentageDataSource\"\n (onContextMenuPreparing)=\"addMenuItems($event)\" [rowAlternationEnabled]=\"true\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\"\n [customizeExportData]=\"commonService.removeHtmlContentFromData\">\n <!-- <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableConfig.file_name}}\"></dxo-export> -->\n <!-- <dxo-paging [pageSize]=\"tableConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableConfig.allowedPageSizes\">\n </dxo-pager>\n <dxo-load-panel [enabled]=\"true\">\n </dxo-load-panel> -->\n <ng-container *ngFor=\"let item of argumentValue\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\" [caption]=\"item.caption\"\n [sortingMethod]=\"commonService.customValueSorter\" dataField=\"{{ item.dataField }}\"\n alignment=\"left\" [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <dxi-column cellTemplate=\"{{ item.dataField }}\" dataField=\"{{ item.dataField }}\" alignment=\"right\"\n [sortingMethod]=\"commonService.customValueSorterForBar\"></dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of dataConfig\">\n <div *dxTemplate=\"let data of item.dataField\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n </ng-container>\n </dx-data-grid>\n </ng-container>\n\n </div>\n</div>","\n\nimport { ChangeDetectorRef, Component, ComponentRef, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-table-with-bar',\n templateUrl: './table-with-bar.component.html',\n styleUrls: ['./table-with-bar.component.scss']\n})\nexport class TableWithBarComponent implements OnInit {\n chartDataSourceForMap: any = {};\n isJsonPreview: boolean\n dataSourseForTable: any = [];\n jsaonDatasource: any;\n configColume: any;\n allConfiguredViews: any = [];\n // groupOfViews: any;\n viewProperties: any = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n optionalDrilDownDataSource: any = [];\n table_columns_config = {\n \"kpiConfig\": {\n \"serviceId\": \"\",\n \"api\": \"/kpi/trends/network/get-metric-data\",\n \"displayType\": \"table\",\n \"formate\": \"\",\n \"keyToPass\": [],\n \"componentName\": \"GammaTableWithPercentageComponent\",\n \"dataConfig\": {}\n },\n };\n\n tableDataConfig = {\n \"searchPanel\": true,\n \"file_name\": \"\",\n \"numberOfRow\": 10,\n \"pageInfo\": true,\n \"allowedPageSizes\": [\n 10,\n 20,\n 50,\n 100\n ],\n \"columns\": [\n\n ],\n \"commonConfig\": {\n \"title\": \"\",\n \"dataField\": \"\",\n \"checkedKey\": \"\",\n \"isSearchBox\": false\n }\n }\n\n enrichNameList = [\"abbreviateNumber\", \"getColorCodeSpan\", \"ThousandSeparator\", \"ThousandSeparatorWithTwoDecimals\"]\n selectedTableViewType: any;\n isLoader: boolean = true;\n\n selectedViewConfigs: any;\n\n\n constructor(public commonService: CommonService, private cdr: ChangeDetectorRef, private service: ApplicationContentService, private taostr: ToastrService) { }\n\n activeTab: string = 'basic';\n @Output() public createOtherComponentView: EventEmitter<any> = new EventEmitter();\n selectedViews = [];\n\n @Input('datasetmodal')\n set chartconfigData(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.jsaonDatasource = value.data[0];\n this.configColume = Object.keys(value.data[0]);\n this.dataSourseForTable = value.data.slice(0, 5);\n this.selectedViewConfigs = value;\n this.selectedTableViewType = value.selectedViewType;\n if (value.selectedWidgetConfig) {\n this.table_columns_config['kpiConfig'] = value.selectedWidgetConfig;\n this.tableDataConfig = value.selectedWidgetConfig.dataConfig;\n this.tableDataConfig.columns = value.selectedWidgetConfig.dataConfig.columns;\n if (value.selectedWidgetConfig.viewProperties && value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews) {\n this.viewProperties = value.selectedWidgetConfig.viewProperties;\n this.viewProperties = {\n \"enableClickEvent\": value.selectedWidgetConfig.viewProperties.enableClickEvent,\n \"enableRightClickEvent\": value.selectedWidgetConfig.viewProperties.enableRightClickEvent\n }\n\n if (value.selectedWidgetConfig.viewProperties.enableClickEvent) {\n this.viewProperties['clickEventOptions'] = {\n \"eventType\": value.selectedWidgetConfig.viewProperties.clickEventOptions.eventType,\n \"associatedViews\": value.selectedWidgetConfig.viewProperties.clickEventOptions.associatedViews\n }\n } else {\n this.viewProperties['clickEventOptions'] = {}\n }\n\n }\n\n this.cdr.detectChanges();\n } else {\n this.tableDataConfig.columns = value.columnData;\n if (this.tableDataConfig.columns) {\n this.tableDataConfig.columns.forEach(element => {\n element['color'] = '';\n element['isShowBar'] = true;\n });\n\n } else {\n this.tableDataConfig.columns = [];\n this.configColume.forEach(element => {\n let obj = {\n \"visible\": true,\n \"isShowBar\": true,\n \"dataField\": element,\n \"caption\": this.commonService.convertString(element),\n \"enrichName\": \"\",\n \"color\": \"\",\n }\n\n this.tableDataConfig.columns.push(obj);\n\n });\n console.log(this.configColume);\n }\n\n this.cdr.detectChanges();\n }\n }\n }\n\n\n ngOnInit(): void {\n this.isLoader = true;\n this.service.getAppViewConfigs().subscribe({\n next: (data: any) => {\n this.allConfiguredViews = data;\n\n this.isLoader = false;\n }, error: (err: any) => {\n this.taostr.error('Unexpected Server Exception. Please contact System Admin.', 'All Views')\n }\n })\n\n this.optionalDrilDownDataSource = [\n {\n 'viewId': \"\",\n 'filterCondition': \"\"\n }\n ]\n }\n addColumns() {\n let obj = {\n \"visible\": true,\n \"isShowBar\": true,\n \"dataField\": \"\",\n \"caption\": \"\",\n \"enrichName\": \"\",\n \"color\": \"\",\n }\n\n this.tableDataConfig.columns.push(obj);\n }\n\n deleteColumns(i) {\n this.tableDataConfig.columns.splice(i, 1)\n }\n\n getEnrichClassName(e, item) {\n item.enrichName = e.value;\n\n }\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.tableDataConfig.columns.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.tableDataConfig.columns.length) return;\n\n // Move item\n const itemToMove = this.tableDataConfig.columns[index];\n this.tableDataConfig.columns.splice(index, 1); // Remove item from current position\n this.tableDataConfig.columns.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n getObjectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n\n getGroupColumns(columns) {\n const groupedColumns = columns.reduce((acc, column) => {\n let group = acc.find(item => item.caption === column.group);\n if (!group) {\n group = {\n caption: column.group,\n columns: []\n };\n acc.push(group);\n }\n group.columns.push({\n dataField: column.dataField,\n visible: column.visible,\n caption: column.caption\n });\n return acc;\n }, []);\n return groupedColumns;\n }\n geColumnsFromGroup(columns) {\n const newColumns = [];\n\n columns.forEach(group => {\n group.columns.forEach(col => {\n newColumns.push({\n dataField: col.dataField,\n visible: col.visible,\n caption: col.caption,\n });\n });\n });\n return newColumns;\n }\n\n\n getSaveChartConfig() {\n\n this.table_columns_config.kpiConfig['dataConfig'] = this.tableDataConfig;\n if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;\n }\n\n this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;\n console.log(this.table_columns_config);\n // this.createOtherComponentView.emit(this.table_columns_config);\n }\n\n deleteAssociatedParams(index) {\n this.optionalDrilDownDataSource.splice(index, 1)\n }\n\n addAssociatedParams() {\n this.optionalDrilDownDataSource.push({\n 'viewId': \"\",\n 'filterCondition': \"\"\n })\n }\n\n getSelectedEventType(e) {\n\n if (e.event) {\n this.optionalDrilDownDataSource = [];\n if (this.viewProperties.clickEventOptions.eventType == 'drilldown') {\n this.table_columns_config.kpiConfig['viewProperties']['associatedViews'] = [];\n }\n }\n\n\n }\n\n resetViewProprstise() {\n this.viewProperties = {\n enableClickEvent: false,\n enableRightClickEvent: true,\n clickEventOptions: {\n associatedViews: [],\n eventType: \"\"\n }\n };\n }\n\n viewMapForTest() {\n this.table_columns_config.kpiConfig['dataConfig'] = this.tableDataConfig;\n if (this.viewProperties.clickEventOptions.eventType == 'optionalDrillDown') {\n this.viewProperties['clickEventOptions']['associatedViews'] = this.optionalDrilDownDataSource;\n }\n\n this.table_columns_config.kpiConfig['viewProperties'] = this.viewProperties;\n\n this.table_columns_config.kpiConfig['dataSource'] = this.dataSourseForTable;\n this.chartDataSourceForMap = this.table_columns_config;\n console.log(this.chartDataSourceForMap, 'table with bar chart data');\n\n this.isJsonPreview = true;\n\n }\n}\n","<div class=\"flex flex-wrap\">\n <div class=\"w-full mx-2 border-r\">\n <ng-container *ngIf=\"!isJsonPreview\">\n <pre><code>{{jsaonDatasource | json}}</code></pre>\n </ng-container>\n <ng-container *ngIf=\"isJsonPreview\">\n <!-- <app-gamma-table-with-percentage [chartDataSource]=\"chartDataSourceForMap\"></app-gamma-table-with-percentage> -->\n <app-gamma-table-clumn-bar-chart [chartDataSource]=\"chartDataSourceForMap\"></app-gamma-table-clumn-bar-chart>\n\n <div #dynamicContainer></div>\n\n </ng-container>\n </div>\n <div class=\"w-full mx-2\">\n\n <div class=\"mb-4 border-b border-gray-200 dark:border-gray-700\">\n <ul class=\"flex flex-wrap -mb-px text-sm font-medium text-center\" role=\"tablist\">\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{ \n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'basic',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'basic' \n }\" (click)=\"setActiveTab('basic')\" type=\"button\" role=\"tab\">\n Basic\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{ \n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'columns',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'columns' \n }\" (click)=\"setActiveTab('columns')\" type=\"button\" role=\"tab\">\n Columns\n </button>\n </li>\n <li class=\"me-2\" role=\"presentation\">\n <button class=\"inline-block p-4 border-b-2 rounded-t-lg\" [ngClass]=\"{\n 'text-purple-600 border-purple-600 dark:text-purple-500 dark:border-purple-500': activeTab === 'properties',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'properties'\n }\" (click)=\"setActiveTab('properties')\" type=\"button\" role=\"tab\">\n Properties\n </button>\n </li>\n\n </ul>\n </div>\n\n <div id=\"default-styled-tab-content\">\n <div *ngIf=\"activeTab === 'basic'\">\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Title\n Config\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\">\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Title</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.commonConfig.title\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-1\"> Data Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <!-- <div class=\"px-1 mb-1\">\n <div class=\"text-md mb-1\"> Checked Key</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"tableDataConfig.commonConfig.dataField\"></dx-select-box>\n </div> -->\n <!-- <div class=\"px-4 mt-6 w-full\">\n <dx-check-box [value]=\"tableDataConfig.commonConfig.isSearchBox\"\n [(ngModel)]=\"tableDataConfig.commonConfig.isSearchBox\"\n text=\"Search Box\"></dx-check-box>\n\n </div> -->\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Formate </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"table_columns_config.kpiConfig.formate\"\n [readOnly]=\"false\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Key To Pass </div>\n <dx-tag-box [items]=\"configColume\"\n [(ngModel)]=\"table_columns_config.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Table Config\n </div>\n <div class=\"flex flse-row py-3 border-x border-b \">\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <dx-check-box [value]=\"tableDataConfig.searchPanel\"\n [(ngModel)]=\"tableDataConfig.searchPanel\" text=\"Search Panel\"></dx-check-box>\n </div>\n <div class=\" px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">File Name</div>\n <dx-text-box [(ngModel)]=\"tableDataConfig.file_name\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Number Of Row</div>\n <dx-number-box [value]=\"tableDataConfig.numberOfRow\"\n [(ngModel)]=\"tableDataConfig.numberOfRow\"></dx-number-box>\n </div>\n <div class=\"px-1 mb-2 mt-8 w-full\">\n <dx-check-box [value]=\"tableDataConfig.pageInfo\" [(ngModel)]=\"tableDataConfig.pageInfo\"\n text=\"Page Info\"></dx-check-box>\n </div>\n\n </div>\n\n </div>\n\n\n </div>\n <div *ngIf=\"activeTab === 'columns'\">\n <div class=\"h-full overflow-x-auto\">\n <div class=\"flex flex-col flex-auto min-w-0\">\n\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 border-b flex flex-row\"\n *ngFor=\"let item of tableDataConfig.columns; let i = index;\">\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [value]=\"item.visible\" [(ngModel)]=\"item.visible\"\n text=\"Visiblity\"></dx-check-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"item.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Caption</div>\n <dx-text-box [(ngModel)]=\"item.caption\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2 w-full\">\n <div class=\"text-md mb-2\"> UI Function</div>\n <dx-select-box [items]=\"enrichNameList\" [(ngModel)]=\"item.enrichName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 mt-6 w-full\">\n <dx-check-box [value]=\"item.isShowBar\" [(ngModel)]=\"item.isShowBar\"\n text=\"Allow Bar\"></dx-check-box>\n </div>\n\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\">Color</div>\n <dx-color-box [(ngModel)]=\"item.color\"></dx-color-box>\n </div>\n <div class=\"text-center mt-8 w-full\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== tableDataConfig.columns.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </div>\n </div>\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n <div *ngIf=\"activeTab === 'properties'\">\n <div class=\"h-full overflow-x-auto\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-row justify-between border-b py-3\">\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableClickEvent\"\n [(ngModel)]=\"viewProperties.enableClickEvent\"\n text=\"Enable Click Event\"></dx-check-box>\n </div>\n <div class=\"mx-2\">\n <dx-check-box [value]=\"viewProperties.enableRightClickEvent\"\n [(ngModel)]=\"viewProperties.enableRightClickEvent\"\n text=\"Enable Right Click\"></dx-check-box>\n </div>\n </div>\n <div class=\"w-full p-2\" *ngIf=\"viewProperties.enableClickEvent\">\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Event\n Type\n Option\n </div>\n <div class=\"w-full p-3 border-x border-b \">\n <div class=\"flex flex-row\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Event Type</div>\n </div>\n <div class=\"w-full\">\n <dx-select-box [items]=\"['drilldown','optionalDrillDown']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType == 'drilldown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\" [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType == 'optionalDrillDown'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <ng-container\n *ngFor=\"let item of optionalDrilDownDataSource;let i = index;\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Associated Views</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"item.viewId\" valueExpr=\"viewId\"\n displayExpr=\"viewName\" [showSelectionControls]=\"true\"\n [maxDisplayedTags]=\"2\"\n [searchEnabled]=\"true\"></dx-tag-box>\n\n </div>\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"item.filterCondition\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <button\n class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteAssociatedParams(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"flex flex-row justify-end mt-4\">\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addAssociatedParams()\">Add\n Params</button>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n </div>\n </ng-container>\n <button class=\"{{commonService.btn_light_md}} cursor-pointer mt-2\"\n (click)=\"resetViewProprstise()\">Reset All</button>\n </div>\n </div>\n\n </div>\n\n\n </div>\n</div>\n\n<div class=\"flex flex-row border-t pl-3\">\n <div class=\"flex justify-start mx-1\">\n <button class=\"{{commonService.btn_warning_md}} cursor-pointer mt-2\" (click)=\"viewMapForTest()\">\n Preview</button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mt-2\" (click)=\"isJsonPreview = false\">Data\n Preview</button>\n </div>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit</button>\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from './../../moment-helper';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { CommonService } from '../../common';\nimport { kpicommonService } from '../../kpi-service';\n\n@Component({\n selector: 'app-create-comp-view',\n templateUrl: './create-comp-view.component.html',\n styleUrls: ['./create-comp-view.component.scss']\n})\nexport class CreateCompViewComponent implements OnInit {\n @Input() kpiTreeData: any\n isLoader: boolean;\n isGenerate: boolean;\n isCreateNewView: boolean;\n isKpiSelected: boolean;\n isKpiConfigSelected: boolean;\n apiConfigData: any;\n singleDataSetConfig: any;\n selectedDataSet: any = {};\n dataSourceModal: any;\n\n dataSettableDataSource: any;\n isDuplidateView: boolean;\n isFilterInputs: boolean = false;\n selectedDataSetOnedit: any = {};\n selectedViewType: any;\n creatCompViewObject: any = {};\n componentNamesOthers = [\n { \"compName\": \"GammaTodayPreviousComponent\", \"item\": \"Today vs Previous Day \" },\n { \"compName\": \"GammaTableWithPercentageComponent\", \"item\": \"Table View with percentage\" },\n { \"compName\": \"GammSingleNumberCardComponent\", \"item\": \"Single Number Card\" },\n { \"compName\": \"GammaGeoChartComponent\", \"item\": \"Geo Chart\" }\n ]\n componentName: any;\n\n defaultStartDate;\n defaultEndDate;\n inputViewId: any;\n\n @Input() isHeader: boolean = true;\n @Input('selectedViewId')\n set selectedViewId(value) {\n if (this.dataSettableDataSource && this.dataSettableDataSource.length !== 0) {\n this.selectedViewType = undefined;\n if (value) {\n this.getViewById(value);\n } else {\n\n this.getDataSet();\n }\n } else {\n this.inputViewId = value;\n this.getDataSet();\n }\n\n }\n\n constructor(\n private toastr: ToastrService,\n public commonService: CommonService,\n private service: ApplicationContentService,\n private kpiService: kpicommonService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n\n }\n\n ngOnInit(): void {\n this.defaultStartDate = moment().subtract('30', 'days').format('YYYY-MM-DD');\n this.defaultEndDate = moment().subtract('1', 'days').format('YYYY-MM-DD');\n this.creatCompViewObject = {\n \"viewName\": \"\",\n \"viewLabel\": \"\",\n \"viewType\": this.selectedViewType\n }\n\n\n this.getDataSet();\n\n }\n getViewType(e) {\n this.isKpiConfigSelected = false;\n this.isKpiSelected = false;\n this.isGenerate = false;\n this.isCreateNewView = false;\n }\n\n\n getDataSet() {\n this.service.getAppDatasetConfigs().subscribe({\n next: (data: any) => {\n\n this.dataSettableDataSource = data;\n let viewId = this.activatedRoute.snapshot.queryParams['viewId'];\n let contentType = this.activatedRoute.snapshot.queryParams['contentType'];\n if (contentType == \"clone\") {\n this.isDuplidateView = true;\n }\n\n if (viewId) {\n this.getViewById(viewId);\n }\n if (this.inputViewId) {\n this.getViewById(this.inputViewId);\n }\n\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n\n }\n })\n }\n\n getViewById(viewId) {\n this.service.getAppViewConfig(viewId).subscribe({\n next: (data: any) => {\n this.creatCompViewObject = data;\n this.selectedViewType = data.viewType;\n this.selectedDataSet = this.dataSettableDataSource.find(dataset => dataset.datasetId === data.datasetId);\n this.selectedDataSetOnedit = this.dataSettableDataSource.find(dataset => dataset.datasetId === data.datasetId);\n if (this.selectedViewType == \"others\") {\n this.componentName = data.kpiConfig.componentName;\n }\n\n this.selectedDataSet['selectedWidgetConfig'] = data['kpiConfig'];\n\n // if (this.selectedDataSet.datasetType !== 'sqlQuery') {\n // this.createNewView();\n // }\n\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n }\n })\n }\n\n getDataSetName(datasetId) {\n const foundObject = this.dataSettableDataSource.find(dataset => dataset.datasetId === datasetId);\n if (foundObject) {\n return foundObject.datasetName;\n }\n }\n\n getDataSetDetails(event) {\n this.selectedDataSet = this.dataSettableDataSource.find(dataset => dataset.datasetId === event.value);\n if (this.selectedDataSet.datasetType == \"querybuilder\") {\n this.isFilterInputs = true;\n } else if (this.selectedDataSet.datasetType == \"simpleApi\") {\n this.isFilterInputs = true;\n } else if (this.selectedDataSet.datasetType == \"plainjson\") {\n this.isFilterInputs = false;\n } else if (this.selectedDataSet.datasetType == \"sqlQuery\") {\n this.isFilterInputs = true;\n } else {\n this.isFilterInputs = false;\n }\n }\n\n\n getKpiSingleConfig(event) {\n this.singleDataSetConfig = event.value;\n this.isKpiConfigSelected = true;\n }\n\n generateDataSet() {\n\n }\n\n getDataSetForMongo(dataset) {\n this.dataSourceModal = {};\n let apiJsonObject = {\n requestId: dataset.config.serviceId,\n };\n if (dataset.config.fixOperationLevles && dataset.config.fixOperationLevles.length != 0) {\n for (const item of dataset.config.fixOperationLevles) {\n Object.assign(apiJsonObject, item);\n }\n }\n const mon_config = this.kpiService.getAllSeviceApiJson(apiJsonObject);\n this.service.getData(mon_config, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload;\n this.dataSourceModal['requestId'] = dataset.config.serviceId;\n this.dataSourceModal['api'] = dataset.config.api;\n this.dataSourceModal['selectedViewType'] = this.selectedViewType;\n this.dataSourceModal['selectedWidgetConfig'] = (this.selectedDataSet.selectedWidgetConfig) ? this.selectedDataSet.selectedWidgetConfig : undefined;\n this.isLoader = false;\n this.isGenerate = true;\n\n }\n })\n }\n\n getDatasetForImpala(dataset) {\n let request = dataset.config.queryConfig;\n this.dataSourceModal = {};\n let transformedObject: any = {};\n for (let item of request.reqFields) {\n const key = Object.keys(item)[0];\n const value = Object.values(item)[0];\n if (key === 'startDate') {\n transformedObject.recordDate = value;\n } else {\n transformedObject[key] = value;\n }\n }\n\n\n transformedObject['measures'] = request.measures;\n transformedObject['dimensions'] = request.dimensions;\n\n // transformedObject['filters'] = request.mapedFilters;\n transformedObject['filters'] = this.transformDataForMFilter([], request.mapedFilters);\n\n transformedObject['sorters'] = request.sorters;\n transformedObject[\"paginationRequired\"] = false;\n console.log(transformedObject);\n const columnData = this.transformColumnsForColumns(request.columns);\n this.service.getData(transformedObject, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data['dataset'];\n this.dataSourceModal['data'] = payload;\n this.dataSourceModal['requestId'] = dataset.config.serviceId;\n this.dataSourceModal['api'] = dataset.config.api;\n this.dataSourceModal['columnData'] = columnData;\n this.dataSourceModal['selectedViewType'] = this.selectedViewType;\n this.dataSourceModal['selectedWidgetConfig'] = (this.selectedDataSet.selectedWidgetConfig) ? this.selectedDataSet.selectedWidgetConfig : undefined;\n\n this.isLoader = false;\n this.isGenerate = true;\n\n }\n })\n\n }\n\n\n transformColumnsForColumns(inputColumns) {\n const columns = [];\n\n inputColumns.forEach(col => {\n columns.push({\n dataField: col.dataField,\n visible: true,\n caption: col.caption,\n });\n });\n\n return columns;\n }\n\n\n transformDataForMFilter(filterdata, mapData) {\n\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n value: mapping.defaultValue\n };\n\n const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n if (filter) {\n if (mapping.defaultValue === \"\") {\n const value = filter[mapping.localColumn];\n\n if (Array.isArray(value)) {\n resultObj.operator = \"in\";\n resultObj.value = value;\n } else {\n resultObj.value = value;\n }\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n }\n } else if (mapping.defaultValue === \"\") {\n return;\n }\n result.push(resultObj);\n });\n result = result.filter(obj => obj.value !== null && obj.value !== \"\");\n return result;\n }\n\n getDatasetForSimpleApiImpala(dataset: any) {\n this.dataSourceModal = {};\n let filters = {\n startDate: this.defaultStartDate,\n endDate: this.defaultEndDate\n }\n dataset.config.queryConfig.mapedFilters.forEach(filter => {\n if (filters.hasOwnProperty(filter.localColumn)) {\n filter.defaultValue = filters[filter.localColumn];\n }\n });\n\n if (dataset.config.apiType === \"post\") {\n let serviceJson: any = {};\n dataset.config.queryConfig.mapedFilters.forEach((filter: any) => {\n let datecolumn = filter.serverColumn.toLowerCase();\n if (datecolumn.includes('date') && typeof filter.dataType === 'string') {\n serviceJson[filter.serverColumn] = moment(filter.defaultValue, \"YYYYMMDD\").format(\"YYYY-MM-DD\");\n } else {\n serviceJson[filter.serverColumn] = filter.defaultValue;\n }\n });\n\n this.service.getSimpleApiPostRequest(dataset.config.api, serviceJson).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload;\n this.dataSourceModal['requestId'] = dataset.config.serviceId;\n this.dataSourceModal['api'] = dataset.config.api;\n this.dataSourceModal['selectedViewType'] = this.selectedViewType;\n this.dataSourceModal['selectedWidgetConfig'] = (this.selectedDataSet.selectedWidgetConfig) ? this.selectedDataSet.selectedWidgetConfig : undefined;\n this.isLoader = false;\n this.isGenerate = true;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n } else if (dataset.config.apiType === \"get\") {\n // Construct GET URL with parameters\n let requestUrl = dataset.config.api + \"?\";\n dataset.config.queryConfig.mapedFilters.forEach((filter: any, index: number) => {\n requestUrl += `${filter.serverColumn}=${filter.defaultValue}`;\n if (index < dataset.config.queryConfig.mapedFilters.length - 1) {\n requestUrl += \"&\";\n }\n });\n\n // Make GET request\n this.service.getSimpleApiGetRequest(requestUrl).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload;\n this.dataSourceModal['requestId'] = dataset.config.serviceId;\n this.dataSourceModal['api'] = dataset.config.api;\n this.dataSourceModal['selectedViewType'] = this.selectedViewType;\n\n this.dataSourceModal['selectedWidgetConfig'] = (this.selectedDataSet.selectedWidgetConfig) ? this.selectedDataSet.selectedWidgetConfig : undefined;\n this.isLoader = false;\n this.isGenerate = true;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n }\n getEditDataSet() {\n let contentViewId = this.activatedRoute.snapshot.queryParams['pageId'];\n if (this.selectedDataSet.datasetId) {\n if (contentViewId) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'datasetId': this.selectedDataSet.datasetId,\n 'viewId': this.creatCompViewObject.viewId,\n 'pageId': contentViewId\n }\n };\n this.router.navigate(['apps/controlPanel/applicationDataset'], navigation);\n } else {\n let navigation: NavigationExtras = {\n queryParams: {\n 'datasetId': this.selectedDataSet.datasetId,\n 'viewId': this.creatCompViewObject.viewId,\n\n }\n };\n this.router.navigate(['apps/controlPanel/applicationDataset'], navigation);\n }\n\n\n }\n }\n createNewView() {\n this.isLoader = true;\n this.isGenerate = false;\n if (this.selectedDataSet.selectedWidgetConfig) {\n this.isLoader = true;\n }\n\n if (this.selectedDataSet.datasetType == \"mongo\") {\n this.getDataSetForMongo(this.selectedDataSet);\n } else if (this.selectedDataSet.datasetType == \"querybuilder\") {\n this.getDatasetForImpala(this.selectedDataSet);\n } else if (this.selectedDataSet.datasetType == \"simpleApi\") {\n this.getDatasetForSimpleApiImpala(this.selectedDataSet);\n } else if (this.selectedDataSet.datasetType == \"plainjson\") {\n this.getDatasetForPlainJson(this.selectedDataSet);\n } else if (this.selectedDataSet.datasetType == \"sqlQuery\") {\n this.getDatasetForSqlTemplate(this.selectedDataSet);\n } else {\n // this.getDatasetForImpala(this.selectedDataSet)\n }\n }\n\n\n createOtherComponentView() {\n this.creatCompViewObject['datasetId'] = this.selectedDataSet['datasetId'];\n this.creatCompViewObject['kpiConfig'] = {\n \"serviceId\": \"\",\n \"api\": \"\",\n \"displayType\": \"chart\",\n \"formate\": \"\",\n \"componentName\": this.componentName,\n \"dataConfig\": {\n }\n };\n this.isLoader = true;\n if (this.isDuplidateView) {\n this.createAppConfigView();\n } else {\n if (this.creatCompViewObject['viewId']) {\n this.service.updateAppViewConfig(this.creatCompViewObject).subscribe({\n next: (data: any) => {\n this.creatCompViewObject = {\n \"viewName\": \"\",\n \"viewLabel\": \"\",\n \"viewType\": \"\"\n }\n this.isCreateNewView = false;\n this.toastr.success('View Update Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n }\n })\n } else {\n this.createAppConfigView();\n }\n }\n }\n\n\n\n\n\n\n getCapitalize(item: string) {\n return this.commonService.convertToSpaceSeparatedCapitalized(item)\n }\n getFilter(item) {\n let col_name = item.toLowerCase();\n if (col_name.includes('date')) {\n return true;\n } else {\n return false;\n }\n }\n\n startDateChange(e, item) {\n this.isCreateNewView = false;\n if (this.selectedDataSet.datasetType == \"simpleApi\") {\n item.defaultValue = moment(e.value).format(\"YYYY-MM-DD\")\n } else {\n item.defaultValue = moment(e.value).format(\"YYYY-MM-DD\")\n }\n\n }\n\n gotoViewsset() {\n this.router.navigate(['/apps/controlPanel/applicationViews/'])\n }\n\n\n getEmitNewTableConfig(data) {\n data['datasetId'] = this.selectedDataSet['datasetId'];\n this.createViewConfig(data);\n\n // this.getViewComponentConfig.emit(data);\n }\n\n\n getEmitNewChartCongig(data) {\n data['datasetId'] = this.selectedDataSet['datasetId'];\n this.createViewConfig(data);\n\n // this.getViewComponentConfig.emit(data);\n }\n\n getEmitNewOtherSetCongig(data) {\n data['datasetId'] = this.selectedDataSet['datasetId'];\n this.createViewConfig(data);\n // this.getViewComponentConfig.emit(data);\n }\n\n createViewConfig(data) {\n this.creatCompViewObject['datasetId'] = data['datasetId'];\n this.creatCompViewObject['viewType'] = this.selectedViewType;\n this.isLoader = true;\n this.creatCompViewObject['kpiConfig'] = data['kpiConfig'];\n if (this.selectedViewType == \"others\") {\n this.creatCompViewObject['kpiConfig'].componentName = this.componentName;\n }\n console.log(this.creatCompViewObject);\n if (this.isDuplidateView) {\n this.createAppConfigView();\n } else {\n if (this.creatCompViewObject['viewId']) {\n this.service.updateAppViewConfig(this.creatCompViewObject).subscribe({\n next: (data: any) => {\n this.isCreateNewView = false;\n this.isLoader = false;\n this.toastr.success('View Update Successfully')\n if (this.isHeader) {\n this.router.navigate(['/apps/controlPanel/applicationViews/'])\n\n }\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n }\n })\n } else {\n this.createAppConfigView();\n }\n }\n }\n\n createAppConfigView() {\n this.service.createAppViewConfig(this.creatCompViewObject).subscribe({\n next: (data: any) => {\n\n this.toastr.success('View Created Successfully')\n this.creatCompViewObject = {\n \"viewName\": \"\",\n \"viewLabel\": \"\",\n \"viewType\": \"\"\n }\n this.isLoader = false;\n if (this.isHeader) {\n this.router.navigate(['/apps/controlPanel/applicationViews/'])\n\n }\n // this.addNewView();\n\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n }\n })\n }\n\n addNewView() {\n this.creatCompViewObject = {\n \"viewName\": \"\",\n \"viewLabel\": \"\",\n \"viewType\": \"\"\n }\n this.isGenerate = false;\n this.selectedDataSetOnedit = {};\n this.router.navigate([], {\n queryParams: {\n 'viewId': null,\n 'contentType': null,\n },\n queryParamsHandling: 'merge'\n })\n }\n\n\n getDatasetForPlainJson(dataset) {\n let requestapi = dataset.config.api + '?datasetId=' + dataset.datasetId;\n this.service.getJsonDatasetPayload(requestapi).subscribe({\n next: (data: any) => {\n this.dataSourceModal['data'] = data.slice(0, 1);\n this.isLoader = false;\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n\n getDatasetForSqlTemplate(dataset) {\n let requestAp = dataset.config.api;\n this.dataSourceModal = {};\n let request_params = {\n 'dbConfig': dataset.config.queryConfig.dbConfig,\n 'databaseName': dataset.config.queryConfig.databaseName,\n 'filters': this.transformDataForMFilterForSQl(dataset.config.queryConfig.mapedFilters),\n 'templateQuery': dataset.config.queryConfig.templateQuery,\n }\n\n this.service.genericSqlQueryResponse(requestAp, request_params).subscribe({\n next: (data: any) => {\n\n const payload = data[\"Payload\"] || data;\n this.dataSourceModal['data'] = payload;\n this.dataSourceModal['requestId'] = dataset.config.serviceId;\n this.dataSourceModal['api'] = dataset.config.api;\n this.dataSourceModal['selectedViewType'] = this.selectedViewType;\n this.dataSourceModal['selectedWidgetConfig'] = (this.selectedDataSet.selectedWidgetConfig) ? this.selectedDataSet.selectedWidgetConfig : undefined;\n this.isLoader = false;\n this.isGenerate = true;\n\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n }\n\n\n transformDataForMFilterForSQl(mapData) {\n\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n aliasColumnName: mapping.localColumn,\n // value: (mapping.operatorName == \"in\" || mapping.operatorName == \"notIn\") ? [mapping.defaultValue] : mapping.defaultValue\n value: mapping.defaultValue\n };\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n\n result.push(resultObj);\n });\n return result;\n }\n\n\n}\n","<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Views Editor'\" *ngIf=\"isHeader\"></lib-common-header>\n\n\n\n <div>\n <div class=\"p-2 w-full\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Dataset List <span *ngIf=\"isFilterInputs\"\n class=\"text-blue-500 cursor-pointer\"><i class=\"fa fa-pencil\"\n (click)=\"getEditDataSet()\"></i></span></div>\n <dx-select-box [items]=\"dataSettableDataSource\" (onValueChanged)=\"getDataSetDetails($event)\"\n displayExpr=\"datasetName\" valueExpr=\"datasetId\" [searchEnabled]=\"true\"\n [value]=\"selectedDataSetOnedit.datasetId\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Select View Type</div>\n <dx-select-box [items]=\"['chart','table','groupTable','others']\" [(ngModel)]=\"selectedViewType\"\n (onValueChanged)=\"getViewType($event)\"></dx-select-box>\n </div>\n <ng-container *ngIf=\"selectedViewType =='others'\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Select Component</div>\n <dx-select-box [items]=\"componentNamesOthers\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"componentName\"></dx-select-box>\n </div>\n </ng-container>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">View Name</div>\n <dx-text-box [(ngModel)]=\"creatCompViewObject.viewName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">View Label</div>\n <dx-text-box [(ngModel)]=\"creatCompViewObject.viewLabel\"></dx-text-box>\n </div>\n </div>\n <ng-container *ngIf=\"isFilterInputs\">\n <div class=\"flex flex-row mt-2\">\n <ng-container *ngFor=\"let request of selectedDataSet.config.queryConfig.mapedFilters\">\n <div class=\"m-2\">\n <div class=\"text-md mb-1\"> {{getCapitalize(request.localColumn)}}</div>\n <dx-date-box displayFormat=\"yyyy-MM-dd\" type=\"date\"\n (onValueChanged)=\"startDateChange($event,request)\"\n *ngIf=\"getFilter(request.localColumn)\">\n </dx-date-box>\n <dx-text-box [(ngModel)]=\"request.defaultValue\"\n *ngIf=\"!getFilter(request.localColumn)\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <div class=\"flex flex-row mt-5 justify-center items-center\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"addNewView()\">\n Reset View\n </button>\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer mx-4 my-2\" (click)=\"createNewView()\">\n Proceed\n </button>\n\n </div>\n <div class=\"m-5 border\">\n <div class=\"m-2\">\n <div class=\"mt-5\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <!-- for chart view -->\n <ng-container *ngIf=\"isGenerate\">\n <ng-container *ngIf=\"selectedViewType == 'chart'\">\n <app-dash-chart [datasetmodal]=\"dataSourceModal\"\n (getChartConfigOutPut)=\"getEmitNewChartCongig($event)\"></app-dash-chart>\n </ng-container>\n <!-- for table view -->\n <ng-container *ngIf=\"selectedViewType == 'table' || selectedViewType == 'groupTable'\">\n <app-dash-table [datasetmodal]=\"dataSourceModal\"\n (getTableConfigOutPut)=\"getEmitNewTableConfig($event)\"></app-dash-table>\n </ng-container>\n <!-- for others view -->\n <ng-container *ngIf=\"selectedViewType == 'others'\">\n <ng-container *ngIf=\"componentName == 'GammaTableWithPercentageComponent'\">\n <app-table-with-bar [datasetmodal]=\"dataSourceModal\"\n (createOtherComponentView)=\"getEmitNewOtherSetCongig($event)\"></app-table-with-bar>\n </ng-container>\n <ng-container\n *ngIf=\"componentName == 'GammaGeoChartComponent' && componentName != 'GammaTableWithPercentageComponent'\">\n <!-- <app-gamma-geo-chart></app-gamma-geo-chart> -->\n <app-geo-map [datasetmodal]=\"dataSourceModal\"\n (createOtherComponentView)=\"getEmitNewOtherSetCongig($event)\"></app-geo-map>\n </ng-container>\n <ng-container\n *ngIf=\"componentName != 'GammaTableWithPercentageComponent' && componentName != 'GammaGeoChartComponent'\">\n <!-- <app-dash-other [datasetmodal]=\"dataSourceModal\"\n (createOtherComponentView)=\"getEmitNewOtherSetCongig($event)\"></app-dash-other> -->\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport moment from './../../../moment-helper';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamma-today-previous',\n templateUrl: './gamma-today-previous.component.html',\n styleUrls: ['./gamma-today-previous.component.scss']\n})\nexport class GammaTodayPreviousComponent implements OnInit {\n // chart_attr.legend[0]\n objectdataSource: any;\n isChartvisible: boolean;\n isLoader: boolean;\n page_config: any;\n currentDateData: any;\n prevousDaysData: any;\n calculatedValue: any;\n constructor(\n private cdr: ChangeDetectorRef,\n public commonService: CommonService\n ) { }\n\n @Input('chartDataSource')\n set chartDataSource(value) {\n this.objectdataSource = value;\n // console.log(value);\n if (this.objectdataSource === undefined || this.objectdataSource.length === 0) {\n this.isChartvisible = false;\n return;\n } else {\n this.isLoader = true;\n // this.keyTopass = value.kpiConfig.keyToPass;\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n this.page_config = value;\n const sortedData = value.kpiConfig.dataSource.sort((a, b) => {\n return moment(b.recordDate, \"YYYY-MM-DD\").diff(moment(a.recordDate, \"YYYY-MM-DD\"));\n });\n\n // Step 2: Get the most recent and previous dates\n this.currentDateData = sortedData[0];\n this.prevousDaysData = sortedData[1];\n let calValue = Math.abs((parseInt(this.getDynamicValue(this.currentDateData)) - parseInt(this.getDynamicValue(this.prevousDaysData))) / parseInt(this.getDynamicValue(this.currentDateData)));\n this.calculatedValue = this.commonService.reformatNumberWithThousandSeparatorV4(calValue, 3)\n this.isLoader = false;\n } else {\n\n }\n\n }\n }\n\n\n ngOnInit(): void {\n }\n\n getDynamicValue(data: any): number | string | any {\n const keys = Object.keys(data);\n const dynamicKey = keys.find(key => !key.toLowerCase().includes('date'));\n if (dynamicKey) {\n let value = data[dynamicKey];\n const numericValue = Number(value);\n if (!isNaN(numericValue)) {\n // let cal_number = Math.abs(numericValue)\n return this.commonService.abbreviateNumber(numericValue);\n }\n return value;\n }\n return null;\n }\n formatNumber(value) {\n if (value >= 1e9) {\n return (value / 1e9).toFixed(1) + 'B';\n } else if (value >= 1e6) {\n return (value / 1e6).toFixed(1) + 'M';\n } else if (value >= 1e3) {\n return (value / 1e3).toFixed(1) + 'K';\n } else {\n return value.toString();\n }\n }\n}\n","<div class=\"flex justify-center items-start bg-gray-800 p-3 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"w-full\">\n <div class=\"text-teal-400 text-5xl font-semibold\">{{ getDynamicValue(currentDateData) }}</div>\n <div class=\"text-gray-400 text-sm font-light m-2\">\n Prevous: {{ getDynamicValue(prevousDaysData) }}\n <span class=\"text-teal-400\">({{calculatedValue}}%)</span>\n </div>\n </div>\n\n </ng-container>\n\n</div>","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, catchError, map, Observable, throwError } from 'rxjs';\nimport { AppHttpService } from '../app.http.service';\nimport { environment } from '../environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KpiApiService extends AppHttpService {\n\n\n constructor(private httpClient: HttpClient) {\n super(httpClient)\n }\n\n private kpiFilter = new BehaviorSubject<any>([]);\n userkpiFilter$ = this.kpiFilter.asObservable();\n\n getFilterForKpi(pins: any) {\n this.kpiFilter.next(pins);\n }\n\n getCurrentKpiFilterValue() {\n return this.kpiFilter.getValue();\n }\n\n getData(body, requestID): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + requestID, JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getDataByAPI(requestID, body): any {\n return this.http\n .post(environment.appUrl + environment.apiVersion + requestID, JSON.stringify(body), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getUniqueData(api): Observable<Response> {\n return this.http\n .get(environment.appUrl + environment.apiVersion + api, { withCredentials: true })\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getCdrData(api, url): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + api + '?' + url)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getMapData(body, requestID): any {\n // const apiUrl = '/assets/api-data/mapjson.json';\n const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/mapjson.json';\n\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: any): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getfilterData(): any {\n return this.http\n .get(\"/assets/api-data/filter-direction.json\")\n // .get(environment.appUrl + environment.apiVersion + api + '?'+ url )\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n getSrvTypeDataSource(): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi/srv-params';\n // const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/srv_type_params.json';\n return this.http\n .get(apiUrl, { withCredentials: true })\n // .get(environment.appUrl + environment.apiVersion + api + '?'+ url )\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n pagintedActivityLogs(parms, api): Observable<any> {\n const apiUrl = environment.appUrl + environment.apiVersion + api;\n return this.http\n .post(apiUrl, JSON.stringify(parms), this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getApiData(): any {\n // const apiUrl = environment.appUrl + environment.apiVersion + '/app-setting/getIntegratedApps';\n const apiUrl = '/assets/api-data/api-service.json';\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n getKpiBrowserConfigById(id): any {\n const apiUrl = environment.appUrl + environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;\n return this.http\n .get(apiUrl, { withCredentials: true })\n .pipe(map((response: Response) => {\n return response;\n }), catchError(this.handleError));\n\n }\n\n getAppPageDetailConfig(pageId): any {\n return this.http\n .get(environment.appUrl + environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)\n .pipe(map((response: Response): any => {\n return response;\n }),\n catchError(this.handleError));\n }\n\n getDashBoardJson(): any {\n // const apiUrl = '/assets/api-data/dashboard.json';\n const apiUrl = environment.gatewayUrl + environment.appName + '/assets/api-data/dashboard.json';\n return this.http.get(apiUrl, { withCredentials: true }).pipe(\n map((response: Response) => {\n return response;\n }),\n catchError(this.handleError)\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CommonService } from '../common';\n@Injectable({\n providedIn: 'root'\n})\n\nexport class kpicommonService {\n\n constructor(public commonService: CommonService) {\n\n }\n\n getAllSeviceApiJson(apiJsonObject) {\n\n let service_api: any;\n service_api = {\n requestId: apiJsonObject.requestId,\n filter: {\n conditionGroup: {\n connector: \"and\",\n conditions: [\n\n ],\n },\n },\n };\n\n if (apiJsonObject.startDate !== undefined && apiJsonObject.startDate !== null && apiJsonObject.startDate !== \"\") {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"startDate\",\n targetName: \"record_date\",\n operator: \"greaterThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.startDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },);\n }\n if (apiJsonObject.endDate !== undefined && apiJsonObject.endDate !== null && apiJsonObject.endDate !== \"\") {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"endDate\",\n targetName: \"record_date\",\n operator: \"lessThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.endDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },);\n }\n\n if (apiJsonObject.srvType !== undefined && apiJsonObject.srvType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"srvType\",\n targetName: \"srv_type\",\n operator: Array.isArray(apiJsonObject.srvType) ? \"in\" : (typeof apiJsonObject.srvType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.srvType,\n });\n }\n if (apiJsonObject.recordType !== undefined && apiJsonObject.recordType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"recordType\",\n \"targetName\": \"record_type\",\n \"operator\": Array.isArray(apiJsonObject.recordType) ? \"in\" : (typeof apiJsonObject.recordType === \"string\" ? \"equals\" : \"\"),\n \"type\": \"string\",\n \"value\": apiJsonObject.recordType\n });\n }\n if (\n apiJsonObject.sourceValue !== undefined && apiJsonObject.sourceValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"source\",\n targetName: \"source\",\n operator: Array.isArray(apiJsonObject.sourceValue) ? \"in\" : (typeof apiJsonObject.sourceValue === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.sourceValue,\n });\n }\n if (\n apiJsonObject.inTrunk !== undefined && apiJsonObject.inTrunk !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"inTrunk\",\n targetName: \"in_trunk\",\n operator: Array.isArray(apiJsonObject.inTrunk) ? \"in\" : (typeof apiJsonObject.inTrunk === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.inTrunk,\n });\n }\n if (\n apiJsonObject.outTrunk !== undefined && apiJsonObject.outTrunk !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"outTrunk\",\n targetName: \"out_trunk\",\n operator: Array.isArray(apiJsonObject.outTrunk) ? \"in\" : (typeof apiJsonObject.outTrunk === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.outTrunk,\n });\n }\n if (\n apiJsonObject.eventType !== undefined && apiJsonObject.eventType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventType\",\n targetName: \"event_type\",\n operator: apiJsonObject.eventType.length > 1 ? \"equals\" : \" notequals\",\n type: \"string\",\n value: apiJsonObject.eventType,\n });\n }\n if (\n apiJsonObject.eventTypeKey !== undefined && apiJsonObject.eventTypeKey !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventTypeKey\",\n targetName: \"event_type\",\n operator: apiJsonObject.eventTypeKey.length > 1 ? \"in\" : \"equals\",\n type: \"string\",\n value: apiJsonObject.eventTypeKey,\n });\n }\n if (\n apiJsonObject.event !== undefined && apiJsonObject.event !== null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"event_type\",\n \"targetName\": \"event_type\",\n \"operator\": Array.isArray(apiJsonObject.event) ? \"in\" : (typeof apiJsonObject.event === \"string\" ? \"equals\" : \"\"),\n \"type\": \"string\",\n \"value\": apiJsonObject.event\n });\n }\n\n if (\n apiJsonObject.direction !== undefined && apiJsonObject.direction !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"direction\",\n targetName: \"direction\",\n operator: Array.isArray(apiJsonObject.direction) ? \"in\" : (typeof apiJsonObject.direction === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.direction,\n });\n }\n if (apiJsonObject.country !== undefined && apiJsonObject.country !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"country\",\n targetName: \"country\",\n operator: Array.isArray(apiJsonObject.country) ? \"in\" : (typeof apiJsonObject.country === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.country,\n });\n }\n if (apiJsonObject.apn !== undefined && apiJsonObject.apn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"apn\",\n targetName: \"apn\",\n operator: Array.isArray(apiJsonObject.apn) ? \"in\" : (typeof apiJsonObject.apn === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.apn,\n });\n }\n if (\n apiJsonObject.nw_call_type !== undefined && apiJsonObject.nw_call_type !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"nw_call_type\",\n targetName: \"nw_call_type\",\n operator: Array.isArray(apiJsonObject.nw_call_type) ? \"in\" : (typeof apiJsonObject.nw_call_type === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.nw_call_type,\n });\n }\n if (\n apiJsonObject.ratingGroup !== undefined && apiJsonObject.ratingGroup !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"ratingGroup\",\n targetName: \"rating_group\",\n operator: Array.isArray(apiJsonObject.ratingGroup) ? \"in\" : (typeof apiJsonObject.ratingGroup === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.ratingGroup,\n });\n }\n if (\n apiJsonObject.terminationValue !== undefined && apiJsonObject.terminationValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"terminationCode\",\n targetName: \"term_code\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.terminationValue,\n });\n }\n if (\n apiJsonObject.cellIdValue !== undefined && apiJsonObject.cellIdValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"cellId\",\n targetName: \"cell_id\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.cellIdValue,\n });\n }\n if (\n apiJsonObject.exceptionType !== undefined && apiJsonObject.exceptionType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"exceptionType\",\n targetName: \"exception_type\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.exceptionType\n });\n }\n if (\n apiJsonObject.offerName !== undefined && apiJsonObject.offerName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"offerName\",\n targetName: \"offer_name\",\n operator: Array.isArray(apiJsonObject.offerName) ? \"in\" : (typeof apiJsonObject.offerName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.offerName\n });\n }\n if (\n apiJsonObject.balanceTypeIdIn !== undefined && apiJsonObject.balanceTypeIdIn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeIdIn\",\n targetName: \"balance_type_id\",\n operator: \"in\",\n type: \"string\",\n value: apiJsonObject.balanceTypeIdIn\n });\n }\n if (\n apiJsonObject.balanceTypeName !== undefined && apiJsonObject.balanceTypeName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeName\",\n targetName: \"balance_type_name\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.balanceTypeName\n });\n }\n if (\n apiJsonObject.balanceTypeIdNotIn !== undefined && apiJsonObject.balanceTypeIdNotIn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeIdNotIn\",\n targetName: \"balance_type_id\",\n operator: \"notIn\",\n type: \"string\",\n value: apiJsonObject.balanceTypeIdNotIn\n });\n }\n if (\n apiJsonObject.measurementName !== undefined && apiJsonObject.measurementName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"measurementName\",\n targetName: \"measurement_name\",\n operator: Array.isArray(apiJsonObject.measurementName) ? \"in\" : (typeof apiJsonObject.measurementName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.measurementName\n });\n }\n if (\n apiJsonObject.eventTypeDesc !== undefined && apiJsonObject.eventTypeDesc !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventTypeDesc\",\n targetName: \"event_type_desc\",\n operator: Array.isArray(apiJsonObject.eventTypeDesc) ? \"in\" : (typeof apiJsonObject.eventTypeDesc === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.eventTypeDesc\n });\n }\n if (\n apiJsonObject.other_party_iso !== undefined && apiJsonObject.other_party_iso !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"other_party_iso\",\n targetName: \"other_party_iso\",\n operator: Array.isArray(apiJsonObject.other_party_iso) ? \"in\" : (typeof apiJsonObject.other_party_iso === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.other_party_iso\n });\n }\n if (\n apiJsonObject.iso_country_code !== undefined && apiJsonObject.iso_country_code !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"iso_country_code\",\n targetName: \"iso_country_code\",\n operator: Array.isArray(apiJsonObject.iso_country_code) ? \"in\" : (typeof apiJsonObject.iso_country_code === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.iso_country_code\n });\n }\n if (\n apiJsonObject.servedMsisdn !== undefined && apiJsonObject.servedMsisdn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"servedMsisdn\",\n targetName: \"served_msisdn\",\n operator: Array.isArray(apiJsonObject.servedMsisdn) ? \"in\" : (typeof apiJsonObject.servedMsisdn === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.servedMsisdn\n });\n }\n if (\n apiJsonObject.reasonCode !== undefined && apiJsonObject.reasonCode !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"reasonCode\",\n targetName: \"reason_code\",\n operator: Array.isArray(apiJsonObject.reasonCode) ? \"in\" : (typeof apiJsonObject.reasonCode === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.reasonCode\n });\n }\n if (\n apiJsonObject.staffName !== undefined && apiJsonObject.staffName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"staffName\",\n targetName: \"staff_name\",\n operator: Array.isArray(apiJsonObject.staffName) ? \"in\" : (typeof apiJsonObject.staffName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.staffName\n });\n }\n if (\n apiJsonObject.voucherType !== undefined && apiJsonObject.voucherType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"voucherType\",\n targetName: \"voucher_type\",\n operator: Array.isArray(apiJsonObject.voucherType) ? \"in\" : (typeof apiJsonObject.voucherType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.voucherType\n });\n }\n if (\n apiJsonObject.premiumSmsType !== undefined && apiJsonObject.premiumSmsType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"premiumSmsType\",\n targetName: \"premium_sms_type\",\n operator: Array.isArray(apiJsonObject.premiumSmsType) ? \"in\" : (typeof apiJsonObject.premiumSmsType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.premiumSmsType\n });\n }\n if (\n apiJsonObject.revenue_stream !== undefined && apiJsonObject.revenue_stream !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"revenue_stream\",\n targetName: \"revenue_stream\",\n operator: Array.isArray(apiJsonObject.revenue_stream) ? \"in\" : (typeof apiJsonObject.revenue_stream === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.revenue_stream\n });\n }\n if (\n apiJsonObject.ifrs_type !== undefined && apiJsonObject.ifrs_type !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"ifrs_type\",\n targetName: \"ifrs_type\",\n operator: Array.isArray(apiJsonObject.ifrs_type) ? \"in\" : (typeof apiJsonObject.ifrs_type === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.ifrs_type\n });\n }\n if (\n apiJsonObject.main_offering_name !== undefined && apiJsonObject.main_offering_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"main_offering_name\",\n targetName: \"main_offering_name\",\n operator: Array.isArray(apiJsonObject.main_offering_name) ? \"in\" : (typeof apiJsonObject.main_offering_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.main_offering_name\n });\n }\n if (\n apiJsonObject.offering_name !== undefined && apiJsonObject.offering_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"offering_name\",\n targetName: \"offering_name\",\n operator: Array.isArray(apiJsonObject.offering_name) ? \"in\" : (typeof apiJsonObject.offering_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.offering_name\n });\n }\n if (\n apiJsonObject.main_offering_id !== undefined && apiJsonObject.main_offering_id !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"main_offering_id\",\n targetName: \"main_offering_id\",\n operator: Array.isArray(apiJsonObject.main_offering_id) ? \"in\" : (typeof apiJsonObject.main_offering_id === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.main_offering_id\n });\n }\n if (\n apiJsonObject.transferType !== undefined && apiJsonObject.transferType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"transferType\",\n targetName: \"transfer_type\",\n operator: Array.isArray(apiJsonObject.transferType) ? \"in\" : (typeof apiJsonObject.transferType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.transferType\n });\n }\n if (\n apiJsonObject.free_unit_type_id !== undefined && apiJsonObject.free_unit_type_id !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"free_unit_type_id\",\n targetName: \"free_unit_type_id\",\n operator: Array.isArray(apiJsonObject.free_unit_type_id) ? \"in\" : (typeof apiJsonObject.free_unit_type_id === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.free_unit_type_id\n });\n }\n if (\n apiJsonObject.free_unit_type_name !== undefined && apiJsonObject.free_unit_type_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"free_unit_type_name\",\n targetName: \"free_unit_type_name\",\n operator: Array.isArray(apiJsonObject.free_unit_type_name) ? \"in\" : (typeof apiJsonObject.free_unit_type_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.free_unit_type_name\n });\n }\n return service_api;\n\n }\n\n filterOperationData(data, key) {\n let foundIndex = -1;\n\n // Find the index of the object with the key\n for (let i = 0; i < data.length; i++) {\n if (data[i][key] !== undefined) {\n foundIndex = i;\n break;\n }\n }\n\n // If key not found, return the original data\n if (foundIndex === -1) {\n return data;\n }\n\n // Filter out objects after the found index unless they have 'date' in the key\n return data.filter((obj, index) => {\n if (index <= foundIndex) {\n return true;\n }\n return Object.keys(obj).some(k => k.includes('date'));\n });\n }\n\n dataprocessArrary(arrayOne, arrayTwo) {\n const arrayThree = [];\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const key of arrayTwo) {\n if (key in obj) {\n const value = obj[key];\n const sml_key = key.toLowerCase();\n\n if (typeof value === \"number\") {\n\n if (sml_key === \"count\" || sml_key === \"hour\" || sml_key === \"denomination\" || sml_key.includes(\"count\")) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (sml_key.includes('volume')) {\n if (sml_key == 'billablevolume') {\n matchingProps[key] = this.commonService.formatBytsToGb(value * 1024, 2)\n } else {\n matchingProps[key] = this.commonService.formatBytsToGb(value, 2);\n }\n } else if (sml_key == \"uplink\" || sml_key == \"downlink\") {\n matchingProps[key] = this.commonService.formatBytsToGb(value, 2);\n } else if (this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n } else if (!this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n matchingProps[key] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n\n\n\n processNetworkArray(arrayOne, arrayTwo) {\n const arrayThree = [];\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const key of arrayTwo) {\n\n if (key in obj) {\n const value = obj[key];\n const sml_key = key.toLowerCase();\n\n if (typeof value === \"number\") {\n\n if (sml_key === \"count\" || sml_key === \"hour\") {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (sml_key.includes('volume') || sml_key.includes('upload') || sml_key.includes('download')) {\n if (sml_key == 'billablevolume') {\n matchingProps[key] = this.commonService.formatBytes(value * 1024, 2);\n } else {\n matchingProps[key] = this.commonService.formatBytes(value, 2);\n }\n } else if (sml_key == \"uplink\" || sml_key == \"downlink\") {\n matchingProps[key] = this.commonService.formatBytes(value, 2);\n } else if (this.hasDecimal(value)) {\n if (sml_key === \"blendedrate\") {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 4);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n\n } else if (!this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n\n matchingProps[key] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n processNetworkArrayForFilter(arrayOne, arrayTwo) {\n const arrayThree = [];\n\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const column of arrayTwo) {\n if (column.visible && column.dataField in obj) { // Check if the column is visible and the dataField exists in obj\n const value = obj[column.dataField];\n const dataFieldLower = column.dataField.toLowerCase();\n\n // Assuming commonService is correctly defined elsewhere\n if (typeof value === \"number\") {\n if (dataFieldLower === \"count\" || dataFieldLower === \"hour\") {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (dataFieldLower.includes('volume')) {\n if (dataFieldLower == 'billablevolume') {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value * 1024, 2);\n } else {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value, 2);\n }\n } else if (dataFieldLower == \"uplink\" || dataFieldLower == \"downlink\") {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value, 2);\n } else if (this.hasDecimal(value)) {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n } else if (!this.hasDecimal(value)) {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n matchingProps[column.dataField] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n\n hasDecimal(number) {\n return number % 1 !== 0;\n }\n\n\n}\n","import { Component, OnInit, Input, EventEmitter, Output, ElementRef, ViewChild, HostListener } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from './../../moment-helper';\nimport { kpicommonService } from '../kpi-comon-service';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-gamma-advance-filter',\n templateUrl: './gamma-advance-filter.component.html',\n styleUrls: ['./gamma-advance-filter.component.scss']\n})\nexport class GammaAdvanceFilterComponent implements OnInit {\n @Input() kpiId: any;\n @Input() filterStartDate: any;\n @Input() filterEndDate: any;\n @Input() browser_api_config: any;\n @Input() isButtonDesiable: boolean;\n @Output() public filterDataObject: EventEmitter<any> = new EventEmitter();\n @ViewChild('menuIcon', { static: false }) menuIcon: ElementRef;\n\n isDatesDropDown: boolean;\n quickDateSelector: boolean = false;\n kpiFilterData: any;\n // start_date = moment().subtract(5, 'days').format('YYYY-MM-DD');\n // end_date = moment().format('YYYY-MM-DD');\n defaultStartDate: any;\n defaultEndDate: any;\n isLoader = true;\n\n ranges = [\n { name: \"Today\", value: [moment(), moment()] },\n { name: \"Yesterday\", value: [moment().subtract(1, 'days'), moment().subtract(1, 'days')] },\n { name: \"Last 7 Days\", value: [moment().subtract(7, 'days'), moment().subtract(1, 'days')] },\n { name: \"Last 15 Days\", value: [moment().subtract(15, 'days'), moment().subtract(1, 'days')] },\n { name: 'This Month', value: [moment().startOf('month'), moment().endOf('month')] },\n { name: 'Last 1 Month', value: [moment().subtract(30, 'days'), moment()] },\n { name: 'Last 3 Month', value: [moment().subtract(91, 'days'), moment()] },\n { name: 'Last 6 Month', value: [moment().subtract(182, 'days'), moment()] },\n { name: 'Last 1 Year', value: [moment().subtract(365, 'days'), moment()] }\n ]\n\n @Input('filterOperatorData')\n set filterOperatorData(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.kpiFilterData = [];\n this.kpiFilterData = value;\n this.kpiFilterData.forEach(item => {\n if (item.hasOwnProperty('momentFormate')) {\n item.momentFormat = item.momentFormate;\n delete item.momentFormate;\n }\n });\n this.processFilterForData();\n }\n }\n\n constructor(\n private service: ApplicationContentService,\n private kpiService: kpicommonService,\n private toastr: ToastrService,\n public commonService: CommonService\n ) { }\n\n\n\n ngOnInit(): void {\n this.defaultEndDate = moment().subtract('1', 'days').format('YYYY-MM-DD');\n this.defaultStartDate = moment(this.defaultEndDate).subtract('5', 'days').format('YYYY-MM-DD');\n\n\n }\n\n\n async processFilterForData() {\n for (const filter of this.kpiFilterData) {\n\n this.isLoader = true;\n const startDateFilter = this.kpiFilterData.find(filter => filter.apiName === 'startDate' && (filter.display !== undefined ? filter.display : true));\n const endDateFilter = this.kpiFilterData.find(filter => filter.apiName === 'endDate' && (filter.display !== undefined ? filter.display : true));\n if (startDateFilter && endDateFilter) {\n this.quickDateSelector = true;\n }\n try {\n if (filter.apiName !== 'startDate' && filter.apiName !== 'endDate') {\n if (filter.apiName.includes('/reference/')) {\n const data = await this.service.getFilterDataByDrillDown(filter.apiName).toPromise();\n\n filter['filterDataSource'] = data;\n if (filter.defaultFilterType == \"dynamic\" && filter.defaultFilterValue !== \"\") {\n filter['filterDataSourceValue'] = this.parseContentValue(filter.defaultFilterValue);\n } else {\n filter['filterDataSourceValue'] = \"\";\n }\n } else {\n filter['filterDataSource'] = [];\n }\n\n } else if (filter.filterType == 'date' || filter.filterType == 'datetime') {\n if (filter.display == undefined) {\n filter.display = true;\n }\n if (filter.defaultFilterType == \"dynamic\" && filter.momentFunction !== \"\" && filter.defaultFilterValue !== \"\" && filter.momentFormat !== \"\") {\n if (filter.apiName == \"startDate\") {\n let [count, unit] = filter.defaultFilterValue.split(',');\n filter['filterDataSourceValue'] = moment()[filter.momentFunction](parseInt(count), unit).format(filter.momentFormat);\n }\n if (filter.apiName == \"endDate\") {\n let [count, unit] = filter.defaultFilterValue.split(',');\n filter['filterDataSourceValue'] = moment()[filter.momentFunction](parseInt(count), unit).format(filter.momentFormat);\n }\n }\n }\n }\n catch (err) {\n this.toastr.error(\"Unexpected Server Exception. Please contact System Admin.\", filter.type)\n } finally {\n this.isLoader = false;\n console.log(this.kpiFilterData);\n }\n }\n }\n\n parseContentValue(contentvalue) {\n return contentvalue.split(',').map(item => item.trim());\n }\n\n\n getIsMsisdn(context) {\n let key = context.toLowerCase()\n if (key.includes('msisdn')) {\n return true;\n } else {\n return false;\n }\n }\n\n startDateChange(e) {\n this.defaultStartDate = e.value;\n }\n endDateChange(e) {\n this.defaultEndDate = e.value;\n }\n\n searchByFilter() {\n\n let apiJsonObject: any = {};\n let operationFilter: any = {};\n this.kpiFilterData.forEach(element => {\n if (element.filterType == 'date' || element.filterType == 'datetime') {\n apiJsonObject[element.apiName] = moment(element.filterDataSourceValue).format(element.momentFormat);\n } else {\n if (\n (typeof element.filterDataSourceValue === \"string\" && element.filterDataSourceValue !== \"\") ||\n (Array.isArray(element.filterDataSourceValue) && element.filterDataSourceValue.length > 0)\n ) {\n if (element.operatorName !== \"\") {\n if (element.filterType == \"content\") {\n operationFilter[element.operatorName] = element.filterDataSourceValue;\n } else {\n operationFilter[element.operatorName] = Array.isArray(element.filterDataSourceValue) ? element.filterDataSourceValue : [element.filterDataSourceValue];\n }\n } else {\n apiJsonObject[element.apiName] = element.filterDataSourceValue;\n\n }\n }\n }\n\n });\n\n apiJsonObject['operationFilter'] = operationFilter;\n // let filter_config = {\n // startDate: this.defaultStartDate,\n // endDate: this.defaultEndDate,\n // operationFilter: apiJsonObject\n // }\n // this.isButtonDesiable = false;\n\n console.log(apiJsonObject);\n this.filterDataObject.emit(apiJsonObject);\n\n }\n\n\n\n reseteFilter() {\n this.defaultEndDate = this.filterEndDate;\n this.defaultStartDate = this.filterStartDate;\n this.kpiFilterData.forEach(element => {\n element['filterDataSourceValue'] = \"\"\n });\n }\n\n\n getDrildownDimentions(apiName) {\n let dimentions = {\n \"/api/v1/reference/getServedTypes\": \"srvType\",\n \"/api/v1/reference/getOutRoamingServedTypes\": \"srvType\",\n \"/api/v1/reference/getMSCDirections\": \"direction\",\n \"/api/v1/reference/getCBSVoiceDirections\": \"direction\",\n \"/api/v1/reference/getCBSmsDirections\": \"direction\",\n \"/api/v1/reference/getCBSGprsDirections\": \"direction\",\n \"/api/v1/reference/getNetworkTypeKeys\": \"nw_call_type\",\n \"/api/v1/reference/getGGSNRatingGroups\": \"ratingGroup\",\n \"/api/v1/reference/getGGSNAccessPointNames\": \"apn\",\n \"/api/v1/reference/getMainAccountBalanceTypes\": \"balanceTypeId\",\n \"/api/v1/reference/getDialDigitCountries\": \"other_party_iso\"\n }\n return dimentions[apiName];\n }\n getCapitalize(item: string) {\n return this.commonService.convertToSpaceSeparatedCapitalized(item)\n }\n\n\n\n getQuickDateClick(item) {\n let startDate = item.value[0];\n let endDate = item.value[1];\n\n for (const filter of this.kpiFilterData) {\n if (filter.filterType == 'date' || filter.filterType == 'datetime') {\n if (filter.apiName == \"startDate\") {\n filter['filterDataSourceValue'] = moment(startDate).format(filter.momentFormat);\n }\n if (filter.apiName == \"endDate\") {\n filter['filterDataSourceValue'] = moment(endDate).format(filter.momentFormat);\n }\n\n }\n }\n\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n\n if (this.isDatesDropDown) {\n const menuElement = this.menuIcon.nativeElement;\n if (!menuElement.contains(event.target)) {\n if (event.target['innerText'] !== \"Quick Dates\") {\n this.isDatesDropDown = false;\n }\n\n }\n }\n }\n\n\n}\n","<app-loader *ngIf=\"isLoader\"></app-loader>\n\n\n<ng-container *ngIf=\"!isLoader\">\n <div class=\"flex flex-col border-b\">\n <div class=\"flex flex-row justify-end mb-4\" *ngIf=\"quickDateSelector\">\n <div class=\"w-1/4\">\n <dx-select-box [dataSource]=\"ranges\" valueExpr=\"value\" displayExpr=\"name\"\n (onValueChanged)=\"getQuickDateClick($event)\" placeholder=\"Quick Dates\">\n </dx-select-box>\n </div>\n </div>\n\n <ng-container *ngFor=\"let filter of kpiFilterData\">\n\n <div class=\"flex flex-row justify-between\">\n <ng-container *ngIf=\"filter.filterType == 'date'\">\n <ng-container *ngIf=\"filter.display\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n\n\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'datetime'\">\n <div class=\"mb-2\">{{getCapitalize(filter.label)}}</div>\n <div class=\"mb-2\">\n <div class=\"w-80\">\n <dx-date-box (onValueChanged)=\"startDateChange($event)\" displayFormat=\"yyyy-MM-dd HH:mm:ss\"\n type=\"{{filter.filterType}}\" [(ngModel)]=\"filter.filterDataSourceValue\">\n </dx-date-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType !== 'date' && filter.filterType !== 'datetime'\">\n <div class=\"mb-2\">\n {{getCapitalize(filter.label)}}\n </div>\n <div class=\"mb-2\">\n <ng-container *ngIf=\"filter.filterType == 'multiple'\">\n <div class=\"w-80\">\n <dx-tag-box [dataSource]=\"filter.filterDataSource\" valueExpr=\"value\" displayExpr=\"name\"\n [searchEnabled]=\"true\" [multiline]=\"true\" [maxDisplayedTags]=\"6\"\n [(ngModel)]=\"filter.filterDataSourceValue\" [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'single'\">\n <div class=\"w-80\">\n <dx-select-box [items]=\"filter.filterDataSource\"\n [(ngModel)]=\"filter.filterDataSourceValue\" displayExpr=\"name\"\n valueExpr=\"value\"></dx-select-box>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.filterType == 'content'\">\n <div class=\"w-80\">\n <dx-text-box [(ngModel)]=\"filter.filterDataSourceValue\"></dx-text-box>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"flex flex-row justify-end pl-3\">\n\n\n <button class=\"{{commonService.BtnLightWhite}} cursor-pointer mt-2\" (click)=\"reseteFilter()\">Reset</button>\n <button class=\"{{commonService.btnPrimaryBlue}} cursor-pointer mt-2\" (click)=\"searchByFilter()\"\n *ngIf=\"isButtonDesiable\">Search</button>\n </div>\n</ng-container>","import { Component, Input, OnInit } from \"@angular/core\";\nimport { Router, NavigationExtras, ActivatedRoute } from \"@angular/router\";\nimport { Location } from \"@angular/common\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { CommonService } from \"../../common\";\nimport { environment } from \"../../environment\";\n\n\n@Component({\n selector: \"gamma-bread-crumbs\",\n templateUrl: \"./bread-crumbs.component.html\",\n styleUrls: [\"./bread-crumbs.component.scss\"],\n})\nexport class BreadCrumbsComponent implements OnInit {\n\n breadcrumbList;\n breadcrumbLinksList;\n route: string;\n count: number;\n kpiListData: any = [];\n kpi_structures = {};\n kpi_names = {};\n kpiUrlID;\n data = [];\n\n kpiBrowserName: Boolean;\n isBreadCrumbs: Boolean;\n\n @Input('kpi_data_container')\n set kpi_data_container(value) {\n if (value === undefined || value.length === 0) {\n this.isBreadCrumbs = false;\n // this.addRoleContainer = [{ \"type\": \"text\", \"value\": '', \"roleid\": \"rowId0\" }];\n return;\n } else {\n // this.kpiListData = value;\n let relativePath = 'rakpiBrowser';\n this.getKpiName(value, relativePath);\n setTimeout(() => {\n this.loadBreadCrumbs();\n }, 500);\n this.isBreadCrumbs = true;\n }\n }\n\n constructor(\n private location: Location,\n private router: Router,\n private http: HttpClient,\n private activatedRoute: ActivatedRoute,\n private commonService: CommonService,\n ) { }\n\n ngOnInit() {\n\n\n }\n\n getKpiName(data, relativePath) {\n\n data.forEach(result => {\n const item = {};\n let obj;\n item['relativePath'] = relativePath;\n\n if (result['nodes'] !== undefined) {\n let childRelativePath = relativePath + '/' + result['name'];\n this.getKpiName(result['nodes'], childRelativePath);\n }\n if (result['id']) {\n obj = {\n 'name': result['name'],\n 'desc': result['desc'],\n 'relativePath': result['relativePath'],\n 'kpiId': result['id'],\n 'kpiGifUrl': environment.appUrl + environment.apiVersion + '/kpi/gif?id=' + result['id'],\n 'isBookmarked': result['isBookmarked'],\n };\n }\n item['externalLink'] = relativePath + '/' + result['name']\n item['tid'] = result['tid'];\n item['id'] = result['id'];\n item['name'] = result['name'];\n\n this.kpiListData.push(item);\n });\n\n }\n\n\n getBreadCrumbsData(data) {\n let structures = {};\n data.forEach(result => {\n const item: object = {};\n item[\"relativePath\"] = result.relativePath;\n item[\"name\"] = result[\"name\"];\n item[\"tid\"] = result[\"tid\"].trim();\n if (result[\"nodes\"] !== undefined) {\n item[\"nodes\"] = this.getBreadCrumbsData(\n result[\"nodes\"]\n );\n }\n this.kpi_names[result[\"id\"]] = item[\"tid\"];\n\n structures[result[\"tid\"]] = item;\n this.kpi_structures[result[\"tid\"]] = item;\n });\n return structures;\n }\n\n loadBreadCrumbs() {\n\n let kpiRoot = this.kpiBrowserName ? \"fmskpi\" : \"rakpi\";\n let kpiContainer;\n // const navurl = this.router.url.split(\"?\");\n // let url = navurl[0].split(\"/\");\n // this.kpiUrlID = url.slice(-1).pop();\n\n if (this.kpiListData.length > 0 || this.kpiListData != undefined) {\n kpiContainer = this.getBreadCrumbsData(this.kpiListData);\n } else {\n kpiContainer = this.getBreadCrumbsData(\n this.commonService.allKpibrowserDetailContainer,\n );\n }\n const kpiId = this.activatedRoute.snapshot.queryParams['id'];\n const kpiTid = this.kpi_names[kpiId];\n const props = this.kpi_structures[kpiTid];\n const propsList = props[\"relativePath\"] + \"/\" + props[\"name\"];\n this.breadcrumbList = propsList.split(\"/\");\n\n if (this.location.path() !== \"\") {\n let link = {};\n this.breadcrumbLinksList = [];\n\n for (let i = 0; i < this.breadcrumbList.length; i++) {\n if (i == 0) {\n if (!this.kpiBrowserName) {\n link = {\n name: this.breadcrumbList[i],\n url: \"/apps/raKpi/rakpiBrowser\",\n kpiName: \"RA KPI Browser\",\n };\n } else {\n link = {\n name: this.breadcrumbList[i],\n url: \"/apps/fmsKpi\",\n kpiName: \"FMS KPI Browser\",\n };\n }\n } else {\n let returnId = \"\";\n for (let j = 0; j <= i; j++) {\n if (j != 0) {\n returnId += \"/\";\n }\n returnId += this.breadcrumbList[j];\n }\n link = {\n name: this.breadcrumbList[i],\n url: this.breadcrumbLinksList[i - 1][\"url\"],\n id: this.breadcrumbList[i],\n kpiName: this.breadcrumbList[i],\n returnId: returnId,\n };\n this.commonService.global_kpi_name = this.breadcrumbList[i];\n }\n this.breadcrumbLinksList.push(link);\n }\n this.count = this.breadcrumbList.length;\n }\n }\n}\n","<nav class=\"flex mt-1\" aria-label=\"Breadcrumb\" *ngIf=\"isBreadCrumbs\">\n <ol class=\"inline-flex items-center space-x-1 md:space-x-3\">\n <li class=\"inline-flex items-center cursor-pointer\" *ngFor=\"let breadcrumbLabel of breadcrumbLinksList;\">\n <a [routerLink]=\"breadcrumbLabel.url\" [queryParams]=\"{returnId: breadcrumbLabel.returnId }\"\n class=\"inline-flex items-center text-sm font-medium text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white\">\n <svg class=\"w-6 h-6 text-gray-400\" fill=\"currentColor\" viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clip-rule=\"evenodd\"></path>\n </svg>\n {{breadcrumbLabel.kpiName}}\n </a>\n </li>\n </ol>\n</nav>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport moment from './../../../moment-helper';\nimport { KpiApiService } from '../../api.service';\n@Component({\n selector: 'app-advance-header',\n templateUrl: './app-header.component.html',\n styleUrls: ['./app-header.component.scss'],\n})\nexport class AppAdvanceHeaderComponent implements OnInit {\n @Input() pageTitle: string;\n @Input() bread_crumbs_container: any;\n @Input() isEditButton: boolean = true;\n @Input() isAdvanceButton: boolean;\n\n @Input() selectedDates: any;\n\n @Output() toggleEvent: EventEmitter<string> = new EventEmitter<string>();\n isAdvanceFilter: boolean;\n browser_config: any;\n kpi_id: any;\n\n filterStartDate;\n filterEndDate;\n filterOptions;\n\n autoload_button = true;\n private time_out_id;\n toolTipText = 'By Date Range';\n\n public daterange: any = {};\n public daterange_options: any = {\n locale: { format: 'YYYY-MM-DD' },\n alwaysShowCalendars: true,\n showCustomRangeLabel: true,\n ranges: {\n Today: [moment(), moment()],\n // Yesterday: [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 1 Month': [moment().subtract(30, 'days'), moment()],\n 'Last 3 Month': [moment().subtract(91, 'days'), moment()],\n 'Last 6 Month': [moment().subtract(182, 'days'), moment()],\n 'Last 12 Month': [moment().subtract(365, 'days'), moment()],\n 'Last 13 Months': [\n moment().subtract(12, 'month').startOf('month'),\n moment(),\n ],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n },\n };\n\n srvTypeDataSource: any = [];\n srvTypeDisplayValue: any = [];\n selectedDetesforView: any;\n @Output() public selectedDateRangeOrServtype: EventEmitter<any> = new EventEmitter();\n @Output() public getFilterPageConfig: EventEmitter<any> = new EventEmitter();\n\n\n filterItemsForFilter: any;\n\n @Input('filterItems')\n set filterItems(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n let displayStartDate = '';\n let displayEndDate = '';\n this.filterItemsForFilter = value;\n value.forEach(element => {\n if (element.filterType === 'date' || element.filterType === 'datetime') {\n if (element.defaultFilterType === \"dynamic\" && element.momentFunction !== \"\" && element.defaultFilterValue !== \"\" && element.momentFormat !== \"\") {\n let [count, unit] = element.defaultFilterValue.split(',');\n let formattedDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n if (element.apiName === \"startDate\") {\n if (element.display) {\n displayStartDate = this.selectedDates[element.apiName];\n }\n }\n if (element.apiName === \"endDate\") {\n if (element.display) {\n displayEndDate = this.selectedDates[element.apiName];\n }\n }\n }\n }\n });\n\n // this.getFilterPageConfig.emit(filter_config)\n\n if (displayStartDate && displayEndDate) {\n this.selectedDetesforView = `${displayStartDate} - ${displayEndDate}`;\n } else if (displayStartDate) {\n this.selectedDetesforView = displayStartDate;\n } else if (displayEndDate) {\n this.selectedDetesforView = displayEndDate;\n } else {\n this.selectedDetesforView = '';\n }\n }\n\n\n }\n\n\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private route: Router,\n private service: KpiApiService\n ) {\n\n }\n\n\n ngOnInit(): void {\n\n\n }\n\n\n\n pageAutoloadStopRun() {\n if (this.autoload_button == true) {\n this.autoload_button = false;\n clearInterval(this.time_out_id);\n this.time_out_id = 0;\n } else if (this.autoload_button == false) {\n this.autoload_button = true;\n this.time_out_id = 1;\n // this.datesUpdated(this.selected);\n }\n }\n\n callPageDocumentation() {\n\n }\n\n\n getDateOrServeTypeValueChange(node: any) {\n this.selectedDateRangeOrServtype.emit(node)\n }\n\n\n editKpi() {\n const pageId = this.activatedRoute.snapshot.queryParams['pageId'];\n let navigationExtras: NavigationExtras = {\n queryParams: {\n pageId: pageId,\n contentType: \"edit\"\n },\n };\n this.route.navigate(['/apps/controlPanel/pageConfigController'], navigationExtras);\n }\n\n\n advanceFilterKpi() {\n this.isAdvanceFilter = true;\n }\n\n getSerchFilter(filter) {\n\n this.isAdvanceFilter = false;\n let displayStartDate = '';\n let displayEndDate = '';\n\n this.filterItemsForFilter.forEach(element => {\n if (element.filterType === 'date' || element.filterType === 'datetime') {\n if (element.defaultFilterType === \"dynamic\" && element.momentFunction !== \"\" && element.defaultFilterValue !== \"\" && element.momentFormat !== \"\") {\n let [count, unit] = element.defaultFilterValue.split(',');\n if (element.apiName === \"startDate\") {\n if (element.display) {\n filter.startDate = moment(filter.startDate).format(element.momentFormat);\n displayStartDate = filter.startDate;\n } else {\n filter.startDate = moment(filter.endDate)[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n }\n }\n if (element.apiName === \"endDate\") {\n filter.endDate = moment(filter.endDate).format(element.momentFormat);\n if (element.display) {\n displayEndDate = filter.endDate;\n }\n }\n }\n\n }\n\n });\n\n if (displayStartDate && displayEndDate) {\n this.selectedDetesforView = `${displayStartDate} - ${displayEndDate}`;\n } else if (displayStartDate) {\n this.selectedDetesforView = displayStartDate;\n } else if (displayEndDate) {\n this.selectedDetesforView = displayEndDate;\n } else {\n this.selectedDetesforView = '';\n }\n\n\n\n this.getFilterPageConfig.emit(filter)\n }\n}\n","<div class=\"flex flex-col mb-2\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-3 font-extrabold items-center ml-2 tracking-tight leading-5 truncate capitalize\">\n {{ pageTitle }}\n </h2>\n </div>\n <div class=\"\">\n <!-- INCOMING -->\n <gamma-bread-crumbs [kpi_data_container]=\"bread_crumbs_container\"></gamma-bread-crumbs>\n </div>\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n <div class=\"mx-2\" *ngIf=\"isEditButton\">\n <div (click)=\"editKpi()\"\n class=\"bg-blue-700 cursor-pointer dark:bg-blue-600 dark:focus:ring-blue-800 dark:hover:bg-blue-700 focus:outline-none focus:ring-4 focus:ring-blue-300 font-medium hover:bg-blue-800 mr-2 px-2.5 py-2 rounded text-sm text-white ng-star-inserted\">\n Edit\n </div>\n </div>\n <div class=\"w-1 h-full border-l-2\" *ngIf=\"isEditButton\"></div>\n <div class=\"mx-2\">\n <div class=\"cursor-pointer\" (click)=\"advanceFilterKpi()\"> {{selectedDetesforView}}</div>\n </div>\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\" *ngIf=\"isAdvanceButton\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\" (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n </div>\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <!-- <div class=\"mx-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\"\n aria-haspopup=\"menu\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon (click)=\"callPageDocumentation()\" title=\"Add Filters\" [svgIcon]=\"\n 'heroicons_outline:question-mark-circle'\n \">\n </mat-icon>\n </span>\n </span>\n <span class=\"mat-button-focus-overlay\"></span>\n </button>\n </div> -->\n\n </div>\n </div>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>","import { Component, Input, OnInit } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from './../../../moment-helper';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamma-table-with-percentage',\n templateUrl: './gamma-table-with-percentage.component.html',\n styleUrls: ['./gamma-table-with-percentage.component.scss']\n})\nexport class GammaTableWithPercentageComponent implements OnInit {\n data = [\n {\n eventType: \"Voice\",\n access_cost_sar: 767.7730000000023,\n event_type: '1',\n ict_cost_sar: 7232,\n margin_sar: 2445.7730000000023,\n revenue: 5232\n\n },\n {\n eventType: \"SMS\",\n access_cost_sar: 345.7730000000023,\n event_type: '2',\n ict_cost_sar: 35654,\n margin_sar: 2445.7730000000023,\n revenue: 55654\n\n },\n {\n eventType: \"GPRS\",\n access_cost_sar: 567.7730000000023,\n event_type: '3',\n ict_cost_sar: 89387,\n margin_sar: 5445.7730000000023,\n revenue: 99387\n\n }\n ]\n\n isLoader: boolean\n currentDateData\n @Input('chartDataSource')\n set chartDataSource(value) {\n // console.log(value);\n if (value === undefined || value.length === 0) {\n return;\n } else {\n this.isLoader = true;\n\n // this.keyTopass = value.kpiConfig.keyToPass;\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n const sortedData = value.kpiConfig.dataSource.sort((a, b) => {\n return moment(b.recordDate, \"YYYY-MM-DD\").diff(moment(a.recordDate, \"YYYY-MM-DD\"));\n });\n value.kpiConfig.dataSource.forEach(item => item.recordDate = new Date(item.recordDate));\n value.kpiConfig.dataSource.sort((a, b) => b.recordDate - a.recordDate);\n\n // Create a map to store the most recent entry for each unique eventTypeKey\n const uniqueEvents = new Map();\n\n value.kpiConfig.dataSource.forEach(item => {\n if (!uniqueEvents.has(item.eventTypeKey)) {\n uniqueEvents.set(item.eventTypeKey, item);\n }\n });\n\n // Convert the map values to an array\n const result = Array.from(uniqueEvents.values());\n // Step 2: Get the most recent and previous dates\n this.loadDailyMscVoiceTable(result)\n\n this.isLoader = false;\n } else {\n\n }\n\n }\n }\n\n\n tableDataSource: any = [];\n constructor(\n public commonService: CommonService,\n private toastr: ToastrService\n ) { }\n\n ngOnInit(): void {\n // this.loadDailyMscVoiceTable(this.data)\n }\n\n loadDailyMscVoiceTable(data) {\n\n this.tableDataSource = [];\n\n\n let dataset = [];\n let column1Name = 'access_cost_sar';\n let column2Name = 'ict_cost_sar';\n let column3Name = 'margin_sar';\n let column4Name = 'revenue';\n let revenueArr = [], interConnectArr = [], accessCostArr = [], marginArr = [];\n for (const [i, v] of Object.entries(data)) {\n if (v[column1Name] == undefined) {\n v[column1Name] = 0;\n }\n if (v[column2Name] == undefined) {\n v[column2Name] = 0;\n }\n if (v[column3Name] == undefined) {\n v[column3Name] = 0;\n }\n if (v[column4Name] == undefined) {\n v[column4Name] = 0;\n }\n accessCostArr.push(v[column1Name]);\n interConnectArr.push(v[column2Name]);\n marginArr.push(v[column3Name]);\n revenueArr.push(v[column4Name]);\n }\n let maxAccessCostVal = Math.max.apply(Math, accessCostArr);\n let minAccessCostVal = Math.min.apply(Math, accessCostArr);\n let maxinterConnectVal = Math.max.apply(Math, interConnectArr);\n let mininterConnectVal = Math.min.apply(Math, interConnectArr);\n let maxmarginVal = Math.max.apply(Math, marginArr);\n let minmarginVal = Math.min.apply(Math, marginArr);\n let maxRevenueVal = Math.max.apply(Math, revenueArr);\n let minRevenueVal = Math.min.apply(Math, revenueArr);\n\n\n for (const [i, v] of Object.entries(data)) {\n let r = [];\n let accessCostValue, interConnectValue, marginValue, revenueValue;\n\n if (v[column1Name] > 0) {\n accessCostValue = this.commonService.scaleNumber(parseFloat(v[column1Name]), maxAccessCostVal, minAccessCostVal, 10, 75);\n } else {\n accessCostValue = 0;\n }\n if (v[column2Name] > 0) {\n interConnectValue = this.commonService.scaleNumber(parseFloat(v[column2Name]), maxinterConnectVal, mininterConnectVal, 10, 75);\n } else {\n interConnectValue = 0;\n }\n if (v[column3Name] > 0) {\n marginValue = this.commonService.scaleNumber(parseFloat(v[column3Name]), maxmarginVal, minmarginVal, 10, 75);\n } else {\n marginValue = 0;\n }\n if (v[column4Name] > 0) {\n revenueValue = this.commonService.scaleNumber(parseFloat(v[column4Name]), maxRevenueVal, minRevenueVal, 10, 75);\n } else {\n revenueValue = 0;\n }\n\n let accessCostBar = this.commonService.createHtml(accessCostValue, this.commonService.reformatNumberWithThousandSeparator(v[column1Name]), '#002E70');\n let interconnectBar = this.commonService.createHtml(interConnectValue, this.commonService.reformatNumberWithThousandSeparator(v[column2Name]), '#F46604');\n let marginBar = this.commonService.createHtml(marginValue, this.commonService.reformatNumberWithThousandSeparator(v[column3Name]), '#3d8706');\n let revenueBar = this.commonService.createHtml(revenueValue, this.commonService.reformatNumberWithThousandSeparator(v[column4Name]), '#ffac42');\n\n let node = {\n 'eventType': this.getEventTypeName(v['eventTypeKey']),\n 'access_cost_sar': accessCostBar,\n 'margin_sar': marginBar,\n 'ict_cost_sar': interconnectBar,\n 'revenue': revenueBar,\n };\n\n this.tableDataSource.push(node);\n }\n\n }\n\n\n getEventTypeName(key) {\n\n if (key == \"1\") {\n return \"Voice\"\n } else if (key == \"2\") {\n return \"SMS\"\n } else {\n return \"GPRS\"\n }\n }\n\n}\n","<div class=\"mx-2\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"tableDataSource\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [height]=\"370\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-paging [pageSize]=\"7\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"false\">\n </dxo-pager>\n <dxo-selection mode=\"single\"></dxo-selection>\n <dxi-column dataField=\"eventType\"></dxi-column>\n <dxi-column dataField=\"access_cost_sar\" cellTemplate=\"cellTemplate1\"></dxi-column>\n <dxi-column dataField=\"margin_sar\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"ict_cost_sar\" cellTemplate=\"cellTemplate3\"></dxi-column>\n <dxi-column dataField=\"revenue\" cellTemplate=\"cellTemplate4\"></dxi-column>\n\n\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate3'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate4'\">\n <div [innerHTML]=\"data.value | contentSafeHtml\"></div>\n </div>\n\n </dx-data-grid>\n </ng-container>\n\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport moment from './../../../moment-helper';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamm-single-number-card',\n templateUrl: './gamm-single-number-card.component.html',\n styleUrls: ['./gamm-single-number-card.component.scss']\n})\nexport class GammSingleNumberCardComponent implements OnInit {\n\n\n subscriber_count;\n page_config;\n isLoader: boolean = true;\n colors = [\n \"text-green-500\",\n \"text-orange-500\",\n \"text-blue-500\",\n \"text-purple-500\",\n \"text-yellow-500\"\n ];\n randomColorClass: any;\n constructor(\n public commonService: CommonService,\n private toastr: ToastrService,\n ) { }\n\n @Input('chartDataSource')\n set chartDataSource(value) {\n\n // console.log(value);\n // console.log(value);\n if (value === undefined || value.length === 0) {\n return\n } else {\n\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n if (value.kpiConfig.formate == \"daily\") {\n const sortedData = value.kpiConfig.dataSource\n .filter(record => record.recordDate)\n .sort((a, b) => moment(b.recordDate).diff(moment(a.recordDate)));\n\n this.page_config = sortedData[0];\n\n } else if (value.kpiConfig.formate == \"monthly\") {\n\n }\n this.isLoader = false;\n } else {\n\n }\n\n\n\n\n }\n\n }\n\n getDynamicValue(data: any): number | string | any {\n const keys = Object.keys(data);\n const dynamicKey = keys.find(key => !key.toLowerCase().includes('date'));\n if (dynamicKey) {\n let value = data[dynamicKey];\n const numericValue = Number(value);\n if (!isNaN(numericValue)) {\n // let cal_number = Math.abs(numericValue)\n return this.commonService.abbreviateNumber(numericValue);\n }\n return value;\n }\n return null;\n }\n\n\n ngOnInit(): void {\n this.randomColorClass = this.getRandomColor();\n }\n\n\n\n getRandomColor() {\n const randomIndex = Math.floor(Math.random() * this.colors.length);\n return this.colors[randomIndex];\n }\n\n}\n","<div class=\"flex flex-row justify-center items-start bg-gray-800 p-4 mx-2 text-center\">\n <ng-container *ngIf=\"isLoader\">\n <app-loader></app-loader>\n </ng-container>\n <ng-container *ngIf=\"!isLoader\">\n <div class=\"flex justify-center items-center text-4xl font-bold p-2 {{randomColorClass}}\">\n {{ getDynamicValue(page_config) }}\n </div>\n </ng-container>\n\n</div>","\n\n\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport moment from './../../../moment-helper';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamma-advance-operator-table',\n templateUrl: './gamma-advance-operator-table.component.html',\n styleUrls: ['./gamma-advance-operator-table.component.scss']\n})\nexport class GammaAdvanceOperatorTableComponent implements OnInit {\n isJsonPreview: boolean\n dataSourseForTable: any = [];\n jsaonDatasource: any;\n configColume: any;\n isLoader: boolean = true;\n tableDataConfig: any;\n enrichNameList = [\"formatBytes\", \"formatBytsToKb\", \"formatBytsToGb\", \"reformatNumberWithThousandSeparatorV3\"]\n page_config: any;\n page_parms: any;\n page_selected_operator: any;\n activeTab: string = 'basic';\n @Output() public getTableConfigOutPut: EventEmitter<any> = new EventEmitter();\n @Output() public oRowClick: EventEmitter<any> = new EventEmitter();\n @Output() public onrightClickContextSelection: EventEmitter<any> = new EventEmitter();\n @Input() rightClickEnable: boolean = true;\n\n @Input('chartDataSource')\n set chartDataSource(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n\n this.isLoader = true;\n this.page_config = value;\n this.page_parms = value.titleParams;\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n if (value.kpiConfig.formate == \"daily\") {\n const sortedData = value.kpiConfig.dataSource\n .filter(record => record.recordDate)\n .sort((a, b) => moment(b.recordDate).diff(moment(a.recordDate)));\n\n const mostRecentRecord = sortedData[0];\n const filteredObjects = sortedData.filter(data => data.recordDate === mostRecentRecord.recordDate);\n this.dataSourseForTable = filteredObjects;\n\n } else if (value.kpiConfig.formate == \"monthly\") {\n this.tableDataConfig = value.kpiConfig.dataConfig;\n\n let tableColumns = (value.kpiConfig.dataConfig.columns) ? value.kpiConfig.dataConfig.columns : [];\n if (tableColumns && tableColumns.length !== 0) {\n const dataSource = value.kpiConfig.dataSource.map(obj => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n\n const foundMatchObject = tableColumns.find(obj => obj.dataField === key);\n if (foundMatchObject) {\n if (foundMatchObject.enrichName && foundMatchObject.enrichName !== \"\") {\n console.log(foundMatchObject.enrichName);\n newObj[key] = this.callServiceFunction(foundMatchObject.enrichName, newObj[key])\n }\n }\n\n\n if (key.toLowerCase().includes('date') && newObj[key]) {\n newObj[key] = moment(newObj[key]).format(\"YYYY-MM-DD\");\n }\n });\n return newObj;\n });\n this.dataSourseForTable = dataSource;\n } else {\n this.tableDataConfig.columns = (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) ? this.transformColumns(value.kpiConfig.dataSource[0]) : [];\n this.dataSourseForTable = value.kpiConfig.dataSource;\n }\n }\n setTimeout(() => {\n this.isLoader = false;\n }, 200);\n\n }\n // else {\n // this.isLoader = false;\n // }\n }\n }\n\n constructor(public commonService: CommonService) { }\n\n ngOnInit(): void {\n }\n\n\n transformColumns(mainobj: any): any[] {\n return Object.keys(mainobj).map(key => {\n return {\n visible: true,\n dataField: key,\n caption: key\n };\n });\n }\n\n\n\n getObjectKeys(obj: any): string[] {\n return Object.keys(obj);\n }\n setActiveTab(tab: string) {\n this.activeTab = tab;\n }\n\n onRowClick(e) {\n\n const title_params = e.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']]\n let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;\n let obj = {\n data: e.data,\n keyToPass: this.page_config.kpiConfig.keyToPass,\n tableTitle: (this.page_parms) ? this.page_parms + title : title,\n viewId: this.page_config.viewId,\n drillDownType: \"natural\",\n drilldownFrom: this.page_config.viewId,\n drilldownTo: \"\",\n }\n this.oRowClick.emit(obj);\n }\n\n addMenuItems(e) {\n\n const title_params = e.row.data[this.page_config.kpiConfig.dataConfig.commonConfig['dataField']]\n let title = this.page_config.kpiConfig.dataConfig.commonConfig['title'] + title_params;\n\n if (this.rightClickEnable && e.columnIndex == 0) {\n if (e.target == 'content') {\n if (!e.items) e.items = [];\n\n this.page_config.kpiConfig.contextMenu.forEach(element => {\n if (!this.page_config.kpiConfig.keyToPass.some(key => element.displayKey.includes(key))) {\n e.items.push({\n text: element.displayKey,\n onItemClick: () => {\n let rightclickData = {\n data: e.row.data,\n keyToPass: this.page_config.kpiConfig.keyToPass,\n tableTitle: (this.page_parms) ? this.page_parms + title : title,\n viewId: this.page_config.viewId,\n drillDownType: \"context\",\n drilldownFrom: this.page_config.viewId,\n drilldownTo: element.viewId,\n\n }\n this.onrightClickContextSelection.emit(rightclickData)\n }\n });\n }\n });\n }\n }\n }\n\n\n callServiceFunction(functionName: string, value): any {\n if (typeof this.commonService[functionName] === \"function\") {\n return this.commonService[functionName](value);\n } else {\n console.error(`Function ${functionName} not found in CommonService`);\n return null;\n }\n }\n\n\n}\n","<div class=\"mx-2 bg-gray-800\">\n <ng-container *ngIf=\"isLoader\">\n <div class=\"flex justify-center items-start bg-gray-800 p-2\">\n <app-loader></app-loader>\n </div>\n </ng-container>\n\n <div class=\"mx-2 pb-2\">\n <dx-data-grid [columnAutoWidth]=\"true\" (onRowClick)=\"onRowClick($event)\" [dataSource]=\"dataSourseForTable\"\n [hoverStateEnabled]=\"true\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n *ngIf=\"!isLoader\" [columns]=\"tableDataConfig.columns\" [showRowLines]=\"true\" id=\"gridContainer\"\n (onContextMenuPreparing)=\"addMenuItems($event)\">\n <dxo-search-panel [highlightCaseSensitive]=\"true\"\n [visible]=\"tableDataConfig.searchPanel\"></dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"{{tableDataConfig.file_name}}\"\n [customizeExcelCell]=\"commonService.customizeExcelCell\"></dxo-export>\n <dxo-paging [pageSize]=\"tableDataConfig.numberOfRow\"></dxo-paging>\n <dxo-pager [showInfo]=\"tableDataConfig.pageInfo\" [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"tableDataConfig.allowedPageSizes\">\n </dxo-pager>\n <ng-container *ngIf=\"tableDataConfig.columns && tableDataConfig.columns.length !== 0\">\n <ng-container *ngFor=\"let item of tableDataConfig.columns\">\n <dxi-column *ngIf=\"item.dataField == 'recordDate'\" dataField=\"{{ item.dataField }}\"\n [caption]=\"item.caption\" [visible]=\"item.visible\" sortOrder=\"desc\"></dxi-column>\n <dxi-column *ngIf=\"item.dataField !== 'recordDate'\" format=\"#,##0.##\"\n [sortingMethod]=\"commonService.customValueSorter\" [cellTemplate]=\"item.dataField\"\n [caption]=\"item.caption\" dataField=\"{{ item.dataField }}\" alignment=\"left\"\n [visible]=\"item.visible\">\n </dxi-column>\n </ng-container>\n <ng-container *ngFor=\"let item of tableDataConfig.columns\">\n <div *dxTemplate=\"let data of item.dataField\">\n <span [innerHTML]=\"data.value\"></span>\n </div>\n </ng-container>\n </ng-container>\n\n </dx-data-grid>\n </div>\n\n\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport moment from './../../../moment-helper';\nimport { KpiApiService } from '../../api.service';\n@Component({\n selector: 'app-advance-widget-header-filter',\n templateUrl: './advance-widget-header-filter.component.html',\n styleUrls: ['./advance-widget-header-filter.component.scss']\n})\nexport class AdvanceWidgetHeaderFilterComponent implements OnInit {\n @Input() selectedDates: any;\n @Input() viewIds: any;\n\n @Output() toggleEvent: EventEmitter<string> = new EventEmitter<string>();\n isAdvanceFilter: boolean;\n browser_config: any;\n kpi_id: any;\n\n filterStartDate;\n filterEndDate;\n filterOptions;\n\n autoload_button = true;\n private time_out_id;\n toolTipText = 'By Date Range';\n\n public daterange: any = {};\n public daterange_options: any = {\n locale: { format: 'YYYY-MM-DD' },\n alwaysShowCalendars: true,\n showCustomRangeLabel: true,\n ranges: {\n Today: [moment(), moment()],\n // Yesterday: [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n 'Last 1 Month': [moment().subtract(30, 'days'), moment()],\n 'Last 3 Month': [moment().subtract(91, 'days'), moment()],\n 'Last 6 Month': [moment().subtract(182, 'days'), moment()],\n 'Last 12 Month': [moment().subtract(365, 'days'), moment()],\n 'Last 13 Months': [\n moment().subtract(12, 'month').startOf('month'),\n moment(),\n ],\n 'This Month': [moment().startOf('month'), moment().endOf('month')],\n },\n };\n\n selectedDetesforView: any;\n @Output() public getWidgetFilterConfig: EventEmitter<any> = new EventEmitter();\n\n filterItemsForFilter: any;\n @Input('filterItems')\n set filterItems(value) {\n if (value === undefined || value.length === 0) {\n return;\n } else {\n let displayStartDate = '';\n let displayEndDate = '';\n this.filterItemsForFilter = value;\n value.forEach(element => {\n if (element.filterType === 'date' || element.filterType === 'datetime') {\n if (element.defaultFilterType === \"dynamic\" && element.momentFunction !== \"\" && element.defaultFilterValue !== \"\" && element.momentFormat !== \"\") {\n let [count, unit] = element.defaultFilterValue.split(',');\n let formattedDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n if (element.apiName === \"startDate\") {\n if (element.display) {\n displayStartDate = this.selectedDates[element.apiName];\n }\n }\n if (element.apiName === \"endDate\") {\n if (element.display) {\n displayEndDate = this.selectedDates[element.apiName];\n }\n }\n }\n }\n });\n }\n }\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private route: Router,\n private service: KpiApiService\n ) {\n\n }\n\n\n ngOnInit(): void {\n\n\n }\n\n\n\n advanceFilterKpi() {\n this.isAdvanceFilter = true;\n }\n\n getSerchFilter(filter) {\n\n this.isAdvanceFilter = false;\n let displayStartDate = '';\n let displayEndDate = '';\n\n this.filterItemsForFilter.forEach(element => {\n if (element.filterType === 'date' || element.filterType === 'datetime') {\n if (element.defaultFilterType === \"dynamic\" && element.momentFunction !== \"\" && element.defaultFilterValue !== \"\" && element.momentFormat !== \"\") {\n let [count, unit] = element.defaultFilterValue.split(',');\n if (element.apiName === \"startDate\") {\n if (element.display) {\n filter.startDate = moment(filter.startDate).format(element.momentFormat);\n displayStartDate = filter.startDate;\n } else {\n filter.startDate = moment(filter.endDate)[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n }\n }\n if (element.apiName === \"endDate\") {\n filter.endDate = moment(filter.endDate).format(element.momentFormat);\n if (element.display) {\n displayEndDate = filter.endDate;\n }\n }\n }\n\n }\n\n });\n filter['viewNodes'] = this.viewIds;\n this.getWidgetFilterConfig.emit(filter)\n }\n}\n","<div class=\"flex flex-col m-2\">\n <button class=\"mat-focus-indicator mat-menu-trigger mat-icon-button mat-button-base\" aria-haspopup=\"menu\"\n (click)=\"advanceFilterKpi()\">\n <span class=\"mat-button-wrapper\">\n <span class=\"relative\">\n <mat-icon title=\"Filters\" [svgIcon]=\"'heroicons_outline:adjustments'\">\n </mat-icon>\n </span>\n </span>\n </button>\n</div>\n\n<dx-popup [(visible)]=\"isAdvanceFilter\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"600\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <app-gamma-advance-filter [kpiId]=\"'231212'\" [filterOperatorData]=\"filterItemsForFilter\"\n [isButtonDesiable]=\"isAdvanceFilter\" [filterStartDate]=\"filterStartDate\" [filterEndDate]=\"filterEndDate\"\n (filterDataObject)=\"getSerchFilter($event)\"></app-gamma-advance-filter>\n </div>\n</dx-popup>","import { Component, OnInit, Input, Output, EventEmitter, Renderer2, ElementRef } from '@angular/core';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-title',\n templateUrl: './app-title.component.html',\n styleUrls: ['./app-title.component.scss']\n})\nexport class AppTitleComponent implements OnInit {\n isOperatorsvisible: boolean;\n\n @Input() title = undefined;\n @Input() multiple: boolean = false;\n @Input() isFilterDisplay: boolean;\n @Input() icon: boolean = false;\n @Input() iconName;\n @Input() displayType: string;\n @Input() keyToPass: string;\n @Input() fixOperationLevles: string;\n\n @Output() public onOperatorClick: EventEmitter<any> = new EventEmitter();\n\n operatorsDatasource;\n operator_display;\n fixoperationValue;\n isSearchModal: boolean = false;\n\n @Input('operators')\n set operators(value) {\n if (value === undefined || value.length === 0) {\n this.isOperatorsvisible = false;\n return;\n } else {\n this.operatorsDatasource = value.operators;\n this.operator_display = value.display\n this.fixoperationValue = value.filterOperatorData\n // this.operatorsDatasource = value.filter(item => {\n // const keysToRemove = Object.keys(item).filter(key => this.keyToPass.includes(key));\n // return keysToRemove.length === 0;\n // });\n\n this.isOperatorsvisible = true;\n\n }\n\n }\n\n\n constructor(\n public commonService: CommonService\n ) {\n // console.log(this.title);\n\n }\n\n ngOnInit(): void {\n }\n\n // getObjectKeys(obj: any): string[] {\n // let keys = Object.keys(obj);\n // const filteredArray = keys.filter(item => !this.keyToPass.includes(item));\n\n // return filteredArray;\n // }\n\n // getObjectKeys(obj) {\n // let keys = Object.keys(obj);\n\n // const filteredArray = keys.filter(item => !this.keyToPass.includes(item));\n\n // // Check if any key's value is null\n // for (let key of keys) {\n // if (obj[key] === null) {\n // return filteredArray; // Return the filtered array if any key's value is null\n // }\n // }\n\n // return []; // Return false if no key's value is null\n // }\n\n\n getCapitalize(item: string) {\n return this.commonService.convertToSpaceSeparatedCapitalized(item)\n }\n\n\n getOperator(item) {\n this.onOperatorClick.emit(item);\n }\n\n openSearchFilter() {\n this.isSearchModal = true;\n }\n\n\n}\n","<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType == 'chart'\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:border-b dark:pb-2 dark:border-gray-700 \">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n</div>\n\n<!-- <app-card-header [title]=\"'Administration Highlights'\"></app-card-header>\n<div class=\"flex bg-white dark:bg-gray-800 p-4 rounded-b-lg mx-2 mb-2 \">\n</div> -->\n\n<div class=\"p-4 rounded-t-lg shadow-md dark:bg-gray-800 mx-2 mt-2 bg-sky-900\" *ngIf=\"displayType !== 'chart'\">\n <div class=\"flex justify-between dark:border-b\">\n <div class=\"flex items-center float-start\">\n <h5 class=\"text-md font-bold tracking-tight text-white dark:pb-2\">\n <i class=\"{{iconName}}\" *ngIf=\"icon\"></i> {{title}}\n </h5>\n </div>\n <div class=\"flex items-center float-end mb-2\" *ngIf=\"operator_display\">\n <!-- <div class=\"{{commonService.btn_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">Advance Search</div> -->\n <ng-container *ngIf=\"isFilterDisplay\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"openSearchFilter()\">Search Filter</div>\n </ng-container>\n <ng-container *ngFor=\"let item of operatorsDatasource\">\n <div class=\"{{commonService.badge_primary_sm}} cursor-pointer\" (click)=\"getOperator(item)\">\n {{getCapitalize(item)}}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n\n\n<dx-popup [(visible)]=\"isSearchModal\" [closeOnOutsideClick]=\"true\" [dragEnabled]=\"false\" [height]=\"'32rem'\"\n [showTitle]=\"true\" [width]=\"1100\" class=\"popup \" title=\"Search\">\n <div *dxTemplate=\"let data of 'content' \">\n <!-- <app-gamma-filter-component [operators]=\"operatorsDatasource\"\n [fixOperationLevles]=\"fixoperationValue\"></app-gamma-filter-component> -->\n\n </div>\n</dx-popup>","\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport moment from './../../../moment-helper';\nimport { ToastrService } from 'ngx-toastr';\nimport { KpiApiService } from '../../api.service';\nimport { kpicommonService } from '../../kpi-comon-service';\nimport { CommonService } from '../../../common';\n\n@Component({\n selector: 'app-gamma-advance-chart',\n templateUrl: './gamma-advance-chart.component.html',\n styleUrls: ['./gamma-advance-chart.component.scss']\n})\nexport class GammaAdvanceChartComponent implements OnInit {\n chartConfig: any = {};\n page_config: any = {};\n isLoader: boolean = true;\n @Input() componentId: any;\n // @Input() caption: any;\n @Input() kpi_name: any;\n // @Input() chartDataSource:any;\n caption: any;\n isChartvisible: boolean;\n creatChartDataSource = undefined;\n finalChartDataSource: any = [];\n chartHeight: any;\n\n isFullScreen: boolean = false;\n\n\n constructor(\n private commonService: CommonService,\n private toastr: ToastrService,\n private service: KpiApiService,\n private kpiService: kpicommonService,\n private renderer: Renderer2, private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n\n }\n\n // chart_attr.legend[0]\n\n @Input('chartDataSource')\n set chartDataSource(value) {\n this.creatChartDataSource = value;\n // console.log(value);\n if (this.creatChartDataSource === undefined || this.creatChartDataSource.length === 0) {\n this.isChartvisible = false;\n return;\n } else {\n this.isLoader = true;\n this.page_config = value;\n\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n this.chartConfig = value.kpiConfig.dataConfig;\n if (value.kpiConfig.formate == \"daily\") {\n\n const sortedData = value.kpiConfig.dataSource\n .filter(record => record.recordDate)\n .sort((a, b) => moment(b.recordDate).diff(moment(a.recordDate)));\n\n const mostRecentRecord = sortedData[0];\n const filteredObjects = sortedData.filter(data => data.recordDate === value.endDate);\n\n\n if (this.chartConfig.chartType == 'funnel') {\n\n if (filteredObjects && filteredObjects.length !== 0) {\n this.finalChartDataSource = Object.keys(filteredObjects[0]).filter(key => key !== 'recordDate').map(key => ({\n argument: key,\n value: Math.abs(parseInt(filteredObjects[0][key]))\n }));\n } else {\n this.finalChartDataSource = [];\n }\n\n console.log(this.finalChartDataSource)\n } else {\n this.getDailyChart(filteredObjects, value.kpiConfig.dataConfig);\n\n }\n\n this.isLoader = false;\n } else if (value.kpiConfig.formate == \"monthly\") {\n\n if (value.kpiConfig.dataSource && value.kpiConfig.dataSource.length !== 0) {\n this.getMonthlyChart(value.kpiConfig.dataSource, value.kpiConfig.dataConfig)\n this.isChartvisible == true;\n } else {\n this.finalChartDataSource = [];\n this.cdr.detectChanges();\n }\n this.isLoader = false;\n }\n\n }\n }\n\n\n\n }\n\n\n ngOnInit(): void {\n\n }\n\n getHourChart(data, dataConfig) {\n // const valueFields = dataConfig.chart_config.map(config => config.valueField);\n if (data) {\n data.forEach(val => {\n if (val[dataConfig.argumentField].toString().length == 1) {\n val[dataConfig.argumentField] = '0' + val[dataConfig.argumentField];\n }\n let label = val[dataConfig.argumentField].toString();\n val[dataConfig.argumentField] = label\n });\n setTimeout(() => {\n this.finalChartDataSource = data;\n }, 500);\n } else {\n this.toastr.error(this.kpi_name + 'Chart Error');\n\n }\n }\n getMonthlyChart(data, dataConfig) {\n const valueFields = dataConfig.chart_config.map(config => config.valueField);\n if (data) {\n // this.finalChartDataSource = data;\n\n let content = this.chartConfig.argumentField.toLowerCase();\n if (content.includes('date')) {\n const dataSource = data.map(obj => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n if (key !== this.chartConfig.argumentField && !isNaN(newObj[key])) {\n newObj[key] = Number(newObj[key]);\n }\n });\n if (newObj.hasOwnProperty(this.chartConfig.argumentField)) {\n newObj[this.chartConfig.argumentField] = moment(newObj[this.chartConfig.argumentField]).format(\"MM-DD\");\n }\n return newObj;\n });\n\n this.finalChartDataSource = dataSource;\n } else {\n this.finalChartDataSource = data;\n }\n\n\n } else {\n this.toastr.error(this.kpi_name + 'Chart Error');\n }\n }\n getDailyChart(data, dataConfig) {\n const valueFields = dataConfig.chart_config.map(config => config.valueField);\n if (data) {\n let content = this.chartConfig.argumentField.toLowerCase();\n if (content.includes('date')) {\n const dataSource = data.map(obj => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(key => {\n if (key !== this.chartConfig.argumentField && !isNaN(newObj[key])) {\n newObj[key] = Number(newObj[key]);\n }\n });\n if (newObj.hasOwnProperty(this.chartConfig.argumentField)) {\n newObj[this.chartConfig.argumentField] = moment(newObj[this.chartConfig.argumentField]).format(\"MM-DD\");\n }\n return newObj;\n });\n this.finalChartDataSource = dataSource;\n } else {\n this.finalChartDataSource = data;\n }\n } else {\n this.toastr.error(this.kpi_name + ' Chart Error');\n }\n }\n\n\n\n getReconDailyChart(data, dataConfig) {\n\n this.finalChartDataSource = [];\n const recon_key = dataConfig.reconKey;\n const recon_column = dataConfig.reconColumns;\n this.finalChartDataSource = this.getFinalData(data, recon_column);\n\n }\n\n getFinalData(mainData: any[], reconColumn: any[]): any[] {\n mainData.forEach(data => {\n reconColumn.forEach(column => {\n const firstKeyValue = data[column.firstKey];\n const secondKeyValue = data[column.secondKey];\n const mouDiff = Math.abs(firstKeyValue - secondKeyValue);\n data[column.finalKey] = mouDiff;\n });\n });\n\n return mainData;\n }\n\n customizeTooltip = (info: any) => (\n {\n\n html: `<table width=100% height=30 border=0 style=\\'font-size: 13px\\'>\n <tr><td style=\\'text-align: left; color: white\\'> ${this.commonService.convertToTitleCase(this.chartConfig.argumentField)} : ${info.argumentText} </td></tr>\n <tr><td style=\\'text-align: left; color: white; padding-top: 5px\\'> ${info.seriesName} :\n ${this.getValue(info.seriesName, info.value)} </td></tr>\n </table>`,\n });\n\n // customizeTooltip(arg) {\n // return { text: `${arg.argumentText}<br>${arg.seriesName}: ${arg.valueText}B` };\n // }\n\n calculateTotal(pieChart) {\n const totalValue = pieChart.getAllSeries()[0].getVisiblePoints().reduce((s, p) => s + p.originalValue, 0);\n return this.formatNumber(totalValue);\n }\n\n formatNumber(value) {\n if (value >= 1e9) {\n return (value / 1e9).toFixed(2) + 'B';\n } else if (value >= 1e6) {\n return (value / 1e6).toFixed(2) + 'M';\n } else if (value >= 1e3) {\n return (value / 1e3).toFixed(2) + 'K';\n } else {\n return value.toFixed(2);\n }\n }\n\n pointClickHandler(arg) {\n arg.target.select();\n }\n\n getValue(contextKey, value) {\n\n let context_data: any;\n const sml_key = contextKey.toLowerCase();\n\n if (typeof value === \"number\") {\n if (sml_key === \"count\" || sml_key === \"hour\" || sml_key === \"denomination\" || sml_key.includes(\"count\")) {\n context_data = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (sml_key.includes('volume') || sml_key.includes('upload') || sml_key.includes('download')) {\n if (sml_key == 'billablevolume') {\n context_data = this.commonService.formatBytsToGb(value * 1024, 2)\n } else {\n context_data = this.commonService.formatBytsToGb(value * 1024, 2);\n }\n } else if (sml_key == \"uplink\" || sml_key == \"downlink\") {\n context_data = this.commonService.formatBytsToGb(value, 2);\n } else if (this.hasDecimal(value)) {\n context_data = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n } else if (!this.hasDecimal(value)) {\n context_data = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n context_data = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n context_data = value;\n }\n\n return context_data;\n }\n\n\n hasDecimal(number) {\n return number % 1 !== 0;\n }\n\n toggleFullScreen() {\n this.isLoader = true;\n this.isFullScreen = !this.isFullScreen;\n const div = this.el.nativeElement.querySelector('.not-full-screen');\n if (this.isFullScreen) {\n this.renderer.addClass(div, 'full-screen');\n setTimeout(() => {\n this.isLoader = false;\n }, 10);\n } else {\n this.renderer.removeClass(div, 'full-screen');\n setTimeout(() => {\n this.isLoader = false;\n }, 10);\n }\n }\n\n\n\n\n\n customizeText = ({ percentText, item: { argument } }) => `<span style='font-size: 28px'>${percentText}</span><br/>${argument}`;\n\n\n\n // customizeLabelText = (info: any) => `${info.valueText}`;\n\n\n}\n","<div class=\"not-full-screen\" (dblclick)=\"toggleFullScreen()\">\n <ng-container *ngIf=\"page_config?.widGetConfig?.display\">\n <app-title [title]=\"page_config.widGetConfig.widgetTitle\" [operators]=\"page_config.operations\"\n [displayType]=\"'chart'\"></app-title>\n </ng-container>\n <div class=\"mx-2 p-2 bg-gray-800\">\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <ng-container *ngIf=\"chartConfig.chartType !== 'doughnut' && chartConfig.chartType !== 'funnel'\">\n <dx-chart id=\"chart\" [dataSource]=\"finalChartDataSource\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\" *ngIf=\"!isLoader\"\n [valueAxis]=\"chartConfig.valueAxisConfig\">\n <ng-container *ngIf=\"chartConfig.size\">\n <dxo-size [height]=\"chartConfig.size\">\n </dxo-size>\n </ng-container>\n\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item && item.axis\">\n <dxi-value-axis name=\"{{item.axis}}\" position=\"{{item.position}}\">\n <dxo-title text=\"{{item.name}}\"></dxo-title>\n </dxi-value-axis>\n </ng-container>\n\n </ng-container>\n <dxo-argument-axis>\n <dxo-label overlappingBehavior=\"rotate\" [rotationAngle]=\"270\"></dxo-label>\n </dxo-argument-axis>\n <dxo-tooltip [enabled]=\"true\" [shared]=\"true\" [customizeTooltip]=\"customizeTooltip\">\n </dxo-tooltip>\n <dxo-common-series-settings argumentField=\"{{chartConfig.argumentField}}\">\n </dxo-common-series-settings>\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item && item.color\">\n <dxi-series type=\"{{item.type}}\" valueField=\"{{item.valueField}}\" axis=\"{{item.axis}}\"\n name=\"{{item.name}}\" color=\"{{item.color}}\">\n </dxi-series>\n </ng-container>\n <ng-container *ngIf=\"item && !item.color\">\n <dxi-series type=\"{{item.type}}\" valueField=\"{{item.valueField}}\" axis=\"{{item.axis}}\"\n name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n\n </ng-container>\n <dxo-size [height]=\"chartHeight\">\n </dxo-size>\n <dxo-legend [visible]=\"chartConfig.legendDisplay\" verticalAlignment=\"{{chartConfig.verticalAlignment}}\"\n horizontalAlignment=\"{{chartConfig.horizontalAlignment}}\">\n </dxo-legend>\n </dx-chart>\n </ng-container>\n <ng-container *ngIf=\"chartConfig.chartType == 'doughnut'\">\n\n <dx-pie-chart id=\"pie\" type=\"doughnut\" [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\"\n palette=\"Soft Pastel\" [dataSource]=\"finalChartDataSource\" centerTemplate=\"centerTemplate\"\n (onPointClick)=\"pointClickHandler($event)\" [palette]=\"chartConfig.palette\">\n\n <ng-container *ngFor=\"let item of chartConfig.chart_config\">\n <ng-container *ngIf=\"item.color\">\n <dxi-series argumentField={{chartConfig.argumentField}} valueField=\"{{item.valueField}}\"\n name=\"{{item.name}}\" color=\"{{item.color}}\">\n <dxo-label [visible]=\"chartConfig.labelDisplay\" format=\"currency\">\n <dxo-connector [visible]=\"true\"></dxo-connector>\n </dxo-label>\n </dxi-series>\n </ng-container>\n <ng-container *ngIf=\"!item.color\">\n <dxi-series argumentField={{chartConfig.argumentField}} valueField=\"{{item.valueField}}\"\n name=\"{{item.name}}\">\n <dxo-label [visible]=\"chartConfig.labelDisplay\" format=\"currency\">\n <dxo-connector [visible]=\"true\"></dxo-connector>\n </dxo-label>\n </dxi-series>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"chartConfig.size\">\n <dxo-size [height]=\"chartConfig.size\">\n </dxo-size>\n </ng-container>\n <dxo-legend [visible]=\"chartConfig.legendDisplay\"\n horizontalAlignment=\"{{chartConfig.horizontalAlignment}}\"\n verticalAlignment=\"{{chartConfig.verticalAlignment}}\"></dxo-legend>\n <!-- <dxo-export [enabled]=\"true\"></dxo-export> -->\n <dxo-tooltip [enabled]=\"true\" [customizeTooltip]=\"customizeTooltip\" format=\"currency\">\n </dxo-tooltip>\n <svg *dxTemplate=\"let pieChart of 'centerTemplate'\">\n <circle cx=\"100\" cy=\"100\" [attr.r]=\"pieChart.getInnerRadius() - 6\" fill=\"gray\" opacity=\"0.0001\">\n </circle>\n\n <text text-anchor=\"middle\" style=\"font-size: 15px\" x=\"100\" y=\"100\" fill=\"#eee\">\n <tspan x=\"100\">{{ calculateTotal(pieChart) }}</tspan>\n <!-- display: inline -->\n <!-- <tspan x=\"100\" dy=\"20px\" style=\"font-weight: 600\"></tspan> -->\n </text>\n </svg>\n </dx-pie-chart>\n </ng-container>\n\n <ng-container *ngIf=\"chartConfig.chartType == 'funnel'\">\n <dx-funnel id=\"funnel\" [dataSource]=\"finalChartDataSource\" argumentField=\"argument\" valueField=\"value\"\n palette=\"Soft Pastel\">\n <ng-container *ngIf=\"chartConfig.size\">\n <dxo-size [height]=\"chartConfig.size\">\n </dxo-size>\n </ng-container>\n <dxo-export [enabled]=\"false\"></dxo-export>\n <dxo-tooltip [enabled]=\"true\"> </dxo-tooltip>\n <dxo-item>\n <dxo-border [visible]=\"true\"> </dxo-border>\n </dxo-item>\n <dxo-label [visible]=\"true\" position=\"inside\" backgroundColor=\"none\"\n [customizeText]=\"customizeText\"></dxo-label>\n </dx-funnel>\n\n </ng-container>\n\n\n </div>\n\n <button *ngIf=\"isFullScreen\" class=\"close-button\" (click)=\"toggleFullScreen()\">Close</button>\n</div>","import { Injectable } from '@angular/core';\nimport { CommonService } from './common';\n@Injectable({\n providedIn: 'root'\n})\n\nexport class kpicommonService {\n\n constructor(public commonService: CommonService) {\n\n }\n\n getAllSeviceApiJson(apiJsonObject) {\n\n let service_api: any;\n service_api = {\n requestId: apiJsonObject.requestId,\n filter: {\n conditionGroup: {\n connector: \"and\",\n conditions: [\n\n ],\n },\n },\n };\n\n if (apiJsonObject.startDate !== undefined && apiJsonObject.startDate !== null && apiJsonObject.startDate !== \"\") {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"startDate\",\n targetName: \"record_date\",\n operator: \"greaterThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.startDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },);\n }\n if (apiJsonObject.endDate !== undefined && apiJsonObject.endDate !== null && apiJsonObject.endDate !== \"\") {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"endDate\",\n targetName: \"record_date\",\n operator: \"lessThanOrEqualsTo\",\n type: \"string\",\n value: apiJsonObject.endDate,\n enrichClz:\n \"com.gamma.components.apiautomation.enrichment.ApiGenericEnrichment\",\n enrichMethod: \"convertNarrowStringToShortString\",\n },);\n }\n\n if (apiJsonObject.srvType !== undefined && apiJsonObject.srvType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"srvType\",\n targetName: \"srv_type\",\n operator: Array.isArray(apiJsonObject.srvType) ? \"in\" : (typeof apiJsonObject.srvType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.srvType,\n });\n }\n if (apiJsonObject.recordType !== undefined && apiJsonObject.recordType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"recordType\",\n \"targetName\": \"record_type\",\n \"operator\": Array.isArray(apiJsonObject.recordType) ? \"in\" : (typeof apiJsonObject.recordType === \"string\" ? \"equals\" : \"\"),\n \"type\": \"string\",\n \"value\": apiJsonObject.recordType\n });\n }\n if (\n apiJsonObject.sourceValue !== undefined && apiJsonObject.sourceValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"source\",\n targetName: \"source\",\n operator: Array.isArray(apiJsonObject.sourceValue) ? \"in\" : (typeof apiJsonObject.sourceValue === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.sourceValue,\n });\n }\n if (\n apiJsonObject.inTrunk !== undefined && apiJsonObject.inTrunk !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"inTrunk\",\n targetName: \"in_trunk\",\n operator: Array.isArray(apiJsonObject.inTrunk) ? \"in\" : (typeof apiJsonObject.inTrunk === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.inTrunk,\n });\n }\n if (\n apiJsonObject.outTrunk !== undefined && apiJsonObject.outTrunk !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"outTrunk\",\n targetName: \"out_trunk\",\n operator: Array.isArray(apiJsonObject.outTrunk) ? \"in\" : (typeof apiJsonObject.outTrunk === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.outTrunk,\n });\n }\n if (\n apiJsonObject.eventType !== undefined && apiJsonObject.eventType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventType\",\n targetName: \"event_type\",\n operator: apiJsonObject.eventType.length > 1 ? \"equals\" : \" notequals\",\n type: \"string\",\n value: apiJsonObject.eventType,\n });\n }\n if (\n apiJsonObject.eventTypeKey !== undefined && apiJsonObject.eventTypeKey !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventTypeKey\",\n targetName: \"event_type\",\n operator: apiJsonObject.eventTypeKey.length > 1 ? \"in\" : \"equals\",\n type: \"string\",\n value: apiJsonObject.eventTypeKey,\n });\n }\n if (\n apiJsonObject.event !== undefined && apiJsonObject.event !== null) {\n service_api.filter.conditionGroup.conditions.push({\n \"sourceName\": \"event_type\",\n \"targetName\": \"event_type\",\n \"operator\": Array.isArray(apiJsonObject.event) ? \"in\" : (typeof apiJsonObject.event === \"string\" ? \"equals\" : \"\"),\n \"type\": \"string\",\n \"value\": apiJsonObject.event\n });\n }\n\n if (\n apiJsonObject.direction !== undefined && apiJsonObject.direction !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"direction\",\n targetName: \"direction\",\n operator: Array.isArray(apiJsonObject.direction) ? \"in\" : (typeof apiJsonObject.direction === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.direction,\n });\n }\n if (apiJsonObject.country !== undefined && apiJsonObject.country !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"country\",\n targetName: \"country\",\n operator: Array.isArray(apiJsonObject.country) ? \"in\" : (typeof apiJsonObject.country === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.country,\n });\n }\n if (apiJsonObject.apn !== undefined && apiJsonObject.apn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"apn\",\n targetName: \"apn\",\n operator: Array.isArray(apiJsonObject.apn) ? \"in\" : (typeof apiJsonObject.apn === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.apn,\n });\n }\n if (\n apiJsonObject.nw_call_type !== undefined && apiJsonObject.nw_call_type !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"nw_call_type\",\n targetName: \"nw_call_type\",\n operator: Array.isArray(apiJsonObject.nw_call_type) ? \"in\" : (typeof apiJsonObject.nw_call_type === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.nw_call_type,\n });\n }\n if (\n apiJsonObject.ratingGroup !== undefined && apiJsonObject.ratingGroup !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"ratingGroup\",\n targetName: \"rating_group\",\n operator: Array.isArray(apiJsonObject.ratingGroup) ? \"in\" : (typeof apiJsonObject.ratingGroup === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.ratingGroup,\n });\n }\n if (\n apiJsonObject.terminationValue !== undefined && apiJsonObject.terminationValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"terminationCode\",\n targetName: \"term_code\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.terminationValue,\n });\n }\n if (\n apiJsonObject.cellIdValue !== undefined && apiJsonObject.cellIdValue !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"cellId\",\n targetName: \"cell_id\",\n operator: \"notequals\",\n type: \"string\",\n value: apiJsonObject.cellIdValue,\n });\n }\n if (\n apiJsonObject.exceptionType !== undefined && apiJsonObject.exceptionType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"exceptionType\",\n targetName: \"exception_type\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.exceptionType\n });\n }\n if (\n apiJsonObject.offerName !== undefined && apiJsonObject.offerName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"offerName\",\n targetName: \"offer_name\",\n operator: Array.isArray(apiJsonObject.offerName) ? \"in\" : (typeof apiJsonObject.offerName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.offerName\n });\n }\n if (\n apiJsonObject.balanceTypeIdIn !== undefined && apiJsonObject.balanceTypeIdIn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeIdIn\",\n targetName: \"balance_type_id\",\n operator: \"in\",\n type: \"string\",\n value: apiJsonObject.balanceTypeIdIn\n });\n }\n if (\n apiJsonObject.balanceTypeName !== undefined && apiJsonObject.balanceTypeName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeName\",\n targetName: \"balance_type_name\",\n operator: \"equals\",\n type: \"string\",\n value: apiJsonObject.balanceTypeName\n });\n }\n if (\n apiJsonObject.balanceTypeIdNotIn !== undefined && apiJsonObject.balanceTypeIdNotIn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"balanceTypeIdNotIn\",\n targetName: \"balance_type_id\",\n operator: \"notIn\",\n type: \"string\",\n value: apiJsonObject.balanceTypeIdNotIn\n });\n }\n if (\n apiJsonObject.measurementName !== undefined && apiJsonObject.measurementName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"measurementName\",\n targetName: \"measurement_name\",\n operator: Array.isArray(apiJsonObject.measurementName) ? \"in\" : (typeof apiJsonObject.measurementName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.measurementName\n });\n }\n if (\n apiJsonObject.eventTypeDesc !== undefined && apiJsonObject.eventTypeDesc !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"eventTypeDesc\",\n targetName: \"event_type_desc\",\n operator: Array.isArray(apiJsonObject.eventTypeDesc) ? \"in\" : (typeof apiJsonObject.eventTypeDesc === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.eventTypeDesc\n });\n }\n if (\n apiJsonObject.other_party_iso !== undefined && apiJsonObject.other_party_iso !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"other_party_iso\",\n targetName: \"other_party_iso\",\n operator: Array.isArray(apiJsonObject.other_party_iso) ? \"in\" : (typeof apiJsonObject.other_party_iso === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.other_party_iso\n });\n }\n if (\n apiJsonObject.iso_country_code !== undefined && apiJsonObject.iso_country_code !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"iso_country_code\",\n targetName: \"iso_country_code\",\n operator: Array.isArray(apiJsonObject.iso_country_code) ? \"in\" : (typeof apiJsonObject.iso_country_code === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.iso_country_code\n });\n }\n if (\n apiJsonObject.servedMsisdn !== undefined && apiJsonObject.servedMsisdn !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"servedMsisdn\",\n targetName: \"served_msisdn\",\n operator: Array.isArray(apiJsonObject.servedMsisdn) ? \"in\" : (typeof apiJsonObject.servedMsisdn === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.servedMsisdn\n });\n }\n if (\n apiJsonObject.reasonCode !== undefined && apiJsonObject.reasonCode !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"reasonCode\",\n targetName: \"reason_code\",\n operator: Array.isArray(apiJsonObject.reasonCode) ? \"in\" : (typeof apiJsonObject.reasonCode === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.reasonCode\n });\n }\n if (\n apiJsonObject.staffName !== undefined && apiJsonObject.staffName !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"staffName\",\n targetName: \"staff_name\",\n operator: Array.isArray(apiJsonObject.staffName) ? \"in\" : (typeof apiJsonObject.staffName === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.staffName\n });\n }\n if (\n apiJsonObject.voucherType !== undefined && apiJsonObject.voucherType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"voucherType\",\n targetName: \"voucher_type\",\n operator: Array.isArray(apiJsonObject.voucherType) ? \"in\" : (typeof apiJsonObject.voucherType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.voucherType\n });\n }\n if (\n apiJsonObject.premiumSmsType !== undefined && apiJsonObject.premiumSmsType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"premiumSmsType\",\n targetName: \"premium_sms_type\",\n operator: Array.isArray(apiJsonObject.premiumSmsType) ? \"in\" : (typeof apiJsonObject.premiumSmsType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.premiumSmsType\n });\n }\n if (\n apiJsonObject.revenue_stream !== undefined && apiJsonObject.revenue_stream !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"revenue_stream\",\n targetName: \"revenue_stream\",\n operator: Array.isArray(apiJsonObject.revenue_stream) ? \"in\" : (typeof apiJsonObject.revenue_stream === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.revenue_stream\n });\n }\n if (\n apiJsonObject.ifrs_type !== undefined && apiJsonObject.ifrs_type !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"ifrs_type\",\n targetName: \"ifrs_type\",\n operator: Array.isArray(apiJsonObject.ifrs_type) ? \"in\" : (typeof apiJsonObject.ifrs_type === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.ifrs_type\n });\n }\n if (\n apiJsonObject.main_offering_name !== undefined && apiJsonObject.main_offering_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"main_offering_name\",\n targetName: \"main_offering_name\",\n operator: Array.isArray(apiJsonObject.main_offering_name) ? \"in\" : (typeof apiJsonObject.main_offering_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.main_offering_name\n });\n }\n if (\n apiJsonObject.offering_name !== undefined && apiJsonObject.offering_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"offering_name\",\n targetName: \"offering_name\",\n operator: Array.isArray(apiJsonObject.offering_name) ? \"in\" : (typeof apiJsonObject.offering_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.offering_name\n });\n }\n if (\n apiJsonObject.main_offering_id !== undefined && apiJsonObject.main_offering_id !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"main_offering_id\",\n targetName: \"main_offering_id\",\n operator: Array.isArray(apiJsonObject.main_offering_id) ? \"in\" : (typeof apiJsonObject.main_offering_id === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.main_offering_id\n });\n }\n if (\n apiJsonObject.transferType !== undefined && apiJsonObject.transferType !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"transferType\",\n targetName: \"transfer_type\",\n operator: Array.isArray(apiJsonObject.transferType) ? \"in\" : (typeof apiJsonObject.transferType === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.transferType\n });\n }\n if (\n apiJsonObject.free_unit_type_id !== undefined && apiJsonObject.free_unit_type_id !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"free_unit_type_id\",\n targetName: \"free_unit_type_id\",\n operator: Array.isArray(apiJsonObject.free_unit_type_id) ? \"in\" : (typeof apiJsonObject.free_unit_type_id === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.free_unit_type_id\n });\n }\n if (\n apiJsonObject.free_unit_type_name !== undefined && apiJsonObject.free_unit_type_name !== null) {\n service_api.filter.conditionGroup.conditions.push({\n sourceName: \"free_unit_type_name\",\n targetName: \"free_unit_type_name\",\n operator: Array.isArray(apiJsonObject.free_unit_type_name) ? \"in\" : (typeof apiJsonObject.free_unit_type_name === \"string\" ? \"equals\" : \"\"),\n type: \"string\",\n value: apiJsonObject.free_unit_type_name\n });\n }\n return service_api;\n\n }\n\n filterOperationData(data, key) {\n let foundIndex = -1;\n\n // Find the index of the object with the key\n for (let i = 0; i < data.length; i++) {\n if (data[i][key] !== undefined) {\n foundIndex = i;\n break;\n }\n }\n\n // If key not found, return the original data\n if (foundIndex === -1) {\n return data;\n }\n\n // Filter out objects after the found index unless they have 'date' in the key\n return data.filter((obj, index) => {\n if (index <= foundIndex) {\n return true;\n }\n return Object.keys(obj).some(k => k.includes('date'));\n });\n }\n\n dataprocessArrary(arrayOne, arrayTwo) {\n const arrayThree = [];\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const key of arrayTwo) {\n if (key in obj) {\n const value = obj[key];\n const sml_key = key.toLowerCase();\n\n if (typeof value === \"number\") {\n\n if (sml_key === \"count\" || sml_key === \"hour\" || sml_key === \"denomination\" || sml_key.includes(\"count\")) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (sml_key.includes('volume')) {\n if (sml_key == 'billablevolume') {\n matchingProps[key] = this.commonService.formatBytsToGb(value * 1024, 2)\n } else {\n matchingProps[key] = this.commonService.formatBytsToGb(value, 2);\n }\n } else if (sml_key == \"uplink\" || sml_key == \"downlink\") {\n matchingProps[key] = this.commonService.formatBytsToGb(value, 2);\n } else if (this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n } else if (!this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n matchingProps[key] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n\n\n\n processNetworkArray(arrayOne, arrayTwo) {\n const arrayThree = [];\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const key of arrayTwo) {\n\n if (key in obj) {\n const value = obj[key];\n const sml_key = key.toLowerCase();\n\n if (typeof value === \"number\") {\n\n if (sml_key === \"count\" || sml_key === \"hour\") {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (sml_key.includes('volume') || sml_key.includes('upload') || sml_key.includes('download')) {\n if (sml_key == 'billablevolume') {\n matchingProps[key] = this.commonService.formatBytes(value * 1024, 2);\n } else {\n matchingProps[key] = this.commonService.formatBytes(value, 2);\n }\n } else if (sml_key == \"uplink\" || sml_key == \"downlink\") {\n matchingProps[key] = this.commonService.formatBytes(value, 2);\n } else if (this.hasDecimal(value)) {\n if (sml_key === \"blendedrate\") {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 4);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n\n } else if (!this.hasDecimal(value)) {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[key] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n\n matchingProps[key] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n processNetworkArrayForFilter(arrayOne, arrayTwo) {\n const arrayThree = [];\n\n for (const obj of arrayOne) {\n const matchingProps = {};\n\n for (const column of arrayTwo) {\n if (column.visible && column.dataField in obj) { // Check if the column is visible and the dataField exists in obj\n const value = obj[column.dataField];\n const dataFieldLower = column.dataField.toLowerCase();\n\n // Assuming commonService is correctly defined elsewhere\n if (typeof value === \"number\") {\n if (dataFieldLower === \"count\" || dataFieldLower === \"hour\") {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else if (dataFieldLower.includes('volume')) {\n if (dataFieldLower == 'billablevolume') {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value * 1024, 2);\n } else {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value, 2);\n }\n } else if (dataFieldLower == \"uplink\" || dataFieldLower == \"downlink\") {\n matchingProps[column.dataField] = this.commonService.formatBytsToGb(value, 2);\n } else if (this.hasDecimal(value)) {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n } else if (!this.hasDecimal(value)) {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 0);\n } else {\n matchingProps[column.dataField] = this.commonService.reformatNumberWithThousandSeparatorV3(value, 2);\n }\n } else {\n matchingProps[column.dataField] = value;\n }\n }\n }\n\n arrayThree.push(matchingProps);\n }\n\n return arrayThree;\n }\n\n\n hasDecimal(number) {\n return number % 1 !== 0;\n }\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { ApplicationContentService } from './application-content.service';\n// import moment from 'moment';\nimport { kpicommonService } from './kpi-comon-service';\nimport moment from './moment-helper';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApplicationDatssetsCall {\n\n uniqueDataSetObject = {};\n\n constructor(private service: ApplicationContentService,\n private kpiService: kpicommonService,\n ) {\n\n }\n\n getDataFromDataSet(dataset, datasetId, filters) {\n if (dataset.datasetType == \"mongo\") {\n return this.getDataSetForMongo(dataset, datasetId);\n } else if (dataset.datasetType == \"querybuilder\") {\n return this.getDatasetForImpala(dataset, datasetId, filters);\n } else if (dataset.datasetType == \"simpleApi\") {\n return this.getDatasetForSimpleApiImpala(dataset, datasetId, filters);\n } else if (dataset.datasetType == \"plainjson\") {\n return this.getDatasetForPlainJson(dataset, datasetId, filters);\n } else if (dataset.datasetType == \"sqlQuery\") {\n return this.getDatasetForSqlTemplate(dataset, datasetId, filters);\n } else {\n return Promise.resolve();\n }\n }\n\n\n getDataSetForMongo(dataset, datasetId) {\n return new Promise<void>((resolve, reject) => {\n let apiJsonObject = {\n requestId: dataset.config.serviceId,\n };\n if (dataset.config.fixOperationLevles && dataset.config.fixOperationLevles.length != 0) {\n for (const item of dataset.config.fixOperationLevles) {\n Object.assign(apiJsonObject, item);\n }\n }\n const mon_config = this.kpiService.getAllSeviceApiJson(apiJsonObject);\n this.service.getData(mon_config, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n // this.uniqueDataSetObject[datasetId] = payload.slice(0, 20);\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n });\n }\n\n getDatasetForImpala(dataset, datasetId, filters) {\n return new Promise<void>((resolve, reject) => {\n let request = dataset.config.queryConfig;\n let transformedObject: any = {};\n for (let item of request.reqFields) {\n const key = Object.keys(item)[0];\n const value = Object.values(item)[0];\n if (key === 'startDate') {\n transformedObject.recordDate = value;\n } else {\n transformedObject[key] = value;\n }\n }\n\n\n const operator = (filters && filters.length !== 0) ? Object.keys(filters.operationFilter).map(key => ({ [key]: filters.operationFilter[key] })) : [];\n\n transformedObject['measures'] = request.measures;\n transformedObject['filters'] = this.transformDataForMFilter(operator, request.mapedFilters);\n transformedObject['sorters'] = request.sorters;\n transformedObject[\"paginationRequired\"] = false;\n transformedObject['dimensions'] = request.dimensions;\n if (request.havings && request.havings.length !== 0) {\n transformedObject['havings'] = request.havings;\n }\n\n this.service.getData(transformedObject, dataset.config.api).subscribe({\n next: (data: any) => {\n const payload = data['dataset'];\n // this.uniqueDataSetObject[datasetId] = payload.slice(0, 30);\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n });\n }\n\n transformDataForMFilter(filterdata, mapData) {\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n value: mapping.defaultValue\n };\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));\n if (filter) {\n if (mapping.defaultValue === \"\") {\n const value = filter[mapping.localColumn];\n\n if (Array.isArray(value)) {\n resultObj.operator = \"in\";\n resultObj.value = value.join(\",\");\n } else {\n resultObj.value = value;\n }\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n }\n } else if (mapping.defaultValue === \"\") {\n return;\n }\n result.push(resultObj);\n });\n filterdata = filterdata.filter(obj => {\n const key = Object.keys(obj)[0];\n return key !== 'startDate' && key !== 'endDate';\n });\n filterdata.forEach(filter => {\n const filterKey = Object.keys(filter)[0];\n const existingMapping = mapData.find(mapping => mapping.localColumn === filterKey);\n\n if (!existingMapping) {\n let resultObj = {\n columnName: filterKey,\n dataType: \"string\",\n operator: filterKey,\n value: filter[filterKey]\n };\n\n if (Array.isArray(filter[filterKey])) {\n resultObj.operator = \"in\";\n resultObj.value = filter[filterKey].join(\",\");\n } else {\n resultObj.value = filter[filterKey];\n }\n\n // for mcit only\n if (filterKey == 'operator_key') {\n resultObj.operator = \"eq\";\n }\n result.push(resultObj);\n }\n });\n\n\n result = result.filter(obj => obj.value !== null && obj.value !== \"\");\n return result;\n }\n\n\n\n\n getDatasetForSimpleApiImpala(dataset: any, datasetId: string, filters) {\n return new Promise<void>((resolve, reject) => {\n\n dataset.config.queryConfig.mapedFilters.forEach(filter => {\n if (filters.operationFilter.hasOwnProperty(filter.localColumn)) {\n filter.defaultValue = filters.operationFilter[filter.localColumn];\n }\n });\n if (dataset.config.apiType === \"post\") {\n\n let serviceJson: any = {};\n dataset.config.queryConfig.mapedFilters.forEach((filter: any) => {\n let datecolumn = filter.serverColumn.toLowerCase();\n if (datecolumn.includes('date') && typeof filter.dataType === 'string') {\n serviceJson[filter.serverColumn] = moment(filter.defaultValue, \"YYYYMMDD\").format(\"YYYY-MM-DD\");\n } else {\n serviceJson[filter.serverColumn] = filter.defaultValue;\n }\n\n\n });\n\n this.service.getSimpleApiPostRequest(dataset.config.api, serviceJson).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n } else if (dataset.config.apiType === \"get\") {\n\n let requestUrl = dataset.config.api + \"?\";\n dataset.config.queryConfig.mapedFilters.forEach((filter: any, index: number) => {\n requestUrl += `${filter.serverColumn}=${filter.defaultValue}`;\n if (index < dataset.config.queryConfig.mapedFilters.length - 1) {\n requestUrl += \"&\";\n }\n });\n\n this.service.getSimpleApiGetRequest(requestUrl).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n }\n });\n }\n\n\n getDatasetForPlainJson(dataset, datasetId, filter) {\n return new Promise<void>((resolve, reject) => {\n\n let requestapi = dataset.config.api + '?datasetId=' + dataset.datasetId;\n this.service.getJsonDatasetPayload(requestapi).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n });\n }\n\n\n getDatasetForSqlTemplate(dataset, datasetId, filters) {\n return new Promise<void>((resolve, reject) => {\n\n\n const operator = (filters && filters.length !== 0) ? Object.keys(filters.operationFilter).map(key => ({ [key]: filters.operationFilter[key] })) : [];\n\n let requestAp = dataset.config.api;\n let request_params = {\n 'dbConfig': dataset.config.queryConfig.dbConfig,\n 'databaseName': dataset.config.queryConfig.databaseName,\n 'filters': this.transformDataForMFilterForSQl(operator, dataset.config.queryConfig.mapedFilters),\n 'templateQuery': dataset.config.queryConfig.templateQuery,\n }\n this.service.genericSqlQueryResponse(requestAp, request_params).subscribe({\n next: (data: any) => {\n const payload = data[\"Payload\"] || data;\n this.uniqueDataSetObject[datasetId] = payload;\n resolve();\n },\n error: (err: any) => {\n console.error('Error:', err);\n reject(err);\n }\n });\n\n });\n }\n\n transformDataForMFilterForSQl(filterdata, mapData) {\n\n let result = [];\n mapData.forEach(mapping => {\n let resultObj = {\n columnName: mapping.serverColumn,\n dataType: mapping.dataType,\n operator: mapping.operatorName,\n value: mapping.defaultValue,\n aliasColumnName: mapping.localColumn,\n };\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n const filter = filterdata.find(f => f.hasOwnProperty(mapping.localColumn));\n if (filter) {\n if (mapping.defaultValue === \"\") {\n const value = filter[mapping.localColumn];\n\n if (Array.isArray(value)) {\n resultObj.operator = \"in\";\n resultObj.value = value.join(\",\");\n } else {\n resultObj.value = value;\n }\n if (mapping.serverColumn.includes('date') && typeof resultObj.value === 'string') {\n resultObj.value = moment(resultObj.value, \"YYYY-MM-DD\").format(\"YYYYMMDD\");\n }\n }\n } else if (mapping.defaultValue === \"\") {\n return;\n }\n result.push(resultObj);\n });\n filterdata = filterdata.filter(obj => {\n const key = Object.keys(obj)[0];\n return key !== 'startDate' && key !== 'endDate';\n }); filterdata.forEach(filter => {\n const filterKey = Object.keys(filter)[0];\n const existingMapping = mapData.find(mapping => mapping.localColumn === filterKey);\n\n if (!existingMapping) {\n let resultObj = {\n columnName: filterKey,\n dataType: \"string\",\n operator: filterKey,\n value: filter[filterKey]\n };\n\n if (Array.isArray(filter[filterKey])) {\n resultObj.operator = \"in\";\n resultObj.value = filter[filterKey].join(\",\");\n } else {\n resultObj.value = filter[filterKey];\n }\n\n // for mcit only\n if (filterKey == 'operator_key') {\n resultObj.operator = \"eq\";\n }\n result.push(resultObj);\n }\n });\n\n\n // result = result.filter(obj => obj.value !== null && obj.value !== \"\");\n return result;\n }\n\n\n getUniqueDataSetObject() {\n return this.uniqueDataSetObject;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\n@Component({\n selector: 'app-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss']\n})\nexport class LoadingComponent implements OnInit {\n\n showLoadingModal = true;\n\n constructor(\n ) {\n \n }\n\n ngOnInit() {\n }\n\n}\n","<!-- <div class=\"modal\" id=\"loading-modal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">\n <div class=\"modal-dialog\" role=\"document\" style=\"max-width: 600px;margin: 8.75rem auto;\">\n <div class=\"modal-content\">\n <div class=\"modal-body\" style=\"padding: 20px;\">\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button> Loading. Please Wait...\n <div class=\"progress\" style=\"height: 25px\">\n <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-info\" role=\"progressbar\" style=\"width: 100%\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n </div>\n </div>\n </div>\n </div>\n</div> -->\n<!-- <div class=\"loader-background \">\n <div class=\"loader\"></div>\n</div> -->\n<div class=\"popup\">\n <div class=\"popup__content\">\n <div class=\"loader\"></div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as vkbeautify from 'vkbeautify';\n\n/**\n * Generated class for the safeHtmlVouchertreand pipe.\n *\n * See https://angular.io/api/core/Pipe for more info on Angular Pipes.\n */\n@Pipe({\n name: 'sql'\n})\nexport class SqlPipe implements PipeTransform {\n transform(value: string): string {\n return vkbeautify.sql(value);\n }\n}\n","\n\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { SqlPipe } from './sqlFormatter';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { CommonService } from '../../common';\nimport cloneDeep from 'lodash-es/cloneDeep';\n\n@Component({\n selector: 'app-create-dataset-sql',\n templateUrl: './create-dataset-sql.component.html',\n styleUrls: ['./create-dataset-sql.component.scss'],\n providers: [SqlPipe],\n\n})\nexport class CreateDatasetSqlComponent implements OnInit {\n kpi_function: any = [\"sum\", \"count\", \"avg\", \"max\", \"min\", \"stddev\", \"count_distinct\"]\n kpi_operator: any = [\"eq\", \"gte\", \"lte\", \"ne\", \"in\", \"notIn\", \"contains\", \"startsWith\", \"endsWith\"]\n @Output() public getSqlQueryBulbderDataSet: EventEmitter<any> = new EventEmitter();\n apiBulderDataset: any;\n queryStringData: string;\n sqlString = '';\n validateArgumentError: boolean = false;\n formatButtonStatus: boolean = true;\n validateStatus: boolean = false;\n\n isValidate: boolean = true;\n isNotValidate: boolean = true;\n argumentData: any = [];\n\n duplicateMatches: any;\n matches: any;\n kpi_enrichment_name: any = [];\n @Input('sqlBulderDataset')\n set sqlBulderDataset(value) {\n if (value.queryConfig.mapedFilters == undefined) {\n value.queryConfig.mapedFilters = [];\n value.queryConfig.mapedFilters.push({ \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" })\n }\n if (value.queryConfig.templateQuery != \"\") {\n this.queryStringData = value.queryConfig.templateQuery;\n }\n\n this.apiBulderDataset = value;\n }\n\n constructor(\n private toastr: ToastrService,\n public commonService: CommonService,\n private sqlFormatter: SqlPipe,\n private service: ApplicationContentService\n ) { }\n\n ngOnInit(): void {\n this.service.listColumnEnrichmentFunctions().subscribe(data => {\n this.kpi_enrichment_name = data;\n })\n }\n\n addFilterMapingColumns() {\n let obj = { \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" }\n this.apiBulderDataset.queryConfig.mapedFilters.push(obj);\n\n }\n\n deleteFilterMapingColumns(i) {\n this.apiBulderDataset.queryConfig.mapedFilters.splice(i, 1)\n\n }\n\n saveColumnMaping() {\n this.toastr.success('Maped Filter Successfully');\n\n }\n\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n\n // Move item\n const itemToMove = this.apiBulderDataset.queryConfig.mapedFilters[index];\n this.apiBulderDataset.queryConfig.mapedFilters.splice(index, 1); // Remove item from current position\n this.apiBulderDataset.queryConfig.mapedFilters.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n\n\n format(): any {\n this.matches = [];\n this.duplicateMatches = [];\n this.argumentData = [];\n let val: any;\n let fval: any;\n let splittedValuesOfQuery: any;\n // val = document.getElementById('exampleTextarea')['value'];\n val = this.queryStringData;\n const newVal = val.trim();\n if (newVal === '' || newVal === undefined) {\n // this.toastr.error('Query Empty');\n } else {\n fval = this.sqlFormatter.transform(val);\n splittedValuesOfQuery = val.split(' ').map(function (item): any {\n return item.trim().replace(/(^,)|(,)|(;)/g, '');\n });\n // document.getElementById('exampleTextarea')['value'] = fval;\n this.queryStringData = fval;\n // this.toastr.success('Query Formatted');\n const re = /{([^}]+)}/g;\n let m = [];\n while (m = re.exec(fval)) {\n this.duplicateMatches.push(m[1]);\n }\n this.matches = this.duplicateMatches.filter((v, i) => this.duplicateMatches.indexOf(v) === i);\n for (let i = 0; i < this.matches.length; i++) {\n let value: any;\n let key: any;\n let th_key: any;\n let keyarr = [];\n let th_keyArr = [];\n value = this.matches[i];\n keyarr = splittedValuesOfQuery.filter(s => s.includes('$P{' + this.matches[i] + '}'));\n th_keyArr = splittedValuesOfQuery.filter(s => s.includes('$T{' + this.matches[i] + '}'));\n\n\n if (keyarr.length !== 0) {\n if (keyarr[0].split('=')[0].indexOf('.') > 0) {\n key = keyarr[0].split('=')[0].split('.')[1];\n } else {\n key = keyarr[0].split('=')[0];\n let labelName = key.replace(/^./, key[0].toUpperCase());\n\n }\n }\n this.argumentData.push(key)\n\n }\n\n this.isValidate = false;\n this.isNotValidate = true;\n }\n\n // console.log(this.argumentData)\n\n\n\n }\n\n\n validateNewReport() {\n const argumentData = cloneDeep(this.argumentData).map(item => item.replace(/.*\\{(.*)\\}.*/, '$1'));\n const mappedFilterColumns = this.apiBulderDataset.queryConfig.mapedFilters.map(element => element.localColumn);\n\n this.apiBulderDataset.queryConfig.mapedFilters.forEach(element => {\n if (argumentData.some(key => element.localColumn == key)) {\n this.toastr.success('Validate For ' + element.localColumn);\n this.isNotValidate = false;\n } else {\n this.toastr.info('Missing Alias', element.localColumn);\n }\n });\n\n argumentData.forEach(key => {\n if (!mappedFilterColumns.includes(key)) {\n this.toastr.info('Extra Argument Data', key);\n }\n });\n\n }\n\n moveItemForMeasuresColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.apiBulderDataset.queryConfig.enrichments.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.apiBulderDataset.queryConfig.enrichments.length) return;\n\n // Move item\n const itemToMove = this.apiBulderDataset.queryConfig.enrichments[index];\n this.apiBulderDataset.queryConfig.enrichments.splice(index, 1); // Remove item from current position\n this.apiBulderDataset.queryConfig.enrichments.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n addColumns() {\n let obj = {\n \"columnName\": \"\",\n \"enrichFunction\": \"\",\n }\n this.apiBulderDataset.queryConfig.enrichments.push(obj);\n }\n\n\n deleteColumns(i) {\n this.apiBulderDataset.queryConfig.enrichments.splice(i, 1)\n }\n\n\n createDataSet() {\n this.apiBulderDataset.queryConfig['templateQuery'] = this.queryStringData;\n this.getSqlQueryBulbderDataSet.emit(this.apiBulderDataset)\n }\n\n}\n","<div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">End Point</div>\n <dx-text-box [(ngModel)]=\"apiBulderDataset.api\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Api Type</div>\n <dx-select-box [dataSource]=\"['get','post']\" [(ngModel)]=\"apiBulderDataset.apiType\">\n </dx-select-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Database Name</div>\n <dx-text-box [(ngModel)]=\"apiBulderDataset.queryConfig.databaseName\">\n </dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">DB Config</div>\n <dx-select-box [items]=\"['impala','postgres','mysql','bigquery']\"\n [(ngModel)]=\"apiBulderDataset.queryConfig.dbConfig\"></dx-select-box>\n </div>\n </div>\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Maping\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\"\n *ngFor=\"let item of apiBulderDataset.queryConfig.mapedFilters; let i = index;\">\n\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Server Column</div>\n <dx-text-box [(ngModel)]=\"item.serverColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Local Column(aliasName)</div>\n <dx-text-box [(ngModel)]=\"item.localColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Operator</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_operator\"\n [(ngModel)]=\"item.operatorName\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Datatype</div>\n <dx-select-box [searchEnabled]=\"true\"\n [items]=\"['date','string','timestamp','int', 'double', 'boolean']\"\n [(ngModel)]=\"item.dataType\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultValue\"></dx-text-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== apiBulderDataset.queryConfig.mapedFilters.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilterMapingColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row\">\n <div class=\"w-1/2\">\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\" (click)=\"saveColumnMaping()\">Save\n Maping</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addFilterMapingColumns()\">Add\n Maping</button>\n </div>\n </div>\n </div>\n\n\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold tracking-tight text-gray-900 dark:text-white border-b pb-3\">\n Configure SQL Expression\n </h6>\n <div class=\"p-5 font-light border border-b-0 border-gray-200 dark:border-gray-700 dark:bg-gray-900\">\n <div class=\"mt-5 p-2\">\n <textarea id=\"message\" rows=\"20\"\n class=\"block p-2.5 w-full text-lg text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"\n placeholder=\"Write your SQL query here...\" [(ngModel)]=\"queryStringData\"\n id=\"exampleTextarea\">{{ sqlString | sql }}</textarea>\n\n\n <div class=\"row no-margin\" *ngIf=\"validateArgumentError\">\n <p class=\"text-red-400\">This query is not valid</p>\n </div>\n\n <div class=\"flex\">\n <button *ngIf=\"formatButtonStatus\" type=\"button\"\n class=\"focus:outline-none text-white bg-purple-700 hover:bg-purple-800 focus:ring-4\n focus:ring-purple-300 font-medium dark:bg-purple-600 my-2 px-5 py-2.5 dark:hover:bg-purple-700 dark:focus:ring-purple-900\"\n (click)=\"format()\">Format\n </button>\n <button type=\"button\" *ngIf=\"!formatButtonStatus\"\n class=\"focus:outline-none text-white bg-yellow-800 hover:bg-yellow-500 focus:ring-4\n focus:ring-yellow-300 font-medium mr-2 px-5 py-2.5 my-2 dark:focus:ring-yellow-900\" (click)=\"format()\">\n Reformat\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"flex justify-end mt-2\">\n\n </div>\n </div>\n <div class=\"my-2\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700 \">\n <h6 class=\"mb-2 font-bold tracking-tight text-gray-900 dark:text-white border-b pb-3\">\n Data Enrichment\n </h6>\n <div class=\"grid grid-cols-1 gap-2 w-full\">\n <div class=\"p-2 w-full\"\n *ngFor=\"let item of apiBulderDataset.queryConfig.enrichments; let i = index;\">\n <div class=\"flex flex-row\">\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Value Field(aliasName)</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Enrich Type</div>\n <dx-select-box [items]=\"['Basic','Lookup']\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2 w-full\">\n <div class=\"text-md mb-2\"> Enrich Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\"\n [(ngModel)]=\"item.enrichFunction\"></dx-select-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForMeasuresColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== apiBulderDataset.queryConfig.enrichments.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForMeasuresColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n\n </div>\n </div>\n\n\n <div class=\"flex justify-end mt-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\" (click)=\"addColumns()\">Add\n Columns</button>\n </div>\n </div>\n </div>\n\n\n\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button type=\"button\" class=\"{{commonService.btn_primary_md}} cursor-pointer mx-1 my-2\"\n (click)=\"validateNewReport()\" [disabled]=\"isValidate\">\n Validate\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createDataSet()\"\n [disabled]=\"isNotValidate\">\n Submit DataSet\n </button>\n </div>\n\n </div>\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { CommonService } from '../../common';\n\n\n@Component({\n selector: 'app-create-dataset-json',\n templateUrl: './create-dataset-json.component.html',\n // styleUrls: ['./create-dataset-json.component.scss']\n})\nexport class CreateDatasetJsonComponent implements OnInit {\n kpi_function: any = [\"sum\", \"count\", \"avg\", \"max\", \"min\", \"stddev\", \"count_distinct\"]\n kpi_operator: any = [\"eq\", \"gte\", \"lte\", \"ne\", \"in\", \"notIn\", \"contains\", \"startsWith\", \"endsWith\"]\n @Output() public getJsonDataset: EventEmitter<any> = new EventEmitter();\n apiBulderDataset: any;\n jsonContent: string = '';\n selectedJsonfile: any;\n isJsonEditor: boolean;\n uploadedFileData: any;\n validationMessage: string;\n contentType: any;\n @Input('jsonDataset')\n set jsonDataset(value) {\n\n if (value.queryConfig.mapedFilters == undefined) {\n value.queryConfig.mapedFilters = [];\n value.queryConfig.mapedFilters.push({ \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" })\n }\n\n this.apiBulderDataset = value;\n }\n\n constructor(\n private toastr: ToastrService,\n public commonService: CommonService,\n private service: ApplicationContentService,\n private activatedRoute: ActivatedRoute,\n\n ) { }\n\n ngOnInit(): void {\n this.contentType = this.activatedRoute.snapshot.queryParams['contentType'];\n }\n\n addFilterMapingColumns() {\n let obj = { \"localColumn\": \"\", \"serverColumn\": \"\", \"operatorName\": \"\", \"defaultValue\": \"\", \"dataType\": \"\" }\n this.apiBulderDataset.queryConfig.mapedFilters.push(obj);\n\n }\n\n deleteFilterMapingColumns(i) {\n this.apiBulderDataset.queryConfig.mapedFilters.splice(i, 1)\n\n }\n\n saveColumnMaping() {\n this.toastr.success('Maped Filter Successfully');\n\n }\n\n\n\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.apiBulderDataset.queryConfig.mapedFilters.length) return;\n\n // Move item\n const itemToMove = this.apiBulderDataset.queryConfig.mapedFilters[index];\n this.apiBulderDataset.queryConfig.mapedFilters.splice(index, 1); // Remove item from current position\n this.apiBulderDataset.queryConfig.mapedFilters.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n createDataSet() {\n\n if (!this.isJsonEditor && Object.keys(this.uploadedFileData).length == 0) {\n this.toastr.error(\"Please Upload File\");\n return true;\n }\n if (this.uploadedFileData && !this.isJsonEditor) {\n this.apiBulderDataset.queryConfig['jsonFileId'] = this.uploadedFileData.fileId;\n }\n if (this.isJsonEditor) {\n this.apiBulderDataset.queryConfig['jsonPayload'] = this.jsonContent;\n }\n this.getJsonDataset.emit(this.apiBulderDataset)\n }\n\n onjsonFileSelected(event: any): void {\n this.isJsonEditor = false;\n this.selectedJsonfile = event.target.files[0];\n\n }\n\n viewJsonEditor() {\n this.selectedJsonfile = undefined;\n this.uploadedFileData = undefined;\n this.isJsonEditor = true;\n }\n\n uploadSelectedJsonFile() {\n const formData = new FormData();\n formData.append('file', this.selectedJsonfile, this.selectedJsonfile.name);\n this.service.uploadDatasetJsonPayload(formData).subscribe({\n next: (data: any) => {\n this.uploadedFileData = data;\n },\n error: (err: any) => {\n\n }\n })\n\n }\n\n downloadJsonFile() {\n\n let requestapi = this.apiBulderDataset.api + '?datasetId=' + this.apiBulderDataset.queryConfig.jsonFileId;\n this.service.getJsonDatasetPayload(requestapi).subscribe({\n next: (data: any) => {\n this.exportJsonFile(data);\n },\n error: (err: any) => {\n console.error('Error:', err);\n }\n });\n\n }\n\n exportJsonFile(item: any): void {\n if (!item) {\n this.toastr.error('No data available to export.', 'Export Error');\n return;\n }\n\n const jsonStr = JSON.stringify(item, null, 2);\n const blob = new Blob([jsonStr], { type: 'application/json' });\n const url = window.URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = `${item.viewName.replace(/ /g, '_')}.json`;\n anchor.click();\n window.URL.revokeObjectURL(url);\n }\n\n\n\n jsonValidator() {\n this.validationMessage = '';\n\n if (this.jsonContent.trim()) {\n const arrayOfObjectsRegex = /^\\s*\\[\\s*(\\{\\s*(\"[^\"]*\"\\s*:\\s*(\"[^\"]*\"|\\d+|true|false|null)\\s*,?\\s*)+\\}\\s*,?\\s*)*\\]\\s*$/;\n\n if (arrayOfObjectsRegex.test(this.jsonContent)) {\n try {\n const parsedJson = JSON.parse(this.jsonContent);\n\n if (Array.isArray(parsedJson) && parsedJson.every(item => typeof item === 'object' && item !== null)) {\n this.validationMessage = '';\n } else {\n this.validationMessage = 'Invalid JSON';\n }\n } catch (e) {\n this.validationMessage = 'Invalid JSON';\n }\n } else {\n this.validationMessage = 'Invalid JSON';\n }\n } else {\n this.validationMessage = '';\n\n }\n }\n\n}\n","<div class=\"m-2\">\n <div class=\"flex flex-row mb-2\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">End Point</div>\n <dx-text-box [(ngModel)]=\"apiBulderDataset.api\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Api Type</div>\n <dx-select-box [dataSource]=\"['get','post']\" [(ngModel)]=\"apiBulderDataset.apiType\">\n </dx-select-box>\n </div>\n </div>\n\n\n <div class=\"my-4 p-3 justify-center items-center\">\n <div class=\"m-2 flex items-center justify-between\">\n <button class=\"{{commonService.btn_warning_md}} w-1/3\" (click)=\"viewJsonEditor()\">JSON Editor</button>\n <div class=\"text-lg\"> - OR - </div>\n <div class=\"mx-2\">\n <div class=\"flex flex-row justify-between\">\n <div class=\"mx-2\">\n <input type=\"file\" #fileInput accept=\".json\"\n class=\"block p-2 text-sm text-gray-400 border border-gray-700 w-full rounded-lg bg-gray-800 focus:ring-blue-500 focus:border-blue-500\"\n (change)=\"onjsonFileSelected($event)\">\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"uploadSelectedJsonFile()\">Upload\n File</button>\n\n </div>\n <div class=\"mx-2\" *ngIf=\"contentType == 'edit'\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"downloadJsonFile()\">Download\n File</button>\n\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-4\" *ngIf=\"isJsonEditor\">\n <textarea [(ngModel)]=\"jsonContent\" rows=\"18\" (input)=\"jsonValidator()\"\n [ngClass]=\"{'border-red-500': validationMessage}\"\n class=\"block p-2.5 w-full text-lg text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\"\n placeholder=\"Write your JSON here...\"></textarea>\n <div *ngIf=\"validationMessage\" class=\"text-red-500 mt-2\">{{ validationMessage }}</div>\n </div>\n </div>\n\n\n\n\n\n\n\n\n\n <div class=\"flex flex-col flex-auto min-w-0 my-2\">\n <div class=\"text-lg py-2 font-extrabold border-b bg-gray-700 text-white px-2\"> Filter Maping\n </div>\n <div class=\"pt-2 border-x border-b \">\n <div class=\"my-2 flex justify-between\"\n *ngFor=\"let item of apiBulderDataset.queryConfig.mapedFilters; let i = index;\">\n\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Local Column</div>\n <dx-text-box [(ngModel)]=\"item.localColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Server Column</div>\n <dx-text-box [(ngModel)]=\"item.serverColumn\"></dx-text-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Operator</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_operator\"\n [(ngModel)]=\"item.operatorName\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Datatype</div>\n <dx-select-box [searchEnabled]=\"true\"\n [items]=\"['date','string','timestamp','int', 'double', 'boolean']\"\n [(ngModel)]=\"item.dataType\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-2\">\n <div class=\"text-md mb-2\"> Default Value</div>\n <dx-text-box [(ngModel)]=\"item.defaultValue\"></dx-text-box>\n </div>\n <div class=\"px-1 mt-8\">\n <div class=\"flex flex-row\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== apiBulderDataset.queryConfig.mapedFilters.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"px-1 mt-8 text-center\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer\"\n (click)=\"deleteFilterMapingColumns(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n <div class=\"flex flex-row\">\n <div class=\"w-1/2\">\n <div class=\"flex flex-row justify-end my-2\">\n <button class=\"{{commonService.btn_success_sm}} cursor-pointer\" (click)=\"saveColumnMaping()\">Save\n Maping</button>\n <button class=\"{{commonService.btn_primary_sm}} cursor-pointer\"\n (click)=\"addFilterMapingColumns()\">Add\n Maping</button>\n </div>\n </div>\n </div>\n\n <div class=\"flex w-full justify-end mt-5 border-t\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mx-1 my-2\" (click)=\"createDataSet()\">\n Submit DataSet\n </button>\n </div>\n\n </div>\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { ToastrService } from 'ngx-toastr';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-create-dataset',\n templateUrl: './create-dataset.component.html',\n styleUrls: ['./create-dataset.component.scss']\n})\nexport class CreateDatasetComponent implements OnInit {\n loadingModal: boolean;\n isDuplidateView: boolean = false;\n creatDatasetObject = {\n \"datasetName\": \"\",\n \"datasetType\": \"\"\n };\n\n dataSetTypeContainer = [{ name: \"Query Builder\", value: \"querybuilder\" }, { name: \"Service JSON\", value: \"mongo\" },\n { name: \"Rest API\", value: \"simpleApi\" }, { name: \"SQL Builder\", value: \"sqlQuery\" }, { name: \"Plain JSON\", value: \"plainjson\" }]\n mongoDataset = {\n \"api\": \"/kpi/trends/network/get-metric-data\",\n \"serviceId\": \"\",\n \"apiType\": \"post\",\n \"filterItems\": [\n {\n \"apiName\": \"startDate\",\n \"label\": \"Start Date\",\n \"filterType\": \"date\",\n \"operatorName\": \"\",\n \"defaultFilterType\": \"dynamic\",\n \"defaultFilterValue\": \"YYYY-MM-DD\",\n \"momentFunction\": \"subtract\",\n \"momentFormate\": \"15,days\"\n },\n {\n \"apiName\": \"endDate\",\n \"label\": \"End Date\",\n \"filterType\": \"date\",\n \"operatorName\": \"\",\n \"defaultFilterType\": \"dynamic\",\n \"defaultFilterValue\": \"YYYY-MM-DD\",\n \"momentFunction\": \"subtract\",\n \"momentFormate\": \"1,days\"\n }\n ],\n \"fixOperationLevles\": []\n }\n\n queryBulderDataset = {\n \"api\": \"/kpi/genericAggregatePaginatedKpiServiceResponse\",\n \"apiType\": \"post\",\n \"serviceId\": \"\",\n \"queryConfig\": {\n \"mapedFilters\": [\n {\n \"localColumn\": \"startDate\",\n \"serverColumn\": \"record_date\",\n \"operatorName\": \"gte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n },\n {\n \"localColumn\": \"endDate\",\n \"serverColumn\": \"record_date\",\n \"operatorName\": \"lte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n }\n ],\n \"sorters\": [\n\n ],\n \"reqFields\": [\n\n ],\n \"measures\": [\n\n ],\n \"filter\": [\n\n ],\n \"havings\": [],\n \"commonConfig\": {},\n \"columns\": [\n ]\n }\n }\n\n restApiDataset = {\n \"api\": \"\",\n \"apiType\": \"post\",\n \"serviceId\": \"\",\n \"queryConfig\": {\n \"mapedFilters\": [\n {\n \"localColumn\": \"startDate\",\n \"serverColumn\": \"recordDate\",\n \"operatorName\": \"gte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n },\n {\n \"localColumn\": \"endDate\",\n \"serverColumn\": \"recordDate\",\n \"operatorName\": \"lte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n }\n ]\n }\n };\n sqlApiDataset = {\n \"api\": \"/kpi/genericSqlQueryResponse\",\n \"apiType\": \"post\",\n \"serviceId\": \"\",\n \"queryConfig\": {\n \"templateQuery\": \"\",\n \"databaseName\": \"\",\n \"dbConfig\": \"\",\n \"enrichments\": [],\n \"mapedFilters\": [\n {\n \"localColumn\": \"startDate\",\n \"serverColumn\": \"record_date\",\n \"operatorName\": \"gte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n },\n {\n \"localColumn\": \"endDate\",\n \"serverColumn\": \"record_date\",\n \"operatorName\": \"lte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n }\n ]\n }\n };\n\n jsonDataset = {\n \"api\": \"/kpi-config/getJsonDatasetPayload\",\n \"apiType\": \"get\",\n \"serviceId\": \"\",\n \"queryConfig\": {\n \"mapedFilters\": [\n {\n \"localColumn\": \"startDate\",\n \"serverColumn\": \"recordDate\",\n \"operatorName\": \"gte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n },\n {\n \"localColumn\": \"endDate\",\n \"serverColumn\": \"recordDate\",\n \"operatorName\": \"lte\",\n \"defaultValue\": \"\",\n \"dataType\": \"string\"\n }\n ]\n }\n }\n\n inputDatasetID: any;\n @Input() isHeader: boolean = true;\n\n @Input('selectedDatasetId')\n set selectedDatasetId(value) {\n if (value) {\n this.inputDatasetID = value\n this.service.getAppDatasetConfig(value).subscribe({\n next: (data: any) => {\n this.loadingModal = false;\n this.creatDatasetObject = data;\n if (data.datasetType == 'mongo') {\n this.mongoDataset = data.config\n } else if (data.datasetType == 'querybuilder') {\n this.queryBulderDataset = data.config\n } else if (data.datasetType == 'simpleApi') {\n this.restApiDataset = data.config;\n }\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n }\n })\n } else {\n\n\n }\n\n\n }\n\n constructor(\n private service: ApplicationContentService,\n private toastr: ToastrService,\n public commonService: CommonService,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) { }\n\n ngOnInit(): void {\n let datasetId = this.activatedRoute.snapshot.queryParams['datasetId'];\n let contentType = this.activatedRoute.snapshot.queryParams['contentType'];\n if (contentType == \"clone\") {\n this.isDuplidateView = true;\n }\n if (datasetId) {\n this.loadingModal = true;\n\n this.service.getAppDatasetConfig(datasetId).subscribe({\n next: (data: any) => {\n this.loadingModal = false;\n this.creatDatasetObject = data;\n if (data.datasetType == 'mongo') {\n this.mongoDataset = data.config\n } else if (data.datasetType == 'querybuilder') {\n this.queryBulderDataset = data.config\n } else if (data.datasetType == 'simpleApi') {\n this.restApiDataset = data.config;\n } else if (data.datasetType == 'plainjson') {\n this.jsonDataset = data.config;\n } else if (data.datasetType == 'sqlQuery') {\n this.sqlApiDataset = data.config;\n }\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n }\n })\n\n\n // this.service.getAppDatasetConfigs().subscribe({\n // next: (data: any) => {\n // const foundObject = data.find(dataset => dataset.datasetId === datasetId);\n // this.loadingModal = false;\n // this.creatDatasetObject = foundObject;\n // if (foundObject.datasetType == 'mongo') {\n // this.mongoDataset = foundObject.config\n // } else if (foundObject.datasetType == 'querybuilder') {\n // this.queryBulderDataset = foundObject.config\n // } else if (foundObject.datasetType == 'simpleApi') {\n // this.restApiDataset = foundObject.config;\n // }\n // }\n // })\n }\n\n }\n\n\n createMongoServiceDataSet(data) {\n\n this.creatDatasetObject['config'] = data;\n console.log(this.creatDatasetObject);\n this.loadingModal = true;\n if (this.isDuplidateView) {\n\n this.createNeDataSetConfig();\n } else {\n if (this.creatDatasetObject['datasetId']) {\n this.updataNewDataSetCongig()\n\n } else {\n this.createNeDataSetConfig();\n }\n }\n }\n createQueryBuilderDataSet(data) {\n\n this.creatDatasetObject['config'] = data;\n console.log(this.creatDatasetObject);\n this.loadingModal = true;\n if (this.isDuplidateView) {\n\n this.createNeDataSetConfig();\n } else {\n if (this.creatDatasetObject['datasetId']) {\n this.updataNewDataSetCongig()\n localStorage.removeItem('querybuilder')\n } else {\n this.createNeDataSetConfig();\n localStorage.removeItem('querybuilder')\n\n }\n }\n }\n\n\n createSqlQueryBuilderDataSet(data) {\n\n this.creatDatasetObject['config'] = data;\n console.log(this.creatDatasetObject);\n this.loadingModal = true;\n if (this.isDuplidateView) {\n\n this.createNeDataSetConfig();\n } else {\n if (this.creatDatasetObject['datasetId']) {\n this.updataNewDataSetCongig()\n localStorage.removeItem('querybuilder')\n } else {\n this.createNeDataSetConfig();\n localStorage.removeItem('querybuilder')\n\n }\n }\n\n }\n\n\n\n createRestApiDataSet(data) {\n this.creatDatasetObject['config'] = data;\n console.log(this.creatDatasetObject);\n this.loadingModal = true;\n\n if (this.isDuplidateView) {\n this.createNeDataSetConfig();\n } else {\n if (this.creatDatasetObject['datasetId']) {\n this.updataNewDataSetCongig()\n } else {\n this.createNeDataSetConfig();\n }\n }\n\n }\n\n\n createNeDataSetConfig() {\n this.service.createAppDataset(this.creatDatasetObject).subscribe({\n next: (data: any) => {\n // this.isNewDataSetCreateView = false;\n this.isDuplidateView = false;\n this.loadingModal = false;\n this.toastr.success('Dataset Created Successfully')\n if (this.isHeader) {\n this.router.navigate(['apps/controlPanel/applicationDataset/'])\n }\n\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n }\n })\n }\n\n updataNewDataSetCongig() {\n this.service.updateAppDatasetConfig(this.creatDatasetObject).subscribe({\n next: (data: any) => {\n // this.isNewDataSetCreateView = false;\n this.loadingModal = false;\n this.toastr.success('Dataset Updated Successfully')\n if (this.isHeader) {\n this.router.navigate(['apps/controlPanel/applicationDataset/'])\n }\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n }\n })\n }\n\n gotoAllDatasets() {\n this.router.navigate(['apps/controlPanel/applicationDataset/'])\n }\n\n\n createDataSetWithJson(data) {\n this.creatDatasetObject['config'] = data;\n console.log(this.creatDatasetObject);\n if (this.isDuplidateView) {\n this.createNeDataSetConfig();\n } else {\n if (this.creatDatasetObject['datasetId']) {\n this.updataNewDataSetCongig()\n } else {\n this.createNeDataSetConfig();\n }\n }\n\n\n\n }\n\n}\n","<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"'Dataset Editor'\" *ngIf=\"isHeader\"></lib-common-header>\n\n\n <div class=\"p-2 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Dataset Editor\n\n </h6>\n <div class=\"flex flex-row my-4\">\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Dataset Name</div>\n <dx-text-box [(ngModel)]=\"creatDatasetObject.datasetName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-1/3\">\n <div class=\"text-md mb-2\">Select Dataset Type</div>\n <dx-select-box [items]=\"dataSetTypeContainer\" displayExpr=\"name\" valueExpr=\"value\"\n [(ngModel)]=\"creatDatasetObject.datasetType\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-5 border\">\n <app-dataset-mongo *ngIf=\"creatDatasetObject.datasetType == 'mongo'\" [mongoDataset]=\"mongoDataset\"\n (getMongoServiceDataSet)=\"createMongoServiceDataSet($event)\"></app-dataset-mongo>\n\n <app-dataset-rest-api *ngIf=\"creatDatasetObject.datasetType == 'simpleApi'\"\n [restApiDataset]=\"restApiDataset\"\n (getRestApiBulbderDataSet)=\"createRestApiDataSet($event)\"></app-dataset-rest-api>\n\n <app-dataset-query-bulder *ngIf=\"creatDatasetObject.datasetType == 'querybuilder'\"\n [bulderDataset]=\"queryBulderDataset\"\n (getQueryBulbderDataSet)=\"createQueryBuilderDataSet($event)\"></app-dataset-query-bulder>\n\n <app-create-dataset-sql *ngIf=\"creatDatasetObject.datasetType == 'sqlQuery'\"\n [sqlBulderDataset]=\"sqlApiDataset\"\n (getSqlQueryBulbderDataSet)=\"createSqlQueryBuilderDataSet($event)\"></app-create-dataset-sql>\n\n <app-create-dataset-json *ngIf=\"creatDatasetObject.datasetType == 'plainjson'\"\n [jsonDataset]=\"jsonDataset\"\n (getJsonDataset)=\"createDataSetWithJson($event)\"></app-create-dataset-json>\n </div>\n\n\n </div>\n </div>\n\n\n</div>","import { AfterViewInit, Component, ComponentFactoryResolver, ComponentRef, ElementRef, HostListener, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute, NavigationExtras, Router } from '@angular/router';\nimport { ToastrService } from 'ngx-toastr';\nimport { forkJoin } from 'rxjs';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { DxScrollViewComponent } from 'devextreme-angular';\nimport { ApplicationDatssetsCall } from '../../application-dataset-call.service';\nimport moment from './../../moment-helper';\nimport { GammaTodayPreviousComponent } from '../../shared/advanced-component/gamma-today-previous/gamma-today-previous.component';\nimport { AppAdvanceHeaderComponent } from '../../shared/advanced-component/app-advance-header/app-header.component';\nimport { GammaTableWithPercentageComponent } from '../../shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component';\nimport { GammSingleNumberCardComponent } from '../../shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component';\nimport { GammaAdvanceOperatorTableComponent } from '../../shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component';\nimport { AdvanceWidgetHeaderFilterComponent } from '../../shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component';\nimport { CommonService } from '../../common';\nimport { GammaAdvanceChartComponent } from '../../shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component';\n\n@Component({\n selector: 'app-dashbord-config',\n templateUrl: './page-config.component.html',\n styleUrls: ['./page-config.component.scss']\n})\nexport class PageConfigComponent implements OnInit, OnDestroy {\n dashbord_container: any = [];\n selected_width: any;\n widget_width = ['w-full', 'w-1/2', 'w-1/3', 'w-2/3', 'w-1/4', 'w-3/4', 'w-1/5', 'w-4/5', 'w-1/6', 'w-5/6']\n loadingModal: boolean = true;\n customers: any;\n pageHeadersData: any;\n page_title = 'Dashboard';\n isSrvTypeOperator: boolean;\n defaultStartDate;\n defaultEndDate;\n page_config;\n operationLevels: any;\n filter_value;\n isToggleSwich: boolean = true;\n isDatePicker: boolean = false;\n isToggleEventStatus: boolean = false;\n isEditClick: boolean = false;\n isConfigView: boolean;\n isLoader: boolean;\n componentName: any;\n isUpdateWidget: boolean = false;\n\n isChartButtonClick: boolean;\n chartAccess: any;\n chartType: any;\n dashChartComSource: any;\n isGenerate: boolean\n isFilterInputs: boolean\n /**\n * Constructor\n */\n\n @ViewChild('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer: ViewContainerRef;\n @ViewChild('container', { read: ViewContainerRef })\n containerRef: ViewContainerRef;\n @ViewChild('dynamicContainer', { static: true }) dynamicContainer: ElementRef;\n\n dynamicComponentRefs: ComponentRef<any>[] = [];\n // dynamicComponentRefs: ComponentRef<any>[] = [];\n\n CompRefs: ComponentRef<any>;\n\n componentClassMap = {\n GammaAdvanceChartComponent,\n GammaTodayPreviousComponent,\n AppAdvanceHeaderComponent,\n GammaTableWithPercentageComponent,\n GammSingleNumberCardComponent,\n GammaAdvanceOperatorTableComponent,\n AdvanceWidgetHeaderFilterComponent\n };\n dataSourceMataData: any = [];\n queryType = \"mongo\";\n dataSetModal: any = [];\n componentConfigDataSource: any = [];\n selescedDataSource: any;\n dataSourceModal: any = {};\n isDashBoardContent: boolean = false;\n\n selectedViewFormComponent: any = {};\n addedwidGetConfig = {\n \"display\": true,\n \"widgetTitle\": \"\",\n \"width\": \"\",\n \"height\": \"\",\n \"isWidgetFilter\": false\n }\n\n dashBoardWidgetConfig: any = [\n ];\n isWidgetCreationContent: boolean;\n selectedWidth: any;\n selectedHeight: any;\n newWidgetIndex: any;\n selectedIndexObjForChart: any = {};\n selectedContainerObjectForChart: any = {};\n dataSettableDataSource: any;\n uniqueDataSetObject = {};\n\n isDashBoardContentTypeView: boolean;\n pageId: any;\n islayoutCreate: boolean = false;\n widgetName: any;\n widgetTitle: any;\n allWidgetInnerContent: any;\n isDefaultView: Boolean = true;\n isEditMainLayout: Boolean;\n filterDataSource: any;\n selectedFilterId: any;\n\n viewToSearch: string = '';\n filteredComponentConfig: any[] = [];\n isEditOptionClick: boolean;\n editViewdataSourceModal: any = {};\n\n editItemForUpdate: any = {};\n pageTitle: any;\n pageUrl: any;\n allWidgetByDataset: any = [];\n\n selectedFiltersDefault: any;\n\n nodeProperticeFilters: any = [];\n\n isCreateDataset: boolean;\n selectedDatasetId: any;\n isCreateDatasetWithDatasetId: boolean;\n\n isCreateNewView: boolean;\n isCreateNewViewWithDefaultView: boolean;\n\n defaultApplyedFilter: any;\n isWidgetFilters: boolean;\n nodeproperticeFilterDataSource: any;\n selectedFilterDatasource: any = {};\n @ViewChild(DxScrollViewComponent, { static: false }) scrollView: DxScrollViewComponent;\n\n selectedViewId: any;\n\n constructor(\n public commonService: CommonService,\n private activatedRoute: ActivatedRoute,\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private service: ApplicationContentService,\n private toastr: ToastrService,\n private router: Router,\n private datasetService: ApplicationDatssetsCall,\n ) { }\n\n ngOnInit(): void {\n this.isDashBoardContentTypeView = (this.activatedRoute.snapshot.queryParams['contentType'] == 'view') ? true : false;\n this.pageId = this.activatedRoute.snapshot.queryParams['pageId'];\n\n this.getDataSet();\n this.defaultStartDate = moment().subtract('10', 'days').format('YYYY-MM-DD');\n this.defaultEndDate = moment().subtract('1', 'days').format('YYYY-MM-DD');\n this.getFilterItems()\n this.getAllViewsItems()\n\n this.getAppPageDetailConfigByPageId()\n }\n\n getAllViewsItems() {\n this.service.getAppViewConfigs().subscribe({\n next: (data: any) => {\n this.componentConfigDataSource = data;\n this.filteredComponentConfig = this.componentConfigDataSource;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Config');\n }\n })\n }\n\n getFilterItems() {\n this.service.getAppFilterConfigs().subscribe({\n next: (data: any) => {\n this.filterDataSource = data;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Error');\n\n }\n });\n }\n getAppPageDetailConfigByPageId() {\n this.service.getAppPageDetailConfig(this.pageId).subscribe({\n next: (data: any) => {\n this.dashBoardWidgetConfig = data;\n this.pageTitle = data.pageName;\n this.pageUrl = data.pageUrl;\n if (data.widgets && data.widgets.length !== 0) {\n this.getComponentConfigSet()\n } else {\n this.loadingModal = false;\n }\n },\n error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Error');\n\n }\n })\n }\n\n\n getComponentConfigSet() {\n let defaultFilters = { operationFilter: { startDate: \"\", endDate: \"\" } };\n this.dashBoardWidgetConfig.widgets.forEach(widget => {\n if (widget.filters) {\n widget.filters.filterItems.forEach(element => {\n if (element.filterType === 'date' || element.filterType === 'datetime') {\n if (element.defaultFilterType === \"dynamic\" && element.momentFunction !== \"\" && element.defaultFilterValue !== \"\" && element.momentFormat !== \"\") {\n let [count, unit] = element.defaultFilterValue.split(',');\n if (element.apiName === \"endDate\") {\n if (element.display) {\n defaultFilters.operationFilter.endDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n this.defaultEndDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n }\n }\n if (element.apiName === \"startDate\") {\n defaultFilters.operationFilter.startDate = moment()[element.momentFunction](parseInt(count), unit).format(element.momentFormat);\n }\n }\n } else {\n if (\n (typeof element.filterDataSourceValue === \"string\" && element.filterDataSourceValue !== \"\") ||\n (Array.isArray(element.filterDataSourceValue) && element.filterDataSourceValue.length > 0)\n ) {\n if (element.operatorName !== \"\") {\n defaultFilters.operationFilter[element.operatorName] = Array.isArray(element.filterDataSourceValue)\n ? element.filterDataSourceValue\n : [element.filterDataSourceValue];\n } else {\n defaultFilters.operationFilter[element.apiName] = element.filterDataSourceValue.join(\",\");\n }\n }\n }\n\n });\n }\n\n });\n let apiCalls = [];\n this.defaultApplyedFilter = defaultFilters;\n\n Promise.all(apiCalls).then(() => {\n // this.uniqueDataSetObject = this.datasetService.getUniqueDataSetObject();\n this.createDivElements(this.uniqueDataSetObject);\n this.loadingModal = false;\n });\n }\n\n\n ngOnDestroy(): void {\n\n }\n\n getDataSet() {\n this.isLoader = true;\n this.service.getAppDatasetConfigs().subscribe({\n next: (data: any) => {\n this.dataSettableDataSource = data;\n this.isLoader = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Dataset Creation')\n\n }\n })\n }\n\n\n\n\n getComponentConfig(event) {\n const foundObject = this.componentConfigDataSource.find(view => view.viewId === event.viewId);\n this.getEmitNewChartConfig(foundObject);\n this.loadingModal = true;\n }\n\n addNewchart() {\n this.isGenerate = false;\n this.isChartButtonClick = true;\n this.isWidgetCreationContent = false;\n this.isDefaultView = false;\n }\n\n\n addWidget() {\n this.newWidgetIndex = undefined;\n this.isWidgetCreationContent = true;\n this.isDefaultView = false;\n this.isEditMainLayout = false;\n this.isChartButtonClick = false;\n this.isUpdateWidget = false;\n this.widgetName = '';\n this.widgetTitle = '';\n this.addedwidGetConfig = {\n \"display\": true,\n \"widgetTitle\": \"\",\n \"width\": \"\",\n \"height\": \"\",\n \"isWidgetFilter\": false\n }\n }\n\n getWith(e) {\n this.selectedWidth = e.value;\n }\n\n getHeight(e) {\n this.selectedHeight = e.value;\n }\n\n addLayoutTOview() {\n let inner_node = {\n id: this.commonService.primeryRendomeId(5),\n nodeTitle: \"\",\n filterId: this.selectedFilterId,\n nodeProperties: this.addedwidGetConfig,\n compConfig: {\n dynamicComponentRefs: [],\n viewConfig: []\n },\n }\n if (this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode) {\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.push(inner_node);\n } else {\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode = [];\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.push(inner_node);\n }\n\n this.loadingModal = true;\n this.updateWidget();\n }\n\n\n\n reformatWidgetConfig(dashBoardWidgetConfig, index = null) {\n const processWidget = (widget) => {\n widget.compConfig.viewConfig = widget.compConfig.viewConfig.map(config => config.viewId);\n widget.compConfig.dynamicComponentRefs = [];\n\n if (widget.widgetNode && widget.widgetNode.length > 0) {\n widget.widgetNode.forEach(node => {\n node.compConfig.viewConfig = node.compConfig.viewConfig.map(config => config.viewId);\n node.compConfig.dynamicComponentRefs = [];\n });\n }\n };\n\n if (index !== null && index >= 0 && index < dashBoardWidgetConfig.widgets.length) {\n processWidget(dashBoardWidgetConfig.widgets[index]);\n } else {\n dashBoardWidgetConfig.widgets.forEach(widget => processWidget(widget));\n }\n\n return dashBoardWidgetConfig.widgets[index];\n }\n\n updateWidget() {\n let modifiedConfig = this.reformatWidgetConfig(this.dashBoardWidgetConfig, this.newWidgetIndex);\n modifiedConfig['filterId'] = (modifiedConfig.filters.filterId) ? modifiedConfig.filters.filterId : null;\n delete modifiedConfig['filters'];\n this.service.editAppWidgetConfig(modifiedConfig).subscribe({\n next: (data: any) => {\n this.getAppPageDetailConfigByPageId()\n this.backToMainView();\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Widget Creation')\n }\n })\n this.newWidgetIndex = undefined;\n this.isWidgetCreationContent = false;\n this.isDefaultView = true;\n }\n\n updateLayoutWidgetTOview() {\n this.loadingModal = true;\n this.updateWidget();\n }\n\n addWidgetTOview() {\n let obj = {\n widgetId: this.commonService.primeryRendomeId(5),\n widgetName: this.widgetName,\n widgetTitle: this.widgetTitle,\n widgetProperties: this.addedwidGetConfig,\n pageId: this.pageId,\n filterId: this.selectedFilterId,\n widgetNode: [\n {\n id: this.commonService.primeryRendomeId(5),\n nodeTitle: \"\",\n filterId: \"\",\n nodeProperties: {\n \"display\": true,\n \"widgetTitle\": \"\",\n \"width\": \"w-1/2\",\n \"height\": \"\",\n },\n compConfig: {\n dynamicComponentRefs: [],\n viewConfig: []\n }\n }\n ],\n compConfig: {\n dynamicComponentRefs: [],\n viewConfig: []\n },\n }\n this.loadingModal = true;\n this.service.createAppWidgetConfig(obj).subscribe({\n next: (data: any) => {\n this.loadingModal = false;\n // this.createDivElements(this.uniqueDataSetObject)\n this.getAppPageDetailConfigByPageId()\n\n }, error: (err: any) => {\n this.loadingModal = false;\n\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Widget Creation')\n }\n })\n this.dashBoardWidgetConfig.widgets.push(obj)\n // this.insertDynamicComponents();\n\n\n this.dynamicContainer.nativeElement.innerHTML = '';\n\n this.isWidgetCreationContent = false;\n this.isDefaultView = true;\n }\n\n insertNewWiget(index) {\n this.addedwidGetConfig = {\n \"display\": true,\n \"widgetTitle\": \"\",\n \"width\": \"\",\n \"height\": \"\",\n \"isWidgetFilter\": false\n }\n this.isUpdateWidget = false;\n this.isWidgetCreationContent = true;\n this.isDefaultView = false;\n this.isChartButtonClick = false;\n this.islayoutCreate = true;\n this.newWidgetIndex = index;\n }\n insertChartWiget(indexObj, containerElement) {\n\n this.isGenerate = false;\n this.isChartButtonClick = true;\n this.isWidgetCreationContent = false;\n this.isDefaultView = false;\n this.selectedContainerObjectForChart = containerElement;\n this.selectedIndexObjForChart = indexObj;\n this.selectedViewFormComponent = {};\n }\n\n async getEmitNewChartConfig(data) {\n // let dataset_config = this.dataSetModal.find(dataset => dataset.datasetId == data.datasetId);\n // await this.datasetService.getDataFromDataSet(dataset_config, dataset_config.datasetId, this.selectedFiltersDefault)\n // data.kpiConfig['dataSource'] = this.uniqueDataSetObject[dataset_config.datasetId];\n this.selectedIndexObjForChart.compConfig.viewConfig.push(data)\n this.loadDynamicComponent(data, this.selectedIndexObjForChart, this.selectedContainerObjectForChart);\n console.log(this.dashBoardWidgetConfig)\n this.updateWidget();\n this.loadingModal = false;\n this.isChartButtonClick = false;\n\n // }\n\n }\n\n updateToView() {\n this.loadingModal = true;\n this.updateWidget();\n }\n\n deleteWidget(item, index) {\n this.dashBoardWidgetConfig.widgets.splice(index, 1)\n this.newWidgetIndex = undefined;\n }\n\n deleteInsertWidget(item, childIndex, parentIndex) {\n this.dashBoardWidgetConfig.widgets[parentIndex].widgetNode.splice(childIndex, 1)\n this.newWidgetIndex = undefined;\n }\n\n getWidgetTitleDiv(item, div) {\n const widgetDiv = document.createElement('div');\n widgetDiv.classList.add('flex', 'items-center', 'justify-between', 'font-bold', 'text-md', 'text-gray-900', 'dark:text-white', 'border-b', 'p-3', 'bg-gray-800', 'mx-2', 'rounded-t-lg');\n const titleDiv = document.createElement('div');\n titleDiv.innerText = (item.nodeProperties) ? item.nodeProperties.widgetTitle : \"\";\n widgetDiv.append(titleDiv)\n\n // Add FontAwesome edit icon\n const editIcon = document.createElement('i');\n editIcon.classList.add('fa', 'fa-pencil', 'ml-2', 'cursor-pointer', 'text-blue-400', 'hover:text-blue-700');\n widgetDiv.append(editIcon);\n\n if (item.nodeProperties.isWidgetFilter) {\n const searchContainerDiv = document.createElement('div');\n searchContainerDiv.classList.add('flex', 'items-center', 'space-x-2');\n const searchButton = document.createElement('button');\n searchButton.innerText = 'Filter';\n searchButton.classList.add('px-3', 'py-1.5', 'bg-blue-600', 'mr-2', 'text-white', 'rounded', 'hover:bg-blue-700');\n this.nodeproperticeFilterDataSource = [];\n\n searchButton.addEventListener('click', () => {\n this.isWidgetFilters = true;\n let filtePropertice = [];\n item.compConfig.viewConfig.forEach(element => {\n let key_name = this.uniqueDataSetObject[element.datasetId][0];\n Object.keys(key_name).forEach(key => {\n if (!filtePropertice.includes(key)) {\n filtePropertice.push(key);\n }\n });\n });\n\n filtePropertice.forEach(element => {\n let obj = {\n columnName: element,\n dataType: \"float\",\n operator: \"\",\n value: \"\",\n }\n this.nodeproperticeFilterDataSource.push(obj)\n });\n });\n searchContainerDiv.appendChild(searchButton)\n widgetDiv.appendChild(titleDiv);\n widgetDiv.appendChild(searchContainerDiv);\n }\n\n if (item.filterId) {\n this.nodeproperticeFilterDataSource = {};\n this.nodeproperticeFilterDataSource['viewConfig'] = item;\n this.nodeproperticeFilterDataSource['havingConfig'] = [];\n\n this.service.getAppFilterConfig(item.filterId).subscribe({\n next: (data: any) => {\n const filterDiv = document.createElement('div');\n this.loadWidgetFilterComponent(item, widgetDiv, data.filterItems);\n }, error: (err: any) => {\n\n }\n });\n }\n if (item.nodeProperties.nodefilters && item.nodeProperties.nodefilters.length !== 0) {\n const searchContainerDiv = document.createElement('div');\n searchContainerDiv.classList.add('flex', 'items-center', 'space-x-2');\n item.nodeProperties.nodefilters.forEach(filter => {\n const filterDiv = document.createElement('div');\n filterDiv.classList.add('flex', 'items-center');\n if (filter.input_type === 'text') {\n const textBox = document.createElement('input');\n textBox.type = 'text';\n textBox.placeholder = `Enter ${filter.local_column}`;\n textBox.classList.add('px-2', 'py-1.5', 'rounded', 'border', 'mr-1', 'border-gray-500', 'text-gray-900', 'dark:bg-gray-700', 'dark:text-white');\n const searchButton = document.createElement('button');\n searchButton.innerText = 'Search';\n searchButton.classList.add('px-3', 'py-1.5', 'bg-blue-600', 'mr-2', 'text-white', 'rounded', 'hover:bg-blue-700');\n const separerotButton = document.createElement('div');\n separerotButton.innerHTML = '|';\n searchButton.addEventListener('click', () => {\n const searchTerm = textBox.value;\n console.log('Text search button clicked with:', searchTerm);\n });\n filterDiv.appendChild(textBox);\n filterDiv.appendChild(searchButton);\n filterDiv.appendChild(separerotButton);\n }\n\n searchContainerDiv.appendChild(filterDiv);\n });\n widgetDiv.appendChild(searchContainerDiv);\n }\n\n editIcon.addEventListener('click', () => {\n\n this.newWidgetIndex = this.dashBoardWidgetConfig.widgets.findIndex(object => object.widgetId === div.widgetId);\n this.isUpdateWidget = true;\n this.islayoutCreate = true;\n this.isWidgetCreationContent = true;\n this.isDefaultView = false;\n this.isChartButtonClick = false;\n this.nodeProperticeFilters = (item.nodeProperties.nodefilters && item.nodeProperties.nodefilters.length !== 0) ? item.nodeProperties.nodefilters : [];\n item.nodeProperties['nodefilters'] = this.nodeProperticeFilters;\n this.addedwidGetConfig = item.nodeProperties;\n this.allWidgetInnerContent = item.compConfig.viewConfig;\n this.selectedFilterId = (item.filterId) ? item.filterId : \"\";\n this.editViewdataSourceModal = {};\n this.selectedFilterDatasource = item;\n });\n return widgetDiv;\n }\n\n\n getFilterValueById(event) {\n if (event.event) {\n this.service.getAppFilterConfig(event.value).subscribe({\n next: (data: any) => {\n if (Object.keys(this.selectedFilterDatasource).length !== 0) {\n this.selectedFilterDatasource.filterId = this.selectedFilterId;\n } else {\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].filters = data;\n }\n this.toastr.success(\"Filter Changed\")\n }, erroe: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Filter Update')\n\n }\n })\n }\n }\n\n\n createDivElements(datasetById) {\n const container = this.dynamicContainer.nativeElement;\n\n container.innerHTML = \"\";\n this.dashBoardWidgetConfig.widgets.forEach(async div => {\n const rowDiv = document.createElement('div');\n let w_height = (div.widgetProperties.height == \"\") ? \"h-auto\" : 'h-[' + div.widgetProperties.height + ']';\n rowDiv.classList.add(div.widgetProperties.width, w_height, 'border');\n const filterDiv = document.createElement('div');\n if (div.filters) {\n this.loadFilterComponent(div, filterDiv, div.filters.filterItems);\n }\n\n rowDiv.appendChild(filterDiv)\n\n if (div.widgetNode && div.widgetNode.length && div.widgetNode.length != 0) {\n const mainItemDiv = document.createElement('div');\n mainItemDiv.classList.add(\"flex\", \"flex-wrap\");\n this.loadWidgetNodes(div, mainItemDiv, datasetById);\n // for loop on widget\n rowDiv.appendChild(mainItemDiv);\n }\n\n const p_innerDiv = document.createElement('div');\n p_innerDiv.classList.add('rounded', 'justify-center', 'items-center', 'border', 'p-1', 'm-1', 'flex', 'flex-row');\n // add widget button\n const p_button_widget = document.createElement('div');\n p_button_widget.innerText = 'Add Single Layout';\n p_button_widget.classList.add('bg-blue-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n p_button_widget.addEventListener('click', () => {\n\n let index = this.dashBoardWidgetConfig.widgets.findIndex(object => object.widgetId === div.widgetId);\n this.insertNewWiget(index);\n });\n // add chart button\n // const p_button_chart = document.createElement('div');\n // p_button_chart.innerText = 'Add View';\n // p_button_chart.classList.add('bg-green-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n // p_button_chart.addEventListener('click', () => {\n // const comp_object = this.findWidgetById(this.dashBoardWidgetConfig.widgets, div.widgetId);\n // this.insertChartWiget(comp_object, rowDiv);\n // });\n\n // delete widget button\n const p_del_button = document.createElement('div');\n p_del_button.innerText = 'Detete layout';\n p_del_button.classList.add('bg-red-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n p_del_button.addEventListener('click', () => {\n\n\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Layout\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.loadingModal = true;\n this.dashBoardWidgetConfig.widgets = this.dashBoardWidgetConfig.widgets.map(config => config.widgetId);\n rowDiv.remove()\n\n this.service.editAppPageConfig(this.dashBoardWidgetConfig).subscribe({\n next: (data: any) => {\n this.getAppPageDetailConfigByPageId()\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Widget Creation')\n }\n })\n this.newWidgetIndex = undefined;\n this.isWidgetCreationContent = false;\n this.isDefaultView = true;\n // this.dashBoardWidgetConfig.widgets.splice(index, 1);\n\n\n }\n });\n });\n // advanced button\n const advance_button = document.createElement('div');\n advance_button.innerText = 'Advance Layout';\n advance_button.classList.add('bg-yellow-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n advance_button.addEventListener('click', () => {\n const comp_object = this.findWidgetById(this.dashBoardWidgetConfig.widgets, div.widgetId);\n this.newWidgetIndex = this.dashBoardWidgetConfig.widgets.findIndex(object => object.widgetId === div.widgetId);\n\n // this.insertChartWiget(comp_object, rowDiv);\n this.isAdvanceLayout = true;\n\n });\n\n p_innerDiv.appendChild(advance_button);\n // p_innerDiv.appendChild(p_button_chart);\n p_innerDiv.appendChild(p_button_widget);\n p_innerDiv.appendChild(p_del_button);\n\n if (!this.isDashBoardContentTypeView) {\n rowDiv.appendChild(p_innerDiv);\n }\n container.appendChild(rowDiv);\n });\n }\n\n loadWidgetNodes(div: any, mainItemDiv: any, datasetById: any) {\n div.widgetNode.forEach(item => {\n this.loadSingleWidgetNode(item, mainItemDiv, datasetById, div);\n });\n }\n\n loadSingleWidgetNode(item: any, containerElement: HTMLElement, datasetById: any, div) {\n let w_height = (item.nodeProperties.height == \"\") ? \"h-auto\" : 'h-[' + item.nodeProperties.height + ']';\n let w_width = (item.nodeProperties.width == \"\") ? \"w-full\" : item.nodeProperties.width;\n const itemDiv = document.createElement('div');\n itemDiv.classList.add(w_width, w_height, 'border', 'p-1');\n\n const flexContainer = document.createElement('div');\n flexContainer.classList.add('flex', 'justify-between', 'items-center', 'text-gray-900', 'dark:text-white', 'bg-gray-800', 'mx-2', 'rounded-t-lg'); // Flexbox container\n\n const widgetDiv = this.getWidgetTitleDiv(item, div)\n item.compConfig.viewConfig.forEach(element => {\n if (element.kpiConfig) {\n let apiCalls = [];\n this.service.getAppDatasetConfig(element.datasetId).subscribe({\n next: (dataset: any) => {\n const datasetWithLimit = this.setDataSetsLimit(dataset);\n apiCalls.push(this.datasetService.getDataFromDataSet(datasetWithLimit, datasetWithLimit.datasetId, this.defaultApplyedFilter));\n Promise.all(apiCalls).then(() => {\n this.uniqueDataSetObject = this.datasetService.getUniqueDataSetObject();\n element.kpiConfig['dataSource'] = this.uniqueDataSetObject[element.datasetId]\n const comp_object = this.findWidgetById(this.dashBoardWidgetConfig.widgets, item.id);\n this.loadDynamicComponent(element, comp_object, itemDiv);\n });\n }, error: (err: any) => {\n\n }\n })\n }\n });\n flexContainer.appendChild(widgetDiv);\n\n // Create buttons container for alignment\n const buttonsContainer = document.createElement('div');\n buttonsContainer.classList.add('flex', 'mx-2'); // To align buttons side by side with some spacing\n\n\n const innerDiv = document.createElement('div');\n innerDiv.classList.add('rounded', 'justify-center', 'items-center', 'p-1', 'm-1', 'flex', 'flex-row');\n\n const button_chart = document.createElement('div');\n button_chart.innerText = 'Add View';\n button_chart.classList.add('bg-green-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n button_chart.addEventListener('click', () => {\n this.newWidgetIndex = this.dashBoardWidgetConfig.widgets.findIndex(object => object.widgetId === div.widgetId);\n const comp_object = this.findWidgetById(this.dashBoardWidgetConfig.widgets, item.id);\n this.insertChartWiget(comp_object, itemDiv);\n });\n\n\n const del_button_chart = document.createElement('div');\n del_button_chart.innerText = 'Detete';\n del_button_chart.classList.add('bg-red-700', \"p-1\", \"w-fit\", \"cursor-pointer\", 'text-xs')\n del_button_chart.addEventListener('click', () => {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete View\");\n result.then((dialogResult) => {\n if (dialogResult) {\n let widgetIndex = this.dashBoardWidgetConfig.widgets.findIndex(object => object.widgetId === div.widgetId);\n const mapedObject = this.dashBoardWidgetConfig.widgets[widgetIndex]\n if (mapedObject.widgetNode && mapedObject.widgetNode.length > 0) {\n let mapIndex = mapedObject.widgetNode.findIndex(ind => ind.id === item.id)\n mapedObject.widgetNode.forEach(node => {\n node.compConfig.viewConfig = node.compConfig.viewConfig.map(config => config.viewId);\n node.compConfig.dynamicComponentRefs = [];\n });\n mapedObject.widgetNode.splice(mapIndex, 1);\n }\n mapedObject['filterId'] = (mapedObject.filters) ? mapedObject.filters.filterId : null;\n delete mapedObject['filters'];\n mapedObject.compConfig.dynamicComponentRefs = [];\n this.service.editAppWidgetConfig(mapedObject).subscribe({\n next: (data: any) => {\n this.getAppPageDetailConfigByPageId()\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Widget Creation')\n }\n })\n this.newWidgetIndex = undefined;\n itemDiv.remove()\n }\n });\n });\n\n\n // innerDiv.appendChild(button_chart);\n // innerDiv.appendChild(del_button_chart);\n // Append buttons to buttons container\n buttonsContainer.appendChild(button_chart);\n buttonsContainer.appendChild(del_button_chart);\n\n // Add the buttons container to the flex container\n flexContainer.appendChild(buttonsContainer);\n if (!this.isDashBoardContentTypeView) {\n }\n itemDiv.appendChild(flexContainer);\n // itemDiv.appendChild(widgetDiv);\n\n containerElement.appendChild(itemDiv)\n\n\n\n }\n\n\n\n findWidgetById(configs: any[], id: string): any | undefined {\n for (const config of configs) {\n if (config.id === id) {\n return config;\n }\n if (config.widgetNode && config.widgetNode.length > 0) {\n const found = this.findWidgetById(config.widgetNode, id);\n if (found) {\n return found;\n }\n }\n }\n return undefined;\n }\n\n deleteWidgetById(configs: any[], id: string): void {\n for (let i = configs.length - 1; i >= 0; i--) {\n if (configs[i].id === id) {\n configs.splice(i, 1);\n } else if (configs[i].widgetNode && configs[i].widgetNode.length > 0) {\n this.deleteWidgetById(configs[i].widgetNode, id);\n }\n }\n }\n\n loadDynamicComponent(data, indexObj, containerElement): any {\n const componentClass = this.componentClassMap[data.kpiConfig['componentName']];\n this.CompRefs = this.viewContainerRef.createComponent(componentClass);\n const dynamicComponentInstance = this.CompRefs.instance;\n dynamicComponentInstance.chartDataSource = data;\n dynamicComponentInstance.kpi_name = \"\";\n\n indexObj.compConfig.dynamicComponentRefs.push(this.CompRefs);\n const cssClass = \"w-full\";\n this.CompRefs.location.nativeElement.classList.add(cssClass);\n containerElement.appendChild(this.CompRefs.location.nativeElement);\n }\n\n loadFilterComponent(indexObj, containerElement, filterItems) {\n\n let selectedDates = { startDate: this.defaultStartDate, endDate: this.defaultEndDate }\n const componentClass = this.componentClassMap['AppAdvanceHeaderComponent'];\n this.CompRefs = this.viewContainerRef.createComponent(componentClass);\n const dynamicComponentInstance = this.CompRefs.instance;\n dynamicComponentInstance.selectedDates = selectedDates;\n dynamicComponentInstance.filterItems = filterItems;\n\n\n dynamicComponentInstance.pageTitle = this.pageTitle;\n dynamicComponentInstance.isEditButton = false;\n dynamicComponentInstance.isAdvanceButton = true;\n\n indexObj.compConfig.dynamicComponentRefs.push(this.CompRefs);\n const cssClass = \"w-full\";\n this.CompRefs.location.nativeElement.classList.add(cssClass);\n containerElement.appendChild(this.CompRefs.location.nativeElement);\n }\n\n loadWidgetFilterComponent(indexObj, containerElement, filterItems) {\n let userName = localStorage.getItem('user_name')\n let selectedDates = { startDate: this.defaultStartDate, endDate: this.defaultEndDate }\n const componentClass = this.componentClassMap['AdvanceWidgetHeaderFilterComponent'];\n this.CompRefs = this.viewContainerRef.createComponent(componentClass);\n const dynamicComponentInstance = this.CompRefs.instance;\n dynamicComponentInstance.selectedDates = selectedDates;\n dynamicComponentInstance.filterItems = filterItems;\n dynamicComponentInstance.getWidgetFilterConfig.subscribe((value: string) => {\n this.getWidgetFilterForTemplate(value);\n });\n\n indexObj.compConfig.dynamicComponentRefs.push(this.CompRefs);\n containerElement.appendChild(this.CompRefs.location.nativeElement);\n }\n\n getDeleteViewFromConfig(index) {\n console.log(index);\n this.allWidgetInnerContent.splice(index, 1)\n }\n\n moveItemForPageView(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.length) return;\n\n // Move item\n const itemToMove = this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode[index];\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.splice(index, 1); // Remove item from current position\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n moveItemForColumns(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.allWidgetInnerContent.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.allWidgetInnerContent.length) return;\n\n // Move item\n const itemToMove = this.allWidgetInnerContent[index];\n this.allWidgetInnerContent.splice(index, 1); // Remove item from current position\n this.allWidgetInnerContent.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n moveItemForWidget(index: number, direction: 'up' | 'down'): void {\n // Prevent moving beyond array bounds\n if (index < 0 || index >= this.dashBoardWidgetConfig.widgets.length) return;\n const newPosition = direction === 'up' ? index - 1 : index + 1;\n // Prevent moving beyond array bounds\n if (newPosition < 0 || newPosition >= this.dashBoardWidgetConfig.widgets.length) return;\n\n // Move item\n const itemToMove = this.dashBoardWidgetConfig.widgets[index];\n this.dashBoardWidgetConfig.widgets.splice(index, 1); // Remove item from current position\n this.dashBoardWidgetConfig.widgets.splice(newPosition, 0, itemToMove); // Insert item in new position\n }\n\n getEditViewFromLayout(data, index) {\n\n this.isEditMainLayout = true;\n this.newWidgetIndex = index;\n this.isWidgetCreationContent = true;\n this.isDefaultView = false;\n this.isChartButtonClick = false;\n this.isUpdateWidget = false;\n this.widgetName = data.widgetName;\n this.widgetTitle = data.widgetTitle;\n this.selectedFilterId = data.filters.filterId;\n this.addedwidGetConfig = data.widgetProperties;\n }\n\n\n backToMainView() {\n this.isDefaultView = true;\n this.isUpdateWidget = false;\n this.isWidgetCreationContent = false;\n this.isChartButtonClick = false;\n this.isEditMainLayout = false;\n this.islayoutCreate = false;\n this.newWidgetIndex = undefined;\n this.selectedFilterId = undefined;\n }\n\n filterViews() {\n if (this.viewToSearch.trim() !== '') {\n this.filteredComponentConfig = this.componentConfigDataSource.filter((item: any) =>\n item.viewName.toLowerCase().includes(this.viewToSearch.toLowerCase())\n );\n } else {\n this.filteredComponentConfig = this.componentConfigDataSource;\n }\n }\n\n editComponentViews(item) {\n this.loadingModal = true;\n this.editItemForUpdate = item;\n if (this.isUpdateWidget && !this.isChartButtonClick) {\n this.selectedViewId = item.viewId;\n setTimeout(() => {\n this.isCreateNewViewWithDefaultView = true;\n this.loadingModal = false;\n }, 400);\n\n } else {\n let navigation: NavigationExtras = {\n queryParams: {\n 'viewId': item.viewId,\n 'pageId': this.pageId\n }\n };\n this.router.navigate(['apps/controlPanel/applicationContent/applicationViews'], navigation);\n }\n }\n editComponentDatasets(item) {\n this.loadingModal = true;\n this.editItemForUpdate = item;\n if (this.isUpdateWidget && !this.isChartButtonClick) {\n this.selectedDatasetId = item.datasetId;\n setTimeout(() => {\n this.isCreateDatasetWithDatasetId = true;\n this.loadingModal = false;\n }, 400);\n\n } else {\n let navigation: NavigationExtras = {\n queryParams: {\n 'viewId': item.viewId,\n 'pageId': this.pageId\n }\n };\n this.router.navigate(['apps/controlPanel/applicationContent/applicationViews'], navigation);\n }\n }\n\n getAllPage() {\n this.router.navigate(['apps/controlPanel/applicationContent/applicationDashboard']);\n }\n\n transformColumnsForColumns(inputColumns) {\n const columns = [];\n\n inputColumns.forEach(col => {\n columns.push({\n dataField: col.dataField,\n visible: true,\n caption: col.caption,\n });\n });\n\n return columns;\n }\n\n\n getCreateDataSetPage() {\n this.isCreateDataset = true;\n }\n\n getCreateViewPage() {\n\n this.selectedViewId = undefined;\n this.loadingModal = true;\n setTimeout(() => {\n this.isCreateNewView = true;\n this.loadingModal = false;\n }, 400);\n }\n\n\n getEmitNewChartCongig(event) {\n delete event.kpiConfig.dataSource;\n this.editItemForUpdate['kpiConfig'] = event.kpiConfig;\n\n console.log(this.editItemForUpdate);\n this.service.updateAppViewConfig(this.editItemForUpdate).subscribe({\n next: (data: any) => {\n this.isEditOptionClick = false;\n this.toastr.success('View Update Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'View Creation')\n }\n })\n }\n\n\n getViewPage() {\n let navigationExtras: NavigationExtras = {\n queryParams: {\n \"pageId\": this.pageId\n }\n }\n this.router.navigate([this.pageUrl], navigationExtras)\n\n }\n // nodepropertice filter \n\n getNodeProperticeFilterOption() {\n let obj = {\n input_type: \"text\",\n server_column: \"\",\n local_column: \"\",\n select_box_option: \"\",\n }\n this.nodeProperticeFilters.push(obj)\n }\n\n deleteNodeFilter(index) {\n this.nodeProperticeFilters.splice(index, 1)\n }\n\n setDataSetsLimit(dataset) {\n let limit = { \"limit\": \"10\" }\n dataset.config.queryConfig.reqFields.push(limit);\n return dataset;\n }\n\n getViewPopupHide(e) {\n this.getAllViewsItems();\n }\n\n getDatasetPopupHide(e) {\n\n }\n\n submitFilter() {\n\n }\n\n getWidgetFilterForTemplate(value) {\n this.getDataSet();\n }\n\n getDeleteViewFromLayout(item, i) {\n this.dashBoardWidgetConfig.widgets.splice(i, 1);\n this.dashBoardWidgetConfig.widgets.forEach(widget => {\n widget.compConfig.viewConfig = widget.compConfig.viewConfig.map(config => config.viewId);\n widget.compConfig.dynamicComponentRefs = [];\n if (widget.widgetNode && widget.widgetNode.length > 0) {\n widget.widgetNode.forEach(node => {\n node.compConfig.viewConfig = node.compConfig.viewConfig.map(config => config.viewId);\n node.compConfig.dynamicComponentRefs = [];\n });\n }\n })\n const widgetData = this.dashBoardWidgetConfig;\n widgetData['widgets'] = this.dashBoardWidgetConfig.widgets.map(item => item.widgetId);\n widgetData['filterId'] = (widgetData.filters) ? widgetData.filters.filterId : null;\n delete widgetData['filters'];\n\n this.service.editAppPageConfig(widgetData).subscribe({\n next: (data: any) => {\n this.toastr.success(\"Layout Deleted Successfully\")\n this.getAppPageDetailConfigByPageId()\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Widget Creation')\n }\n })\n }\n\n\n // advance Layout \n isAdvanceLayout: boolean;\n isProceed: boolean;\n selectedViewsIds: any = [];\n advanceLayoutContainer: any = [];\n getProcessForConfig() {\n this.advanceLayoutContainer = [];\n const filteredColumns = this.componentConfigDataSource.filter(column => this.selectedViewsIds.includes(column.viewId));\n const columnDefList = [];\n\n filteredColumns.forEach(element => {\n // const existingColumn = false;\n let obj = {\n \"id\": this.commonService.primeryRendomeId(5),\n \"nodeTitle\": \"\",\n \"compConfig\": {\n \"dynamicComponentRefs\": [],\n \"viewConfig\": [element]\n },\n \"filterId\": null,\n \"nodeProperties\": {\n \"display\": true,\n \"widgetTitle\": \"\",\n \"width\": \"\",\n \"height\": \"\",\n \"isWidgetFilter\": false\n }\n }\n this.advanceLayoutContainer.push(obj);\n\n });\n\n this.isProceed = true;\n }\n\n getSelectedColumnSource(event) {\n if (event.event) {\n this.selectedViewsIds = event.value;\n }\n }\n\n submitAdvanceView() {\n if (this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode && this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode.length !== 0) {\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode = [...this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode, ...this.advanceLayoutContainer];\n } else {\n this.dashBoardWidgetConfig.widgets[this.newWidgetIndex].widgetNode = this.advanceLayoutContainer;\n }\n this.isAdvanceLayout = false;\n this.advanceLayoutContainer = [];\n this.isProceed = false;\n this.updateWidget();\n }\n\n\n\n deleteView(i) {\n\n }\n}\n","<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<!-- <div class=\"flex flex-col flex-auto w-full\"> -->\n<div class=\"flex flex-row h-screen\">\n <div class=\"flex-grow border-r h-full\">\n <div class=\"scrollable-content\">\n <!-- <div class=\"flex flex-wrap p-2 border\"> -->\n <!-- <app-advance-header [filterItems]=\"filterItems\" [pageTitle]=\"'Dashboard'\" [isEditButton]=\"false\"\n [isAdvanceButton]=\"true\"></app-advance-header> -->\n <div class=\"flex flex-wrap my-3\" #dynamicContainer></div>\n\n </div>\n <div class=\"flex flex-row justify-center items-center h-16 m-2 border\">\n <lib-common-header [pageTitle]=\"''\"></lib-common-header>\n <!-- <div class=\"{{commonService.btn_success_md}} m-2 \" (click)=\"getCreateDataSetPage()\">Create\n Dataset\n </div> -->\n <div class=\"{{commonService.btn_primary_md}} m-2\" (click)=\"addWidget()\">Add Layout\n </div>\n <!-- <div class=\"{{commonService.btn_success_md}} m-2\" (click)=\"getCreateViewPage()\">Create\n View\n </div> -->\n <div class=\"{{commonService.btnOthersPurple}} m-2 cursar-pointer\" (click)=\"getViewPage()\">View Page\n </div>\n <!-- <div class=\"{{commonService.btn_warning_md}} m-2 cursar-pointer\" (click)=\"getAllPage()\">All Pages\n </div> -->\n\n </div>\n </div>\n <div class=\"flex-shrink-0 w-1/4 p-2 h-full\">\n <ng-container *ngIf=\"isDashBoardContent\">\n <div class=\"{{commonService.btnDarkBlack}} m-2 w-fit text-center cursar-pointer\" (click)=\"backToMainView()\">\n Back\n </div>\n <ng-container *ngFor=\"let item of page_config.api_config; let i = index\">\n <div class=\"mb-2 flex flex-row justify-between items-center border-b\">\n <div class=\"text-md py-2 font-bold text-white px-2\">\n {{item.widGetConfig.widgetTitle}}\n </div>\n <div class=\"flex space-x-2\">\n <!-- <button (click)=\"editSelectedWidget(item, i)\"\n class=\"w-8 h-8 bg-sky-600 hover:bg-blue-800 text-white rounded-full flex items-center justify-center\">\n <i class=\"fa fa-edit\"></i>\n </button> -->\n <button\n class=\"w-8 h-8 bg-red-600 hover:bg-red-800 text-white rounded-full flex items-center justify-center\">\n <i class=\"fa fa-trash-o\"></i>\n </button>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"isWidgetCreationContent\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\">\n <span *ngIf=\"!islayoutCreate\">Widget Settings</span>\n <span *ngIf=\"islayoutCreate\">Layout Settings</span>\n </h6>\n <div class=\"flex flex-row my-4\">\n <dx-check-box class=\"ml-auto\" [(ngModel)]=\"addedwidGetConfig.display\" text=\"Display\"></dx-check-box>\n </div>\n <div class=\"flex flex-row mb-2 justify-between\">\n <span class=\"text-md my-auto px-2\">Width</span>\n <dx-select-box class=\"w-1/2\" [items]=\"widget_width\"\n [(ngModel)]=\"addedwidGetConfig.width\"></dx-select-box>\n </div>\n <div class=\"flex flex-row mb-2 justify-between\">\n <span class=\"text-md my-auto px-2\">Height</span>\n <dx-text-box class=\"w-1/2\" [(ngModel)]=\"addedwidGetConfig.height\"></dx-text-box>\n </div>\n\n <div class=\"flex flex-row mb-2 justify-between\" *ngIf=\"!islayoutCreate\">\n <span class=\"text-md my-auto px-2\">Widget Title</span>\n <dx-text-box class=\"w-1/2\" [(ngModel)]=\"widgetTitle\"></dx-text-box>\n </div>\n <div class=\"flex flex-row mb-2 justify-between\" *ngIf=\"!islayoutCreate\">\n <span class=\"text-md my-auto px-2\">Widget Name</span>\n <dx-text-box class=\"w-1/2\" [(ngModel)]=\"widgetName\"></dx-text-box>\n </div>\n\n\n <div class=\"flex flex-row mb-5 justify-between\" *ngIf=\"islayoutCreate\">\n <span class=\"text-sm my-auto px-2\">Layout Title</span>\n <dx-text-box class=\"w-1/2\" [(ngModel)]=\"addedwidGetConfig.widgetTitle\"></dx-text-box>\n </div>\n\n <div class=\"flex flex-row mb-2 justify-between\">\n <span class=\"text-md my-auto px-2\">Filter</span>\n <dx-select-box class=\"w-1/2\" [items]=\"filterDataSource\" displayExpr=\"filterName\" [searchEnabled]=\"true\"\n valueExpr=\"filterId\" [(ngModel)]=\"selectedFilterId\"\n (onValueChanged)=\"getFilterValueById($event)\"></dx-select-box>\n </div>\n <ng-container *ngIf=\"!isUpdateWidget\">\n <div class=\"mt-6\" *ngIf=\"!islayoutCreate && isEditMainLayout\">\n <ng-container\n *ngFor=\"let item of dashBoardWidgetConfig.widgets[newWidgetIndex].widgetNode;let i = index\">\n <div class=\"mb-2 flex flex-row justify-between items-center border-b \">\n <div class=\"text-md py-2 font-bold text-white px-2\">\n {{item.nodeProperties.widgetTitle}}\n </div>\n <div class=\"flex space-x-2\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForPageView(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button\n *ngIf=\"i !== dashBoardWidgetConfig.widgets[newWidgetIndex].widgetNode.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForPageView(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button\n class=\"w-8 h-8 bg-red-600 hover:bg-red-800 text-white rounded-full flex items-center justify-center\">\n <i class=\"fa fa-trash-o\"></i>\n </button>\n </div>\n </div>\n\n </ng-container>\n </div>\n </ng-container>\n\n\n\n <ng-container *ngIf=\"isUpdateWidget\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Application Views\n </div>\n <div class=\"border-x border-b p-2\">\n <ng-container *ngFor=\"let item of allWidgetInnerContent; let i = index\">\n <div class=\"group w-full flex justify-between border-b items-center\">\n <div class=\"text-md font-bold py-2 cursor-pointer\">\n {{item.viewName}}\n </div>\n\n <div class=\"flex space-x-2\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== allWidgetInnerContent.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForColumns(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"rounded-full p-2 text-white bg-blue-500 hover:bg-blue-700 mb-2\"\n (click)=\"editComponentViews(item)\">\n <i class=\"fa fa-eye\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"rounded-full p-2 text-white bg-blue-500 hover:bg-blue-700 mb-2\"\n (click)=\"editComponentDatasets(item)\">\n <i class=\"fa fa-database\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"rounded-full p-2 text-white bg-red-500 hover:bg-red-700 mb-2\"\n (click)=\"getDeleteViewFromConfig(i)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isUpdateWidget\">\n <div class=\"text-sm py-1 font-extrabold border-b bg-gray-700 text-white px-2\"> Add Filter For View\n\n </div>\n <div class=\"border-x border-b p-2\">\n <div class=\"flex flex-row py-3 border-b\">\n <dx-check-box [(ngModel)]=\"addedwidGetConfig.isWidgetFilter\"\n text=\"Popup Columns Filter Enable\"></dx-check-box>\n </div>\n <div class=\"flex flex-row my-2 border-b\">\n <ng-container *ngFor=\"let item of nodeProperticeFilters; let i = index\">\n <div class=\"flex flex-wrap border-b\">\n <div class=\"px-1 w-1/3\">\n <div class=\"text-md\">Input Type</div>\n <dx-select-box [items]=\"['text']\" [(ngModel)]=\"item.input_type\"\n value=\"text\"></dx-select-box>\n </div>\n <div class=\"px-1-1 w-2/3\" *ngIf=\"item.input_type == 'text'\">\n <div class=\"text-md\">Server Column</div>\n <dx-text-box [(ngModel)]=\"item.server_column\"></dx-text-box>\n </div>\n <div class=\"px-1-1 w-1/2\" *ngIf=\"item.input_type == 'text'\">\n <div class=\"text-md\">Local Column</div>\n <dx-text-box [(ngModel)]=\"item.local_column\"></dx-text-box>\n </div>\n <div class=\"px-1-1 w-1/3\" *ngIf=\"item.input_type == 'select'\">\n <div class=\"text-md\">Columns Name</div>\n <dx-text-box [(ngModel)]=\"item.select_box_option\"></dx-text-box>\n </div>\n <div class=\"px-1-1 w-1/2\">\n <div class=\"flex justify-end\">\n <div class=\"{{commonService.btn_danger_sm}} w-24 mt-6 text-center\"\n (click)=\"deleteNodeFilter(i)\">Delete Filter</div>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"{{commonService.btn_primary_sm}} w-auto text-center\"\n (click)=\"getNodeProperticeFilterOption()\">Add\n Filter</div>\n </div>\n </ng-container>\n\n <div class=\"flex flex-row justify-end items-center h-16 m-2\">\n <div class=\"{{commonService.btnDarkBlack}} m-2 w-fit text-center cursar-pointer\"\n (click)=\"backToMainView()\">Back\n </div>\n <ng-container *ngIf=\"!isUpdateWidget\">\n <div *ngIf=\"islayoutCreate\"\n class=\"{{commonService.btn_success_md}} m-2 w-fit text-center cursar-pointer\"\n (click)=\"addLayoutTOview()\">Add View\n </div>\n <div *ngIf=\"!islayoutCreate && !isEditMainLayout\"\n class=\"{{commonService.btn_primary_md}} m-2 w-fit text-center cursar-pointer\"\n (click)=\"addWidgetTOview()\">Add Layout\n </div>\n <div *ngIf=\"!islayoutCreate && isEditMainLayout\"\n class=\"{{commonService.btn_primary_md}} m-2 w-fit text-center cursar-pointer\"\n (click)=\"updateLayoutWidgetTOview()\">Update Layout\n </div>\n\n </ng-container>\n\n <div class=\"{{commonService.btn_warning_md}} m-2 w-fit text-center cursar-pointer\"\n (click)=\"updateToView()\" *ngIf=\"isUpdateWidget\">Update View\n </div>\n\n </div>\n\n\n <!-- <pre><code>{{dashBoardWidgetConfig | json}}</code></pre> -->\n </ng-container>\n <ng-container *ngIf=\"isChartButtonClick\">\n <h6\n class=\"mb-2 font-bold text-md tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-bar-chart-o mr-2\"></i> Select View\n <div class=\"{{commonService.btnDarkBlack}} m-2 w-fit text-center cursor-pointer\"\n (click)=\"backToMainView()\">Back\n </div>\n </h6>\n <div class=\" h-[80vh] overflow-x-auto\">\n <div class=\"relative my-2 \">\n <input type=\"text\" [(ngModel)]=\"viewToSearch\" (keyup)=\"filterViews()\" (keydown)=\"filterViews()\"\n class=\"bg-gray-800 border border-gray-700 text-gray-200 text-sm focus:ring-gray-400 focus:border-gray-500 block w-full p-4 h-8 rounded\"\n placeholder=\"Search View\" />\n <button type=\"button\" class=\"absolute inset-y-0 right-0 flex items-center pr-6\">\n <mat-icon class=\"rotate-90 cursor-pointer\" [svgIcon]=\"'heroicons_outline:search'\"></mat-icon>\n </button>\n </div>\n <ng-container *ngFor=\"let item of filteredComponentConfig\">\n <div class=\"relative group my-3 w-full\">\n <!-- Item View Name -->\n <div class=\"text-md font-bold border-b py-2 cursar-pointer\">\n {{item.viewName}}</div>\n\n <!-- Hover Buttons -->\n <div\n class=\"absolute top-0 right-0 flex space-x-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300 pb-2\">\n <button class=\"rounded-full p-2 text-white bg-blue-500 hover:bg-blue-700\">\n <i class=\"fa fa-pencil-square-o\" aria-hidden=\"true\"\n (click)=\"editComponentViews(item)\"></i>\n </button>\n <button class=\"rounded-full p-2 text-white bg-green-500 hover:bg-green-700\"\n (click)=\"getComponentConfig(item)\">\n <i class=\"fa fa-plus\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n\n </ng-container>\n <ng-container *ngIf=\"isDefaultView\">\n <ng-container *ngFor=\"let item of dashBoardWidgetConfig.widgets; let i = index\">\n <div class=\"group my-3 w-full flex justify-between border-b items-center\">\n <div class=\"text-md font-bold py-2 cursor-pointer\">\n {{item.widgetTitle}}\n </div>\n\n <div class=\"flex space-x-2\">\n <button *ngIf=\"i !== 0\" class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForWidget(i, 'up')\">\n <i class=\"fa fa-arrow-up\" aria-hidden=\"true\"></i>\n </button>\n\n <button *ngIf=\"i !== dashBoardWidgetConfig.widgets.length - 1\"\n class=\"{{commonService.btn_light_sm}} cursor-pointer mx-1\"\n (click)=\"moveItemForWidget(i, 'down')\">\n <i class=\"fa fa-arrow-down\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"rounded-full p-2 text-white bg-blue-500 hover:bg-blue-700 mb-2\"\n (click)=\"getEditViewFromLayout(item,i)\">\n <i class=\"fa fa-pencil-square\" aria-hidden=\"true\"></i>\n\n </button>\n <button class=\"rounded-full p-2 text-white bg-red-500 hover:bg-red-700 mb-2\"\n (click)=\"getDeleteViewFromLayout(item,i)\">\n <i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n\n </div>\n</div>\n<!-- </div> -->\n\n<dx-popup [(visible)]=\"isEditOptionClick\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"1200\"\n [height]=\"'auto'\" [showTitle]=\"true\" class=\"popup\" title=\"{{editViewdataSourceModal.viewName}}\">\n <div *dxTemplate=\"let data of 'content'\">\n\n <app-dash-chart [datasetmodal]=\"editViewdataSourceModal\" (getChartConfigOutPut)=\"getEmitNewChartCongig($event)\"\n *ngIf=\"editViewdataSourceModal.viewType == 'chart'\"></app-dash-chart>\n <app-dash-table [datasetmodal]=\"editViewdataSourceModal\" (getTableConfigOutPut)=\"getEmitNewChartCongig($event)\"\n *ngIf=\"editViewdataSourceModal.viewType == 'table'\"></app-dash-table>\n <!-- <app-dash-other [datasetmodal]=\"editViewdataSourceModal\" *ngIf=\"editViewdataSourceModal.viewType == 'others'\"\n (createOtherComponentView)=\"getEmitNewChartCongig($event)\"></app-dash-other> -->\n </div>\n</dx-popup>\n\n\n<dx-popup [(visible)]=\"isCreateDataset\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"1200\"\n [height]=\"600\" [showTitle]=\"true\" class=\"popup\" title=\"Dataset Editor\">\n <div *dxTemplate=\"let data of 'content'\">\n <dx-scroll-view class=\"h-full\" [width]=\"'100%'\" [height]=\"'100%'\">\n <app-create-dataset [isHeader]=\"false\"></app-create-dataset>\n </dx-scroll-view>\n </div>\n</dx-popup>\n<dx-popup [(visible)]=\"isCreateDatasetWithDatasetId\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"1200\"\n [height]=\"600\" [showTitle]=\"true\" class=\"popup\" title=\"Dataset Editor\" (onHidden)=\"getDatasetPopupHide($event)\">\n <div *dxTemplate=\"let data of 'content'\">\n <dx-scroll-view class=\"h-full\" [width]=\"'100%'\" [height]=\"'100%'\">\n <app-create-dataset [selectedDatasetId]=\"selectedDatasetId\" [isHeader]=\"false\"></app-create-dataset>\n </dx-scroll-view>\n </div>\n</dx-popup>\n\n<dx-popup [(visible)]=\"isCreateNewViewWithDefaultView\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\"\n [width]=\"1200\" [height]=\"600\" [showTitle]=\"true\" class=\"popup\" title=\"Views Editor\"\n (onHidden)=\"getViewPopupHide($event)\">\n <div *dxTemplate=\"let data of 'content'\">\n <dx-scroll-view class=\"h-full\" [width]=\"'100%'\" [height]=\"'100%'\">\n <app-create-comp-view [selectedViewId]=\"selectedViewId\" [isHeader]=\"false\"></app-create-comp-view>\n </dx-scroll-view>\n </div>\n</dx-popup>\n<dx-popup [(visible)]=\"isCreateNewView\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"1200\"\n [height]=\"600\" [showTitle]=\"true\" class=\"popup\" title=\"Views Editor\">\n <div *dxTemplate=\"let data of 'content'\">\n <dx-scroll-view class=\"h-full\" [width]=\"'100%'\" [height]=\"'100%'\">\n <app-create-comp-view [isHeader]=\"false\"></app-create-comp-view>\n </dx-scroll-view>\n </div>\n</dx-popup>\n\n\n<dx-popup [(visible)]=\"isWidgetFilters\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"800\" [height]=\"400\"\n [showTitle]=\"true\" class=\"popup\" title=\"Dataset Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <div class=\"my-2\">\n <dx-scroll-view [width]=\"'100%'\" [height]=\"'85%'\">\n <ng-container *ngFor=\"let item of nodeproperticeFilterDataSource; let i = index\">\n <div class=\"flex flex-row my-2\">\n <div class=\"m-1\">\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"m-1\">\n <dx-select-box [items]=\"['get','let']\" [(ngModel)]=\"item.operator\"\n placeholder=\"Operator\"></dx-select-box>\n </div>\n <div class=\"m-1\">\n <dx-text-box [(ngModel)]=\"item.value\"></dx-text-box>\n </div>\n </div>\n </ng-container>\n\n </dx-scroll-view>\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"submitFilter()\">Submit</button>\n </div>\n\n </div>\n\n </div>\n</dx-popup>\n<dx-popup [(visible)]=\"isAdvanceLayout\" [closeOnOutsideClick]=\"false\" [dragEnabled]=\"false\" [width]=\"1200\"\n [height]=\"700\" [showTitle]=\"true\" class=\"popup\" title=\"Dataset Filter\">\n <div *dxTemplate=\"let data of 'content'\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-2/3 mb-2\">\n <div class=\"text-md mb-2\">Select Views</div>\n <dx-tag-box [dataSource]=\"componentConfigDataSource\" valueExpr=\"viewId\" displayExpr=\"viewName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedViewsIds\"\n [maxDisplayedTags]=\"3\" (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add To View\n </button>\n <!-- <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\" (click)=\"cancelCdrConfig()\">Cancel\n </button> -->\n </div>\n </div>\n <dx-scroll-view [width]=\"'100%'\" [height]=\"'80%'\">\n\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of advanceLayoutContainer; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/2\">\n <div class=\"text-md mb-2\">View Name</div>\n <dx-text-box [(ngModel)]=\"item.compConfig.viewConfig[0].viewName\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\">Widget Title</div>\n <dx-text-box [(ngModel)]=\"item.nodeProperties.widgetTitle\"></dx-text-box>\n </div>\n\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\">Widget Width</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"widget_width\"\n [(ngModel)]=\"item.nodeProperties.width\"></dx-select-box>\n </div>\n\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\">Widget Height</div>\n <dx-text-box [(ngModel)]=\"item.nodeProperties.height\"></dx-text-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"text-md mb-2\">Widget Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" [searchEnabled]=\"true\"\n valueExpr=\"filterId\" [(ngModel)]=\"item.filterId\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <div class=\"text-md mt-8\">\n <dx-check-box [(ngModel)]=\"item.nodeProperties.display\" text=\"Display\"></dx-check-box>\n </div>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\"\n (click)=\"deleteView(i)\"><i class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </dx-scroll-view>\n <div class=\"flex justify-end mx-1 my-2 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\" (click)=\"submitAdvanceView()\">Add\n Layout</button>\n </div>\n </div>\n</dx-popup>","// dynamic-route.service.ts\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DynamicRouteService {\n private routeConfigs: any[] = [];\n\n setRouteConfigs(configs: any[]) {\n this.routeConfigs = configs;\n }\n\n getRouteConfigs() {\n return this.routeConfigs;\n }\n}\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { NavigationExtras, Router } from '@angular/router';\nimport { ToastrService } from 'ngx-toastr';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { DynamicRouteService } from '../../page-templates/dynamic-route-service';\nimport { CommonService } from '../../common';\n\n\n@Component({\n selector: 'app-dashbord-controller',\n templateUrl: './page-controller.component.html',\n styleUrls: ['./page-controller.component.scss']\n})\nexport class PageControlerComponent implements OnInit {\n dashboardConfig = {\n pageName: \"\",\n pageTitle: \"\",\n pageUrl: \"\",\n pageTemplate: \"\",\n pageDocumentationUrl: \"\",\n widgets: [],\n filterId: \"\"\n }\n isNewTampleteCreate: boolean = false;\n isLoader: boolean = false;\n\n templateDataSource: any = [];\n\n filterDataSource: any;\n\n componentTemplates = [\n { \"compName\": \"KpiWithDataSetTestComponent\", \"item\": \"Default KPI Layout\" },\n { \"compName\": \"LandingComponentComponent\", \"item\": \"Default Page\" },\n { \"compName\": \"CdrConfigComponent\", \"item\": \"CDR Config\" },\n { \"compName\": \"CreateKpiTreeComponent\", \"item\": \"Create KPI Config\" },\n ]\n\n @ViewChild('scrollContainer') private scrollContainer: ElementRef;\n\n constructor(\n private router: Router, public commonService: CommonService, private service: ApplicationContentService,\n private toastr: ToastrService, private dynamicRouteService: DynamicRouteService\n ) {\n\n }\n\n ngOnInit(): void {\n this.getAppPageConfigs();\n this.getFilterDataSet();\n }\n getFilterDataSet() {\n this.service.getAppFilterConfigs().subscribe({\n next: (data: any) => {\n this.filterDataSource = data;\n this.isLoader = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Page Creation')\n\n }\n })\n }\n getAppPageConfigs() {\n this.service.getAppPageConfigs().subscribe({\n next: (data: any) => {\n this.templateDataSource = data;\n this.isLoader = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Page Creation')\n\n }\n })\n }\n\n createNewTamplete() {\n this.isNewTampleteCreate = true;\n this.dashboardConfig = {\n pageName: \"\",\n pageTitle: \"\",\n pageUrl: \"\",\n pageTemplate: \"\",\n pageDocumentationUrl: \"\",\n widgets: [],\n filterId: \"\"\n }\n setTimeout(() => {\n this.scrollToBottom();\n }, 100);\n }\n\n viewsPage(item) {\n let navigationExtras: NavigationExtras = {\n queryParams: {\n \"pageId\": item.pageId\n }\n }\n this.router.navigate([item.pageUrl], navigationExtras)\n }\n deleteTamplete(item) {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Filter\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.isLoader = true;\n this.service.deleteAppPageConfig(item.pageId).subscribe((val: any) => {\n this.getAppPageConfigs();\n this.isLoader = false;\n this.toastr.success('Page Deleted Successfully')\n }, err => {\n console.log(err);\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Rule Module');\n })\n }\n });\n }\n\n editTemplate(item) {\n this.dashboardConfig = item;\n this.isNewTampleteCreate = true;\n this.scrollToBottom();\n }\n\n getSaveChartConfig() {\n\n if (this.dashboardConfig['pageId']) {\n this.service.editAppPageConfig(this.dashboardConfig).subscribe({\n next: (data: any) => {\n this.isNewTampleteCreate = false;\n this.getAppPageConfigs();\n this.toastr.success('Page Update Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Page Creation')\n }\n })\n } else {\n this.service.createAppPageConfig(this.dashboardConfig).subscribe({\n next: (data: any) => {\n this.isNewTampleteCreate = false;\n this.getAppPageConfigs();\n this.toastr.success('Page Created Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Page Creation')\n }\n })\n }\n }\n\n viewConfiguredTemplate(item) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': item.pageId,\n 'contentType': \"view\",\n\n }\n };\n this.router.navigate(['/apps/controlPanel/pageConfigController'], navigation);\n }\n\n configuredTemplate(item) {\n let navigation: NavigationExtras = {\n queryParams: {\n 'pageId': item.pageId,\n 'contentType': \"edit\",\n\n }\n };\n this.router.navigate(['/apps/controlPanel/pageConfigController'], navigation);\n }\n\n\n getCreateDashboard() {\n this.router.navigateByUrl('/apps/controlPanel/pageConfigController')\n }\n\n scrollToBottom() {\n setTimeout(() => {\n this.scrollContainer.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }, 0);\n }\n\n // scrollToBottom(): void {\n // this.scrollContainer.nativeElement.scrollTop = this.scrollContainer.nativeElement.scrollHeight;\n // }\n\n\n\n // addRoutesAndNavigate(routeConfig) {\n // const componentMap = {\n // 'KpiTreeViewComponent': KpiTreeViewComponent,\n // 'BookmarkedTemplateComponent': BookmarkedTemplateComponent\n // };\n // const dynamicRoute = {\n // path: routeConfig.path,\n // component: componentMap[routeConfig.compName],\n // };\n\n // // Find the parent route (e.g., MainLayoutComponent)\n // const mainLayoutRoute = this.router.config.find(route => route.component === LayoutComponent);\n\n // if (mainLayoutRoute) {\n // if (!mainLayoutRoute.children) {\n // mainLayoutRoute.children = [];\n // }\n\n // // Add the dynamic route as a child of the main layout route\n // mainLayoutRoute.children.push(dynamicRoute);\n // } else {\n // // Fallback: Add the route directly (this may cause issues if the layout is missing)\n // this.router.config.push(dynamicRoute);\n // }\n\n // // Navigate to the newly added route\n // this.router.navigate([routeConfig.path]);\n // }\n\n}\n","<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"' Application Pages'\"></lib-common-header>\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Pages\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewTamplete()\">\n Create New Page\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"templateDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"pageName\"></dxi-column>\n <dxi-column dataField=\"pageTitle\"></dxi-column>\n <!-- <dxi-column dataField=\"pageTemplate\"></dxi-column> -->\n <dxi-column dataField=\"pageId\"></dxi-column>\n <dxi-column dataField=\"pageUrl\"></dxi-column>\n <!-- <dxi-column dataField=\"createdBy\"></dxi-column> -->\n <!-- <dxi-column dataField=\"creationDate\"></dxi-column> -->\n <dxi-column dataField=\"Configured\" cellTemplate=\"cellTemplate2\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editTemplate(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"viewsPage(data.data)\">\n View Page\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteTamplete(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"configuredTemplate(data.data)\">\n Configure\n </button>\n\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n <div #scrollContainer>\n <div class=\"p-2\" *ngIf=\"isNewTampleteCreate\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Page\n </h6>\n\n <!-- Flex container for form fields -->\n <!-- <div class=\"flex flex-wrap w-full\">\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" searchEnabled=\"true\"></dx-select-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div> -->\n <div class=\"grid grid-cols-2 gap-4 w-full\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div>\n\n <!-- Submit button -->\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit Template</button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n</div>","// safe-html.pipe.ts\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) { }\n\n transform(value: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { confirm } from 'devextreme/ui/dialog';\nimport { ApplicationContentService } from '../../application-content.service';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-cdr-config',\n templateUrl: './cdr-config.component.html',\n styleUrls: ['./cdr-config.component.scss']\n})\nexport class CdrConfigComponent implements OnInit {\n loadingModal: boolean;\n availableTableDatasource: any = [];\n selectedTableName: any;\n isTableSelected: boolean;\n isProceed: boolean;\n listOfColumns: any;\n submitObject: any = {};\n selectedColumnDatasource: any = [];\n kpi_enrichment_name: any = [];\n CdrBrowserAllowedDatasource: any = [];\n\n cdrTableDataSource: any;\n allTablsDropDownData: any;\n selectedColumnName: any = [];\n\n isCdrConfigCreate: boolean = false;\n isEditDatasource: boolean = false;\n filter_type = ['date', 'string', 'timestamp', 'int', 'double', 'boolean'];\n\n\n constructor(private service: ApplicationContentService, private toastr: ToastrService, public commonService: CommonService) {\n\n }\n\n\n ngOnInit(): void {\n\n this.getAvailableTabeName();\n this.getFilterDataSet();\n this.getCdrBrowserAllowedOperation();\n this.searchDatasourceDetails();\n\n }\n\n getFilterDataSet() {\n this.kpi_enrichment_name = [];\n this.service.getKPIReferenceEndPoints().subscribe({\n next: (data: any) => {\n data.forEach(element => {\n this.kpi_enrichment_name.push(element);\n });\n }, error: (err: any) => {\n this.toastr.error(\"Unexpected Server Exception. Please contact System Admin.\", \"CDR Config\")\n }\n })\n }\n\n\n\n searchDatasourceDetails() {\n this.cdrTableDataSource = {};\n this.allTablsDropDownData = [];\n this.service.getSearchDatasourceDetails().subscribe({\n next: (data: any) => {\n this.cdrTableDataSource = data;\n\n this.allTablsDropDownData = Object.keys(data).map(key => ({\n name: key,\n ...data[key]\n }));\n\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n }\n })\n }\n\n\n\n getCdrBrowserAllowedOperation() {\n\n this.service.getCdrBrowserOperations().subscribe(data => {\n this.CdrBrowserAllowedDatasource = data;\n })\n }\n\n getAvailableTabeName() {\n this.availableTableDatasource = [];\n this.service.getAvailableTables().subscribe({\n next: (data: any) => {\n this.availableTableDatasource = data;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n }\n })\n }\n\n getSelectedTableMetaData(e) {\n if (e.value) {\n this.isProceed = false;\n this.isTableSelected = false;\n let tableName = e.value;\n this.listOfColumns = [];\n this.service.getTableMetadata(tableName).subscribe({\n next: (data: any) => {\n this.isTableSelected = true;\n this.listOfColumns = data;\n // this.availableTableDatasource = data;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n }\n })\n }\n }\n\n getSelectedColumnSource(e) {\n this.selectedColumnDatasource = e.value;\n\n }\n\n getProcessForConfig() {\n const filteredColumns = this.listOfColumns.filter(column => this.selectedColumnDatasource.includes(column.fieldName));\n const columnDefList = [];\n\n filteredColumns.forEach(element => {\n const existingColumn = (this.submitObject['columnDefList']) ? this.submitObject['columnDefList'].find(col => col.columnName === element.fieldName) : false;\n\n if (!existingColumn) {\n let obj = {\n \"columnName\": element.fieldName,\n \"containerType\": \"\",\n \"datatype\": \"\",\n \"allowedOperations\": [],\n \"lookupName\": \"\"\n };\n columnDefList.push(obj);\n }\n });\n if (this.submitObject['columnDefList'] && this.submitObject['columnDefList'].length !== 0) {\n this.submitObject['columnDefList'] = [...this.submitObject['columnDefList'], ...columnDefList];\n } else {\n this.submitObject['columnDefList'] = columnDefList;\n }\n\n this.isProceed = true;\n }\n\n submitDatasource() {\n this.loadingModal = true;\n this.service.saveDatasourceConfig(this.submitObject).subscribe({\n next: (data: any) => {\n this.submitObject['columnDefList'] = [];\n this.submitObject['active'] = false;\n this.submitObject['endDateFunction'] = \"\";\n this.submitObject['startDateFunction'] = \"\";\n this.submitObject['tableName'] = \"\";\n this.isProceed = false;\n this.loadingModal = false;\n this.isTableSelected = false;\n this.isEditDatasource = false;\n this.isCdrConfigCreate = false;\n this.searchDatasourceDetails();\n this.toastr.success('Config Created Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n this.loadingModal = false;\n }\n })\n }\n\n editCdrConfigConfig(data) {\n this.isEditDatasource = true;\n this.loadingModal = true;\n this.isCdrConfigCreate = true;\n this.submitObject = data;\n this.service.getTableMetadata(this.submitObject.tableName).subscribe({\n next: (colData: any) => {\n this.isTableSelected = true;\n this.listOfColumns = colData;\n this.selectedColumnName = this.submitObject.columnDefList.map(item => item.columnName);\n this.isProceed = true;\n this.loadingModal = false;\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n }\n })\n\n }\n\n updateDatasource() {\n this.loadingModal = true;\n this.service.editDatasourceConfig(this.submitObject).subscribe({\n next: (data: any) => {\n this.submitObject['columnDefList'] = [];\n this.submitObject['active'] = false;\n this.submitObject['endDateFunction'] = \"\";\n this.submitObject['startDateFunction'] = \"\";\n this.submitObject['tableName'] = \"\";\n this.isProceed = false;\n this.loadingModal = false;\n this.isTableSelected = false;\n this.isEditDatasource = false;\n this.isCdrConfigCreate = false;\n this.searchDatasourceDetails();\n this.toastr.success('Config Update Successfully')\n }, error: (err: any) => {\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config');\n }\n })\n }\n\n deleteCdrConfig(data) {\n let result = confirm(\"<i>Are You Sure?</i>\", \"Delete Config\");\n result.then((dialogResult) => {\n if (dialogResult) {\n this.loadingModal = true\n this.service.deleteDatasourceConfig(data.tableName).subscribe({\n next: (data: any) => {\n this.searchDatasourceDetails();\n this.toastr.success('Config Deleted Successfully')\n this.loadingModal = false;\n }, error: (err: any) => {\n this.loadingModal = false;\n this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'CDR Config Delete');\n }\n })\n }\n });\n }\n\n createCDRConfig() {\n this.isCdrConfigCreate = true;\n }\n\n cancelCdrConfig() {\n this.isCdrConfigCreate = false;\n this.submitObject['columnDefList'] = [];\n this.submitObject['active'] = false;\n this.submitObject['endDateFunction'] = \"\";\n this.submitObject['startDateFunction'] = \"\";\n this.submitObject['tableName'] = \"\";\n // this.searchDatasourceDetails();\n this.isProceed = false;\n this.loadingModal = false;\n this.isTableSelected = false;\n this.isEditDatasource = false;\n }\n\n deleteColume(i) {\n this.submitObject.columnDefList.splice(i, 1)\n }\n\n}\n","<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-col flex-auto min-w-0\">\n <!-- header start -->\n <div class=\"flex flex-col\">\n <div class=\"flex justify-between border-b dark:bg-transparent\">\n <div class=\"flex flex-col ml-1 py-2\">\n <div class=\"flex items-center float-start\">\n <div class=\"flex items-center overflow-hidden\">\n <mat-icon class=\"icon-size-2\" [svgIcon]=\"'heroicons_solid:template'\"></mat-icon>\n </div>\n <h2\n class=\"text-2xl md:text-2xl py-2 font-extrabold items-center ml-2 tracking-tight leading-5 truncate\">\n CDR Config Creation\n </h2>\n </div>\n\n </div>\n <div class=\"flex justify-between items-center border-l-2 p-0 m-0\">\n\n\n <div class=\"w-1 h-full border-l-2\"></div>\n <div class=\"mx-2\">\n\n <div class=\"flex items-center p-1\">\n\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_primary_md}} cursor-pointer\"\n (click)=\"createCDRConfig()\">Create Config\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"m-2\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3\"><i\n class=\"fa fa-bar-chart-o mr-2\"></i> Table Configurations\n </h6>\n\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"allTablsDropDownData\" [selectedRowKeys]=\"[]\"\n [showBorders]=\"true\" [showRowLines]=\"true\" id=\"gridContainer\" [hoverStateEnabled]=\"true\">\n\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n <dxo-export [enabled]=\"true\" fileName=\"alert_data_by_status\"></dxo-export>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-pager [showInfo]=\"true\" [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[10,20,50,100]\">\n </dxo-pager>\n <dxi-column dataField=\"tableName\"></dxi-column>\n <dxi-column dataField=\"startDateFunction\"></dxi-column>\n <dxi-column dataField=\"endDateFunction\"></dxi-column>\n <dxi-column caption=\"Status\" dataField=\"active\" cellTemplate=\"cellTemplate1\"></dxi-column>\n\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" [fixed]=\"true\"\n fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btnPrimaryBlue}}\" (click)=\"editCdrConfigConfig(data.data)\">\n Edit\n </button>\n\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteCdrConfig(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate1'\">\n <button type=\"button\" *ngIf=\"data.data.active == true\"\n class=\"{{commonService.btnSuccessGreen}}\">Active</button>\n\n <button type=\"button\" *ngIf=\"data.data.active == false\"\n class=\"{{commonService.btnWarningYellow}}\">Inactive</button>\n\n\n </div>\n\n </dx-data-grid>\n\n </div>\n </div>\n <ng-container *ngIf=\"isCdrConfigCreate\">\n <div class=\"m-2 py-3 border-b border-t\">\n <div class=\"flex flex-row px-2 mb-3\">\n <div class=\"w-1/3 px-2\">\n <div class=\"text-md mb-2\">Select Table Name</div>\n <dx-select-box [items]=\"availableTableDatasource\" [(ngModel)]=\"submitObject.tableName\"\n (onValueChanged)=\"getSelectedTableMetaData($event)\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <div class=\"text-md mb-2\">Select Columns</div>\n\n <dx-tag-box [dataSource]=\"listOfColumns\" valueExpr=\"fieldName\" displayExpr=\"fieldName\"\n [multiline]=\"true\" [showSelectionControls]=\"true\" [(ngModel)]=\"selectedColumnName\"\n (onValueChanged)=\"getSelectedColumnSource($event)\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2\" *ngIf=\"isTableSelected\">\n <button class=\"{{commonService.btn_primary_md}} mt-6\" (click)=\"getProcessForConfig()\">\n Add Columns\n </button>\n <button class=\"{{commonService.btn_danger_md}} cursor-pointer mt-6\"\n (click)=\"cancelCdrConfig()\">Cancel\n </button>\n </div>\n </div>\n </div>\n <div class=\"m-2 border-b\" *ngIf=\"isProceed\">\n <ng-container *ngFor=\"let item of submitObject.columnDefList; let i = index;\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Column Name</div>\n <dx-text-box [(ngModel)]=\"item.columnName\"></dx-text-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\"> Data Type</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"filter_type\"\n [(ngModel)]=\"item.datatype\"></dx-select-box>\n\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Container Type</div>\n <dx-select-box [items]=\"['input','select','multiselect','date']\"\n [(ngModel)]=\"item.containerType\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Allowed Operations</div>\n <dx-tag-box [dataSource]=\"CdrBrowserAllowedDatasource\" valueExpr=\"value\" displayExpr=\"name\"\n [maxDisplayedTags]=\"3\" [multiline]=\"true\" [showSelectionControls]=\"true\"\n [(ngModel)]=\"item.allowedOperations\" [searchEnabled]=\"true\">\n </dx-tag-box>\n </div>\n\n <div class=\"mx-2 w-full\">\n <div class=\"text-md mb-2\">Lookup Name</div>\n <dx-select-box [searchEnabled]=\"true\" [items]=\"kpi_enrichment_name\" valueExpr=\"apiUrl\"\n displayExpr=\"apiName\" [(ngModel)]=\"item.lookupName\"></dx-select-box>\n </div>\n <div class=\"mx-2\">\n <button class=\"{{commonService.btn_danger_sm}} cursor-pointer mt-8\" (click)=\"deleteColume(i)\"><i\n class=\"fa fa-trash-o\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"m-2\" *ngIf=\"isProceed\">\n <div class=\"flex flex-row m-2\">\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">StartDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.startDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"text-md mb-2\">EndDate Function</div>\n <dx-select-box [items]=\"['subtract']\" [(ngModel)]=\"submitObject.endDateFunction\"></dx-select-box>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"mt-8\">\n <dx-check-box [(ngModel)]=\"submitObject.active\" text='Active'>\n </dx-check-box>\n </div>\n </div>\n <div class=\"mx-2 w-1/4\">\n <div class=\"flex flex-row justify-end\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"!isEditDatasource\"\n (click)=\"submitDatasource()\">Submit\n </button>\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-6\" *ngIf=\"isEditDatasource\"\n (click)=\"updateDatasource()\">Update\n </button>\n\n </div>\n </div>\n </div>\n\n </div>\n </ng-container>\n\n</div>","import { Component, Input, OnInit } from '@angular/core';\nimport { ToastrService } from 'ngx-toastr';\nimport { KpiApiService } from '../api.service';\nimport { kpicommonService } from '../kpi-comon-service';\nimport { CommonService } from '../../common';\n\n@Component({\n selector: 'app-gamam-widget',\n templateUrl: './gamam-widget.component.html',\n styleUrls: ['./gamam-widget.component.scss']\n})\nexport class GamamWidgetComponent implements OnInit {\n\n subscriber_count;\n page_config;\n isLoader: boolean = true;\n\n constructor(\n public commonService: CommonService,\n private toastr: ToastrService,\n private service: KpiApiService,\n private kpiService: kpicommonService\n ) { }\n\n @Input('widgetConfigSource')\n set widgetConfigSource(value) {\n\n // console.log(value);\n // console.log(value);\n if (value === undefined || value.length === 0) {\n\n } else {\n this.page_config = value;\n this.isLoader = false;\n\n // this.service.getUniqueData(value.kpiConfig.api).subscribe((data: any) => {\n // this.subscriber_count = this.commonService.reformatNumberWithThousandSeparatorV2(data, 0);\n // this.isLoader = false;\n // }, error => {\n // this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'Unique Subscriber');\n // })\n\n // this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'error');\n\n }\n\n }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"w-full my-1\">\n <div class=\"block mx-1 rounded-lg shadow-lg bg-white border border-gray-200 rounded-lg shadow-md\n dark:bg-gray-800 dark:border-gray-700 max-w-sm\">\n <div\n class=\"py-3 px-6 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <div class=\"flex justify-between\">\n <div class=\"flex items-center float-start\">\n {{page_config.title}}\n </div>\n <div class=\"flex items-center float-end\">\n <i class=\"{{page_config.icon}}\"></i>\n </div>\n\n </div>\n </div>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n\n <div class=\"p-2\" *ngIf=\"!isLoader\">\n <div class=\"flex flex-row items-center justify-center m-0\">\n <div class=\"w-full px-2 \">\n <div class=\"flex justify-center items-center text-4xl font-bold text-{{page_config.color}} p-2\">\n {{page_config.count}}\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","// / <reference path=\"../../../../../../../../node_modules/anychart/dist/index.d.ts\"/>\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { LoadingComponent } from './loading.component'\n\n\n@NgModule({\n imports: [\n\n RouterModule,\n CommonModule,\n FormsModule,\n // RouterModule.forChild(routes),\n ],\n declarations: [LoadingComponent],\n exports:[LoadingComponent]\n})\nexport class LoadingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Router, RouterModule, Routes } from '@angular/router';\nimport {\n DevExtremeModule,\n DxAccordionModule,\n DxButtonModule,\n DxCheckBoxModule,\n DxDataGridModule,\n DxDropDownBoxModule,\n DxFormModule,\n DxHtmlEditorModule,\n DxNumberBoxModule,\n DxPopupModule,\n DxSelectBoxModule,\n DxTagBoxModule,\n DxTextBoxModule,\n DxTreeViewModule,\n DxBulletModule,\n DxChartModule,\n DxDateBoxModule,\n DxLoadPanelModule,\n DxLookupModule,\n DxPivotGridModule,\n DxTemplateModule,\n DxTextAreaModule,\n DxValidationSummaryModule,\n DxValidatorModule,\n DxCalendarModule,\n DxTooltipModule,\n DxContextMenuModule,\n DxLoadIndicatorModule,\n DxScrollViewModule\n\n} from \"devextreme-angular\";\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\n// import { AppViewFromKpiComponent } from './app-view-from-kpi/app-view-from-kpi.component';\nimport { ApplicationFilterComponent } from './application-filter/application-filter.component';\nimport {\n ApplicationDatasetComponent\n} from './application-dataset-component/application-dataset/application-dataset.component';\nimport { ApplicationViewsComponent } from './application-view-components/application-views/application-views.component';\nimport { DatasetMongoComponent } from './application-dataset-component/dataset-mongo/dataset-mongo.component';\nimport {\n DatasetQueryBulderComponent\n} from './application-dataset-component/dataset-query-bulder/dataset-query-bulder.component';\nimport { DatasetRestApiComponent } from './application-dataset-component/dataset-rest-api/dataset-rest-api.component';\nimport { CreateCompViewComponent } from './application-view-components/create-comp-view/create-comp-view.component';\nimport { DashChartComponent } from './support-components/dash-chart/dash-chart.component';\nimport { DashTableComponent } from './support-components/dash-table/dash-table.component';\nimport { PageConfigComponent } from './page-controller/page-config/page-config.component';\nimport { PageControlerComponent } from './page-controller/page-controller/page-controller.component';\n\nimport { DynamicRouteService } from './page-templates/dynamic-route-service';\n\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { SafeHtmlPipe } from './shared/safeHtmlPipe';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CreateDatasetJsonComponent } from './application-dataset-component/create-dataset-json/create-dataset-json.component';\nimport { CreateDatasetSqlComponent } from './application-dataset-component/create-dataset-sql/create-dataset-sql.component';\nimport { SqlPipe } from './application-dataset-component/create-dataset-sql/sqlFormatter';\nimport { CreateDatasetComponent } from './application-dataset-component/create-dataset/create-dataset.component';\nimport { CdrConfigComponent } from './page-templates/cdr-config/cdr-config.component';\nimport { AdvanceWidgetHeaderFilterComponent } from './shared/advanced-component/advance-widget-header-filter/advance-widget-header-filter.component';\nimport { AppAdvanceHeaderComponent } from './shared/advanced-component/app-advance-header/app-header.component';\nimport { GammSingleNumberCardComponent } from './shared/advanced-component/gamm-single-number-card/gamm-single-number-card.component';\nimport { GammaAdvanceChartComponent } from './shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component';\nimport { GammaAdvanceOperatorTableComponent } from './shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component';\nimport { contentSafeHtml } from './shared/advanced-component/gamma-table-with-percentage/contentSafeHtml';\nimport { GammaTableWithPercentageComponent } from './shared/advanced-component/gamma-table-with-percentage/gamma-table-with-percentage.component';\nimport { GammaTodayPreviousComponent } from './shared/advanced-component/gamma-today-previous/gamma-today-previous.component';\nimport { AppTitleComponent } from './shared/app-title/app-title.component';\nimport { GamamWidgetComponent } from './shared/gamam-widget/gamam-widget.component';\nimport { GammaAdvanceFilterComponent } from './shared/gamma-advance-filter/gamma-advance-filter.component';\nimport { BreadCrumbsComponent } from './shared/gamma-bread-crumbs/bread-crumbs.component';\nimport { LoaderComponent } from './shared/loader/loader.component';\nimport { TableWithBarComponent } from './support-components/table-with-bar/table-with-bar.component';\nimport { CommonHeaderComponent } from './common-header/common-header.component';\nimport { GeoMapComponent } from './support-components/geo-map/geo-map.component';\nimport { LoadingModule } from './shared/loading/loadingModule';\nimport { GoogleGeoMapComponent } from './shared/advanced-component/google-geo-map/google-geo-map.component';\nimport { GammaTableClumnBarChartComponent } from './shared/advanced-component/gamma-table-clumn-bar-chart/gamma-table-clumn-bar-chart.component';\n\nconst appRoutes: Routes = [\n {\n path: '',\n redirectTo: 'applicationDataset',\n pathMatch: 'full'\n },\n {\n path: 'applicationDataset',\n component: ApplicationDatasetComponent,\n },\n {\n path: 'applicationViews',\n component: ApplicationViewsComponent,\n },\n {\n path: 'applicationFilter',\n component: ApplicationFilterComponent,\n },\n {\n path: 'applicationDashboard',\n component: PageControlerComponent,\n },\n {\n path: 'pageConfigController',\n component: PageConfigComponent,\n },\n {\n path: 'applicationDataset/datasetEditor',\n component: CreateDatasetComponent,\n },\n {\n path: 'applicationViews/viewEditor',\n component: CreateCompViewComponent,\n }\n];\n\n@NgModule({\n declarations: [\n ApplicationDatasetComponent,\n ApplicationViewsComponent,\n DatasetMongoComponent,\n DatasetQueryBulderComponent,\n DatasetRestApiComponent,\n GeoMapComponent,\n // AppViewFromKpiComponent,\n CreateCompViewComponent,\n DashChartComponent,\n DashTableComponent,\n ApplicationFilterComponent,\n PageConfigComponent,\n PageControlerComponent,\n CdrConfigComponent,\n CreateDatasetComponent,\n TableWithBarComponent,\n CreateDatasetSqlComponent,\n CreateDatasetJsonComponent,\n AppTitleComponent,\n LoaderComponent,\n GamamWidgetComponent,\n GammaAdvanceFilterComponent,\n GammaAdvanceChartComponent,\n GammaAdvanceOperatorTableComponent,\n AppAdvanceHeaderComponent,\n GammaTodayPreviousComponent,\n GammaTableWithPercentageComponent,\n contentSafeHtml,\n GammSingleNumberCardComponent,\n AdvanceWidgetHeaderFilterComponent,\n BreadCrumbsComponent,\n SqlPipe,\n SafeHtmlPipe,\n CommonHeaderComponent,\n GoogleGeoMapComponent,\n GammaTableClumnBarChartComponent\n ],\n imports: [\n CommonModule,\n RouterModule.forChild(appRoutes),\n\n DevExtremeModule,\n DxButtonModule,\n DxCheckBoxModule,\n DxNumberBoxModule,\n DxDataGridModule,\n DxDropDownBoxModule,\n DxTreeViewModule,\n DxScrollViewModule,\n DxFormModule,\n DxAccordionModule,\n FormsModule,\n DxTagBoxModule,\n ReactiveFormsModule,\n MatIconModule,\n DxHtmlEditorModule,\n DxBulletModule,\n DxChartModule,\n DxDateBoxModule,\n DxLoadPanelModule,\n DxLookupModule,\n DxPivotGridModule,\n DxTemplateModule,\n DxTextAreaModule,\n DxValidationSummaryModule,\n DxValidatorModule,\n DxCalendarModule,\n DxTooltipModule,\n DxContextMenuModule,\n DxLoadIndicatorModule,\n // StructureKpiModule,\n MatTooltipModule,\n DxPopupModule, DxSelectBoxModule, DxTextBoxModule, DxTreeViewModule,\n MatButtonModule,\n MatDividerModule,\n MatMenuModule,\n MatIconModule,\n LoadingModule\n ],\n exports: [\n RouterModule,\n DashChartComponent,\n DashTableComponent,\n ApplicationFilterComponent,\n CreateDatasetComponent,\n AppTitleComponent,\n LoaderComponent,\n GamamWidgetComponent,\n GammaAdvanceFilterComponent,\n GammaAdvanceChartComponent,\n GammaAdvanceOperatorTableComponent,\n AppAdvanceHeaderComponent,\n GammaTodayPreviousComponent,\n GammaTableWithPercentageComponent,\n contentSafeHtml,\n GammSingleNumberCardComponent,\n AdvanceWidgetHeaderFilterComponent,\n BreadCrumbsComponent,\n CommonHeaderComponent,\n GeoMapComponent,\n SafeHtmlPipe,\n GoogleGeoMapComponent,\n GammaTableClumnBarChartComponent\n\n ]\n})\nexport class PackageApplicationControllerModule {\n\n}\n","import { Component, OnInit } from '@angular/core';\n@Component({\n selector: 'app-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss']\n})\nexport class LoadingComponent implements OnInit {\n\n showLoadingModal = true;\n\n constructor(\n ) {\n \n }\n\n ngOnInit() {\n }\n\n}\n","<!-- <div class=\"modal\" id=\"loading-modal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\" style=\"display: none;\">\n <div class=\"modal-dialog\" role=\"document\" style=\"max-width: 600px;margin: 8.75rem auto;\">\n <div class=\"modal-content\">\n <div class=\"modal-body\" style=\"padding: 20px;\">\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button> Loading. Please Wait...\n <div class=\"progress\" style=\"height: 25px\">\n <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-info\" role=\"progressbar\" style=\"width: 100%\" aria-valuenow=\"50\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n </div>\n </div>\n </div>\n </div>\n</div> -->\n<!-- <div class=\"loader-background \">\n <div class=\"loader\"></div>\n</div> -->\n<div class=\"popup\">\n <div class=\"popup__content\">\n <div class=\"loader\"></div>\n </div>\n</div>","// / <reference path=\"../../../../../../../../node_modules/anychart/dist/index.d.ts\"/>\n\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { LoadingComponent } from './loading.component'\n\n\n@NgModule({\n imports: [\n\n RouterModule,\n CommonModule,\n FormsModule,\n // RouterModule.forChild(routes),\n ],\n declarations: [LoadingComponent],\n exports:[LoadingComponent]\n})\nexport class LoadingModule { }\n"],"names":["i1","i2","i3","i1.CommonService","i4","i1.ApplicationContentService","i2.CommonService","i5","i6","i8","i10","i12","i13.LoaderComponent","i14.CommonHeaderComponent","kpicommonService","i6.kpicommonService","i7","i9","i11","i13","i14","i15.LoaderComponent","i16.CommonHeaderComponent","i10.LoaderComponent","i11.CommonHeaderComponent","i3.ApplicationContentService","i3.LoaderComponent","i2.ApplicationContentService","i11.LoaderComponent","i12.GoogleGeoMapComponent","moment","i8.LoaderComponent","i9.contentSafeHtml","i12.LoaderComponent","i13.GammaTableClumnBarChartComponent","i4.kpicommonService","i11.GeoMapComponent","i12.DashChartComponent","i13.DashTableComponent","i14.TableWithBarComponent","i2.kpicommonService","i4.CommonService","i2.KpiApiService","i7.GammaAdvanceFilterComponent","i8.BreadCrumbsComponent","i7.LoaderComponent","i8.contentSafeHtml","i4.LoaderComponent","i6.LoaderComponent","i6.GammaAdvanceFilterComponent","i3.KpiApiService","i11.AppTitleComponent","LoadingComponent","i3.SqlPipe","i4.ApplicationContentService","i3.CommonService","i9.LoadingComponent","i10.DatasetMongoComponent","i11.DatasetQueryBulderComponent","i12.DatasetRestApiComponent","i13.CreateDatasetSqlComponent","i14.CreateDatasetJsonComponent","i15.CommonHeaderComponent","i5.ApplicationDatssetsCall","i15","i16.LoadingComponent","i17.CreateCompViewComponent","i18.DashChartComponent","i19.DashTableComponent","i20.CreateDatasetComponent","i21.CommonHeaderComponent","i5.DynamicRouteService","i14.LoadingComponent","LoadingModule"],"mappings":"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"}
|