gamma-app-controller 1.3.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/esm2020/lib/application-controller/application-content.service.mjs +36 -36
  2. package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +2 -2
  3. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +1 -2
  4. package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +3 -3
  5. package/esm2020/lib/application-controller/support-components/dash-chart/dash-chart.component.mjs +5 -3
  6. package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +1 -2
  7. package/esm2020/lib/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +21 -1
  8. package/esm2020/lib/shared/advanced-component/gamma-advance-operator-table/gamma-advance-operator-table.component.mjs +6 -2
  9. package/esm2020/lib/shared/permission-helper.mjs +4 -4
  10. package/esm2020/lib/shared/user-access/user-access.component.mjs +3 -3
  11. package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +137 -277
  12. package/esm2020/lib/template-module/KpiCreationModule/createKpi.service.mjs +37 -6
  13. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.mjs +3 -3
  14. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.mjs +4 -15
  15. package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview.component.mjs +4 -6
  16. package/esm2020/lib/template-module/bookmarked-template/bookmarked-layout.service.mjs +8 -8
  17. package/esm2020/lib/template-module/cdrConfigModule/cdr-browser.service.mjs +2 -2
  18. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +1 -2
  19. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.service.mjs +8 -8
  20. package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.service.mjs +8 -8
  21. package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-multi-layout.service.mjs +8 -8
  22. package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-single-layout.service.mjs +8 -8
  23. package/fesm2015/gamma-app-controller.mjs +298 -405
  24. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  25. package/fesm2020/gamma-app-controller.mjs +307 -405
  26. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  27. package/lib/application-controller/application-content.service.d.ts +1 -1
  28. package/lib/application-controller/support-components/dash-chart/dash-chart.component.d.ts +1 -0
  29. package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +10 -15
  30. package/lib/template-module/KpiCreationModule/createKpi.service.d.ts +4 -0
  31. package/package.json +1 -1
@@ -196,7 +196,7 @@ class ApplicationContentService {
196
196
  }), catchError(this.handleError));
197
197
  }
198
198
  getKpiBrowserConfigById(id) {
199
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;
199
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getKpiBrowserConfigById?id=' + id;
200
200
  return this.http
201
201
  .get(apiUrl, { withCredentials: true })
202
202
  .pipe(map((response) => {
@@ -240,27 +240,27 @@ class ApplicationContentService {
240
240
  }
241
241
  createAppDataset(body) {
242
242
  return this.http
243
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createAppDataset', JSON.stringify(body), this.options)
243
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createAppDataset', JSON.stringify(body), this.options)
244
244
  .pipe(map((response) => {
245
245
  return response;
246
246
  }), catchError(this.handleError));
247
247
  }
248
248
  updateAppDatasetConfig(body) {
249
249
  return this.http
250
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/updateAppDatasetConfig', JSON.stringify(body), this.options)
250
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/updateAppDatasetConfig', JSON.stringify(body), this.options)
251
251
  .pipe(map((response) => {
252
252
  return response;
253
253
  }), catchError(this.handleError));
254
254
  }
255
255
  deleteAppDatasetConfig(datasetId) {
256
256
  return this.http
257
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppDatasetConfig/' + datasetId, this.options)
257
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppDatasetConfig/' + datasetId, this.options)
258
258
  .pipe(map((response) => {
259
259
  return response;
260
260
  }), catchError(this.handleError));
261
261
  }
262
262
  getAppDatasetConfigs() {
263
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
263
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
264
264
  return this.http
265
265
  .get(apiUrl, { withCredentials: true })
266
266
  .pipe(map((response) => {
@@ -268,7 +268,7 @@ class ApplicationContentService {
268
268
  }), catchError(this.handleError));
269
269
  }
270
270
  getAppDatasetConfig(datasetId) {
271
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
271
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
272
272
  return this.http
273
273
  .get(apiUrl, { withCredentials: true })
274
274
  .pipe(map((response) => {
@@ -277,20 +277,20 @@ class ApplicationContentService {
277
277
  }
278
278
  createAppViewConfig(body) {
279
279
  return this.http
280
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createAppViewConfig', JSON.stringify(body), this.options)
280
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createAppViewConfig', JSON.stringify(body), this.options)
281
281
  .pipe(map((response) => {
282
282
  return response;
283
283
  }), catchError(this.handleError));
284
284
  }
285
285
  updateAppViewConfig(body) {
286
286
  return this.http
287
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/updateAppViewConfig', JSON.stringify(body), this.options)
287
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/updateAppViewConfig', JSON.stringify(body), this.options)
288
288
  .pipe(map((response) => {
289
289
  return response;
290
290
  }), catchError(this.handleError));
291
291
  }
292
292
  getAppViewConfigs() {
293
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
293
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
294
294
  return this.http
295
295
  .get(apiUrl, { withCredentials: true })
296
296
  .pipe(map((response) => {
@@ -298,7 +298,7 @@ class ApplicationContentService {
298
298
  }), catchError(this.handleError));
299
299
  }
300
300
  getAppViewConfig(viewId) {
301
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfig?viewId=' + viewId;
301
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfig?viewId=' + viewId;
302
302
  return this.http
303
303
  .get(apiUrl, { withCredentials: true })
304
304
  .pipe(map((response) => {
@@ -307,27 +307,27 @@ class ApplicationContentService {
307
307
  }
308
308
  deleteAppViewConfig(datasetId) {
309
309
  return this.http
310
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppViewConfig/' + datasetId, this.options)
310
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppViewConfig/' + datasetId, this.options)
311
311
  .pipe(map((response) => {
312
312
  return response;
313
313
  }), catchError(this.handleError));
314
314
  }
315
315
  createAppFilterConfig(body) {
316
316
  return this.http
317
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createAppFilterConfig', JSON.stringify(body), this.options)
317
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createAppFilterConfig', JSON.stringify(body), this.options)
318
318
  .pipe(map((response) => {
319
319
  return response;
320
320
  }), catchError(this.handleError));
321
321
  }
322
322
  editAppFilterConfig(body) {
323
323
  return this.http
324
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/editAppFilterConfig', JSON.stringify(body), this.options)
324
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/editAppFilterConfig', JSON.stringify(body), this.options)
325
325
  .pipe(map((response) => {
326
326
  return response;
327
327
  }), catchError(this.handleError));
328
328
  }
329
329
  getAppFilterConfigs() {
330
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfigs';
330
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfigs';
331
331
  return this.http
332
332
  .get(apiUrl, { withCredentials: true })
333
333
  .pipe(map((response) => {
@@ -336,7 +336,7 @@ class ApplicationContentService {
336
336
  }
337
337
  deleteAppFilterConfig(filterId) {
338
338
  return this.http
339
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppFilterConfig/' + filterId, this.options)
339
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppFilterConfig/' + filterId, this.options)
340
340
  .pipe(map((response) => {
341
341
  return response;
342
342
  }), catchError(this.handleError));
@@ -356,7 +356,7 @@ class ApplicationContentService {
356
356
  }), catchError(this.handleError));
357
357
  }
358
358
  getAppPageConfigs() {
359
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
359
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
360
360
  return this.http
361
361
  .get(apiUrl, { withCredentials: true })
362
362
  .pipe(map((response) => {
@@ -365,62 +365,62 @@ class ApplicationContentService {
365
365
  }
366
366
  createAppPageConfig(body) {
367
367
  return this.http
368
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createAppPageConfig', JSON.stringify(body), this.options)
368
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createAppPageConfig', JSON.stringify(body), this.options)
369
369
  .pipe(map((response) => {
370
370
  return response;
371
371
  }), catchError(this.handleError));
372
372
  }
373
373
  editAppPageConfig(body) {
374
374
  return this.http
375
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/editAppPageConfig', JSON.stringify(body), this.options)
375
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/editAppPageConfig', JSON.stringify(body), this.options)
376
376
  .pipe(map((response) => {
377
377
  return response;
378
378
  }), catchError(this.handleError));
379
379
  }
380
380
  deleteAppPageConfig(pageId) {
381
381
  return this.http
382
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppPageConfig/' + pageId, this.options)
382
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppPageConfig/' + pageId, this.options)
383
383
  .pipe(map((response) => {
384
384
  return response;
385
385
  }), catchError(this.handleError));
386
386
  }
387
387
  createAppWidgetConfig(body) {
388
388
  return this.http
389
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createAppWidgetConfig', JSON.stringify(body), this.options)
389
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createAppWidgetConfig', JSON.stringify(body), this.options)
390
390
  .pipe(map((response) => {
391
391
  return response;
392
392
  }), catchError(this.handleError));
393
393
  }
394
394
  editAppWidgetConfig(body) {
395
395
  return this.http
396
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/editAppWidgetConfig', JSON.stringify(body), this.options)
396
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/editAppWidgetConfig', JSON.stringify(body), this.options)
397
397
  .pipe(map((response) => {
398
398
  return response;
399
399
  }), catchError(this.handleError));
400
400
  }
401
401
  getAppPageDetailConfig(pageId) {
402
402
  return this.http
403
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
403
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
404
404
  .pipe(map((response) => {
405
405
  return response;
406
406
  }), catchError(this.handleError));
407
407
  }
408
408
  deleteAppWidgetConfig(filterId) {
409
409
  return this.http
410
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppWidgetConfig/' + filterId, this.options)
410
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppWidgetConfig/' + filterId, this.options)
411
411
  .pipe(map((response) => {
412
412
  return response;
413
413
  }), catchError(this.handleError));
414
414
  }
415
415
  getAppFilterConfig(filterId) {
416
416
  return this.http
417
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
417
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
418
418
  .pipe(map((response) => {
419
419
  return response;
420
420
  }), catchError(this.handleError));
421
421
  }
422
422
  getKPIReferenceEndPoints() {
423
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getKPIReferenceEndPoints';
423
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getKPIReferenceEndPoints';
424
424
  return this.http
425
425
  .get(apiUrl, { withCredentials: true })
426
426
  .pipe(map((response) => {
@@ -435,7 +435,7 @@ class ApplicationContentService {
435
435
  }), catchError(this.handleError));
436
436
  }
437
437
  getlistKpiBrowser() {
438
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
438
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
439
439
  return this.http
440
440
  .get(apiUrl, { withCredentials: true })
441
441
  .pipe(map((response) => {
@@ -459,14 +459,14 @@ class ApplicationContentService {
459
459
  }
460
460
  configureKpiBrowserConfig(body) {
461
461
  return this.http
462
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/configureKpiBrowserConfig', JSON.stringify(body), this.options)
462
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/configureKpiBrowserConfig', JSON.stringify(body), this.options)
463
463
  .pipe(map((response) => {
464
464
  return response;
465
465
  }), catchError(this.handleError));
466
466
  }
467
467
  getCreateKpi(body) {
468
468
  return this.http
469
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createKpi', JSON.stringify(body), this.options)
469
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createKpi', JSON.stringify(body), this.options)
470
470
  .pipe(map((response) => {
471
471
  return response;
472
472
  }), catchError(this.handleError));
@@ -477,7 +477,7 @@ class ApplicationContentService {
477
477
  });
478
478
  const options = { headers: headers, withCredentials: true };
479
479
  return this.http
480
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/uploadDatasetJsonPayload', formData, options)
480
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/uploadDatasetJsonPayload', formData, options)
481
481
  .pipe(map((response) => {
482
482
  return response;
483
483
  }), catchError(this.handleError));
@@ -653,7 +653,7 @@ class ApplicationContentService {
653
653
  }), catchError(this.handleError));
654
654
  }
655
655
  configureAppMenuConfig(manueConfig) {
656
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/configureAppMenuConfig';
656
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/configureAppMenuConfig';
657
657
  return this.http
658
658
  .post(apiUrl, JSON.stringify(manueConfig), this.options)
659
659
  .pipe(map((response) => {
@@ -661,15 +661,15 @@ class ApplicationContentService {
661
661
  }), catchError(this.handleError));
662
662
  }
663
663
  listAppMenuConfigs() {
664
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listAppMenuConfigs';
664
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listAppMenuConfigs?caller=app';
665
665
  return this.http
666
666
  .get(apiUrl, { withCredentials: true })
667
667
  .pipe(map((response) => {
668
668
  return response;
669
669
  }), catchError(this.handleError));
670
670
  }
671
- getAppAppMenuConfigById(manuid) {
672
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppAppMenuConfigById?menuId=' + manuid;
671
+ getAppMenuConfigById(manuid) {
672
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppMenuConfigById?caller=app&menuId=' + manuid;
673
673
  return this.http
674
674
  .get(apiUrl, { withCredentials: true })
675
675
  .pipe(map((response) => {
@@ -677,7 +677,7 @@ class ApplicationContentService {
677
677
  }), catchError(this.handleError));
678
678
  }
679
679
  updateAppMenuConfig(manueConfig) {
680
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/updateAppMenuConfig';
680
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/updateAppMenuConfig';
681
681
  return this.http
682
682
  .post(apiUrl, JSON.stringify(manueConfig), this.options)
683
683
  .pipe(map((response) => {
@@ -686,7 +686,7 @@ class ApplicationContentService {
686
686
  }
687
687
  deleteAppMenuConfig(menuId) {
688
688
  return this.http
689
- .delete(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/deleteAppMenuConfig/' + menuId, this.options)
689
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteAppMenuConfig/' + menuId, this.options)
690
690
  .pipe(map((response) => {
691
691
  return response;
692
692
  }), catchError(this.handleError));
@@ -4313,7 +4313,7 @@ class UserAccessComponent {
4313
4313
  this.userOptionContainer = [
4314
4314
  {
4315
4315
  entityName: 'user',
4316
- entityValues: ['${USER}']
4316
+ entityValues: ['{USER}']
4317
4317
  }
4318
4318
  ];
4319
4319
  this.emitChanges();
@@ -4322,7 +4322,7 @@ class UserAccessComponent {
4322
4322
  addNewUser() {
4323
4323
  this.userOptionContainer.push({
4324
4324
  entityName: 'user',
4325
- entityValues: ['${USER}']
4325
+ entityValues: ['{USER}']
4326
4326
  });
4327
4327
  this.emitChanges();
4328
4328
  }
@@ -4375,6 +4375,7 @@ class DashChartComponent {
4375
4375
  "title": "",
4376
4376
  "argumentField": "",
4377
4377
  "chartGroupBy": "",
4378
+ "chartSortBy": "",
4378
4379
  "verticalAlignment": "bottom",
4379
4380
  "horizontalAlignment": "center",
4380
4381
  "size": "250",
@@ -4450,6 +4451,7 @@ class DashChartComponent {
4450
4451
  this.mainChartCourceObject['kpiConfig'] = value.selectedWidgetConfig;
4451
4452
  value.selectedWidgetConfig['keyToPass'] = (value.selectedWidgetConfig['keyToPass']) ? value.selectedWidgetConfig['keyToPass'] : [];
4452
4453
  value.selectedWidgetConfig['dataConfig']['chartGroupBy'] = (value.selectedWidgetConfig['dataConfig']['chartGroupBy']) ? value.selectedWidgetConfig['dataConfig']['chartGroupBy'] : "";
4454
+ value.selectedWidgetConfig['dataConfig']['chartSortBy'] = (value.selectedWidgetConfig['dataConfig']['chartSortBy']) ? value.selectedWidgetConfig['dataConfig']['chartSortBy'] : "";
4453
4455
  if (value.selectedWidgetConfig['dataConfig']['chartGroupBy']) {
4454
4456
  const { dataSourceForChart, listOfGroupByData } = this.getStackBarChart(this.previewData, this.chartConfig.argumentField, this.chartConfig.chart_config[0].valueField, value.selectedWidgetConfig['dataConfig']['chartGroupBy']);
4455
4457
  this.dataSourseForChart = dataSourceForChart;
@@ -4796,10 +4798,10 @@ class DashChartComponent {
4796
4798
  }
4797
4799
  }
4798
4800
  DashChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DashChartComponent, deps: [{ token: CommonService }, { token: ApplicationContentService }, { token: i4$1.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
4799
- DashChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DashChartComponent, selector: "app-dash-chart", inputs: { chartconfigData: ["datasetmodal", "chartconfigData"] }, outputs: { getChartConfigOutPut: "getChartConfigOutPut" }, ngImport: i0, template: "<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' || chartType === 'pie'\">\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]=\"chartType\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\" palette=\"Soft Pastel\"\n [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 <ng-container *ngIf=\"chartType === 'doughnut'\">\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\" *ngIf=\"chartConfig.displayCenterLabel\">\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 </ng-container>\n\n </dx-pie-chart>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"chartType !== 'doughnut' && chartType !== 'funnel' && chartType !== 'bubble' && chartType !== 'pie'\">\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\" [palette]=\"chartConfig.palette\"\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 <!-- for others single access chart start -->\n <ng-container *ngIf=\"chartType !== 'stackedBar' && chartType !== 'line'\">\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}}\"\n axis=\"{{item.axis}}\" 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}}\"\n axis=\"{{item.axis}}\" name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n </ng-container>\n </ng-container>\n <!-- for others single access chart end -->\n\n <!-- for stackber start -->\n <ng-container *ngIf=\"chartType === 'stackedBar' || chartType === 'line'\">\n <ng-container *ngFor=\"let item of chartWithThreeDimentionDataSeries\">\n <dxi-series valueField=\"{{item}}\" name=\"{{item}}\" type=\"{{chartType}}\"></dxi-series>\n </ng-container>\n </ng-container>\n <!-- for stackber end -->\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n <div class=\"w-2/3 px-2 mt-2\">\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-7\">\n <dx-check-box [value]=\"chartConfig.labelDisplay\"\n [(ngModel)]=\"chartConfig.labelDisplay\" text=\"Label Display\"></dx-check-box>\n </div>\n\n </div>\n\n\n </div>\n\n\n\n\n </div>\n\n <div class=\"m-3 p-4 bg-white border border-gray-300 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\"\n *ngIf=\"isAdvanceContainer\">\n <h6\n class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center capitalize\">\n Advance Columns for {{chartType}} Chart\n <div class=\"ml-auto\">\n\n </div>\n </h6>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'stackedBar' || chartType === 'line' \">\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\" (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n </div>\n </div>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'bubble'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2 w-full\">\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 w-full\">\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 w-full\">\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=\"flex flex-row\" *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\n <div class=\" flex flex-row\">\n <!-- <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\"\n (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n\n\n </div> -->\n <div class=\"mt-7 mx-2\">\n <dx-check-box [(ngModel)]=\"chartConfig.displayCenterLabel\"\n text=\"Display Center Label\"></dx-check-box>\n </div>\n </div>\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' && chartType !== 'pie'\">\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\"\n *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n </div>\n </div>\n </ng-container>\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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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 Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n </div>\n\n\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n\n </div>\n </div>\n </ng-container>\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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\n </div>\n </div>\n </ng-container>\n\n\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>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxoLabelComponent, selector: "dxo-label", inputs: ["connectorColor", "connectorWidth", "customizeText", "font", "format", "indent", "visible", "horizontalAlignment", "position", "text", "verticalAlignment", "alignment", "customizeHint", "displayMode", "indentFromAxis", "overlappingBehavior", "rotationAngle", "staggeringSpacing", "template", "textOverflow", "wordWrap", "argumentFormat", "backgroundColor", "border", "connector", "displayFormat", "horizontalOffset", "showForZeroValues", "verticalOffset", "hideFirstOrLast", "indentFromTick", "useRangeColors", "location", "showColon", "radialOffset", "topIndent", "shadow", "useNodeColors", "dataField", "enabled"] }, { kind: "component", type: i6.DxoLegendComponent, selector: "dxo-legend", inputs: ["backgroundColor", "border", "columnCount", "columnItemSpacing", "customizeHint", "customizeItems", "customizeText", "font", "horizontalAlignment", "itemsAlignment", "itemTextFormat", "itemTextPosition", "margin", "markerSize", "markerTemplate", "orientation", "paddingLeftRight", "paddingTopBottom", "rowCount", "rowItemSpacing", "title", "verticalAlignment", "visible", "hoverMode", "position"] }, { kind: "component", type: i6.DxoTitleComponent, selector: "dxo-title", inputs: ["font", "horizontalAlignment", "margin", "placeholderSize", "subtitle", "text", "verticalAlignment", "textOverflow", "wordWrap", "alignment"] }, { kind: "component", type: i6.DxoSizeComponent, selector: "dxo-size", inputs: ["height", "width"] }, { kind: "component", type: i6.DxoTooltipComponent, selector: "dxo-tooltip", inputs: ["arrowLength", "border", "color", "container", "contentTemplate", "cornerRadius", "customizeTooltip", "enabled", "font", "format", "interactive", "opacity", "paddingLeftRight", "paddingTopBottom", "shadow", "zIndex", "argumentFormat", "location", "shared", "isShown", "text", "position", "showMode", "customizeLinkTooltip", "customizeNodeTooltip", "linkTooltipTemplate", "nodeTooltipTemplate"] }, { kind: "component", type: i7$1.DxChartComponent, selector: "dx-chart", inputs: ["adaptiveLayout", "adjustOnZoom", "animation", "annotations", "argumentAxis", "autoHidePointMarkers", "barGroupPadding", "barGroupWidth", "commonAnnotationSettings", "commonAxisSettings", "commonPaneSettings", "commonSeriesSettings", "containerBackgroundColor", "crosshair", "customizeAnnotation", "customizeLabel", "customizePoint", "dataPrepareSettings", "dataSource", "defaultPane", "disabled", "elementAttr", "export", "legend", "loadingIndicator", "margin", "maxBubbleSize", "minBubbleSize", "negativesAsZeroes", "palette", "paletteExtensionMode", "panes", "pathModified", "pointSelectionMode", "redrawOnResize", "resizePanesOnZoom", "resolveLabelOverlapping", "rotated", "rtlEnabled", "scrollBar", "series", "seriesSelectionMode", "seriesTemplate", "size", "stickyHovering", "synchronizeMultiAxes", "theme", "title", "tooltip", "valueAxis", "zoomAndPan"], outputs: ["onArgumentAxisClick", "onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onSeriesClick", "onSeriesHoverChanged", "onSeriesSelectionChanged", "onTooltipHidden", "onTooltipShown", "onZoomEnd", "onZoomStart", "adaptiveLayoutChange", "adjustOnZoomChange", "animationChange", "annotationsChange", "argumentAxisChange", "autoHidePointMarkersChange", "barGroupPaddingChange", "barGroupWidthChange", "commonAnnotationSettingsChange", "commonAxisSettingsChange", "commonPaneSettingsChange", "commonSeriesSettingsChange", "containerBackgroundColorChange", "crosshairChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataPrepareSettingsChange", "dataSourceChange", "defaultPaneChange", "disabledChange", "elementAttrChange", "exportChange", "legendChange", "loadingIndicatorChange", "marginChange", "maxBubbleSizeChange", "minBubbleSizeChange", "negativesAsZeroesChange", "paletteChange", "paletteExtensionModeChange", "panesChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resizePanesOnZoomChange", "resolveLabelOverlappingChange", "rotatedChange", "rtlEnabledChange", "scrollBarChange", "seriesChange", "seriesSelectionModeChange", "seriesTemplateChange", "sizeChange", "stickyHoveringChange", "synchronizeMultiAxesChange", "themeChange", "titleChange", "tooltipChange", "valueAxisChange", "zoomAndPanChange"] }, { kind: "component", type: i6.DxoArgumentAxisComponent, selector: "dxo-argument-axis", inputs: ["aggregateByCategory", "aggregatedPointsPosition", "aggregationGroupWidth", "aggregationInterval", "allowDecimals", "argumentType", "axisDivisionFactor", "breaks", "breakStyle", "categories", "color", "constantLines", "constantLineStyle", "customPosition", "customPositionAxis", "discreteAxisDivisionMode", "endOnTick", "grid", "holidays", "hoverMode", "inverted", "label", "linearThreshold", "logarithmBase", "maxValueMargin", "minorGrid", "minorTick", "minorTickCount", "minorTickInterval", "minValueMargin", "minVisualRangeLength", "offset", "opacity", "placeholderSize", "position", "singleWorkdays", "strips", "stripStyle", "tick", "tickInterval", "title", "type", "valueMarginsEnabled", "visible", "visualRange", "visualRangeUpdateMode", "wholeRange", "width", "workdaysOnly", "workWeek", "firstPointOnStartAngle", "originValue", "period", "startAngle"], outputs: ["visualRangeChange"] }, { kind: "component", type: i6.DxoCommonSeriesSettingsComponent, selector: "dxo-common-series-settings", inputs: ["aggregation", "area", "argumentField", "axis", "bar", "barOverlapGroup", "barPadding", "barWidth", "border", "bubble", "candlestick", "closeValueField", "color", "cornerRadius", "dashStyle", "fullstackedarea", "fullstackedbar", "fullstackedline", "fullstackedspline", "fullstackedsplinearea", "highValueField", "hoverMode", "hoverStyle", "ignoreEmptyPoints", "innerColor", "label", "line", "lowValueField", "maxLabelCount", "minBarSize", "opacity", "openValueField", "pane", "point", "rangearea", "rangebar", "rangeValue1Field", "rangeValue2Field", "reduction", "scatter", "selectionMode", "selectionStyle", "showInLegend", "sizeField", "spline", "splinearea", "stack", "stackedarea", "stackedbar", "stackedline", "stackedspline", "stackedsplinearea", "steparea", "stepline", "stock", "tagField", "type", "valueErrorBar", "valueField", "visible", "width", "argumentType", "minSegmentSize", "smallValuesGrouping", "closed"] }, { kind: "component", type: i6.DxoConnectorComponent, selector: "dxo-connector", inputs: ["color", "visible", "width", "opacity"] }, { kind: "component", type: i6.DxiSeriesComponent, selector: "dxi-series", inputs: ["aggregation", "argumentField", "axis", "barOverlapGroup", "barPadding", "barWidth", "border", "closeValueField", "color", "cornerRadius", "dashStyle", "highValueField", "hoverMode", "hoverStyle", "ignoreEmptyPoints", "innerColor", "label", "lowValueField", "maxLabelCount", "minBarSize", "name", "opacity", "openValueField", "pane", "point", "rangeValue1Field", "rangeValue2Field", "reduction", "selectionMode", "selectionStyle", "showInLegend", "sizeField", "stack", "tag", "tagField", "type", "valueErrorBar", "valueField", "visible", "width", "argumentType", "minSegmentSize", "smallValuesGrouping", "closed"] }, { kind: "component", type: i6.DxiValueAxisComponent, selector: "dxi-value-axis", inputs: ["aggregatedPointsPosition", "allowDecimals", "autoBreaksEnabled", "axisDivisionFactor", "breaks", "breakStyle", "categories", "color", "constantLines", "constantLineStyle", "customPosition", "discreteAxisDivisionMode", "endOnTick", "grid", "inverted", "label", "linearThreshold", "logarithmBase", "maxAutoBreakCount", "maxValueMargin", "minorGrid", "minorTick", "minorTickCount", "minorTickInterval", "minValueMargin", "minVisualRangeLength", "multipleAxesSpacing", "name", "offset", "opacity", "pane", "placeholderSize", "position", "showZero", "strips", "stripStyle", "synchronizedValue", "tick", "tickInterval", "title", "type", "valueMarginsEnabled", "valueType", "visible", "visualRange", "visualRangeUpdateMode", "wholeRange", "width"], outputs: ["visualRangeChange"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6$2.DxColorBoxComponent, selector: "dx-color-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyButtonText", "applyValueMode", "buttons", "cancelButtonText", "deferRendering", "disabled", "dropDownButtonTemplate", "dropDownOptions", "editAlphaChannel", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "keyStep", "label", "labelMode", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "cancelButtonTextChange", "deferRenderingChange", "disabledChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "editAlphaChannelChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "keyStepChange", "labelChange", "labelModeChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i10.DxPieChartComponent, selector: "dx-pie-chart", inputs: ["adaptiveLayout", "animation", "annotations", "centerTemplate", "commonAnnotationSettings", "commonSeriesSettings", "customizeAnnotation", "customizeLabel", "customizePoint", "dataSource", "diameter", "disabled", "elementAttr", "export", "innerRadius", "legend", "loadingIndicator", "margin", "minDiameter", "palette", "paletteExtensionMode", "pathModified", "pointSelectionMode", "redrawOnResize", "resolveLabelOverlapping", "rtlEnabled", "segmentsDirection", "series", "seriesTemplate", "size", "sizeGroup", "startAngle", "theme", "title", "tooltip", "type"], outputs: ["onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onTooltipHidden", "onTooltipShown", "adaptiveLayoutChange", "animationChange", "annotationsChange", "centerTemplateChange", "commonAnnotationSettingsChange", "commonSeriesSettingsChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataSourceChange", "diameterChange", "disabledChange", "elementAttrChange", "exportChange", "innerRadiusChange", "legendChange", "loadingIndicatorChange", "marginChange", "minDiameterChange", "paletteChange", "paletteExtensionModeChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resolveLabelOverlappingChange", "rtlEnabledChange", "segmentsDirectionChange", "seriesChange", "seriesTemplateChange", "sizeChange", "sizeGroupChange", "startAngleChange", "themeChange", "titleChange", "tooltipChange", "typeChange"] }, { kind: "component", type: i10$1.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8$1.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: UserAccessComponent, selector: "app-user-access", inputs: ["userOptionContainer"], outputs: ["userOptionContainerChange"] }, { kind: "component", type: LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i4$2.JsonPipe, name: "json" }] });
4801
+ DashChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DashChartComponent, selector: "app-dash-chart", inputs: { chartconfigData: ["datasetmodal", "chartconfigData"] }, outputs: { getChartConfigOutPut: "getChartConfigOutPut" }, ngImport: i0, template: "<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' || chartType === 'pie'\">\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]=\"chartType\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\" palette=\"Soft Pastel\"\n [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 <ng-container *ngIf=\"chartType === 'doughnut'\">\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 *ngIf=\"chartConfig.displayCenterLabel\">\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 </ng-container>\n\n </dx-pie-chart>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"chartType !== 'doughnut' && chartType !== 'funnel' && chartType !== 'bubble' && chartType !== 'pie'\">\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\" [palette]=\"chartConfig.palette\"\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 <!-- for others single access chart start -->\n <ng-container *ngIf=\"chartType !== 'stackedBar' && chartType !== 'line'\">\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}}\"\n axis=\"{{item.axis}}\" 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}}\"\n axis=\"{{item.axis}}\" name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n </ng-container>\n </ng-container>\n <!-- for others single access chart end -->\n\n <!-- for stackber start -->\n <ng-container *ngIf=\"chartType === 'stackedBar' || chartType === 'line'\">\n <ng-container *ngFor=\"let item of chartWithThreeDimentionDataSeries\">\n <dxi-series valueField=\"{{item}}\" name=\"{{item}}\" type=\"{{chartType}}\"></dxi-series>\n </ng-container>\n </ng-container>\n <!-- for stackber end -->\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\">Sort By</div>\n <dx-tag-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.chartSortBy\"></dx-tag-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n <div class=\"w-2/3 px-2 mt-2\">\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-7\">\n <dx-check-box [value]=\"chartConfig.labelDisplay\"\n [(ngModel)]=\"chartConfig.labelDisplay\" text=\"Label Display\"></dx-check-box>\n </div>\n\n </div>\n\n\n </div>\n\n\n\n\n </div>\n\n <div class=\"m-3 p-4 bg-white border border-gray-300 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\"\n *ngIf=\"isAdvanceContainer\">\n <h6\n class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center capitalize\">\n Advance Columns for {{chartType}} Chart\n <div class=\"ml-auto\">\n\n </div>\n </h6>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'stackedBar' || chartType === 'line' \">\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\" (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n </div>\n </div>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'bubble'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2 w-full\">\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 w-full\">\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 w-full\">\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=\"flex flex-row\" *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\n <div class=\" flex flex-row\">\n <!-- <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\"\n (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n\n\n </div> -->\n <div class=\"mt-7 mx-2\">\n <dx-check-box [(ngModel)]=\"chartConfig.displayCenterLabel\"\n text=\"Display Center Label\"></dx-check-box>\n </div>\n </div>\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' && chartType !== 'pie'\">\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\"\n *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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 Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\">Sort By</div>\n <dx-tag-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.chartSortBy\"></dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n </div>\n\n\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n\n </div>\n </div>\n </ng-container>\n <ng-container\n *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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\n </div>\n </div>\n </ng-container>\n\n\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>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6.DxoLabelComponent, selector: "dxo-label", inputs: ["connectorColor", "connectorWidth", "customizeText", "font", "format", "indent", "visible", "horizontalAlignment", "position", "text", "verticalAlignment", "alignment", "customizeHint", "displayMode", "indentFromAxis", "overlappingBehavior", "rotationAngle", "staggeringSpacing", "template", "textOverflow", "wordWrap", "argumentFormat", "backgroundColor", "border", "connector", "displayFormat", "horizontalOffset", "showForZeroValues", "verticalOffset", "hideFirstOrLast", "indentFromTick", "useRangeColors", "location", "showColon", "radialOffset", "topIndent", "shadow", "useNodeColors", "dataField", "enabled"] }, { kind: "component", type: i6.DxoLegendComponent, selector: "dxo-legend", inputs: ["backgroundColor", "border", "columnCount", "columnItemSpacing", "customizeHint", "customizeItems", "customizeText", "font", "horizontalAlignment", "itemsAlignment", "itemTextFormat", "itemTextPosition", "margin", "markerSize", "markerTemplate", "orientation", "paddingLeftRight", "paddingTopBottom", "rowCount", "rowItemSpacing", "title", "verticalAlignment", "visible", "hoverMode", "position"] }, { kind: "component", type: i6.DxoTitleComponent, selector: "dxo-title", inputs: ["font", "horizontalAlignment", "margin", "placeholderSize", "subtitle", "text", "verticalAlignment", "textOverflow", "wordWrap", "alignment"] }, { kind: "component", type: i6.DxoSizeComponent, selector: "dxo-size", inputs: ["height", "width"] }, { kind: "component", type: i6.DxoTooltipComponent, selector: "dxo-tooltip", inputs: ["arrowLength", "border", "color", "container", "contentTemplate", "cornerRadius", "customizeTooltip", "enabled", "font", "format", "interactive", "opacity", "paddingLeftRight", "paddingTopBottom", "shadow", "zIndex", "argumentFormat", "location", "shared", "isShown", "text", "position", "showMode", "customizeLinkTooltip", "customizeNodeTooltip", "linkTooltipTemplate", "nodeTooltipTemplate"] }, { kind: "component", type: i7$1.DxChartComponent, selector: "dx-chart", inputs: ["adaptiveLayout", "adjustOnZoom", "animation", "annotations", "argumentAxis", "autoHidePointMarkers", "barGroupPadding", "barGroupWidth", "commonAnnotationSettings", "commonAxisSettings", "commonPaneSettings", "commonSeriesSettings", "containerBackgroundColor", "crosshair", "customizeAnnotation", "customizeLabel", "customizePoint", "dataPrepareSettings", "dataSource", "defaultPane", "disabled", "elementAttr", "export", "legend", "loadingIndicator", "margin", "maxBubbleSize", "minBubbleSize", "negativesAsZeroes", "palette", "paletteExtensionMode", "panes", "pathModified", "pointSelectionMode", "redrawOnResize", "resizePanesOnZoom", "resolveLabelOverlapping", "rotated", "rtlEnabled", "scrollBar", "series", "seriesSelectionMode", "seriesTemplate", "size", "stickyHovering", "synchronizeMultiAxes", "theme", "title", "tooltip", "valueAxis", "zoomAndPan"], outputs: ["onArgumentAxisClick", "onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onSeriesClick", "onSeriesHoverChanged", "onSeriesSelectionChanged", "onTooltipHidden", "onTooltipShown", "onZoomEnd", "onZoomStart", "adaptiveLayoutChange", "adjustOnZoomChange", "animationChange", "annotationsChange", "argumentAxisChange", "autoHidePointMarkersChange", "barGroupPaddingChange", "barGroupWidthChange", "commonAnnotationSettingsChange", "commonAxisSettingsChange", "commonPaneSettingsChange", "commonSeriesSettingsChange", "containerBackgroundColorChange", "crosshairChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataPrepareSettingsChange", "dataSourceChange", "defaultPaneChange", "disabledChange", "elementAttrChange", "exportChange", "legendChange", "loadingIndicatorChange", "marginChange", "maxBubbleSizeChange", "minBubbleSizeChange", "negativesAsZeroesChange", "paletteChange", "paletteExtensionModeChange", "panesChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resizePanesOnZoomChange", "resolveLabelOverlappingChange", "rotatedChange", "rtlEnabledChange", "scrollBarChange", "seriesChange", "seriesSelectionModeChange", "seriesTemplateChange", "sizeChange", "stickyHoveringChange", "synchronizeMultiAxesChange", "themeChange", "titleChange", "tooltipChange", "valueAxisChange", "zoomAndPanChange"] }, { kind: "component", type: i6.DxoArgumentAxisComponent, selector: "dxo-argument-axis", inputs: ["aggregateByCategory", "aggregatedPointsPosition", "aggregationGroupWidth", "aggregationInterval", "allowDecimals", "argumentType", "axisDivisionFactor", "breaks", "breakStyle", "categories", "color", "constantLines", "constantLineStyle", "customPosition", "customPositionAxis", "discreteAxisDivisionMode", "endOnTick", "grid", "holidays", "hoverMode", "inverted", "label", "linearThreshold", "logarithmBase", "maxValueMargin", "minorGrid", "minorTick", "minorTickCount", "minorTickInterval", "minValueMargin", "minVisualRangeLength", "offset", "opacity", "placeholderSize", "position", "singleWorkdays", "strips", "stripStyle", "tick", "tickInterval", "title", "type", "valueMarginsEnabled", "visible", "visualRange", "visualRangeUpdateMode", "wholeRange", "width", "workdaysOnly", "workWeek", "firstPointOnStartAngle", "originValue", "period", "startAngle"], outputs: ["visualRangeChange"] }, { kind: "component", type: i6.DxoCommonSeriesSettingsComponent, selector: "dxo-common-series-settings", inputs: ["aggregation", "area", "argumentField", "axis", "bar", "barOverlapGroup", "barPadding", "barWidth", "border", "bubble", "candlestick", "closeValueField", "color", "cornerRadius", "dashStyle", "fullstackedarea", "fullstackedbar", "fullstackedline", "fullstackedspline", "fullstackedsplinearea", "highValueField", "hoverMode", "hoverStyle", "ignoreEmptyPoints", "innerColor", "label", "line", "lowValueField", "maxLabelCount", "minBarSize", "opacity", "openValueField", "pane", "point", "rangearea", "rangebar", "rangeValue1Field", "rangeValue2Field", "reduction", "scatter", "selectionMode", "selectionStyle", "showInLegend", "sizeField", "spline", "splinearea", "stack", "stackedarea", "stackedbar", "stackedline", "stackedspline", "stackedsplinearea", "steparea", "stepline", "stock", "tagField", "type", "valueErrorBar", "valueField", "visible", "width", "argumentType", "minSegmentSize", "smallValuesGrouping", "closed"] }, { kind: "component", type: i6.DxoConnectorComponent, selector: "dxo-connector", inputs: ["color", "visible", "width", "opacity"] }, { kind: "component", type: i6.DxiSeriesComponent, selector: "dxi-series", inputs: ["aggregation", "argumentField", "axis", "barOverlapGroup", "barPadding", "barWidth", "border", "closeValueField", "color", "cornerRadius", "dashStyle", "highValueField", "hoverMode", "hoverStyle", "ignoreEmptyPoints", "innerColor", "label", "lowValueField", "maxLabelCount", "minBarSize", "name", "opacity", "openValueField", "pane", "point", "rangeValue1Field", "rangeValue2Field", "reduction", "selectionMode", "selectionStyle", "showInLegend", "sizeField", "stack", "tag", "tagField", "type", "valueErrorBar", "valueField", "visible", "width", "argumentType", "minSegmentSize", "smallValuesGrouping", "closed"] }, { kind: "component", type: i6.DxiValueAxisComponent, selector: "dxi-value-axis", inputs: ["aggregatedPointsPosition", "allowDecimals", "autoBreaksEnabled", "axisDivisionFactor", "breaks", "breakStyle", "categories", "color", "constantLines", "constantLineStyle", "customPosition", "discreteAxisDivisionMode", "endOnTick", "grid", "inverted", "label", "linearThreshold", "logarithmBase", "maxAutoBreakCount", "maxValueMargin", "minorGrid", "minorTick", "minorTickCount", "minorTickInterval", "minValueMargin", "minVisualRangeLength", "multipleAxesSpacing", "name", "offset", "opacity", "pane", "placeholderSize", "position", "showZero", "strips", "stripStyle", "synchronizedValue", "tick", "tickInterval", "title", "type", "valueMarginsEnabled", "valueType", "visible", "visualRange", "visualRangeUpdateMode", "wholeRange", "width"], outputs: ["visualRangeChange"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6$2.DxColorBoxComponent, selector: "dx-color-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyButtonText", "applyValueMode", "buttons", "cancelButtonText", "deferRendering", "disabled", "dropDownButtonTemplate", "dropDownOptions", "editAlphaChannel", "elementAttr", "fieldTemplate", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "keyStep", "label", "labelMode", "name", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showDropDownButton", "stylingMode", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onChange", "onClosed", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyButtonTextChange", "applyValueModeChange", "buttonsChange", "cancelButtonTextChange", "deferRenderingChange", "disabledChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "editAlphaChannelChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "keyStepChange", "labelChange", "labelModeChange", "nameChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showDropDownButtonChange", "stylingModeChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i10.DxPieChartComponent, selector: "dx-pie-chart", inputs: ["adaptiveLayout", "animation", "annotations", "centerTemplate", "commonAnnotationSettings", "commonSeriesSettings", "customizeAnnotation", "customizeLabel", "customizePoint", "dataSource", "diameter", "disabled", "elementAttr", "export", "innerRadius", "legend", "loadingIndicator", "margin", "minDiameter", "palette", "paletteExtensionMode", "pathModified", "pointSelectionMode", "redrawOnResize", "resolveLabelOverlapping", "rtlEnabled", "segmentsDirection", "series", "seriesTemplate", "size", "sizeGroup", "startAngle", "theme", "title", "tooltip", "type"], outputs: ["onDisposing", "onDone", "onDrawn", "onExported", "onExporting", "onFileSaving", "onIncidentOccurred", "onInitialized", "onLegendClick", "onOptionChanged", "onPointClick", "onPointHoverChanged", "onPointSelectionChanged", "onTooltipHidden", "onTooltipShown", "adaptiveLayoutChange", "animationChange", "annotationsChange", "centerTemplateChange", "commonAnnotationSettingsChange", "commonSeriesSettingsChange", "customizeAnnotationChange", "customizeLabelChange", "customizePointChange", "dataSourceChange", "diameterChange", "disabledChange", "elementAttrChange", "exportChange", "innerRadiusChange", "legendChange", "loadingIndicatorChange", "marginChange", "minDiameterChange", "paletteChange", "paletteExtensionModeChange", "pathModifiedChange", "pointSelectionModeChange", "redrawOnResizeChange", "resolveLabelOverlappingChange", "rtlEnabledChange", "segmentsDirectionChange", "seriesChange", "seriesTemplateChange", "sizeChange", "sizeGroupChange", "startAngleChange", "themeChange", "titleChange", "tooltipChange", "typeChange"] }, { kind: "component", type: i10$1.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8$1.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: UserAccessComponent, selector: "app-user-access", inputs: ["userOptionContainer"], outputs: ["userOptionContainerChange"] }, { kind: "component", type: LoaderComponent, selector: "app-loader" }, { kind: "pipe", type: i4$2.JsonPipe, name: "json" }] });
4800
4802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DashChartComponent, decorators: [{
4801
4803
  type: Component,
4802
- args: [{ selector: 'app-dash-chart', template: "<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' || chartType === 'pie'\">\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]=\"chartType\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\" palette=\"Soft Pastel\"\n [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 <ng-container *ngIf=\"chartType === 'doughnut'\">\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\" *ngIf=\"chartConfig.displayCenterLabel\">\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 </ng-container>\n\n </dx-pie-chart>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"chartType !== 'doughnut' && chartType !== 'funnel' && chartType !== 'bubble' && chartType !== 'pie'\">\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\" [palette]=\"chartConfig.palette\"\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 <!-- for others single access chart start -->\n <ng-container *ngIf=\"chartType !== 'stackedBar' && chartType !== 'line'\">\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}}\"\n axis=\"{{item.axis}}\" 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}}\"\n axis=\"{{item.axis}}\" name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n </ng-container>\n </ng-container>\n <!-- for others single access chart end -->\n\n <!-- for stackber start -->\n <ng-container *ngIf=\"chartType === 'stackedBar' || chartType === 'line'\">\n <ng-container *ngFor=\"let item of chartWithThreeDimentionDataSeries\">\n <dxi-series valueField=\"{{item}}\" name=\"{{item}}\" type=\"{{chartType}}\"></dxi-series>\n </ng-container>\n </ng-container>\n <!-- for stackber end -->\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n <div class=\"w-2/3 px-2 mt-2\">\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-7\">\n <dx-check-box [value]=\"chartConfig.labelDisplay\"\n [(ngModel)]=\"chartConfig.labelDisplay\" text=\"Label Display\"></dx-check-box>\n </div>\n\n </div>\n\n\n </div>\n\n\n\n\n </div>\n\n <div class=\"m-3 p-4 bg-white border border-gray-300 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\"\n *ngIf=\"isAdvanceContainer\">\n <h6\n class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center capitalize\">\n Advance Columns for {{chartType}} Chart\n <div class=\"ml-auto\">\n\n </div>\n </h6>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'stackedBar' || chartType === 'line' \">\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\" (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n </div>\n </div>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'bubble'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2 w-full\">\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 w-full\">\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 w-full\">\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=\"flex flex-row\" *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\n <div class=\" flex flex-row\">\n <!-- <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\"\n (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n\n\n </div> -->\n <div class=\"mt-7 mx-2\">\n <dx-check-box [(ngModel)]=\"chartConfig.displayCenterLabel\"\n text=\"Display Center Label\"></dx-check-box>\n </div>\n </div>\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' && chartType !== 'pie'\">\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\"\n *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n </div>\n </div>\n </ng-container>\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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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 Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n </div>\n\n\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n\n </div>\n </div>\n </ng-container>\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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\n </div>\n </div>\n </ng-container>\n\n\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>\n</div>" }]
4804
+ args: [{ selector: 'app-dash-chart', template: "<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' || chartType === 'pie'\">\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]=\"chartType\"\n [title]=\"{ text: chartConfig.caption, font: { size: 14 } }\" palette=\"Soft Pastel\"\n [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 <ng-container *ngIf=\"chartType === 'doughnut'\">\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 *ngIf=\"chartConfig.displayCenterLabel\">\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 </ng-container>\n\n </dx-pie-chart>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"chartType !== 'doughnut' && chartType !== 'funnel' && chartType !== 'bubble' && chartType !== 'pie'\">\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\" [palette]=\"chartConfig.palette\"\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 <!-- for others single access chart start -->\n <ng-container *ngIf=\"chartType !== 'stackedBar' && chartType !== 'line'\">\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}}\"\n axis=\"{{item.axis}}\" 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}}\"\n axis=\"{{item.axis}}\" name=\"{{item.name}}\">\n </dxi-series>\n </ng-container>\n </ng-container>\n </ng-container>\n <!-- for others single access chart end -->\n\n <!-- for stackber start -->\n <ng-container *ngIf=\"chartType === 'stackedBar' || chartType === 'line'\">\n <ng-container *ngFor=\"let item of chartWithThreeDimentionDataSeries\">\n <dxi-series valueField=\"{{item}}\" name=\"{{item}}\" type=\"{{chartType}}\"></dxi-series>\n </ng-container>\n </ng-container>\n <!-- for stackber end -->\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\">Sort By</div>\n <dx-tag-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.chartSortBy\"></dx-tag-box>\n </div>\n\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n <div class=\"w-2/3 px-2 mt-2\">\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-7\">\n <dx-check-box [value]=\"chartConfig.labelDisplay\"\n [(ngModel)]=\"chartConfig.labelDisplay\" text=\"Label Display\"></dx-check-box>\n </div>\n\n </div>\n\n\n </div>\n\n\n\n\n </div>\n\n <div class=\"m-3 p-4 bg-white border border-gray-300 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\"\n *ngIf=\"isAdvanceContainer\">\n <h6\n class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center capitalize\">\n Advance Columns for {{chartType}} Chart\n <div class=\"ml-auto\">\n\n </div>\n </h6>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'stackedBar' || chartType === 'line' \">\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\" (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n </div>\n </div>\n <div class=\"flex flex-row\" *ngIf=\"chartType === 'bubble'\">\n <div class=\" flex flex-row\">\n <div class=\"mr-2 w-full\">\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 w-full\">\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 w-full\">\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=\"flex flex-row\" *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\n <div class=\" flex flex-row\">\n <!-- <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Chart Group By </div>\n <dx-select-box [items]=\"configColume\"\n (onValueChanged)=\"getChartStackbarChart($event)\"\n [(ngModel)]=\"chartConfig.chartGroupBy\"></dx-select-box>\n\n\n </div> -->\n <div class=\"mt-7 mx-2\">\n <dx-check-box [(ngModel)]=\"chartConfig.displayCenterLabel\"\n text=\"Display Center Label\"></dx-check-box>\n </div>\n </div>\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' && chartType !== 'pie'\">\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\"\n *ngIf=\"chartType === 'doughnut' || chartType === 'pie'\">\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\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 === '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 <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 === 'permission',\n 'text-gray-500 dark:text-gray-400 border-transparent': activeTab !== 'permission'\n }\" (click)=\"setActiveTab('permission')\" type=\"button\" role=\"tab\">\n Manage Permissions\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-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\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\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.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)]=\"mainChartCourceObject.kpiConfig.commonConfig.dataField\"></dx-select-box>\n </div>\n <div class=\"px-1 mb-1 w-full\">\n <div class=\"text-md mb-2\"> Display Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.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)]=\"mainChartCourceObject.kpiConfig.keyToPass\"></dx-tag-box>\n </div>\n\n </div>\n </div>\n </div>\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 Format </div>\n <dx-select-box [items]=\"['daily','hourly','monthly']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.formate\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\"> Date Format </div>\n <dx-select-box [items]=\"['MM-DD','YYYY-MM-DD']\"\n [(ngModel)]=\"mainChartCourceObject.kpiConfig.displayDateFormat\"></dx-select-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2\">Sort By</div>\n <dx-tag-box [searchEnabled]=\"true\" [items]=\"configColume\"\n [(ngModel)]=\"chartConfig.chartSortBy\"></dx-tag-box>\n </div>\n <div class=\"w-1/3 px-2 mt-2\">\n <div class=\"text-md mb-2 mt-6\"> </div>\n <dx-check-box [(ngModel)]=\"mainChartCourceObject.kpiConfig.descendingOrder\"\n text=\"Descending Order\"></dx-check-box>\n </div>\n </div>\n\n\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 === '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\n [items]=\"['drilldown','sameViewDrilldown','optionalDrillDown','popup','navigateToPage']\"\n (onValueChanged)=\"getSelectedEventType($event)\"\n [(ngModel)]=\"viewProperties.clickEventOptions.eventType\"></dx-select-box>\n </div>\n </div>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'navigateToPage'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Pages</div>\n <dx-select-box [items]=\"allConfiguredPage\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedPage\"\n valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"w-full mx-2\">\n <div class=\"text-md mb-2\"> Associated Params</div>\n <dx-text-box\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedParams\"></dx-text-box>\n\n </div>\n </div>\n </ng-container>\n <ng-container\n *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\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"viewProperties.clickEventOptions.eventType === 'popup'\">\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"w-full\">\n <div class=\"text-md mb-2\"> Associated Views For Popup</div>\n <dx-tag-box [items]=\"allConfiguredViews\"\n [(ngModel)]=\"viewProperties.clickEventOptions.associatedViews\"\n valueExpr=\"viewId\" displayExpr=\"viewName\"\n [showSelectionControls]=\"true\"\n [searchEnabled]=\"true\"></dx-tag-box>\n </div>\n </div>\n </ng-container>\n <ng-container\n *ngIf=\"viewProperties.clickEventOptions.eventType === 'sameViewDrilldown'\">\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\"\n [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\"\n [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 <div *ngIf=\"activeTab === 'permission'\">\n <div class=\"h-full overflow-x-auto\">\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n </div>\n </div>\n </div>\n </ng-container>\n\n\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>\n</div>" }]
4803
4805
  }], ctorParameters: function () { return [{ type: CommonService }, { type: ApplicationContentService }, { type: i4$1.ToastrService }]; }, propDecorators: { getChartConfigOutPut: [{
4804
4806
  type: Output
4805
4807
  }], chartconfigData: [{
@@ -4875,7 +4877,6 @@ class DashTableComponent {
4875
4877
  this.configColume = Object.keys(value.data[0]);
4876
4878
  this.dataSourseForTable = value.data.slice(0, 10);
4877
4879
  this.selectedViewConfigs = value;
4878
- debugger;
4879
4880
  this.userOptionContainer = ((_a = value.selectedWidgetConfig) === null || _a === void 0 ? void 0 : _a.permissions) ? value.selectedWidgetConfig.permissions : [];
4880
4881
  this.selectedTableViewType = value.selectedViewType;
4881
4882
  if (value.selectedWidgetConfig) {
@@ -7060,7 +7061,6 @@ class CreateCompViewComponent {
7060
7061
  this.createViewConfig(data);
7061
7062
  }
7062
7063
  createViewConfig(data) {
7063
- debugger;
7064
7064
  this.creatCompViewObject['datasetId'] = data['datasetId'];
7065
7065
  this.creatCompViewObject['viewType'] = this.selectedViewType;
7066
7066
  this.isLoader = true;
@@ -8976,12 +8976,16 @@ class GammaAdvanceOperatorTableComponent {
8976
8976
  }
8977
8977
  }
8978
8978
  shouldShowColumn(field) {
8979
- let excludedFields = ['recordDate', 'record_date', 'eventDate', 'event_date'];
8979
+ let defaultFields = ['recordDate', 'record_date', 'eventDate', 'event_date'];
8980
+ let excludedFields = [];
8980
8981
  if (this.tableShortBy && this.tableShortBy.length !== 0) {
8981
8982
  this.tableShortBy.forEach(element => {
8982
8983
  excludedFields.push(element);
8983
8984
  });
8984
8985
  }
8986
+ else {
8987
+ excludedFields = defaultFields;
8988
+ }
8985
8989
  return !excludedFields.includes(field);
8986
8990
  }
8987
8991
  }
@@ -9253,6 +9257,26 @@ class GammaAdvanceChartComponent {
9253
9257
  .sort((a, b) => moment$1(b[value.kpiConfig.dataConfig['argumentField']]).diff(moment$1(a[value.kpiConfig.dataConfig['argumentField']])));
9254
9258
  }
9255
9259
  }
9260
+ const chartSortBy = value.kpiConfig.dataConfig['chartSortBy'];
9261
+ const isDesc = this.chartOrderBy === true;
9262
+ if (Array.isArray(chartSortBy) && chartSortBy.length !== 0) {
9263
+ value.kpiConfig.dataSource.sort((a, b) => {
9264
+ for (const key of chartSortBy) {
9265
+ if (a[key] == null && b[key] == null)
9266
+ continue;
9267
+ if (a[key] == null)
9268
+ return 1;
9269
+ if (b[key] == null)
9270
+ return -1;
9271
+ if (a[key] === b[key])
9272
+ continue;
9273
+ return isDesc
9274
+ ? b[key] - a[key]
9275
+ : a[key] - b[key];
9276
+ }
9277
+ return 0;
9278
+ });
9279
+ }
9256
9280
  this.getMonthlyChart(value.kpiConfig.dataSource, value.kpiConfig.dataConfig);
9257
9281
  this.isChartvisible == true;
9258
9282
  }
@@ -12911,10 +12935,10 @@ class PageConfigComponent {
12911
12935
  }
12912
12936
  }
12913
12937
  PageConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PageConfigComponent, deps: [{ token: CommonService }, { token: i2.ActivatedRoute }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: ApplicationContentService }, { token: i4$1.ToastrService }, { token: i2.Router }, { token: ApplicationDatssetsCall }], target: i0.ɵɵFactoryTarget.Component });
12914
- PageConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PageConfigComponent, selector: "app-dashbord-config", viewQueries: [{ propertyName: "dynamicComponentContainer", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, static: true }, { propertyName: "scrollView", first: true, predicate: DxScrollViewComponent, descendants: true }], ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-row h-[90vh] w-full\">\n <div class=\"w-3/4 border-r h-full flex flex-col px-2\">\n <!-- Scrollable content -->\n <div class=\"flex-grow overflow-y-auto\">\n <div class=\"flex flex-wrap my-3\" #dynamicContainer></div>\n </div>\n\n <!-- Fixed bottom section -->\n <div class=\"flex flex-row justify-center items-center h-16 m-2 border shrink-0\">\n <lib-common-header [pageTitle]=\"''\"></lib-common-header>\n <div class=\"{{commonService.btn_primary_md}} m-2\" (click)=\"addWidget()\">Add Layout</div>\n <div class=\"{{commonService.btnOthersPurple}} m-2 cursor-pointer\" (click)=\"getViewPage()\">View Page</div>\n </div>\n </div>\n <div class=\"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 <div class=\"text-md my-auto px-2\">Widget Title</div>\n <div><dx-text-box class=\"w-1/2\" [(ngModel)]=\"widgetTitle\"></dx-text-box></div>\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>", styles: ["::ng-deep #scrollview-demo{min-height:550px}::ng-deep #scrollview{height:auto;position:absolute;top:0;bottom:300px;padding:20px}::ng-deep #scrollview-content{white-space:pre-wrap}.scrollable-content{height:90vh;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i9$1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i10$1.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8$1.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingComponent$1, selector: "app-loading" }, { kind: "component", type: CreateCompViewComponent, selector: "app-create-comp-view", inputs: ["kpiTreeData", "isHeader", "selectedViewId"] }, { kind: "component", type: DashChartComponent, selector: "app-dash-chart", inputs: ["datasetmodal"], outputs: ["getChartConfigOutPut"] }, { kind: "component", type: DashTableComponent, selector: "app-dash-table", inputs: ["datasetmodal"], outputs: ["getTableConfigOutPut"] }, { kind: "component", type: CreateDatasetComponent, selector: "app-create-dataset", inputs: ["isHeader", "selectedDatasetId"] }, { kind: "component", type: CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
12938
+ PageConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PageConfigComponent, selector: "app-dashbord-config", viewQueries: [{ propertyName: "dynamicComponentContainer", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }, { propertyName: "dynamicContainer", first: true, predicate: ["dynamicContainer"], descendants: true, static: true }, { propertyName: "scrollView", first: true, predicate: DxScrollViewComponent, descendants: true }], ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-row h-[90vh] w-full\">\n <div class=\"w-3/4 border-r h-full flex flex-col px-2\">\n <!-- Scrollable content -->\n <div class=\"flex-grow overflow-y-auto\">\n <div class=\"flex flex-wrap my-3\" #dynamicContainer></div>\n </div>\n\n <!-- Fixed bottom section -->\n <div class=\"flex flex-row justify-center items-center h-16 m-2 border shrink-0\">\n <lib-common-header [pageTitle]=\"''\"></lib-common-header>\n <div class=\"{{commonService.btn_primary_md}} m-2\" (click)=\"addWidget()\">Add Layout</div>\n <div class=\"{{commonService.btnOthersPurple}} m-2 cursor-pointer\" (click)=\"getViewPage()\">View Page</div>\n </div>\n </div>\n <div class=\"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 <div class=\"text-md my-auto px-2 inline\">Widget Title</div>\n <dx-text-box class=\"w-full\" [(ngModel)]=\"widgetTitle\"></dx-text-box>\n </div>\n <div class=\"flex flex-row mb-2 justify-between\" *ngIf=\"!islayoutCreate\">\n <div class=\"text-md my-auto px-2\">Widget Name</div>\n <dx-text-box class=\"w-full\" [(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>", styles: ["::ng-deep #scrollview-demo{min-height:550px}::ng-deep #scrollview{height:auto;position:absolute;top:0;bottom:300px;padding:20px}::ng-deep #scrollview-content{white-space:pre-wrap}.scrollable-content{height:90vh;overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i9$1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "elementAttr", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "elementAttrChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i10$1.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8$1.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingComponent$1, selector: "app-loading" }, { kind: "component", type: CreateCompViewComponent, selector: "app-create-comp-view", inputs: ["kpiTreeData", "isHeader", "selectedViewId"] }, { kind: "component", type: DashChartComponent, selector: "app-dash-chart", inputs: ["datasetmodal"], outputs: ["getChartConfigOutPut"] }, { kind: "component", type: DashTableComponent, selector: "app-dash-table", inputs: ["datasetmodal"], outputs: ["getTableConfigOutPut"] }, { kind: "component", type: CreateDatasetComponent, selector: "app-create-dataset", inputs: ["isHeader", "selectedDatasetId"] }, { kind: "component", type: CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
12915
12939
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PageConfigComponent, decorators: [{
12916
12940
  type: Component,
12917
- args: [{ selector: 'app-dashbord-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-row h-[90vh] w-full\">\n <div class=\"w-3/4 border-r h-full flex flex-col px-2\">\n <!-- Scrollable content -->\n <div class=\"flex-grow overflow-y-auto\">\n <div class=\"flex flex-wrap my-3\" #dynamicContainer></div>\n </div>\n\n <!-- Fixed bottom section -->\n <div class=\"flex flex-row justify-center items-center h-16 m-2 border shrink-0\">\n <lib-common-header [pageTitle]=\"''\"></lib-common-header>\n <div class=\"{{commonService.btn_primary_md}} m-2\" (click)=\"addWidget()\">Add Layout</div>\n <div class=\"{{commonService.btnOthersPurple}} m-2 cursor-pointer\" (click)=\"getViewPage()\">View Page</div>\n </div>\n </div>\n <div class=\"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 <div class=\"text-md my-auto px-2\">Widget Title</div>\n <div><dx-text-box class=\"w-1/2\" [(ngModel)]=\"widgetTitle\"></dx-text-box></div>\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>", styles: ["::ng-deep #scrollview-demo{min-height:550px}::ng-deep #scrollview{height:auto;position:absolute;top:0;bottom:300px;padding:20px}::ng-deep #scrollview-content{white-space:pre-wrap}.scrollable-content{height:90vh;overflow-y:auto}\n"] }]
12941
+ args: [{ selector: 'app-dashbord-config', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n\n<div class=\"flex flex-row h-[90vh] w-full\">\n <div class=\"w-3/4 border-r h-full flex flex-col px-2\">\n <!-- Scrollable content -->\n <div class=\"flex-grow overflow-y-auto\">\n <div class=\"flex flex-wrap my-3\" #dynamicContainer></div>\n </div>\n\n <!-- Fixed bottom section -->\n <div class=\"flex flex-row justify-center items-center h-16 m-2 border shrink-0\">\n <lib-common-header [pageTitle]=\"''\"></lib-common-header>\n <div class=\"{{commonService.btn_primary_md}} m-2\" (click)=\"addWidget()\">Add Layout</div>\n <div class=\"{{commonService.btnOthersPurple}} m-2 cursor-pointer\" (click)=\"getViewPage()\">View Page</div>\n </div>\n </div>\n <div class=\"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 <div class=\"text-md my-auto px-2 inline\">Widget Title</div>\n <dx-text-box class=\"w-full\" [(ngModel)]=\"widgetTitle\"></dx-text-box>\n </div>\n <div class=\"flex flex-row mb-2 justify-between\" *ngIf=\"!islayoutCreate\">\n <div class=\"text-md my-auto px-2\">Widget Name</div>\n <dx-text-box class=\"w-full\" [(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>", styles: ["::ng-deep #scrollview-demo{min-height:550px}::ng-deep #scrollview{height:auto;position:absolute;top:0;bottom:300px;padding:20px}::ng-deep #scrollview-content{white-space:pre-wrap}.scrollable-content{height:90vh;overflow-y:auto}\n"] }]
12918
12942
  }], ctorParameters: function () { return [{ type: CommonService }, { type: i2.ActivatedRoute }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: ApplicationContentService }, { type: i4$1.ToastrService }, { type: i2.Router }, { type: ApplicationDatssetsCall }]; }, propDecorators: { dynamicComponentContainer: [{
12919
12943
  type: ViewChild,
12920
12944
  args: ['dynamicComponentContainer', { read: ViewContainerRef }]
@@ -13265,7 +13289,7 @@ class ApplicationCreateMenuComponent {
13265
13289
  let menuId = this.activatedRoute.snapshot.queryParams['menuId'];
13266
13290
  let contentType = this.activatedRoute.snapshot.queryParams['contentType'];
13267
13291
  if (contentType == "edit") {
13268
- this.service.getAppAppMenuConfigById(menuId).subscribe({
13292
+ this.service.getAppMenuConfigById(menuId).subscribe({
13269
13293
  next: (data) => {
13270
13294
  this.menuObject = data;
13271
13295
  this.selectedQueryParamStr = (data['queryParams'] && data['queryParams']['pageId']) ? data['queryParams']['pageId'] : "";
@@ -16059,7 +16083,7 @@ class CdrConfigService {
16059
16083
  }), catchError(this.handleError));
16060
16084
  }
16061
16085
  getKPIReferenceEndPoints() {
16062
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getKPIReferenceEndPoints';
16086
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getKPIReferenceEndPoints';
16063
16087
  return this.http
16064
16088
  .get(apiUrl, { withCredentials: true })
16065
16089
  .pipe(map((response) => {
@@ -16465,7 +16489,7 @@ class CreateKpIService {
16465
16489
  });
16466
16490
  }
16467
16491
  getKpiBrowserConfigById(id) {
16468
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;
16492
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getKpiBrowserConfigById?id=' + id;
16469
16493
  return this.http
16470
16494
  .get(apiUrl, { withCredentials: true })
16471
16495
  .pipe(map((response) => {
@@ -16473,7 +16497,7 @@ class CreateKpIService {
16473
16497
  }), catchError(this.handleError));
16474
16498
  }
16475
16499
  getAppPageConfigs() {
16476
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
16500
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
16477
16501
  return this.http
16478
16502
  .get(apiUrl, { withCredentials: true })
16479
16503
  .pipe(map((response) => {
@@ -16481,7 +16505,7 @@ class CreateKpIService {
16481
16505
  }), catchError(this.handleError));
16482
16506
  }
16483
16507
  getlistKpiBrowser() {
16484
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
16508
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
16485
16509
  return this.http
16486
16510
  .get(apiUrl, { withCredentials: true })
16487
16511
  .pipe(map((response) => {
@@ -16490,14 +16514,45 @@ class CreateKpIService {
16490
16514
  }
16491
16515
  configureKpiBrowserConfig(body) {
16492
16516
  return this.http
16493
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/configureKpiBrowserConfig', JSON.stringify(body), this.options)
16517
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/configureKpiBrowserConfig', JSON.stringify(body), this.options)
16494
16518
  .pipe(map((response) => {
16495
16519
  return response;
16496
16520
  }), catchError(this.handleError));
16497
16521
  }
16498
16522
  getCreateKpi(body) {
16499
16523
  return this.http
16500
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createKpi', JSON.stringify(body), this.options)
16524
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createKpi', JSON.stringify(body), this.options)
16525
+ .pipe(map((response) => {
16526
+ return response;
16527
+ }), catchError(this.handleError));
16528
+ }
16529
+ listKpiEntryConfigs() {
16530
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiEntryConfigs?caller=app';
16531
+ return this.http
16532
+ .get(apiUrl, { withCredentials: true })
16533
+ .pipe(map((response) => {
16534
+ return response;
16535
+ }), catchError(this.handleError));
16536
+ }
16537
+ createKpiEntryConfig(kpiObj) {
16538
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createKpiEntryConfig';
16539
+ return this.http
16540
+ .post(apiUrl, JSON.stringify(kpiObj), this.options)
16541
+ .pipe(map((response) => {
16542
+ return response;
16543
+ }), catchError(this.handleError));
16544
+ }
16545
+ updateKpiEntryConfig(kpiObj) {
16546
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/updateKpiEntryConfig';
16547
+ return this.http
16548
+ .post(apiUrl, JSON.stringify(kpiObj), this.options)
16549
+ .pipe(map((response) => {
16550
+ return response;
16551
+ }), catchError(this.handleError));
16552
+ }
16553
+ deleteKpiEntryConfig(kpiId) {
16554
+ return this.http
16555
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteKpiEntryConfig/' + kpiId, this.options)
16501
16556
  .pipe(map((response) => {
16502
16557
  return response;
16503
16558
  }), catchError(this.handleError));
@@ -16621,10 +16676,10 @@ class TreeViewBasicItemComponent {
16621
16676
  }
16622
16677
  }
16623
16678
  TreeViewBasicItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CreateKpIService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
16624
- TreeViewBasicItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: { item: "item", name: "name", internalRoute: "internalRoute", isEditIcon: "isEditIcon", treeId: "treeId" }, outputs: { editableKpiBasicData: "editableKpiBasicData" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16679
+ TreeViewBasicItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: { item: "item", name: "name", internalRoute: "internalRoute", isEditIcon: "isEditIcon", treeId: "treeId" }, outputs: { editableKpiBasicData: "editableKpiBasicData" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.visibility\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16625
16680
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, decorators: [{
16626
16681
  type: Component,
16627
- args: [{ selector: 'treeview-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>" }]
16682
+ args: [{ selector: 'treeview-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.visibility\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>" }]
16628
16683
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: CreateKpIService }, { type: i2.Router }]; }, propDecorators: { item: [{
16629
16684
  type: Input
16630
16685
  }], name: [{
@@ -17033,29 +17088,6 @@ const gammaAnimations = [
17033
17088
  zoomIn, zoomOut
17034
17089
  ];
17035
17090
 
17036
- class TreeViewDividerItemComponent {
17037
- constructor(_changeDetectorRef) {
17038
- this._changeDetectorRef = _changeDetectorRef;
17039
- this._unsubscribeAll = new Subject();
17040
- }
17041
- ngOnInit() {
17042
- }
17043
- ngOnDestroy() {
17044
- this._unsubscribeAll.next(null);
17045
- this._unsubscribeAll.complete();
17046
- }
17047
- }
17048
- TreeViewDividerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewDividerItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
17049
- TreeViewDividerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: { item: "item", name: "name" }, ngImport: i0, template: "<!-- Divider -->\n<div class=\"treeview-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17050
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewDividerItemComponent, decorators: [{
17051
- type: Component,
17052
- args: [{ selector: 'treeview-divider-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Divider -->\n<div class=\"treeview-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>" }]
17053
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
17054
- type: Input
17055
- }], name: [{
17056
- type: Input
17057
- }] } });
17058
-
17059
17091
  class TreeViewCollapsableItemComponent {
17060
17092
  constructor(_changeDetectorRef, _router, _treeviewService) {
17061
17093
  this._changeDetectorRef = _changeDetectorRef;
@@ -17074,17 +17106,7 @@ class TreeViewCollapsableItemComponent {
17074
17106
  };
17075
17107
  }
17076
17108
  ngOnInit() {
17077
- const activeItem = this.findActiveChild(this.item, this.treeId);
17078
- if (this.treeId == undefined || this.treeId == null) {
17079
- if (this.autoCollapse) {
17080
- this.collapse();
17081
- }
17082
- }
17083
- else {
17084
- if (activeItem) {
17085
- this.expand();
17086
- }
17087
- }
17109
+ console.log(this.item, 'items');
17088
17110
  }
17089
17111
  ngOnDestroy() {
17090
17112
  this._unsubscribeAll.next(null);
@@ -17181,10 +17203,10 @@ class TreeViewCollapsableItemComponent {
17181
17203
  }
17182
17204
  }
17183
17205
  TreeViewCollapsableItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewCollapsableItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.Router }, { token: TreeviewSharedService }], target: i0.ɵɵFactoryTarget.Component });
17184
- TreeViewCollapsableItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: { autoCollapse: "autoCollapse", item: "item", name: "name", treeId: "treeId", internalRoute: "internalRoute", isEditIcon: "isEditIcon" }, outputs: { editableKpiData: "editableKpiData" }, host: { properties: { "class": "this.classList" } }, ngImport: i0, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.isVisible\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.name}}\n </div>\n </div>\n </ng-container>\n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.nodes; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }, { kind: "component", type: TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: ["item", "name"] }], animations: gammaAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush });
17206
+ TreeViewCollapsableItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: { autoCollapse: "autoCollapse", item: "item", name: "name", treeId: "treeId", internalRoute: "internalRoute", isEditIcon: "isEditIcon" }, outputs: { editableKpiData: "editableKpiData" }, host: { properties: { "class": "this.classList" } }, ngImport: i0, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.visibility\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n \n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }], animations: gammaAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush });
17185
17207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewCollapsableItemComponent, decorators: [{
17186
17208
  type: Component,
17187
- args: [{ selector: 'treeview-collapsable-item', animations: gammaAnimations, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.isVisible\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.name}}\n </div>\n </div>\n </ng-container>\n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.nodes; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>" }]
17209
+ args: [{ selector: 'treeview-collapsable-item', animations: gammaAnimations, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.visibility\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n \n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>" }]
17188
17210
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2.Router }, { type: TreeviewSharedService }]; }, propDecorators: { autoCollapse: [{
17189
17211
  type: Input
17190
17212
  }], item: [{
@@ -17229,7 +17251,7 @@ class TreeviewComponent {
17229
17251
  this.editableKpiData = new EventEmitter();
17230
17252
  }
17231
17253
  ngOnInit() {
17232
- console.log(this.navigation);
17254
+ console.log(this.navigation, 'kpi tree');
17233
17255
  this._treeviewService.onCollapsableItemCollapsed
17234
17256
  .pipe(takeUntil(this._unsubscribeAll))
17235
17257
  .subscribe((item) => {
@@ -17242,7 +17264,6 @@ class TreeviewComponent {
17242
17264
  });
17243
17265
  if (this.navigation != undefined) {
17244
17266
  this._treeviewservice.getKpiList(this.navigation);
17245
- this.getKpiName(this.navigation, 'kpi');
17246
17267
  }
17247
17268
  }
17248
17269
  ngOnDestroy() {
@@ -17296,10 +17317,10 @@ class TreeviewComponent {
17296
17317
  }
17297
17318
  }
17298
17319
  TreeviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeviewComponent, deps: [{ token: i2.Router }, { token: i2$1.ScrollStrategyOptions }, { token: CreateKpIService }, { token: i0.ChangeDetectorRef }, { token: i4$2.ViewportScroller }, { token: TreeviewSharedService }], target: i0.ɵɵFactoryTarget.Component });
17299
- TreeviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeviewComponent, selector: "treeview", inputs: { autoCollapse: "autoCollapse", inner: "inner", navigation: "navigation", opened: "opened", isEditIcon: "isEditIcon", isSearchBox: "isSearchBox", transparentOverlay: "transparentOverlay", treeListForSearchBox: "treeListForSearchBox", name: "name", openTreeId: "openTreeId", routeKey: "routeKey" }, outputs: { editableKpiData: "editableKpiData" }, ngImport: i0, template: "<div class=\"treeview-wrapper\">\n <div class=\"mx-3 my-4\" *ngIf=\"isSearchBox\">\n <dx-select-box [items]=\"treeListForSearchBox\" [searchEnabled]=\"true\" valueExpr=\"kpiId\" displayExpr=\"name\"\n [placeholder]=\"'Search KPI'\" (onValueChanged)=\"selectedKpiNameFromSearchKpi($event)\">\n </dx-select-box>\n </div>\n\n <!-- Content -->\n <div class=\"treeview-content\" fuseScrollbar #navigationContent>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation;\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getBasicEditKpiData($event)\" [internalRoute]=\"routeKey\"\n [treeId]=\"openTreeId\">\n </treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getEditKpiData($event)\" [autoCollapse]=\"autoCollapse\" [treeId]=\"openTreeId\"\n [internalRoute]=\"routeKey\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\">\n </treeview-divider-item>\n </ng-container>\n\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n\n\n</div>", styles: [":root{--treeview-width: 480px}treeview{position:sticky;display:flex;flex-direction:column;flex:1 0 auto;top:0;width:var(--treeview-width);min-width:var(--treeview-width);max-width:var(--treeview-width);height:100%;min-height:67vh;max-height:67vh;z-index:200}treeview.treeview-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}treeview.treeview-animations-enabled .treeview-wrapper{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}treeview.treeview-mode-over{position:fixed;top:0;bottom:0}treeview.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-width) * -1)}treeview.treeview-position-left.treeview-mode-side.treeview-opened{margin-left:0}treeview.treeview-position-left.treeview-mode-over{left:0;transform:translate3d(-100%,0,0)}treeview.treeview-position-left.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-left .treeview-wrapper{left:0}treeview.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-width) * -1)}treeview.treeview-position-right.treeview-mode-side.treeview-opened{margin-right:0}treeview.treeview-position-right.treeview-mode-over{right:0;transform:translate3d(100%,0,0)}treeview.treeview-position-right.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-right .treeview-wrapper{right:0}treeview.treeview-inner{position:relative;width:auto;min-width:0;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none}treeview.treeview-inner .treeview-wrapper{position:relative;overflow:visible;height:auto}treeview.treeview-inner .treeview-wrapper .treeview-content{overflow:visible!important}treeview .treeview-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;width:36rem;overflow:hidden;z-index:10;background:inherit}treeview .treeview-wrapper .treeview-content{flex:1 1 auto;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}treeview .treeview-wrapper .treeview-content>treeview-divider-item{margin:24px 0}treeview .treeview-wrapper .treeview-content>treeview-group-item{margin-top:24px}treeview .treeview-aside-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;left:var(--treeview-width);width:var(--treeview-width);height:100%;z-index:5;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;transition-duration:.4s;transition-property:left,right;transition-timing-function:cubic-bezier(.25,.8,.25,1);background:inherit}treeview .treeview-aside-wrapper>treeview-aside-item{padding:24px 0}treeview .treeview-aside-wrapper>treeview-aside-item>.treeview-item-wrapper{display:none!important}treeview.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item,treeview treeview-divider-item,treeview treeview-group-item,treeview treeview-spacer-item{display:flex;flex-direction:column;flex:1 0 auto;-webkit-user-select:none;user-select:none}treeview treeview-aside-item .treeview-item-wrapper .treeview-item,treeview treeview-basic-item .treeview-item-wrapper .treeview-item,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview treeview-divider-item .treeview-item-wrapper .treeview-item,treeview treeview-group-item .treeview-item-wrapper .treeview-item,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item{position:relative;display:flex;align-items:center;justify-content:flex-start;padding:10px 16px;font-size:13px;font-weight:500;line-height:20px;text-decoration:none;border-radius:6px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-basic-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-divider-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-group-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item.treeview-item-disabled{cursor:default;opacity:.4}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:16px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{font-size:11px;line-height:1.5}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge{margin-left:auto}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;white-space:nowrap;height:20px}treeview treeview-aside-item>.treeview-item-wrapper,treeview treeview-basic-item>.treeview-item-wrapper,treeview treeview-collapsable-item>.treeview-item-wrapper,treeview treeview-group-item>.treeview-item-wrapper{margin:0 12px}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item{margin-bottom:4px}treeview treeview-aside-item .treeview-item,treeview treeview-basic-item .treeview-item,treeview treeview-collapsable-item .treeview-item{cursor:pointer}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-badge+.treeview-item-arrow{margin-left:8px}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-arrow{height:20px;line-height:20px;margin-left:auto;transition:transform .3s cubic-bezier(.25,.8,.25,1),color 375ms cubic-bezier(.25,.8,.25,1)}treeview treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{transform:rotate(90deg)}treeview treeview-collapsable-item>.treeview-item-children>*:first-child{margin-top:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child{padding-bottom:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child>.treeview-item-children>*:last-child{padding-bottom:0}treeview treeview-collapsable-item>.treeview-item-children .treeview-item{padding:10px 16px}treeview treeview-collapsable-item .treeview-item-children{overflow:hidden}treeview treeview-collapsable-item .treeview-item-children .treeview-item{padding-left:56px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item{padding-left:72px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:88px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:104px}treeview treeview-divider-item{margin:12px 0}treeview treeview-divider-item .treeview-item-wrapper{height:1px;box-shadow:0 1px}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-icon{display:none!important}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}treeview treeview-spacer-item{margin:6px 0}.treeview-overlay{position:absolute;inset:0;z-index:170;opacity:0;background-color:#0009}.treeview-overlay+.treeview-aside-overlay{background-color:transparent}.treeview-aside-overlay{position:absolute;inset:0;z-index:169;opacity:0;background-color:#0000004d}treeview-aside-item .treeview-item-wrapper .treeview-item,treeview-basic-item .treeview-item-wrapper .treeview-item,treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview-group-item .treeview-item-wrapper .treeview-item{color:currentColor}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon{@apply text-current opacity-60;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply text-current opacity-80;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{@apply text-current opacity-50;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-icon{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-title,treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-subtitle{@apply opacity-100;}treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply opacity-100 text-primary-600 dark:text-primary-400;}:root{--treeview-compact-width: 112px}treeview.treeview-appearance-compact{width:var(--treeview-compact-width);min-width:var(--treeview-compact-width);max-width:var(--treeview-compact-width)}treeview.treeview-appearance-compact.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-compact.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-compact.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-compact-width)}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{margin:4px 8px 0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{flex-direction:column;justify-content:center;padding:12px;border-radius:6px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{margin-top:8px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:500;text-align:center;line-height:16px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{display:none!important}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge{position:absolute;top:12px;left:64px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-collapsable-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-collapsable-item{display:none}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-group-item>.treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-compact .treeview-aside-wrapper{left:var(--treeview-compact-width)}:root{--treeview-width: 480px;--treeview-dense-width: 80px}treeview.treeview-appearance-dense:not(.treeview-mode-over){width:var(--treeview-dense-width);min-width:var(--treeview-dense-width);max-width:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-hover .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-dense-width) - 24px);min-width:calc(var(--treeview-dense-width) - 24px);max-width:calc(var(--treeview-dense-width) - 24px)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{transition:opacity .4s cubic-bezier(.25,.8,.25,1)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item:first-of-type{margin-top:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{padding:10px 16px}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;opacity:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-children{display:none}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-group-item>.treeview-item-wrapper .treeview-item:before{content:\"\";position:absolute;top:20px;width:23px;border-top-width:2px}treeview.treeview-appearance-dense .treeview-aside-wrapper{left:var(--treeview-dense-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper{width:var(--treeview-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-width) - 24px);min-width:calc(var(--treeview-width) - 24px);max-width:calc(var(--treeview-width) - 24px)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;animation:removeWhiteSpaceNoWrap 1ms linear .35s;animation-fill-mode:forwards}treeview.treeview-appearance-dense.treeview-hover .treeview-aside-wrapper{left:var(--treeview-width)}@keyframes removeWhiteSpaceNoWrap{0%{white-space:nowrap}99%{white-space:nowrap}to{white-space:normal}}:root{--treeview-thin-width: 80px}treeview.treeview-appearance-thin{width:var(--treeview-thin-width);min-width:var(--treeview-thin-width);max-width:var(--treeview-thin-width)}treeview.treeview-appearance-thin.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-thin.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-thin.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-thin-width)}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item{flex-direction:column;justify-content:center;height:64px;min-height:64px;max-height:64px;padding:0 16px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{display:flex;align-items:center;justify-content:center}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{justify-content:center;padding:12px;border-radius:4px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin:0}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-collapsable-item{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-thin .treeview-aside-wrapper{left:var(--treeview-thin-width)}\n"], dependencies: [{ kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }, { kind: "component", type: TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: ["item", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
17320
+ TreeviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeviewComponent, selector: "treeview", inputs: { autoCollapse: "autoCollapse", inner: "inner", navigation: "navigation", opened: "opened", isEditIcon: "isEditIcon", isSearchBox: "isSearchBox", transparentOverlay: "transparentOverlay", treeListForSearchBox: "treeListForSearchBox", name: "name", openTreeId: "openTreeId", routeKey: "routeKey" }, outputs: { editableKpiData: "editableKpiData" }, ngImport: i0, template: "<div class=\"treeview-wrapper\">\n <div class=\"mx-3 my-4\" *ngIf=\"isSearchBox\">\n <dx-select-box [items]=\"treeListForSearchBox\" [searchEnabled]=\"true\" valueExpr=\"kpiId\" displayExpr=\"name\"\n [placeholder]=\"'Search KPI'\" (onValueChanged)=\"selectedKpiNameFromSearchKpi($event)\">\n </dx-select-box>\n </div>\n\n <!-- Content -->\n <div class=\"treeview-content\" fuseScrollbar #navigationContent>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation;\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getBasicEditKpiData($event)\" [internalRoute]=\"routeKey\"\n [treeId]=\"openTreeId\">\n </treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getEditKpiData($event)\" [autoCollapse]=\"autoCollapse\" [treeId]=\"openTreeId\"\n [internalRoute]=\"routeKey\">\n </treeview-collapsable-item>\n </ng-container>\n\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n\n\n</div>", styles: [":root{--treeview-width: 480px}treeview{position:sticky;display:flex;flex-direction:column;flex:1 0 auto;top:0;width:var(--treeview-width);min-width:var(--treeview-width);max-width:var(--treeview-width);height:100%;min-height:67vh;max-height:67vh;z-index:200}treeview.treeview-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}treeview.treeview-animations-enabled .treeview-wrapper{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}treeview.treeview-mode-over{position:fixed;top:0;bottom:0}treeview.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-width) * -1)}treeview.treeview-position-left.treeview-mode-side.treeview-opened{margin-left:0}treeview.treeview-position-left.treeview-mode-over{left:0;transform:translate3d(-100%,0,0)}treeview.treeview-position-left.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-left .treeview-wrapper{left:0}treeview.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-width) * -1)}treeview.treeview-position-right.treeview-mode-side.treeview-opened{margin-right:0}treeview.treeview-position-right.treeview-mode-over{right:0;transform:translate3d(100%,0,0)}treeview.treeview-position-right.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-right .treeview-wrapper{right:0}treeview.treeview-inner{position:relative;width:auto;min-width:0;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none}treeview.treeview-inner .treeview-wrapper{position:relative;overflow:visible;height:auto}treeview.treeview-inner .treeview-wrapper .treeview-content{overflow:visible!important}treeview .treeview-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;width:36rem;overflow:hidden;z-index:10;background:inherit}treeview .treeview-wrapper .treeview-content{flex:1 1 auto;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}treeview .treeview-wrapper .treeview-content>treeview-divider-item{margin:24px 0}treeview .treeview-wrapper .treeview-content>treeview-group-item{margin-top:24px}treeview .treeview-aside-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;left:var(--treeview-width);width:var(--treeview-width);height:100%;z-index:5;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;transition-duration:.4s;transition-property:left,right;transition-timing-function:cubic-bezier(.25,.8,.25,1);background:inherit}treeview .treeview-aside-wrapper>treeview-aside-item{padding:24px 0}treeview .treeview-aside-wrapper>treeview-aside-item>.treeview-item-wrapper{display:none!important}treeview.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item,treeview treeview-divider-item,treeview treeview-group-item,treeview treeview-spacer-item{display:flex;flex-direction:column;flex:1 0 auto;-webkit-user-select:none;user-select:none}treeview treeview-aside-item .treeview-item-wrapper .treeview-item,treeview treeview-basic-item .treeview-item-wrapper .treeview-item,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview treeview-divider-item .treeview-item-wrapper .treeview-item,treeview treeview-group-item .treeview-item-wrapper .treeview-item,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item{position:relative;display:flex;align-items:center;justify-content:flex-start;padding:10px 16px;font-size:13px;font-weight:500;line-height:20px;text-decoration:none;border-radius:6px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-basic-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-divider-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-group-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item.treeview-item-disabled{cursor:default;opacity:.4}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:16px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{font-size:11px;line-height:1.5}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge{margin-left:auto}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;white-space:nowrap;height:20px}treeview treeview-aside-item>.treeview-item-wrapper,treeview treeview-basic-item>.treeview-item-wrapper,treeview treeview-collapsable-item>.treeview-item-wrapper,treeview treeview-group-item>.treeview-item-wrapper{margin:0 12px}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item{margin-bottom:4px}treeview treeview-aside-item .treeview-item,treeview treeview-basic-item .treeview-item,treeview treeview-collapsable-item .treeview-item{cursor:pointer}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-badge+.treeview-item-arrow{margin-left:8px}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-arrow{height:20px;line-height:20px;margin-left:auto;transition:transform .3s cubic-bezier(.25,.8,.25,1),color 375ms cubic-bezier(.25,.8,.25,1)}treeview treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{transform:rotate(90deg)}treeview treeview-collapsable-item>.treeview-item-children>*:first-child{margin-top:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child{padding-bottom:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child>.treeview-item-children>*:last-child{padding-bottom:0}treeview treeview-collapsable-item>.treeview-item-children .treeview-item{padding:10px 16px}treeview treeview-collapsable-item .treeview-item-children{overflow:hidden}treeview treeview-collapsable-item .treeview-item-children .treeview-item{padding-left:56px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item{padding-left:72px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:88px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:104px}treeview treeview-divider-item{margin:12px 0}treeview treeview-divider-item .treeview-item-wrapper{height:1px;box-shadow:0 1px}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-icon{display:none!important}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}treeview treeview-spacer-item{margin:6px 0}.treeview-overlay{position:absolute;inset:0;z-index:170;opacity:0;background-color:#0009}.treeview-overlay+.treeview-aside-overlay{background-color:transparent}.treeview-aside-overlay{position:absolute;inset:0;z-index:169;opacity:0;background-color:#0000004d}treeview-aside-item .treeview-item-wrapper .treeview-item,treeview-basic-item .treeview-item-wrapper .treeview-item,treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview-group-item .treeview-item-wrapper .treeview-item{color:currentColor}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon{@apply text-current opacity-60;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply text-current opacity-80;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{@apply text-current opacity-50;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-icon{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-title,treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-subtitle{@apply opacity-100;}treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply opacity-100 text-primary-600 dark:text-primary-400;}:root{--treeview-compact-width: 112px}treeview.treeview-appearance-compact{width:var(--treeview-compact-width);min-width:var(--treeview-compact-width);max-width:var(--treeview-compact-width)}treeview.treeview-appearance-compact.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-compact.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-compact.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-compact-width)}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{margin:4px 8px 0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{flex-direction:column;justify-content:center;padding:12px;border-radius:6px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{margin-top:8px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:500;text-align:center;line-height:16px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{display:none!important}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge{position:absolute;top:12px;left:64px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-collapsable-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-collapsable-item{display:none}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-group-item>.treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-compact .treeview-aside-wrapper{left:var(--treeview-compact-width)}:root{--treeview-width: 480px;--treeview-dense-width: 80px}treeview.treeview-appearance-dense:not(.treeview-mode-over){width:var(--treeview-dense-width);min-width:var(--treeview-dense-width);max-width:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-hover .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-dense-width) - 24px);min-width:calc(var(--treeview-dense-width) - 24px);max-width:calc(var(--treeview-dense-width) - 24px)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{transition:opacity .4s cubic-bezier(.25,.8,.25,1)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item:first-of-type{margin-top:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{padding:10px 16px}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;opacity:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-children{display:none}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-group-item>.treeview-item-wrapper .treeview-item:before{content:\"\";position:absolute;top:20px;width:23px;border-top-width:2px}treeview.treeview-appearance-dense .treeview-aside-wrapper{left:var(--treeview-dense-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper{width:var(--treeview-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-width) - 24px);min-width:calc(var(--treeview-width) - 24px);max-width:calc(var(--treeview-width) - 24px)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;animation:removeWhiteSpaceNoWrap 1ms linear .35s;animation-fill-mode:forwards}treeview.treeview-appearance-dense.treeview-hover .treeview-aside-wrapper{left:var(--treeview-width)}@keyframes removeWhiteSpaceNoWrap{0%{white-space:nowrap}99%{white-space:nowrap}to{white-space:normal}}:root{--treeview-thin-width: 80px}treeview.treeview-appearance-thin{width:var(--treeview-thin-width);min-width:var(--treeview-thin-width);max-width:var(--treeview-thin-width)}treeview.treeview-appearance-thin.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-thin.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-thin.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-thin-width)}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item{flex-direction:column;justify-content:center;height:64px;min-height:64px;max-height:64px;padding:0 16px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{display:flex;align-items:center;justify-content:center}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{justify-content:center;padding:12px;border-radius:4px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin:0}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-collapsable-item{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-thin .treeview-aside-wrapper{left:var(--treeview-thin-width)}\n"], dependencies: [{ kind: "directive", type: i4$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
17300
17321
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeviewComponent, decorators: [{
17301
17322
  type: Component,
17302
- args: [{ selector: 'treeview', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-wrapper\">\n <div class=\"mx-3 my-4\" *ngIf=\"isSearchBox\">\n <dx-select-box [items]=\"treeListForSearchBox\" [searchEnabled]=\"true\" valueExpr=\"kpiId\" displayExpr=\"name\"\n [placeholder]=\"'Search KPI'\" (onValueChanged)=\"selectedKpiNameFromSearchKpi($event)\">\n </dx-select-box>\n </div>\n\n <!-- Content -->\n <div class=\"treeview-content\" fuseScrollbar #navigationContent>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation;\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getBasicEditKpiData($event)\" [internalRoute]=\"routeKey\"\n [treeId]=\"openTreeId\">\n </treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getEditKpiData($event)\" [autoCollapse]=\"autoCollapse\" [treeId]=\"openTreeId\"\n [internalRoute]=\"routeKey\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\">\n </treeview-divider-item>\n </ng-container>\n\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n\n\n</div>", styles: [":root{--treeview-width: 480px}treeview{position:sticky;display:flex;flex-direction:column;flex:1 0 auto;top:0;width:var(--treeview-width);min-width:var(--treeview-width);max-width:var(--treeview-width);height:100%;min-height:67vh;max-height:67vh;z-index:200}treeview.treeview-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}treeview.treeview-animations-enabled .treeview-wrapper{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}treeview.treeview-mode-over{position:fixed;top:0;bottom:0}treeview.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-width) * -1)}treeview.treeview-position-left.treeview-mode-side.treeview-opened{margin-left:0}treeview.treeview-position-left.treeview-mode-over{left:0;transform:translate3d(-100%,0,0)}treeview.treeview-position-left.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-left .treeview-wrapper{left:0}treeview.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-width) * -1)}treeview.treeview-position-right.treeview-mode-side.treeview-opened{margin-right:0}treeview.treeview-position-right.treeview-mode-over{right:0;transform:translate3d(100%,0,0)}treeview.treeview-position-right.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-right .treeview-wrapper{right:0}treeview.treeview-inner{position:relative;width:auto;min-width:0;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none}treeview.treeview-inner .treeview-wrapper{position:relative;overflow:visible;height:auto}treeview.treeview-inner .treeview-wrapper .treeview-content{overflow:visible!important}treeview .treeview-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;width:36rem;overflow:hidden;z-index:10;background:inherit}treeview .treeview-wrapper .treeview-content{flex:1 1 auto;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}treeview .treeview-wrapper .treeview-content>treeview-divider-item{margin:24px 0}treeview .treeview-wrapper .treeview-content>treeview-group-item{margin-top:24px}treeview .treeview-aside-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;left:var(--treeview-width);width:var(--treeview-width);height:100%;z-index:5;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;transition-duration:.4s;transition-property:left,right;transition-timing-function:cubic-bezier(.25,.8,.25,1);background:inherit}treeview .treeview-aside-wrapper>treeview-aside-item{padding:24px 0}treeview .treeview-aside-wrapper>treeview-aside-item>.treeview-item-wrapper{display:none!important}treeview.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item,treeview treeview-divider-item,treeview treeview-group-item,treeview treeview-spacer-item{display:flex;flex-direction:column;flex:1 0 auto;-webkit-user-select:none;user-select:none}treeview treeview-aside-item .treeview-item-wrapper .treeview-item,treeview treeview-basic-item .treeview-item-wrapper .treeview-item,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview treeview-divider-item .treeview-item-wrapper .treeview-item,treeview treeview-group-item .treeview-item-wrapper .treeview-item,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item{position:relative;display:flex;align-items:center;justify-content:flex-start;padding:10px 16px;font-size:13px;font-weight:500;line-height:20px;text-decoration:none;border-radius:6px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-basic-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-divider-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-group-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item.treeview-item-disabled{cursor:default;opacity:.4}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:16px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{font-size:11px;line-height:1.5}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge{margin-left:auto}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;white-space:nowrap;height:20px}treeview treeview-aside-item>.treeview-item-wrapper,treeview treeview-basic-item>.treeview-item-wrapper,treeview treeview-collapsable-item>.treeview-item-wrapper,treeview treeview-group-item>.treeview-item-wrapper{margin:0 12px}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item{margin-bottom:4px}treeview treeview-aside-item .treeview-item,treeview treeview-basic-item .treeview-item,treeview treeview-collapsable-item .treeview-item{cursor:pointer}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-badge+.treeview-item-arrow{margin-left:8px}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-arrow{height:20px;line-height:20px;margin-left:auto;transition:transform .3s cubic-bezier(.25,.8,.25,1),color 375ms cubic-bezier(.25,.8,.25,1)}treeview treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{transform:rotate(90deg)}treeview treeview-collapsable-item>.treeview-item-children>*:first-child{margin-top:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child{padding-bottom:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child>.treeview-item-children>*:last-child{padding-bottom:0}treeview treeview-collapsable-item>.treeview-item-children .treeview-item{padding:10px 16px}treeview treeview-collapsable-item .treeview-item-children{overflow:hidden}treeview treeview-collapsable-item .treeview-item-children .treeview-item{padding-left:56px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item{padding-left:72px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:88px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:104px}treeview treeview-divider-item{margin:12px 0}treeview treeview-divider-item .treeview-item-wrapper{height:1px;box-shadow:0 1px}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-icon{display:none!important}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}treeview treeview-spacer-item{margin:6px 0}.treeview-overlay{position:absolute;inset:0;z-index:170;opacity:0;background-color:#0009}.treeview-overlay+.treeview-aside-overlay{background-color:transparent}.treeview-aside-overlay{position:absolute;inset:0;z-index:169;opacity:0;background-color:#0000004d}treeview-aside-item .treeview-item-wrapper .treeview-item,treeview-basic-item .treeview-item-wrapper .treeview-item,treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview-group-item .treeview-item-wrapper .treeview-item{color:currentColor}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon{@apply text-current opacity-60;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply text-current opacity-80;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{@apply text-current opacity-50;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-icon{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-title,treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-subtitle{@apply opacity-100;}treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply opacity-100 text-primary-600 dark:text-primary-400;}:root{--treeview-compact-width: 112px}treeview.treeview-appearance-compact{width:var(--treeview-compact-width);min-width:var(--treeview-compact-width);max-width:var(--treeview-compact-width)}treeview.treeview-appearance-compact.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-compact.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-compact.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-compact-width)}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{margin:4px 8px 0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{flex-direction:column;justify-content:center;padding:12px;border-radius:6px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{margin-top:8px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:500;text-align:center;line-height:16px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{display:none!important}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge{position:absolute;top:12px;left:64px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-collapsable-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-collapsable-item{display:none}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-group-item>.treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-compact .treeview-aside-wrapper{left:var(--treeview-compact-width)}:root{--treeview-width: 480px;--treeview-dense-width: 80px}treeview.treeview-appearance-dense:not(.treeview-mode-over){width:var(--treeview-dense-width);min-width:var(--treeview-dense-width);max-width:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-hover .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-dense-width) - 24px);min-width:calc(var(--treeview-dense-width) - 24px);max-width:calc(var(--treeview-dense-width) - 24px)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{transition:opacity .4s cubic-bezier(.25,.8,.25,1)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item:first-of-type{margin-top:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{padding:10px 16px}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;opacity:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-children{display:none}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-group-item>.treeview-item-wrapper .treeview-item:before{content:\"\";position:absolute;top:20px;width:23px;border-top-width:2px}treeview.treeview-appearance-dense .treeview-aside-wrapper{left:var(--treeview-dense-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper{width:var(--treeview-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-width) - 24px);min-width:calc(var(--treeview-width) - 24px);max-width:calc(var(--treeview-width) - 24px)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;animation:removeWhiteSpaceNoWrap 1ms linear .35s;animation-fill-mode:forwards}treeview.treeview-appearance-dense.treeview-hover .treeview-aside-wrapper{left:var(--treeview-width)}@keyframes removeWhiteSpaceNoWrap{0%{white-space:nowrap}99%{white-space:nowrap}to{white-space:normal}}:root{--treeview-thin-width: 80px}treeview.treeview-appearance-thin{width:var(--treeview-thin-width);min-width:var(--treeview-thin-width);max-width:var(--treeview-thin-width)}treeview.treeview-appearance-thin.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-thin.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-thin.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-thin-width)}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item{flex-direction:column;justify-content:center;height:64px;min-height:64px;max-height:64px;padding:0 16px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{display:flex;align-items:center;justify-content:center}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{justify-content:center;padding:12px;border-radius:4px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin:0}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-collapsable-item{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-thin .treeview-aside-wrapper{left:var(--treeview-thin-width)}\n"] }]
17323
+ args: [{ selector: 'treeview', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-wrapper\">\n <div class=\"mx-3 my-4\" *ngIf=\"isSearchBox\">\n <dx-select-box [items]=\"treeListForSearchBox\" [searchEnabled]=\"true\" valueExpr=\"kpiId\" displayExpr=\"name\"\n [placeholder]=\"'Search KPI'\" (onValueChanged)=\"selectedKpiNameFromSearchKpi($event)\">\n </dx-select-box>\n </div>\n\n <!-- Content -->\n <div class=\"treeview-content\" fuseScrollbar #navigationContent>\n\n <!-- Items -->\n <ng-container *ngFor=\"let item of navigation;\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getBasicEditKpiData($event)\" [internalRoute]=\"routeKey\"\n [treeId]=\"openTreeId\">\n </treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getEditKpiData($event)\" [autoCollapse]=\"autoCollapse\" [treeId]=\"openTreeId\"\n [internalRoute]=\"routeKey\">\n </treeview-collapsable-item>\n </ng-container>\n\n\n </ng-container>\n\n </ng-container>\n\n </div>\n\n\n\n</div>", styles: [":root{--treeview-width: 480px}treeview{position:sticky;display:flex;flex-direction:column;flex:1 0 auto;top:0;width:var(--treeview-width);min-width:var(--treeview-width);max-width:var(--treeview-width);height:100%;min-height:67vh;max-height:67vh;z-index:200}treeview.treeview-animations-enabled{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:visibility,margin-left,margin-right,transform,width,max-width,min-width}treeview.treeview-animations-enabled .treeview-wrapper{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:width,max-width,min-width}treeview.treeview-mode-over{position:fixed;top:0;bottom:0}treeview.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-width) * -1)}treeview.treeview-position-left.treeview-mode-side.treeview-opened{margin-left:0}treeview.treeview-position-left.treeview-mode-over{left:0;transform:translate3d(-100%,0,0)}treeview.treeview-position-left.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-left .treeview-wrapper{left:0}treeview.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-width) * -1)}treeview.treeview-position-right.treeview-mode-side.treeview-opened{margin-right:0}treeview.treeview-position-right.treeview-mode-over{right:0;transform:translate3d(100%,0,0)}treeview.treeview-position-right.treeview-mode-over.treeview-opened{transform:translateZ(0)}treeview.treeview-position-right .treeview-wrapper{right:0}treeview.treeview-inner{position:relative;width:auto;min-width:0;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none}treeview.treeview-inner .treeview-wrapper{position:relative;overflow:visible;height:auto}treeview.treeview-inner .treeview-wrapper .treeview-content{overflow:visible!important}treeview .treeview-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;width:36rem;overflow:hidden;z-index:10;background:inherit}treeview .treeview-wrapper .treeview-content{flex:1 1 auto;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}treeview .treeview-wrapper .treeview-content>treeview-divider-item{margin:24px 0}treeview .treeview-wrapper .treeview-content>treeview-group-item{margin-top:24px}treeview .treeview-aside-wrapper{position:absolute;display:flex;flex:1 1 auto;flex-direction:column;top:0;bottom:0;left:var(--treeview-width);width:var(--treeview-width);height:100%;z-index:5;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;transition-duration:.4s;transition-property:left,right;transition-timing-function:cubic-bezier(.25,.8,.25,1);background:inherit}treeview .treeview-aside-wrapper>treeview-aside-item{padding:24px 0}treeview .treeview-aside-wrapper>treeview-aside-item>.treeview-item-wrapper{display:none!important}treeview.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item,treeview treeview-divider-item,treeview treeview-group-item,treeview treeview-spacer-item{display:flex;flex-direction:column;flex:1 0 auto;-webkit-user-select:none;user-select:none}treeview treeview-aside-item .treeview-item-wrapper .treeview-item,treeview treeview-basic-item .treeview-item-wrapper .treeview-item,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview treeview-divider-item .treeview-item-wrapper .treeview-item,treeview treeview-group-item .treeview-item-wrapper .treeview-item,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item{position:relative;display:flex;align-items:center;justify-content:flex-start;padding:10px 16px;font-size:13px;font-weight:500;line-height:20px;text-decoration:none;border-radius:6px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-basic-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-divider-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-group-item .treeview-item-wrapper .treeview-item.treeview-item-disabled,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item.treeview-item-disabled{cursor:default;opacity:.4}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:16px}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{font-size:11px;line-height:1.5}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge{margin-left:auto}treeview treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-divider-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content,treeview treeview-spacer-item .treeview-item-wrapper .treeview-item .treeview-item-badge .treeview-item-badge-content{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;white-space:nowrap;height:20px}treeview treeview-aside-item>.treeview-item-wrapper,treeview treeview-basic-item>.treeview-item-wrapper,treeview treeview-collapsable-item>.treeview-item-wrapper,treeview treeview-group-item>.treeview-item-wrapper{margin:0 12px}treeview treeview-aside-item,treeview treeview-basic-item,treeview treeview-collapsable-item{margin-bottom:4px}treeview treeview-aside-item .treeview-item,treeview treeview-basic-item .treeview-item,treeview treeview-collapsable-item .treeview-item{cursor:pointer}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-badge+.treeview-item-arrow{margin-left:8px}treeview treeview-collapsable-item>.treeview-item-wrapper .treeview-item .treeview-item-arrow{height:20px;line-height:20px;margin-left:auto;transition:transform .3s cubic-bezier(.25,.8,.25,1),color 375ms cubic-bezier(.25,.8,.25,1)}treeview treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{transform:rotate(90deg)}treeview treeview-collapsable-item>.treeview-item-children>*:first-child{margin-top:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child{padding-bottom:6px}treeview treeview-collapsable-item>.treeview-item-children>*:last-child>.treeview-item-children>*:last-child{padding-bottom:0}treeview treeview-collapsable-item>.treeview-item-children .treeview-item{padding:10px 16px}treeview treeview-collapsable-item .treeview-item-children{overflow:hidden}treeview treeview-collapsable-item .treeview-item-children .treeview-item{padding-left:56px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item{padding-left:72px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:88px}treeview treeview-collapsable-item .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item-children .treeview-item{padding-left:104px}treeview treeview-divider-item{margin:12px 0}treeview treeview-divider-item .treeview-item-wrapper{height:1px;box-shadow:0 1px}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-badge,treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-icon{display:none!important}treeview treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}treeview treeview-spacer-item{margin:6px 0}.treeview-overlay{position:absolute;inset:0;z-index:170;opacity:0;background-color:#0009}.treeview-overlay+.treeview-aside-overlay{background-color:transparent}.treeview-aside-overlay{position:absolute;inset:0;z-index:169;opacity:0;background-color:#0000004d}treeview-aside-item .treeview-item-wrapper .treeview-item,treeview-basic-item .treeview-item-wrapper .treeview-item,treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview-group-item .treeview-item-wrapper .treeview-item{color:currentColor}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-icon{@apply text-current opacity-60;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply text-current opacity-80;}treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{@apply text-current opacity-50;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-title{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-disabled).treeview-item-active-forced .treeview-item-subtitle{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover{@apply bg-gray-800 bg-opacity-5 dark:bg-white dark:bg-opacity-12;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-icon{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-title,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-arrow{@apply opacity-100;}treeview-aside-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-basic-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle,treeview-collapsable-item>.treeview-item-wrapper .treeview-item:not(.treeview-item-active-forced):not(.treeview-item-active):not(.treeview-item-disabled):hover .treeview-item-subtitle{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-icon{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-title,treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-arrow{@apply opacity-100;}treeview-collapsable-item.treeview-item-expanded>.treeview-item-wrapper .treeview-item .treeview-item-subtitle{@apply opacity-100;}treeview-group-item>.treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{@apply opacity-100 text-primary-600 dark:text-primary-400;}:root{--treeview-compact-width: 112px}treeview.treeview-appearance-compact{width:var(--treeview-compact-width);min-width:var(--treeview-compact-width);max-width:var(--treeview-compact-width)}treeview.treeview-appearance-compact.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-compact.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-compact-width) * -1)}treeview.treeview-appearance-compact.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-compact.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-compact-width)}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{margin:4px 8px 0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{flex-direction:column;justify-content:center;padding:12px;border-radius:6px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin-right:0}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{margin-top:8px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-title{font-size:12px;font-weight:500;text-align:center;line-height:16px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper .treeview-item-subtitle{display:none!important}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge{position:absolute;top:12px;left:64px}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-collapsable-item,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-collapsable-item{display:none}treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-aside-item>treeview-group-item>.treeview-item-wrapper,treeview.treeview-appearance-compact .treeview-wrapper .treeview-content>treeview-basic-item>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-compact .treeview-aside-wrapper{left:var(--treeview-compact-width)}:root{--treeview-width: 480px;--treeview-dense-width: 80px}treeview.treeview-appearance-dense:not(.treeview-mode-over){width:var(--treeview-dense-width);min-width:var(--treeview-dense-width);max-width:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-dense-width) * -1)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-dense-width)}treeview.treeview-appearance-dense:not(.treeview-mode-over).treeview-position-right.treeview-hover .treeview-aside-wrapper{left:auto;right:var(--treeview-width)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-dense-width) - 24px);min-width:calc(var(--treeview-dense-width) - 24px);max-width:calc(var(--treeview-dense-width) - 24px)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{transition:opacity .4s cubic-bezier(.25,.8,.25,1)}treeview.treeview-appearance-dense .treeview-wrapper .treeview-content treeview-group-item:first-of-type{margin-top:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{padding:10px 16px}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;opacity:0}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-collapsable-item .treeview-item-children{display:none}treeview.treeview-appearance-dense:not(.treeview-hover):not(.treeview-mode-over) .treeview-wrapper .treeview-content treeview-group-item>.treeview-item-wrapper .treeview-item:before{content:\"\";position:absolute;top:20px;width:23px;border-top-width:2px}treeview.treeview-appearance-dense .treeview-aside-wrapper{left:var(--treeview-dense-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper{width:var(--treeview-width)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item{width:calc(var(--treeview-width) - 24px);min-width:calc(var(--treeview-width) - 24px);max-width:calc(var(--treeview-width) - 24px)}treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-badge,treeview.treeview-appearance-dense.treeview-hover .treeview-wrapper .treeview-content .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{white-space:nowrap;animation:removeWhiteSpaceNoWrap 1ms linear .35s;animation-fill-mode:forwards}treeview.treeview-appearance-dense.treeview-hover .treeview-aside-wrapper{left:var(--treeview-width)}@keyframes removeWhiteSpaceNoWrap{0%{white-space:nowrap}99%{white-space:nowrap}to{white-space:normal}}:root{--treeview-thin-width: 80px}treeview.treeview-appearance-thin{width:var(--treeview-thin-width);min-width:var(--treeview-thin-width);max-width:var(--treeview-thin-width)}treeview.treeview-appearance-thin.treeview-position-left.treeview-mode-side{margin-left:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-left.treeview-opened{margin-left:0}treeview.treeview-appearance-thin.treeview-position-right.treeview-mode-side{margin-right:calc(var(--treeview-thin-width) * -1)}treeview.treeview-appearance-thin.treeview-position-right.treeview-opened{margin-right:0}treeview.treeview-appearance-thin.treeview-position-right .treeview-aside-wrapper{left:auto;right:var(--treeview-thin-width)}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item{flex-direction:column;justify-content:center;height:64px;min-height:64px;max-height:64px;padding:0 16px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper{display:flex;align-items:center;justify-content:center}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item{justify-content:center;padding:12px;border-radius:4px}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-icon,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-icon{margin:0}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-aside-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-arrow,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-badge-content,treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-basic-item .treeview-item-wrapper .treeview-item .treeview-item-title-wrapper{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-collapsable-item{display:none}treeview.treeview-appearance-thin .treeview-wrapper .treeview-content>treeview-group-item>.treeview-item-wrapper{display:none}treeview.treeview-appearance-thin .treeview-aside-wrapper{left:var(--treeview-thin-width)}\n"] }]
17303
17324
  }], ctorParameters: function () { return [{ type: i2.Router }, { type: i2$1.ScrollStrategyOptions }, { type: CreateKpIService }, { type: i0.ChangeDetectorRef }, { type: i4$2.ViewportScroller }, { type: TreeviewSharedService }]; }, propDecorators: { autoCollapse: [{
17304
17325
  type: Input
17305
17326
  }], inner: [{
@@ -17349,6 +17370,9 @@ class CreateKpiTreeComponent {
17349
17370
  this.kpi_external = false;
17350
17371
  this.isComponentUpdata = false;
17351
17372
  this.userOptionContainer = [];
17373
+ this.selected_aliases = [];
17374
+ this.isKpiTreePrepared = false;
17375
+ this.kpiConfigDataSource = [];
17352
17376
  }
17353
17377
  ngOnInit() {
17354
17378
  this.getAllKpiData();
@@ -17364,10 +17388,12 @@ class CreateKpiTreeComponent {
17364
17388
  });
17365
17389
  }
17366
17390
  getAllKpiData() {
17367
- this.loadingModal = false;
17368
17391
  this.keiParentDataSource = [];
17369
- this.service.getlistKpiBrowser().subscribe((data) => {
17370
- this.kpiData = data;
17392
+ this.service.listKpiEntryConfigs().subscribe((data) => {
17393
+ const userName = "admin";
17394
+ this.kpiConfigDataSource = data;
17395
+ this.kpiData = this.buildMenuTree(userName, data);
17396
+ this.loadingModal = false;
17371
17397
  this.prepareParentDataSource(data);
17372
17398
  }, err => {
17373
17399
  this.loadingModal = false;
@@ -17376,104 +17402,95 @@ class CreateKpiTreeComponent {
17376
17402
  }
17377
17403
  prepareParentDataSource(data) {
17378
17404
  data.forEach((result) => {
17379
- if (result.tag_type == 'parent') {
17380
- let node = {
17381
- "name": result.name,
17382
- "tid": result.tid
17383
- };
17384
- this.keiParentDataSource.push(node);
17385
- this.prepareParentDataSource(result.nodes);
17405
+ if (result.tagType == 'parent') {
17406
+ this.keiParentDataSource.push(result);
17386
17407
  }
17387
17408
  });
17388
17409
  }
17389
- makeNewKpi() {
17390
- if (this.selected_kpi_tid !== undefined && this.selected_kpi_tid.length > 0) {
17391
- this.getHeistId(this.kpiData, this.selected_kpi_tid);
17392
- this.createNewKpiWithTid();
17393
- }
17394
- else {
17395
- this.heistValue = (this.kpiData.length != 0) ? this.getHighestTid(this.kpiData) : 0;
17396
- let value = parseInt(this.heistValue) + 1;
17397
- let obj = {
17398
- "name": this.select_kpi_name,
17399
- "tid": value.toString(),
17400
- "isBookmarked": false,
17401
- "isAccessible": this.kpi_external,
17402
- "lastAccessTime": "",
17403
- "tag_type": this.select_tag_type,
17404
- "id": this.selected_id,
17405
- "pageId": this.selected_page_id,
17406
- "desc": this.selected_desc,
17407
- "isVisible": this.kpi_visibility,
17408
- "nodes": [],
17409
- "config": {}
17410
- };
17411
- this.kpiData.push(obj);
17412
- if (this.select_tag_type == 'parent') {
17413
- let obj = {
17414
- "name": this.select_kpi_name,
17415
- "tid": value.toString(),
17416
- };
17417
- this.keiParentDataSource.push(obj);
17418
- }
17419
- if (this.select_tag_type == 'child') {
17420
- let obj = {
17421
- "name": this.select_kpi_name,
17422
- "id": this.selected_id,
17423
- "pageId": this.selected_page_id,
17424
- "searchFilter": false,
17425
- "isSrvTypeOperator": false,
17426
- "operationLevels": [],
17427
- "fixOperationLevles": [],
17428
- "api_config": []
17429
- };
17430
- this.service.configureKpiBrowserConfig(obj).subscribe(data => {
17431
- console.log("kpi browser config created");
17432
- });
17433
- }
17434
- this.submitNewKpi();
17435
- }
17410
+ makeNewKpiWithUserEntity() {
17411
+ let kpiObj = {
17412
+ "kpiId": this.selected_id,
17413
+ "kpiName": this.select_kpi_name,
17414
+ "aliases": this.selected_aliases,
17415
+ "pageId": this.selected_page_id,
17416
+ "description": this.selected_desc,
17417
+ "kpiInfo": "",
17418
+ "tagType": this.select_tag_type,
17419
+ "active": true,
17420
+ "visibility": this.kpi_visibility,
17421
+ "externalKpi": this.kpi_external,
17422
+ "target": "",
17423
+ "icon": "",
17424
+ "url": "",
17425
+ "kpiType": this.select_tag_type == "parent" ? "collapsable" : "basic",
17426
+ "parentTid": this.selected_kpi_tid,
17427
+ "childTid": this.selected_kpi_child_tid,
17428
+ "permissions": this.userOptionContainer,
17429
+ };
17430
+ this.service.createKpiEntryConfig(kpiObj).subscribe(data => {
17431
+ this.toastr.success('KPI Created Successfully');
17432
+ this.getAllKpiData();
17433
+ this.getReseteKpi();
17434
+ }, err => {
17435
+ this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'KPI Config');
17436
+ });
17437
+ console.log("KPI with User Entity Obj:", kpiObj);
17436
17438
  }
17437
- createNewKpiWithTid() {
17438
- let auto_tid = this.autoIncrement(this.selected_kpi_tid, this.heistValue);
17439
- let obj = {
17440
- "name": this.select_kpi_name,
17441
- "tid": auto_tid,
17442
- "isBookmarked": false,
17443
- "isAccessible": this.kpi_external,
17444
- "lastAccessTime": "",
17445
- "tag_type": this.select_tag_type,
17446
- "id": this.selected_id,
17439
+ getEditableKpi(kpi) {
17440
+ const data = this.kpiConfigDataSource.find((item) => item.kpiId === kpi.id);
17441
+ const tidKey = data.tagType === 'child' && data.childTid.length > 3 ? 'childTid' : 'parentTid';
17442
+ const parentName = this.keiParentDataSource.find((item) => item[tidKey] == data["parentTid"]);
17443
+ this.parante_kpi_name = parentName ? parentName['kpiId'] : null;
17444
+ this.selected_id = data["kpiId"];
17445
+ this.select_kpi_name = data["kpiName"];
17446
+ this.selected_aliases = data["aliases"];
17447
+ this.selected_page_id = data["pageId"];
17448
+ this.selected_desc = data["description"];
17449
+ this.select_tag_type = data["tagType"];
17450
+ this.kpi_visibility = data["visibility"];
17451
+ this.kpi_external = data["externalKpi"];
17452
+ this.selected_kpi_tid = data["parentTid"];
17453
+ this.selected_kpi_child_tid = data["childTid"];
17454
+ this.userOptionContainer = (data["permissions"] && data["permissions"].length > 0) ? data["permissions"] : [];
17455
+ this.isEditKpiAdded = true;
17456
+ }
17457
+ getUpdateKpi() {
17458
+ let kpiObj = {
17459
+ "kpiId": this.selected_id,
17460
+ "kpiName": this.select_kpi_name,
17461
+ "aliases": this.selected_aliases,
17447
17462
  "pageId": this.selected_page_id,
17448
- "desc": this.selected_desc,
17449
- "isVisible": this.kpi_visibility,
17450
- "nodes": [],
17451
- "config": {}
17463
+ "description": this.selected_desc,
17464
+ "kpiInfo": "",
17465
+ "tagType": this.select_tag_type,
17466
+ "active": true,
17467
+ "visibility": this.kpi_visibility,
17468
+ "externalKpi": this.kpi_external,
17469
+ "target": "",
17470
+ "icon": "",
17471
+ "url": "",
17472
+ "kpiType": this.select_tag_type == "parent" ? "collapsable" : "basic",
17473
+ "parentTid": this.selected_kpi_tid,
17474
+ "childTid": this.selected_kpi_child_tid,
17475
+ "permissions": this.userOptionContainer,
17452
17476
  };
17453
- if (this.select_tag_type == 'parent') {
17454
- let obj = {
17455
- "name": this.select_kpi_name,
17456
- "tid": auto_tid
17457
- };
17458
- this.keiParentDataSource.push(obj);
17459
- }
17460
- if (this.select_tag_type == 'child') {
17461
- let obj = {
17462
- "name": this.select_kpi_name,
17463
- "id": this.selected_id,
17464
- "pageId": this.selected_page_id,
17465
- "searchFilter": false,
17466
- "isSrvTypeOperator": false,
17467
- "operationLevels": [],
17468
- "fixOperationLevles": [],
17469
- "api_config": []
17470
- };
17471
- this.service.configureKpiBrowserConfig(obj).subscribe(data => {
17472
- console.log("kpi browser config created");
17473
- });
17477
+ this.service.updateKpiEntryConfig(kpiObj).subscribe(data => {
17478
+ this.toastr.success('KPI Updated Successfully');
17479
+ this.getAllKpiData();
17480
+ this.getReseteKpi();
17481
+ this.isEditKpiAdded = false;
17482
+ }, err => {
17483
+ this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'KPI Config');
17484
+ });
17485
+ console.log("KPI with User Entity Obj:", kpiObj);
17486
+ }
17487
+ onCustomDimentionCreating(args) {
17488
+ const newValue = args.text;
17489
+ args.customItem = newValue;
17490
+ const isItemInDataSource = this.selected_aliases.some((item) => item === newValue);
17491
+ if (!isItemInDataSource) {
17492
+ this.selected_aliases.unshift(newValue);
17474
17493
  }
17475
- this.setKpibyTid(this.kpiData, this.selected_kpi_tid, obj);
17476
- this.submitNewKpi();
17477
17494
  }
17478
17495
  getReseteKpi() {
17479
17496
  this.select_kpi_name = '';
@@ -17491,74 +17508,23 @@ class CreateKpiTreeComponent {
17491
17508
  this.editable_desc = '';
17492
17509
  this.editable_info = '';
17493
17510
  this.parante_kpi_name = '';
17511
+ this.selected_kpi_child_tid = '';
17512
+ this.selected_aliases = [];
17494
17513
  this.kpi_external = false;
17495
17514
  this.kpi_visibility = false;
17496
17515
  this.isComponentUpdata = false;
17497
- }
17498
- getDeletKpi(tid) {
17499
- console.log(this.selected_p_kpi);
17516
+ this.isEditKpiAdded = false;
17500
17517
  }
17501
17518
  addTagtypeValue(e) {
17502
17519
  this.select_tag_type = e.value;
17503
17520
  }
17504
17521
  getKpiItemValue(e) {
17505
- const kpi_data = this.keiParentDataSource.find((item) => item.tid === e.value);
17506
- this.selected_kpi_tid = kpi_data.tid;
17507
- }
17508
- autoIncrement(string1, string2) {
17509
- if (string2 === null) {
17510
- const numberPart = string1 + '.1';
17511
- return numberPart;
17512
- }
17513
- else {
17514
- const parts = string2.split('.');
17515
- let lastPart = parseInt(parts[parts.length - 1], 10);
17516
- let new_number = lastPart++;
17517
- parts[parts.length - 1] = lastPart.toString();
17518
- return parts.join(".");
17522
+ if (e.event) {
17523
+ const kpi_data = this.keiParentDataSource.find((item) => item.kpiId === e.value);
17524
+ const tidKey = this.select_tag_type === 'child' && this.isEditKpiAdded ? 'childTid' : 'parentTid';
17525
+ this.selected_kpi_tid = kpi_data[tidKey];
17519
17526
  }
17520
17527
  }
17521
- setKpibyTid(data, tid, newKpiObj) {
17522
- data.forEach(result => {
17523
- if (result.nodes !== undefined) {
17524
- if (result.tid == tid) {
17525
- result.nodes.push(newKpiObj);
17526
- }
17527
- this.setKpibyTid(result.nodes, tid, newKpiObj);
17528
- }
17529
- });
17530
- }
17531
- getHeistId(data, tid) {
17532
- data.forEach((result) => {
17533
- if (result.tid === tid) {
17534
- if (result.nodes.length > 0) {
17535
- this.heistValue = this.getHighestTid(result.nodes);
17536
- }
17537
- else {
17538
- this.heistValue = null;
17539
- }
17540
- }
17541
- else if (result.nodes !== undefined && result.nodes.length > 0) {
17542
- this.getHeistId(result.nodes, tid);
17543
- }
17544
- });
17545
- }
17546
- getHighestTid(data) {
17547
- const highestTid = data.reduce((maxTid, currentItem) => {
17548
- const currentTidParts = currentItem.tid.split('.').map(part => parseInt(part, 10));
17549
- const maxTidParts = maxTid.split('.').map(part => parseInt(part, 10));
17550
- for (let i = 0; i < currentTidParts.length; i++) {
17551
- if (currentTidParts[i] > maxTidParts[i]) {
17552
- return currentItem.tid;
17553
- }
17554
- else if (currentTidParts[i] < maxTidParts[i]) {
17555
- return maxTid;
17556
- }
17557
- }
17558
- return maxTid;
17559
- }, data[0].tid);
17560
- return highestTid;
17561
- }
17562
17528
  addNewKpi() {
17563
17529
  this.isNewKpiAdded = true;
17564
17530
  this.isEditKpiAdded = false;
@@ -17566,22 +17532,6 @@ class CreateKpiTreeComponent {
17566
17532
  cancelUpdate() {
17567
17533
  this.isEditKpiAdded = false;
17568
17534
  }
17569
- getEditableKpi(data) {
17570
- this.isComponentUpdata = false;
17571
- this.isEditKpiAdded = true;
17572
- this.isNewKpiAdded = false;
17573
- this.isFromEditable = true;
17574
- this.editable_desc = data.desc;
17575
- this.editable_info = (data.kpiInfo) ? data.kpiInfo : "";
17576
- this.editable_kpi_name = data.name;
17577
- this.editable_tag_type = data.tag_type;
17578
- this.editable_kpi_tid = data.tid;
17579
- this.editable_id = data.id;
17580
- this.editable_page_id = data.pageId;
17581
- this.kpi_visibility = data.isVisible;
17582
- this.kpi_external = data.isAccessible;
17583
- this.parante_kpi_name = this.getKpiParrentName(data.tid);
17584
- }
17585
17535
  getKpiParrentName(input) {
17586
17536
  const lastIndex = input.lastIndexOf('.');
17587
17537
  if (lastIndex === -1) {
@@ -17589,55 +17539,15 @@ class CreateKpiTreeComponent {
17589
17539
  }
17590
17540
  return input.substring(0, lastIndex);
17591
17541
  }
17592
- getUpdateKpi() {
17593
- if (!this.isComponentUpdata) {
17594
- this.getUpdateKpiName(this.kpiData, this.editable_kpi_tid);
17595
- }
17596
- setTimeout(() => {
17597
- this.submitNewKpi();
17598
- this.toastr.success('KPI Updated Successfully');
17599
- this.reseteUpdateKpiForm();
17600
- this.isEditKpiAdded = false;
17601
- }, 500);
17602
- }
17603
- getDeleteKpi() {
17604
- this.getDeleteKpiName(this.kpiData, this.editable_kpi_tid);
17605
- setTimeout(() => {
17606
- this.submitNewKpi();
17542
+ getDeletKpi() {
17543
+ this.service.deleteKpiEntryConfig(this.selected_id).subscribe(data => {
17607
17544
  this.toastr.success('KPI Deleted Successfully');
17608
- this.reseteUpdateKpiForm();
17609
- this.isEditKpiAdded = false;
17610
- }, 500);
17611
- }
17612
- getUpdateKpiName(data, tid) {
17613
- data.forEach((result) => {
17614
- if (result.tid === tid) {
17615
- result.desc = this.editable_desc;
17616
- result.kpiInfo = this.editable_info;
17617
- result.name = this.editable_kpi_name;
17618
- result.id = this.editable_id;
17619
- result.pageId = this.editable_page_id;
17620
- result.tag_type = this.editable_tag_type;
17621
- result.isVisible = this.kpi_visibility;
17622
- result.isAccessible = this.kpi_external;
17623
- result.tid = this.editable_kpi_tid;
17624
- }
17625
- else if (result.nodes !== undefined && result.nodes.length > 0) {
17626
- this.getUpdateKpiName(result.nodes, tid);
17627
- }
17545
+ this.getAllKpiData();
17546
+ this.getReseteKpi();
17547
+ }, err => {
17548
+ this.toastr.error('Unexpected Server Exception. Please contact System Admin.', 'KPI Config');
17628
17549
  });
17629
17550
  }
17630
- getDeleteKpiName(data, tid) {
17631
- for (let i = data.length - 1; i >= 0; i--) {
17632
- const result = data[i];
17633
- if (result.tid === tid) {
17634
- data.splice(i, 1);
17635
- }
17636
- else if (result.nodes !== undefined && result.nodes.length > 0) {
17637
- this.getDeleteKpiName(result.nodes, tid);
17638
- }
17639
- }
17640
- }
17641
17551
  reseteUpdateKpiForm() {
17642
17552
  this.editable_desc = undefined;
17643
17553
  this.editable_info = undefined;
@@ -17658,73 +17568,57 @@ class CreateKpiTreeComponent {
17658
17568
  this.getReseteKpi();
17659
17569
  });
17660
17570
  }
17661
- getNewParrentKpiItemValue(e) {
17662
- this.isComponentUpdata = true;
17663
- const kpi_data = this.keiParentDataSource.find((item) => item.tid === e.value);
17664
- this.getHeistId(this.kpiData, kpi_data.tid);
17665
- let auto_tid = this.autoIncrement(kpi_data.tid, this.heistValue);
17666
- let obj = {
17667
- "name": this.editable_kpi_name,
17668
- "tid": auto_tid,
17669
- "isBookmarked": false,
17670
- "isAccessible": this.kpi_external,
17671
- "lastAccessTime": "",
17672
- "tag_type": this.editable_tag_type,
17673
- "id": this.editable_id,
17674
- "pageId": this.editable_page_id,
17675
- "desc": this.editable_desc,
17676
- "kpiInfo": this.editable_info,
17677
- "isVisible": this.kpi_visibility,
17678
- "nodes": [],
17679
- "config": {}
17680
- };
17681
- this.getDeleteKpiName(this.kpiData, this.editable_kpi_tid);
17682
- this.setKpibyTid(this.kpiData, kpi_data.tid, obj);
17683
- this.editable_kpi_tid = kpi_data.tid;
17684
- }
17685
- makeNewKpiWithUserEntity() {
17686
- this.userOptionContainer.forEach(element => {
17687
- let att_value = element.attributeValues.split(",");
17688
- element.attributeValues = att_value;
17571
+ buildMenuTree(userName, kpiData) {
17572
+ let filteredMenus = kpiData;
17573
+ const menuMap = new Map();
17574
+ const menuTree = [];
17575
+ filteredMenus.forEach(menu => {
17576
+ menuMap.set(menu.childTid || menu.parentTid, Object.assign(Object.assign({ id: menu.kpiId, title: menu.kpiName, icon: menu.icon, type: menu.kpiType, tagType: menu.tagType, visibility: menu.visibility }, (menu.link && { link: menu.link.replace(/^\/+/, '') })), { children: [] }));
17689
17577
  });
17690
- if (this.selected_kpi_tid !== undefined && this.selected_kpi_tid.length > 0) {
17691
- this.getHeistId(this.kpiData, this.selected_kpi_tid);
17692
- }
17693
- else {
17694
- this.heistValue = (this.kpiData.length != 0) ? this.getHighestTid(this.kpiData) : 0;
17695
- let value = parseInt(this.heistValue) + 1;
17696
- }
17697
- let kpiObj = {
17698
- "kpiId": this.selected_id,
17699
- "pageId": this.selected_page_id,
17700
- "title": this.select_kpi_name,
17701
- "description": this.selected_desc,
17702
- "kpiInfo": this.selected_info,
17703
- "tagType": this.select_tag_type,
17704
- "active": true,
17705
- "visibility": this.kpi_visibility,
17706
- "externalKpi": this.kpi_external,
17707
- "target": "",
17708
- "icon": "",
17709
- "url": "",
17710
- "kpiType": "",
17711
- "parentTid": this.selected_kpi_tid,
17712
- "childTid": "",
17713
- "measures": this.userOptionContainer,
17714
- };
17715
- console.log("KPI with User Entity Obj:", kpiObj);
17716
- }
17717
- routeToKpiConfig() {
17718
- this.router.navigate(['apps/controlPanel/kpiController/kpiConfig']);
17578
+ filteredMenus.forEach(kpi => {
17579
+ if (kpi.parentTid && kpi.childTid) {
17580
+ const parent = menuMap.get(kpi.parentTid);
17581
+ if (parent) {
17582
+ parent.children.push(menuMap.get(kpi.childTid));
17583
+ }
17584
+ }
17585
+ else {
17586
+ menuTree.push(menuMap.get(kpi.parentTid));
17587
+ }
17588
+ });
17589
+ return menuTree;
17719
17590
  }
17720
17591
  }
17721
17592
  CreateKpiTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateKpiTreeComponent, deps: [{ token: CommonService }, { token: i8.FormBuilder }, { token: CreateKpIService }, { token: i4$1.ToastrService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
17722
- CreateKpiTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateKpiTreeComponent, selector: "app-create-kpi", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"p-4 flex flex-row w-full\">\n <div class=\"mx-2 bg-white dark:bg-transparent border-r\">\n\n <treeview class=\"dark bg-gray-900 dark:bg-transparent\" [name]=\"'mainNavigation'\" [routeKey]=\"'raKpi'\"\n [navigation]=\"kpiData\" [isSearchBox]=\"false\" [isEditIcon]=\"true\" (editableKpiData)=\"getEditableKpi($event)\">\n </treeview>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"flex flex-row item-center justify-center my-8\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"addNewKpi()\">Add New KPI</button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"routeToKpiConfig()\"\n routerLinkActive=\"router-link-active\">Configure KPI</button>\n </div>\n <ng-container *ngIf=\"isNewKpiAdded\">\n <div class=\"px-2 w-full\">\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Name</p>\n <dx-text-box [(ngModel)]=\"select_kpi_name\"></dx-text-box>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"select_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">ID</p>\n <dx-text-box [(ngModel)]=\"selected_id\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"selected_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\" [searchEnabled]=\"true\"\n [(ngModel)]=\"selected_page_id\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_desc\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\" [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [dataSource]=\"keiParentDataSource\" displayExpr=\"name\" valueExpr=\"tid\"\n (onValueChanged)=\"getKpiItemValue($event)\" [value]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_tid\" [readOnly]=\"true\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n\n <div class=\"flex flex-auto mt-5 justify-end\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"makeNewKpi()\">Create\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"makeNewKpiWithUserEntity()\">Create With User Privilege\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"getReseteKpi()\">Reset</button>\n\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isEditKpiAdded\">\n <div class=\"px-2 w-full\">\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mb-2\">Name</p>\n <dx-text-box [(ngModel)]=\"editable_kpi_name\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"editable_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\" [readOnly]=\"isFromEditable\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">ID</p>\n <dx-text-box [(ngModel)]=\"editable_id\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"editable_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\" [searchEnabled]=\"true\"\n [(ngModel)]=\"editable_page_id\"></dx-select-box>\n\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"editable_desc\">\n <dxo-toolbar [multiline]=\"true\">\n <dxi-item name=\"undo\"></dxi-item>\n <dxi-item name=\"redo\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"blockquote\"></dxi-item>\n\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [searchEnabled]=\"true\" [readOnly]=\"editable_tag_type == 'parent'\"\n [dataSource]=\"keiParentDataSource\" displayExpr=\"name\" valueExpr=\"tid\"\n (onValueChanged)=\"getNewParrentKpiItemValue($event)\"\n [value]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">TID</p>\n <dx-text-box [(ngModel)]=\"editable_kpi_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row justify-between mt-3\">\n\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"editable_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n <div class=\"flex flex-auto mt-3 justify-end\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"getUpdateKpi()\">Update\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"getDeleteKpi()\">Delete\n </button>\n <!-- <button class=\"{{commonService.btn_danger_md}}\" (click)=\"cancelUpdate()\">Cancle</button> -->\n\n </div>\n </div>\n </ng-container>\n </div>\n\n\n\n\n</div>", styles: [":host ::ng-deep treeview .treeview-wrapper{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent$1, selector: "app-loading" }, { kind: "component", type: i6.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "menuTemplate", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxoToolbarComponent, selector: "dxo-toolbar", inputs: ["disabled", "items", "visible", "fileSelectionItems", "container", "multiline"] }, { kind: "component", type: i10$2.DxHtmlEditorComponent, selector: "dx-html-editor", inputs: ["accessKey", "activeStateEnabled", "allowSoftLineBreak", "customizeModules", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "imageUpload", "isValid", "mediaResizing", "mentions", "name", "placeholder", "readOnly", "rtlEnabled", "stylingMode", "tabIndex", "tableContextMenu", "tableResizing", "toolbar", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueType", "variables", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onFocusIn", "onFocusOut", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "allowSoftLineBreakChange", "customizeModulesChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "imageUploadChange", "isValidChange", "mediaResizingChange", "mentionsChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "tableContextMenuChange", "tableResizingChange", "toolbarChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueTypeChange", "variablesChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxoImageUploadComponent, selector: "dxo-image-upload", inputs: ["fileUploaderOptions", "fileUploadMode", "tabs", "uploadDirectory", "uploadUrl"] }, { kind: "component", type: i6.DxoMediaResizingComponent, selector: "dxo-media-resizing", inputs: ["allowedTargets", "enabled"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: UserAccessComponent, selector: "app-user-access", inputs: ["userOptionContainer"], outputs: ["userOptionContainerChange"] }, { kind: "component", type: TreeviewComponent, selector: "treeview", inputs: ["autoCollapse", "inner", "navigation", "opened", "isEditIcon", "isSearchBox", "transparentOverlay", "treeListForSearchBox", "name", "openTreeId", "routeKey"], outputs: ["editableKpiData"] }] });
17593
+ CreateKpiTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CreateKpiTreeComponent, selector: "app-create-kpi", ngImport: i0, template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"p-4 flex flex-row w-full\" *ngIf=\"!loadingModal\">\n <div class=\"mx-2 bg-white dark:bg-transparent border-r\">\n <!-- <ng-container *ngIf=\"isKpiTreePrepared\"> -->\n <treeview class=\"dark bg-gray-900 dark:bg-transparent\" [name]=\"'mainNavigation'\" [routeKey]=\"'raKpi'\"\n [navigation]=\"kpiData\" [isSearchBox]=\"false\" [isEditIcon]=\"true\"\n (editableKpiData)=\"getEditableKpi($event)\">\n </treeview>\n <!-- </ng-container> -->\n\n </div>\n <div class=\"mx-2 w-full\">\n <!-- <div class=\"flex flex-row item-center justify-center my-8\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"addNewKpi()\">Add New KPI</button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"routeToKpiConfig()\"\n routerLinkActive=\"router-link-active\">Configure KPI</button>\n </div> -->\n <!-- <ng-container *ngIf=\"isNewKpiAdded\"> -->\n <!-- <div class=\"px-2 w-full\"> -->\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Name</p>\n <dx-text-box [(ngModel)]=\"select_kpi_name\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-1/3\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"select_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\"></dx-select-box>\n </div>\n </div>\n <!-- (onCustomItemCreating)=\"onCustomDimentionCreating($event)\" -->\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Aliases</p>\n <dx-tag-box [acceptCustomValue]=\"true\" [(ngModel)]=\"selected_aliases\"></dx-tag-box>\n </div>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"selected_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\" [(ngModel)]=\"selected_page_id\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_desc\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\" [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\" [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [items]=\"keiParentDataSource\" displayExpr=\"kpiName\" valueExpr=\"kpiId\"\n (onValueChanged)=\"getKpiItemValue($event)\" [(ngModel)]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Parent TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Child TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_child_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <!-- <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div> -->\n\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n\n <div class=\"flex flex-auto mt-5 justify-end\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"getUpdateKpi()\" *ngIf=\"isEditKpiAdded\">Update KPI\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"getDeletKpi()\" *ngIf=\"isEditKpiAdded\">Delete KPI\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"makeNewKpiWithUserEntity()\" *ngIf=\"!isEditKpiAdded\">Create KPI\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"getReseteKpi()\">Reset</button>\n\n </div>\n <!-- </div> -->\n <!-- </ng-container> -->\n </div>\n\n\n\n\n</div>", styles: [":host ::ng-deep treeview .treeview-wrapper{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i4$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent$1, selector: "app-loading" }, { kind: "component", type: i6.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "menuTemplate", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i5$1.DxCheckBoxComponent, selector: "dx-check-box", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "isValid", "name", "readOnly", "rtlEnabled", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconSizeChange", "isValidChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "textChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxoToolbarComponent, selector: "dxo-toolbar", inputs: ["disabled", "items", "visible", "fileSelectionItems", "container", "multiline"] }, { kind: "component", type: i10$2.DxHtmlEditorComponent, selector: "dx-html-editor", inputs: ["accessKey", "activeStateEnabled", "allowSoftLineBreak", "customizeModules", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "imageUpload", "isValid", "mediaResizing", "mentions", "name", "placeholder", "readOnly", "rtlEnabled", "stylingMode", "tabIndex", "tableContextMenu", "tableResizing", "toolbar", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueType", "variables", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onFocusIn", "onFocusOut", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "allowSoftLineBreakChange", "customizeModulesChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "imageUploadChange", "isValidChange", "mediaResizingChange", "mentionsChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "tableContextMenuChange", "tableResizingChange", "toolbarChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueTypeChange", "variablesChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i6.DxoImageUploadComponent, selector: "dxo-image-upload", inputs: ["fileUploaderOptions", "fileUploadMode", "tabs", "uploadDirectory", "uploadUrl"] }, { kind: "component", type: i6.DxoMediaResizingComponent, selector: "dxo-media-resizing", inputs: ["allowedTargets", "enabled"] }, { kind: "component", type: i6$1.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i8$1.DxTagBoxComponent, selector: "dx-tag-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "applyValueMode", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hideSelectedItems", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxDisplayedTags", "maxFilterQueryLength", "maxLength", "minSearchLength", "multiline", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectAllMode", "selectAllText", "selectedItems", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showMultiTagOnly", "showSelectionControls", "stylingMode", "tabIndex", "tagTemplate", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCustomItemCreating", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onMultiTagPreparing", "onOpened", "onOptionChanged", "onSelectAllValueChanged", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "applyValueModeChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hideSelectedItemsChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxDisplayedTagsChange", "maxFilterQueryLengthChange", "maxLengthChange", "minSearchLengthChange", "multilineChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectAllModeChange", "selectAllTextChange", "selectedItemsChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showMultiTagOnlyChange", "showSelectionControlsChange", "stylingModeChange", "tabIndexChange", "tagTemplateChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: UserAccessComponent, selector: "app-user-access", inputs: ["userOptionContainer"], outputs: ["userOptionContainerChange"] }, { kind: "component", type: TreeviewComponent, selector: "treeview", inputs: ["autoCollapse", "inner", "navigation", "opened", "isEditIcon", "isSearchBox", "transparentOverlay", "treeListForSearchBox", "name", "openTreeId", "routeKey"], outputs: ["editableKpiData"] }] });
17723
17594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CreateKpiTreeComponent, decorators: [{
17724
17595
  type: Component,
17725
- args: [{ selector: 'app-create-kpi', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"p-4 flex flex-row w-full\">\n <div class=\"mx-2 bg-white dark:bg-transparent border-r\">\n\n <treeview class=\"dark bg-gray-900 dark:bg-transparent\" [name]=\"'mainNavigation'\" [routeKey]=\"'raKpi'\"\n [navigation]=\"kpiData\" [isSearchBox]=\"false\" [isEditIcon]=\"true\" (editableKpiData)=\"getEditableKpi($event)\">\n </treeview>\n </div>\n <div class=\"mx-2 w-full\">\n <div class=\"flex flex-row item-center justify-center my-8\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"addNewKpi()\">Add New KPI</button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"routeToKpiConfig()\"\n routerLinkActive=\"router-link-active\">Configure KPI</button>\n </div>\n <ng-container *ngIf=\"isNewKpiAdded\">\n <div class=\"px-2 w-full\">\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Name</p>\n <dx-text-box [(ngModel)]=\"select_kpi_name\"></dx-text-box>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"select_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">ID</p>\n <dx-text-box [(ngModel)]=\"selected_id\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"selected_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\" [searchEnabled]=\"true\"\n [(ngModel)]=\"selected_page_id\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_desc\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\" [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [dataSource]=\"keiParentDataSource\" displayExpr=\"name\" valueExpr=\"tid\"\n (onValueChanged)=\"getKpiItemValue($event)\" [value]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_tid\" [readOnly]=\"true\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n\n <div class=\"flex flex-auto mt-5 justify-end\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"makeNewKpi()\">Create\n </button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"makeNewKpiWithUserEntity()\">Create With User Privilege\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"getReseteKpi()\">Reset</button>\n\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isEditKpiAdded\">\n <div class=\"px-2 w-full\">\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mb-2\">Name</p>\n <dx-text-box [(ngModel)]=\"editable_kpi_name\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"editable_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\" [readOnly]=\"isFromEditable\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">ID</p>\n <dx-text-box [(ngModel)]=\"editable_id\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"editable_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\" [searchEnabled]=\"true\"\n [(ngModel)]=\"editable_page_id\"></dx-select-box>\n\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"editable_desc\">\n <dxo-toolbar [multiline]=\"true\">\n <dxi-item name=\"undo\"></dxi-item>\n <dxi-item name=\"redo\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"blockquote\"></dxi-item>\n\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [searchEnabled]=\"true\" [readOnly]=\"editable_tag_type == 'parent'\"\n [dataSource]=\"keiParentDataSource\" displayExpr=\"name\" valueExpr=\"tid\"\n (onValueChanged)=\"getNewParrentKpiItemValue($event)\"\n [value]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">TID</p>\n <dx-text-box [(ngModel)]=\"editable_kpi_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row justify-between mt-3\">\n\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"editable_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n <div class=\"flex flex-auto mt-3 justify-end\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"getUpdateKpi()\">Update\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"getDeleteKpi()\">Delete\n </button>\n <!-- <button class=\"{{commonService.btn_danger_md}}\" (click)=\"cancelUpdate()\">Cancle</button> -->\n\n </div>\n </div>\n </ng-container>\n </div>\n\n\n\n\n</div>", styles: [":host ::ng-deep treeview .treeview-wrapper{width:100%!important}\n"] }]
17596
+ args: [{ selector: 'app-create-kpi', template: "<app-loading *ngIf=\"loadingModal\"></app-loading>\n<div class=\"p-4 flex flex-row w-full\" *ngIf=\"!loadingModal\">\n <div class=\"mx-2 bg-white dark:bg-transparent border-r\">\n <!-- <ng-container *ngIf=\"isKpiTreePrepared\"> -->\n <treeview class=\"dark bg-gray-900 dark:bg-transparent\" [name]=\"'mainNavigation'\" [routeKey]=\"'raKpi'\"\n [navigation]=\"kpiData\" [isSearchBox]=\"false\" [isEditIcon]=\"true\"\n (editableKpiData)=\"getEditableKpi($event)\">\n </treeview>\n <!-- </ng-container> -->\n\n </div>\n <div class=\"mx-2 w-full\">\n <!-- <div class=\"flex flex-row item-center justify-center my-8\">\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"addNewKpi()\">Add New KPI</button>\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"routeToKpiConfig()\"\n routerLinkActive=\"router-link-active\">Configure KPI</button>\n </div> -->\n <!-- <ng-container *ngIf=\"isNewKpiAdded\"> -->\n <!-- <div class=\"px-2 w-full\"> -->\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Name</p>\n <dx-text-box [(ngModel)]=\"select_kpi_name\"></dx-text-box>\n </div>\n </div>\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-1/3\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Tag Type</p>\n <dx-select-box [dataSource]=\"tagType\" [(ngModel)]=\"select_tag_type\"\n (onValueChanged)=\"addTagtypeValue($event)\"></dx-select-box>\n </div>\n </div>\n <!-- (onCustomItemCreating)=\"onCustomDimentionCreating($event)\" -->\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Aliases</p>\n <dx-tag-box [acceptCustomValue]=\"true\" [(ngModel)]=\"selected_aliases\"></dx-tag-box>\n </div>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Page ID</p>\n <!-- <dx-text-box [(ngModel)]=\"selected_page_id\"></dx-text-box> -->\n <dx-select-box [items]=\"templateDataSource\" valueExpr=\"pageId\" displayExpr=\"pageName\"\n [searchEnabled]=\"true\" [(ngModel)]=\"selected_page_id\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Description</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_desc\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\" [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\" [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div>\n\n\n <div class=\"flex flex-row w-full\">\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\"> Parent Component </p>\n <dx-select-box [items]=\"keiParentDataSource\" displayExpr=\"kpiName\" valueExpr=\"kpiId\"\n (onValueChanged)=\"getKpiItemValue($event)\" [(ngModel)]=\"parante_kpi_name\"></dx-select-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Parent TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n <div class=\"m-1 w-full\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">Child TID</p>\n <dx-text-box [(ngModel)]=\"selected_kpi_child_tid\" [readOnly]=\"false\"></dx-text-box>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-row justify-between mt-3\">\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_visibility\" text=\"Visibility\"></dx-check-box>\n </div>\n <div class=\"px-2 pt-1 w-full\">\n <dx-check-box [(ngModel)]=\"kpi_external\" text=\"External KPI\"></dx-check-box>\n </div>\n </div>\n <!-- <div class=\"m-1\">\n <div class=\"px-2 pt-1 w-full\">\n <p class=\"text-lg mt-2\">KPI Info</p>\n <dx-html-editor height=\"'auto'\" [(ngModel)]=\"selected_info\">\n <dxo-toolbar [multiline]=\"false\">\n\n <dxi-item name=\"size\"\n [acceptedValues]=\"['8pt', '10pt', '12pt', '14pt', '18pt', '24pt', '36pt']\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font size' } }\"></dxi-item>\n <dxi-item name=\"font\" [acceptedValues]=\"[\n 'Arial',\n 'Courier New',\n 'Georgia',\n 'Impact',\n 'Lucida Console',\n 'Tahoma',\n 'Times New Roman',\n 'Verdana'\n ]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Font family' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"bold\"></dxi-item>\n <dxi-item name=\"italic\"></dxi-item>\n <dxi-item name=\"underline\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"alignLeft\"></dxi-item>\n <dxi-item name=\"alignCenter\"></dxi-item>\n <dxi-item name=\"alignRight\"></dxi-item>\n <dxi-item name=\"alignJustify\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"orderedList\"></dxi-item>\n <dxi-item name=\"bulletList\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"header\" [acceptedValues]=\"[false, 1, 2, 3, 4, 5]\"\n [options]=\"{ inputAttr: { 'aria-label': 'Header' } }\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"color\"></dxi-item>\n <dxi-item name=\"background\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"link\"></dxi-item>\n <dxi-item name=\"image\"></dxi-item>\n <dxi-item name=\"separator\"></dxi-item>\n <dxi-item name=\"clear\"></dxi-item>\n <dxi-item name=\"codeBlock\"></dxi-item>\n </dxo-toolbar>\n <dxo-media-resizing [enabled]=\"true\"> </dxo-media-resizing>\n <dxo-image-upload [tabs]=\"['file', 'url']\" fileUploadMode=\"base64\">\n </dxo-image-upload>\n </dx-html-editor>\n </div>\n </div> -->\n\n <app-user-access [(userOptionContainer)]=\"userOptionContainer\">\n </app-user-access>\n\n <div class=\"flex flex-auto mt-5 justify-end\">\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"getUpdateKpi()\" *ngIf=\"isEditKpiAdded\">Update KPI\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"getDeletKpi()\" *ngIf=\"isEditKpiAdded\">Delete KPI\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"makeNewKpiWithUserEntity()\" *ngIf=\"!isEditKpiAdded\">Create KPI\n </button>\n <button class=\"{{commonService.btn_warning_md}}\" (click)=\"getReseteKpi()\">Reset</button>\n\n </div>\n <!-- </div> -->\n <!-- </ng-container> -->\n </div>\n\n\n\n\n</div>", styles: [":host ::ng-deep treeview .treeview-wrapper{width:100%!important}\n"] }]
17726
17597
  }], ctorParameters: function () { return [{ type: CommonService }, { type: i8.FormBuilder }, { type: CreateKpIService }, { type: i4$1.ToastrService }, { type: i2.Router }]; } });
17727
17598
 
17599
+ class TreeViewDividerItemComponent {
17600
+ constructor(_changeDetectorRef) {
17601
+ this._changeDetectorRef = _changeDetectorRef;
17602
+ this._unsubscribeAll = new Subject();
17603
+ }
17604
+ ngOnInit() {
17605
+ }
17606
+ ngOnDestroy() {
17607
+ this._unsubscribeAll.next(null);
17608
+ this._unsubscribeAll.complete();
17609
+ }
17610
+ }
17611
+ TreeViewDividerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewDividerItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
17612
+ TreeViewDividerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: { item: "item", name: "name" }, ngImport: i0, template: "<!-- Divider -->\n<div class=\"treeview-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>", dependencies: [{ kind: "directive", type: i4$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17613
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewDividerItemComponent, decorators: [{
17614
+ type: Component,
17615
+ args: [{ selector: 'treeview-divider-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Divider -->\n<div class=\"treeview-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>" }]
17616
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
17617
+ type: Input
17618
+ }], name: [{
17619
+ type: Input
17620
+ }] } });
17621
+
17728
17622
  class TreeViewSpacerItemComponent {
17729
17623
  constructor(_changeDetectorRef) {
17730
17624
  this._changeDetectorRef = _changeDetectorRef;
@@ -18031,7 +17925,7 @@ class KpiWithSingleLayoutService {
18031
17925
  return throwError(error);
18032
17926
  }
18033
17927
  getlistKpiBrowser() {
18034
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
17928
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
18035
17929
  return this.http
18036
17930
  .get(apiUrl, { withCredentials: true })
18037
17931
  .pipe(map((response) => {
@@ -18040,13 +17934,13 @@ class KpiWithSingleLayoutService {
18040
17934
  }
18041
17935
  getAppPageDetailConfig(pageId) {
18042
17936
  return this.http
18043
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
17937
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
18044
17938
  .pipe(map((response) => {
18045
17939
  return response;
18046
17940
  }), catchError(this.handleError));
18047
17941
  }
18048
17942
  getAppPageConfigs() {
18049
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
17943
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
18050
17944
  return this.http
18051
17945
  .get(apiUrl, { withCredentials: true })
18052
17946
  .pipe(map((response) => {
@@ -18054,7 +17948,7 @@ class KpiWithSingleLayoutService {
18054
17948
  }), catchError(this.handleError));
18055
17949
  }
18056
17950
  getAppDatasetConfigs() {
18057
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
17951
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
18058
17952
  return this.http
18059
17953
  .get(apiUrl, { withCredentials: true })
18060
17954
  .pipe(map((response) => {
@@ -18062,7 +17956,7 @@ class KpiWithSingleLayoutService {
18062
17956
  }), catchError(this.handleError));
18063
17957
  }
18064
17958
  getAppDatasetConfig(datasetId) {
18065
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
17959
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
18066
17960
  return this.http
18067
17961
  .get(apiUrl, { withCredentials: true })
18068
17962
  .pipe(map((response) => {
@@ -18071,13 +17965,13 @@ class KpiWithSingleLayoutService {
18071
17965
  }
18072
17966
  getAppFilterConfig(filterId) {
18073
17967
  return this.http
18074
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
17968
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
18075
17969
  .pipe(map((response) => {
18076
17970
  return response;
18077
17971
  }), catchError(this.handleError));
18078
17972
  }
18079
17973
  getAppViewConfigs() {
18080
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
17974
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
18081
17975
  return this.http
18082
17976
  .get(apiUrl, { withCredentials: true })
18083
17977
  .pipe(map((response) => {
@@ -18621,11 +18515,11 @@ class PermissionHelper {
18621
18515
  const { entityName, entityValues } = item;
18622
18516
  if (entityName === 'user' &&
18623
18517
  Array.isArray(entityValues) &&
18624
- (entityValues.includes('${USER}') || entityValues.includes(username))) {
18518
+ (entityValues.includes('{USER}') || entityValues.includes(username))) {
18625
18519
  return true;
18626
18520
  }
18627
18521
  if (entityName === 'role' && Array.isArray(entityValues)) {
18628
- if (entityValues.includes('${ROLE}')) {
18522
+ if (entityValues.includes('{ROLE}')) {
18629
18523
  return true;
18630
18524
  }
18631
18525
  return this.securityPrincipal.roleDetails
@@ -18633,7 +18527,7 @@ class PermissionHelper {
18633
18527
  : true;
18634
18528
  }
18635
18529
  if (entityName === 'group' && Array.isArray(entityValues)) {
18636
- if (entityValues.includes('${GROUP}')) {
18530
+ if (entityValues.includes('{GROUP}')) {
18637
18531
  return true;
18638
18532
  }
18639
18533
  return this.securityPrincipal.groupDetails
@@ -20431,7 +20325,7 @@ class KpiWithMultiLayoutService {
20431
20325
  return throwError(error);
20432
20326
  }
20433
20327
  getlistKpiBrowser() {
20434
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
20328
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
20435
20329
  return this.http
20436
20330
  .get(apiUrl, { withCredentials: true })
20437
20331
  .pipe(map((response) => {
@@ -20440,13 +20334,13 @@ class KpiWithMultiLayoutService {
20440
20334
  }
20441
20335
  getAppPageDetailConfig(pageId) {
20442
20336
  return this.http
20443
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
20337
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
20444
20338
  .pipe(map((response) => {
20445
20339
  return response;
20446
20340
  }), catchError(this.handleError));
20447
20341
  }
20448
20342
  getAppPageConfigs() {
20449
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
20343
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
20450
20344
  return this.http
20451
20345
  .get(apiUrl, { withCredentials: true })
20452
20346
  .pipe(map((response) => {
@@ -20454,7 +20348,7 @@ class KpiWithMultiLayoutService {
20454
20348
  }), catchError(this.handleError));
20455
20349
  }
20456
20350
  getAppDatasetConfigs() {
20457
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
20351
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
20458
20352
  return this.http
20459
20353
  .get(apiUrl, { withCredentials: true })
20460
20354
  .pipe(map((response) => {
@@ -20462,7 +20356,7 @@ class KpiWithMultiLayoutService {
20462
20356
  }), catchError(this.handleError));
20463
20357
  }
20464
20358
  getAppDatasetConfig(datasetId) {
20465
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
20359
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
20466
20360
  return this.http
20467
20361
  .get(apiUrl, { withCredentials: true })
20468
20362
  .pipe(map((response) => {
@@ -20471,13 +20365,13 @@ class KpiWithMultiLayoutService {
20471
20365
  }
20472
20366
  getAppFilterConfig(filterId) {
20473
20367
  return this.http
20474
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
20368
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
20475
20369
  .pipe(map((response) => {
20476
20370
  return response;
20477
20371
  }), catchError(this.handleError));
20478
20372
  }
20479
20373
  getAppViewConfigs() {
20480
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
20374
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
20481
20375
  return this.http
20482
20376
  .get(apiUrl, { withCredentials: true })
20483
20377
  .pipe(map((response) => {
@@ -21761,7 +21655,7 @@ class LandingComponentService {
21761
21655
  return throwError(error);
21762
21656
  }
21763
21657
  getlistKpiBrowser() {
21764
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
21658
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
21765
21659
  return this.http
21766
21660
  .get(apiUrl, { withCredentials: true })
21767
21661
  .pipe(map((response) => {
@@ -21770,13 +21664,13 @@ class LandingComponentService {
21770
21664
  }
21771
21665
  getAppPageDetailConfig(pageId) {
21772
21666
  return this.http
21773
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
21667
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
21774
21668
  .pipe(map((response) => {
21775
21669
  return response;
21776
21670
  }), catchError(this.handleError));
21777
21671
  }
21778
21672
  getAppPageConfigs() {
21779
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
21673
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
21780
21674
  return this.http
21781
21675
  .get(apiUrl, { withCredentials: true })
21782
21676
  .pipe(map((response) => {
@@ -21784,7 +21678,7 @@ class LandingComponentService {
21784
21678
  }), catchError(this.handleError));
21785
21679
  }
21786
21680
  getAppDatasetConfigs() {
21787
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
21681
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
21788
21682
  return this.http
21789
21683
  .get(apiUrl, { withCredentials: true })
21790
21684
  .pipe(map((response) => {
@@ -21792,7 +21686,7 @@ class LandingComponentService {
21792
21686
  }), catchError(this.handleError));
21793
21687
  }
21794
21688
  getAppDatasetConfig(datasetId) {
21795
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
21689
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
21796
21690
  return this.http
21797
21691
  .get(apiUrl, { withCredentials: true })
21798
21692
  .pipe(map((response) => {
@@ -21801,13 +21695,13 @@ class LandingComponentService {
21801
21695
  }
21802
21696
  getAppFilterConfig(filterId) {
21803
21697
  return this.http
21804
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
21698
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
21805
21699
  .pipe(map((response) => {
21806
21700
  return response;
21807
21701
  }), catchError(this.handleError));
21808
21702
  }
21809
21703
  getAppViewConfigs() {
21810
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
21704
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
21811
21705
  return this.http
21812
21706
  .get(apiUrl, { withCredentials: true })
21813
21707
  .pipe(map((response) => {
@@ -22024,7 +21918,6 @@ class LandingComponentComponent {
22024
21918
  });
22025
21919
  });
22026
21920
  Promise.all(apiCalls).then(() => {
22027
- debugger;
22028
21921
  this.globalDefaultFilter = filter;
22029
21922
  this.uniqueDataSetObject = this.datasetService.getUniqueDataSetObject();
22030
21923
  this.createDivElements(this.uniqueDataSetObject, true);
@@ -23328,7 +23221,7 @@ class LandingMultiLayoutComponentService {
23328
23221
  return throwError(error);
23329
23222
  }
23330
23223
  getlistKpiBrowser() {
23331
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
23224
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
23332
23225
  return this.http
23333
23226
  .get(apiUrl, { withCredentials: true })
23334
23227
  .pipe(map((response) => {
@@ -23337,13 +23230,13 @@ class LandingMultiLayoutComponentService {
23337
23230
  }
23338
23231
  getAppPageDetailConfig(pageId) {
23339
23232
  return this.http
23340
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
23233
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
23341
23234
  .pipe(map((response) => {
23342
23235
  return response;
23343
23236
  }), catchError(this.handleError));
23344
23237
  }
23345
23238
  getAppPageConfigs() {
23346
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
23239
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
23347
23240
  return this.http
23348
23241
  .get(apiUrl, { withCredentials: true })
23349
23242
  .pipe(map((response) => {
@@ -23351,7 +23244,7 @@ class LandingMultiLayoutComponentService {
23351
23244
  }), catchError(this.handleError));
23352
23245
  }
23353
23246
  getAppDatasetConfigs() {
23354
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
23247
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
23355
23248
  return this.http
23356
23249
  .get(apiUrl, { withCredentials: true })
23357
23250
  .pipe(map((response) => {
@@ -23359,7 +23252,7 @@ class LandingMultiLayoutComponentService {
23359
23252
  }), catchError(this.handleError));
23360
23253
  }
23361
23254
  getAppDatasetConfig(datasetId) {
23362
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
23255
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
23363
23256
  return this.http
23364
23257
  .get(apiUrl, { withCredentials: true })
23365
23258
  .pipe(map((response) => {
@@ -23368,13 +23261,13 @@ class LandingMultiLayoutComponentService {
23368
23261
  }
23369
23262
  getAppFilterConfig(filterId) {
23370
23263
  return this.http
23371
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
23264
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
23372
23265
  .pipe(map((response) => {
23373
23266
  return response;
23374
23267
  }), catchError(this.handleError));
23375
23268
  }
23376
23269
  getAppViewConfigs() {
23377
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
23270
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
23378
23271
  return this.http
23379
23272
  .get(apiUrl, { withCredentials: true })
23380
23273
  .pipe(map((response) => {
@@ -24885,7 +24778,7 @@ class BookmarkedService {
24885
24778
  return throwError(error);
24886
24779
  }
24887
24780
  getlistKpiBrowser() {
24888
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
24781
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
24889
24782
  return this.http
24890
24783
  .get(apiUrl, { withCredentials: true })
24891
24784
  .pipe(map((response) => {
@@ -24894,13 +24787,13 @@ class BookmarkedService {
24894
24787
  }
24895
24788
  getAppPageDetailConfig(pageId) {
24896
24789
  return this.http
24897
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
24790
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageDetailConfig?pageConfigId=' + pageId, this.options)
24898
24791
  .pipe(map((response) => {
24899
24792
  return response;
24900
24793
  }), catchError(this.handleError));
24901
24794
  }
24902
24795
  getAppPageConfigs() {
24903
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
24796
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
24904
24797
  return this.http
24905
24798
  .get(apiUrl, { withCredentials: true })
24906
24799
  .pipe(map((response) => {
@@ -24908,7 +24801,7 @@ class BookmarkedService {
24908
24801
  }), catchError(this.handleError));
24909
24802
  }
24910
24803
  getAppDatasetConfigs() {
24911
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfigs';
24804
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfigs';
24912
24805
  return this.http
24913
24806
  .get(apiUrl, { withCredentials: true })
24914
24807
  .pipe(map((response) => {
@@ -24916,7 +24809,7 @@ class BookmarkedService {
24916
24809
  }), catchError(this.handleError));
24917
24810
  }
24918
24811
  getAppDatasetConfig(datasetId) {
24919
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppDatasetConfig?datasetId=' + datasetId;
24812
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppDatasetConfig?datasetId=' + datasetId;
24920
24813
  return this.http
24921
24814
  .get(apiUrl, { withCredentials: true })
24922
24815
  .pipe(map((response) => {
@@ -24925,13 +24818,13 @@ class BookmarkedService {
24925
24818
  }
24926
24819
  getAppFilterConfig(filterId) {
24927
24820
  return this.http
24928
- .get(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppFilterConfig?filterId=' + filterId, this.options)
24821
+ .get(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppFilterConfig?filterId=' + filterId, this.options)
24929
24822
  .pipe(map((response) => {
24930
24823
  return response;
24931
24824
  }), catchError(this.handleError));
24932
24825
  }
24933
24826
  getAppViewConfigs() {
24934
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppViewConfigs';
24827
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppViewConfigs';
24935
24828
  return this.http
24936
24829
  .get(apiUrl, { withCredentials: true })
24937
24830
  .pipe(map((response) => {