nuxeo-development-framework 5.4.9 → 5.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +655 -1651
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/ndf-config-editor/constants/query.js +2 -2
  4. package/esm2015/lib/components/ndf-config-editor/constants/type.js +3 -3
  5. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +24 -17
  6. package/esm2015/lib/components/ndf-config-editor/metadata-token.js +3 -0
  7. package/esm2015/lib/components/ndf-config-editor/models/payload-data.js +2 -0
  8. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +8 -4
  9. package/esm2015/lib/components/ndf-config-editor/public-api.js +2 -1
  10. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +12 -15
  11. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +38 -10
  12. package/esm2015/lib/components/reports/charts/plugins/data-labels.js +166 -102
  13. package/esm2015/lib/components/reports/charts/utility/colors.js +13 -1
  14. package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +2 -2
  15. package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +16 -3
  16. package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +10 -22
  17. package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +5 -2
  18. package/esm2015/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.js +68 -0
  19. package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +2 -1
  20. package/esm2015/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.js +41 -0
  21. package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +2 -1
  22. package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +23 -37
  23. package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -6
  24. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +4 -3
  25. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
  26. package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +1 -1
  27. package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
  28. package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
  29. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +5 -3
  30. package/esm2015/lib/components/reports/ndf-reports/public-api.js +2 -1
  31. package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +15 -9
  32. package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +1 -1
  33. package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
  34. package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +2 -2
  35. package/esm2015/lib/components/reports/ndf-reports/services/reports-dialog.service.js +32 -0
  36. package/esm2015/lib/components/tables/ndf-table/services/ndf-table-configuration.service.js +18 -13
  37. package/esm2015/lib/shared/services/base/base-editor-config.service.js +70 -0
  38. package/esm2015/lib/shared/services/base/index.js +2 -1
  39. package/fesm2015/nuxeo-development-framework.js +599 -1624
  40. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  41. package/lib/components/ndf-config-editor/constants/type.d.ts +2 -2
  42. package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts +2 -2
  43. package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts +8 -7
  44. package/lib/components/ndf-config-editor/metadata-token.d.ts +8 -0
  45. package/lib/components/ndf-config-editor/models/payload-data.d.ts +6 -0
  46. package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts +1 -0
  47. package/lib/components/ndf-config-editor/public-api.d.ts +1 -0
  48. package/lib/components/ndf-config-editor/services/data-access.service.d.ts +7 -4
  49. package/lib/components/ndf-config-editor/services/data-store.service.d.ts +6 -3
  50. package/lib/components/reports/charts/utility/colors.d.ts +5 -0
  51. package/lib/components/reports/ndf-reports/base/base-chart.d.ts +1 -1
  52. package/lib/components/reports/ndf-reports/base/base-custom-report.d.ts +18 -13
  53. package/lib/components/reports/ndf-reports/base/base-graph.report.d.ts +5 -13
  54. package/lib/components/reports/ndf-reports/base/base-report.d.ts +4 -1
  55. package/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.d.ts +15 -0
  56. package/lib/components/reports/ndf-reports/charts-components/index.d.ts +1 -0
  57. package/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.d.ts +14 -0
  58. package/lib/components/reports/ndf-reports/components/_parts/index.d.ts +1 -0
  59. package/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.d.ts +8 -10
  60. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +1 -1
  61. package/lib/components/reports/ndf-reports/models/custom-definition.d.ts +3 -3
  62. package/lib/components/reports/ndf-reports/models/dialog-data.d.ts +8 -0
  63. package/lib/components/reports/ndf-reports/models/report-config.d.ts +2 -2
  64. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +22 -20
  65. package/lib/components/reports/ndf-reports/public-api.d.ts +1 -0
  66. package/lib/components/reports/ndf-reports/services/chart-manager.service.d.ts +2 -2
  67. package/lib/components/reports/ndf-reports/services/custom-reports-registry.service.d.ts +3 -2
  68. package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +2 -2
  69. package/lib/components/reports/ndf-reports/services/reports-dialog.service.d.ts +21 -0
  70. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +1 -1
  71. package/lib/components/tables/ndf-table/services/ndf-table-configuration.service.d.ts +3 -5
  72. package/lib/shared/services/base/base-editor-config.service.d.ts +30 -0
  73. package/lib/shared/services/base/index.d.ts +1 -0
  74. package/package.json +1 -1
  75. package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +0 -1321
  76. package/lib/components/ndf-config-editor/services/dummy-data.d.ts +0 -992
@@ -37,7 +37,7 @@ import _omit from 'lodash/omit';
37
37
  import _assign from 'lodash/assign';
38
38
  import _cloneDeep from 'lodash/cloneDeep';
39
39
  import * as _ from 'lodash';
40
- import ___default, { filter, sortBy, each, unionWith, isEqual, cloneDeep, isNil, isObject as isObject$1, isDate, isBoolean, isNumber, keys, trim, get, set, values, union, assign, keyBy } from 'lodash';
40
+ import ___default, { cloneDeep, filter, sortBy, each, unionWith, isEqual, isNil, isObject as isObject$1, isDate, isBoolean, isNumber, keys, trim, get, set, values, union, assign, keyBy } from 'lodash';
41
41
  import * as i1$4 from '@angular/platform-browser';
42
42
  import { BrowserTransferStateModule } from '@angular/platform-browser';
43
43
  import moment$8 from 'moment-es6';
@@ -3129,6 +3129,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3129
3129
  args: [{ providedIn: 'root' }]
3130
3130
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
3131
3131
 
3132
+ class BaseEditorConfigService extends BaseService {
3133
+ constructor(injector) {
3134
+ super(injector);
3135
+ this.injector = injector;
3136
+ this.appConfigService = this.injector.get(AppConfigService);
3137
+ }
3138
+ fetchData({ key, type, app, localPath }) {
3139
+ return this.request({
3140
+ type: 'get',
3141
+ endpoint: `/search/pp/PP_NDF_UI_Configurations/execute`,
3142
+ queryParams: Object.assign({ ndfuiconfig_type: type, ndfuiconfig_key: key }, (app ? { ndfuiconfig_app: app } : {})),
3143
+ headers: {
3144
+ properties: 'ndfuiconfig,note'
3145
+ }
3146
+ }).pipe(map((response) => { var _a; return (_a = response.entries) === null || _a === void 0 ? void 0 : _a[0]; }), switchMap((entry) => {
3147
+ var _a;
3148
+ const content = this._parseData((_a = entry === null || entry === void 0 ? void 0 : entry.properties) === null || _a === void 0 ? void 0 : _a['note:note']);
3149
+ if (content) {
3150
+ return of({
3151
+ submitted: true,
3152
+ uid: entry.uid,
3153
+ data: {
3154
+ key: key,
3155
+ type: type,
3156
+ app: entry.properties['ndfuiconfig:app'],
3157
+ config: content
3158
+ }
3159
+ });
3160
+ }
3161
+ const config = this.appConfigService.myConfiguration || {};
3162
+ const base = localPath ? ___default.get(config, localPath) : config;
3163
+ const data = cloneDeep(___default.get(base, key));
3164
+ return of({
3165
+ submitted: false,
3166
+ data: {
3167
+ key: key,
3168
+ type: type,
3169
+ app: app,
3170
+ config: data
3171
+ }
3172
+ });
3173
+ }));
3174
+ }
3175
+ _parseData(data) {
3176
+ if (!data) {
3177
+ return null;
3178
+ }
3179
+ try {
3180
+ return JSON.parse(data);
3181
+ }
3182
+ catch (error) {
3183
+ console.warn('Error parsing data:', error);
3184
+ return null;
3185
+ }
3186
+ }
3187
+ }
3188
+ BaseEditorConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseEditorConfigService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
3189
+ BaseEditorConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseEditorConfigService, providedIn: 'root' });
3190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseEditorConfigService, decorators: [{
3191
+ type: Injectable,
3192
+ args: [{ providedIn: 'root' }]
3193
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
3194
+
3132
3195
  /**
3133
3196
  * Transforms URL into async safe URL to be rendered in the view
3134
3197
  *
@@ -19563,13 +19626,13 @@ const CONFIG_EDITOR_MODE = {
19563
19626
  };
19564
19627
 
19565
19628
  const NDF_EDITOR_TYPE = {
19566
- REPORTS: 'reports',
19567
- TABLES: 'tables'
19629
+ REPORTS: 'report',
19630
+ TABLES: 'table'
19568
19631
  };
19569
19632
 
19570
19633
  const PARAMS_KEYS = {
19571
19634
  TYPE: 'type',
19572
- KEY: 'key'
19635
+ KEY: 'key',
19573
19636
  };
19574
19637
 
19575
19638
  class DynamicTableService {
@@ -20334,17 +20397,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
20334
20397
  }]
20335
20398
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
20336
20399
 
20337
- class NdfTableConfigurationService extends HttpBaseService {
20400
+ class NdfTableConfigurationService extends BaseEditorConfigService {
20338
20401
  constructor(injector) {
20339
20402
  super(injector);
20340
20403
  this.injector = injector;
20341
- this.appConfigService = this.injector.get(AppConfigService);
20342
- this.configurationsUrl = 'assets/configs/configuration.json';
20343
20404
  }
20344
- getTableConfiguration(key, path) {
20345
- return of(this.appConfigService.myConfiguration).pipe(map((config) => {
20346
- const base = path ? ___default.get(config, path) : config;
20347
- return cloneDeep(___default.get(base, key));
20405
+ getTableConfiguration(key, localPath) {
20406
+ var _a;
20407
+ return this.fetchData({
20408
+ key,
20409
+ type: 'table',
20410
+ app: (_a = this.environment) === null || _a === void 0 ? void 0 : _a.appKey,
20411
+ localPath
20412
+ }).pipe(map((res) => {
20413
+ var _a;
20414
+ if (!res.submitted) {
20415
+ console.warn('%c \n--------------------------------------------------\n' +
20416
+ 'Unsaved table configuration detected. Open the config editor to save it' +
20417
+ '\n--------------------------------------------------\n', 'font-size: 14px;');
20418
+ }
20419
+ return (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.config;
20348
20420
  }));
20349
20421
  }
20350
20422
  }
@@ -20368,6 +20440,10 @@ class EditorButtonComponent {
20368
20440
  this.editorConfig = (_a = this.configService.myConfiguration) === null || _a === void 0 ? void 0 : _a.configEditor;
20369
20441
  this.isFeatureEnabled = environment.configEditor === 'YES';
20370
20442
  }
20443
+ get isEnabled() {
20444
+ var _a, _b, _c, _d;
20445
+ return ((_a = this.editorConfig) === null || _a === void 0 ? void 0 : _a.enabled) && ((_d = (_c = (_b = this.editorConfig) === null || _b === void 0 ? void 0 : _b.types) === null || _c === void 0 ? void 0 : _c[this.type]) === null || _d === void 0 ? void 0 : _d.enabled);
20446
+ }
20371
20447
  ngOnInit() { }
20372
20448
  navigate() {
20373
20449
  var _a;
@@ -20383,14 +20459,14 @@ class EditorButtonComponent {
20383
20459
  this.router.navigate([url], {
20384
20460
  queryParams: {
20385
20461
  [PARAMS_KEYS.TYPE]: this.type,
20386
- [PARAMS_KEYS.KEY]: this.key
20462
+ [PARAMS_KEYS.KEY]: this.key,
20387
20463
  }
20388
20464
  });
20389
20465
  }
20390
20466
  }
20391
20467
  EditorButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorButtonComponent, deps: [{ token: 'environment' }, { token: i1$5.Router }, { token: PROJECT_BASE_HREF }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component });
20392
20468
  EditorButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorButtonComponent, selector: "app-editor-button", inputs: { type: "type", key: "key" }, ngImport: i0, template: `
20393
- <ng-container *ngIf="isFeatureEnabled && editorConfig?.enabled && editorConfig?.types?.tables?.enabled">
20469
+ <ng-container *ngIf="isFeatureEnabled && isEnabled">
20394
20470
  <button
20395
20471
  mat-stroked-button
20396
20472
  [matTooltip]="'JSON_EDITOR.navigateToEditor' | translate"
@@ -20406,7 +20482,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
20406
20482
  args: [{
20407
20483
  selector: 'app-editor-button',
20408
20484
  template: `
20409
- <ng-container *ngIf="isFeatureEnabled && editorConfig?.enabled && editorConfig?.types?.tables?.enabled">
20485
+ <ng-container *ngIf="isFeatureEnabled && isEnabled">
20410
20486
  <button
20411
20487
  mat-stroked-button
20412
20488
  [matTooltip]="'JSON_EDITOR.navigateToEditor' | translate"
@@ -40655,6 +40731,18 @@ function createColorVariants(color, length, type = 'tint', amount = 43) {
40655
40731
  }
40656
40732
  }
40657
40733
  return variants;
40734
+ }
40735
+ function createConicGradient(chart, colors) {
40736
+ const { ctx, chartArea } = chart;
40737
+ if (!chartArea || !('createConicGradient' in ctx)) {
40738
+ return null;
40739
+ }
40740
+ const { left, width, top, height } = chartArea;
40741
+ //@ts-ignore
40742
+ const gradient = ctx.createConicGradient(0, left + width / 2, top + height / 2);
40743
+ gradient.addColorStop(0, colors === null || colors === void 0 ? void 0 : colors.startColor);
40744
+ gradient.addColorStop(1, colors === null || colors === void 0 ? void 0 : colors.endColor);
40745
+ return gradient;
40658
40746
  }
40659
40747
 
40660
40748
  function flatArray(data) {
@@ -40805,6 +40893,7 @@ var index$2 = /*#__PURE__*/Object.freeze({
40805
40893
  createTint: createTint,
40806
40894
  createShade: createShade,
40807
40895
  createColorVariants: createColorVariants,
40896
+ createConicGradient: createConicGradient,
40808
40897
  flatArray: flatArray,
40809
40898
  isObject: isObject,
40810
40899
  getCssVariable: getCssVariable,
@@ -41276,147 +41365,211 @@ const scrollableLegends = {
41276
41365
  }
41277
41366
  };
41278
41367
 
41368
+ // Configuration constants
41369
+ const LABEL_CONFIG = {
41370
+ minFontSize: 10,
41371
+ maxFontSize: 16,
41372
+ defaultFontSize: 12,
41373
+ textPadding: 8,
41374
+ minAngleForPieLabel: 0.3,
41375
+ arcRadiusMultiplier: {
41376
+ pie: 0.7,
41377
+ doughnut: 0.8
41378
+ },
41379
+ fontSizeCalculation: {
41380
+ percentageDivisor: 3,
41381
+ maxPercentageForFontSize: 20
41382
+ }
41383
+ };
41384
+ // Main plugin
41279
41385
  const chartDataLabels = {
41280
41386
  id: 'chartDataLabels',
41281
41387
  afterDatasetsDraw(chart, args, plugins) {
41282
41388
  var _a;
41283
41389
  const { ctx } = chart;
41284
41390
  ctx.save();
41285
- switch ((_a = chart.config) === null || _a === void 0 ? void 0 : _a.type) {
41286
- case 'bar':
41287
- barChartLabels(chart);
41288
- break;
41289
- case 'pie':
41290
- pieChartLabels(chart);
41291
- break;
41292
- case 'doughnut':
41293
- doughnutChartLabels(chart);
41294
- break;
41391
+ const chartType = (_a = chart.config) === null || _a === void 0 ? void 0 : _a.type;
41392
+ const renderer = getChartRenderer(chartType);
41393
+ if (renderer) {
41394
+ renderer(chart);
41295
41395
  }
41296
41396
  ctx.restore();
41297
41397
  }
41298
41398
  };
41399
+ // Chart type router
41400
+ function getChartRenderer(chartType) {
41401
+ const renderers = {
41402
+ bar: barChartLabels,
41403
+ pie: pieChartLabels,
41404
+ doughnut: doughnutChartLabels
41405
+ };
41406
+ return renderers[chartType];
41407
+ }
41408
+ // Core utility functions
41409
+ function calculatePercentage(value, total) {
41410
+ return total > 0 ? (value / total) * 100 : 0;
41411
+ }
41412
+ function calculateFontSize(percentage) {
41413
+ const { percentageDivisor, maxPercentageForFontSize } = LABEL_CONFIG.fontSizeCalculation;
41414
+ const calculatedSize = Math.min(percentage / percentageDivisor, maxPercentageForFontSize);
41415
+ return Math.max(LABEL_CONFIG.minFontSize, Math.min(calculatedSize, LABEL_CONFIG.maxFontSize));
41416
+ }
41417
+ function getTextMetrics(ctx, text, fontSize) {
41418
+ ctx.font = `normal ${fontSize}px sans-serif`;
41419
+ const metrics = ctx.measureText(text);
41420
+ const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent || LABEL_CONFIG.defaultFontSize;
41421
+ return {
41422
+ width: metrics.width,
41423
+ height
41424
+ };
41425
+ }
41426
+ function prepareCanvasForText(ctx, fontSize, color) {
41427
+ ctx.font = `bold ${fontSize}px sans-serif`;
41428
+ ctx.textAlign = 'center';
41429
+ ctx.textBaseline = 'middle';
41430
+ ctx.fillStyle = color;
41431
+ }
41432
+ function extractLabelData(dataset, index, totalSum, chart) {
41433
+ const value = dataset.data[index];
41434
+ const percentage = calculatePercentage(value, totalSum);
41435
+ const isVisible = chart.getDataVisibility(index);
41436
+ if (!percentage || !isVisible) {
41437
+ return null;
41438
+ }
41439
+ return {
41440
+ text: `${percentage.toFixed(1)}%`,
41441
+ percentage,
41442
+ backgroundColor: Array.isArray(dataset.backgroundColor) ? dataset.backgroundColor[index] : dataset.backgroundColor,
41443
+ isVisible
41444
+ };
41445
+ }
41446
+ // Bar chart implementation
41299
41447
  function barChartLabels(chart) {
41300
41448
  var _a;
41301
- const { ctx, data } = chart;
41449
+ const { ctx } = chart;
41302
41450
  const isHorizontalChart = ((_a = chart.options) === null || _a === void 0 ? void 0 : _a.indexAxis) === 'y';
41303
- const { isHorizontalReversed } = isBarChartReversed(chart);
41451
+ const { isHorizontalReversed } = getBarChartOrientation(chart);
41304
41452
  chart.data.datasets.forEach((dataset, datasetIndex) => {
41305
41453
  const meta = chart.getDatasetMeta(datasetIndex);
41306
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
41454
+ const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
41307
41455
  meta.data.forEach((dataPoint, index) => {
41308
41456
  if (!dataPoint)
41309
41457
  return;
41310
- const percentage = (dataset.data[index] / totalSum) * 100;
41311
- const isVisible = chart.getDataVisibility(index);
41312
- if (!percentage || !isVisible) {
41458
+ const labelData = extractLabelData(dataset, index, totalSum, chart);
41459
+ if (!labelData)
41313
41460
  return;
41314
- }
41315
- const bgColor = dataset.backgroundColor[index];
41316
- const textColor = getTextColor(bgColor);
41317
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
41318
- ctx.textAlign = 'center';
41319
- ctx.textBaseline = 'middle';
41320
- ctx.font = `normal ${fontSize}px sans-serif`;
41321
- ctx.fillStyle = textColor;
41322
- const text = `${percentage.toFixed()}%`;
41323
- const { width, height } = getTextMetrics(ctx, text);
41324
- const textHeight = height || 12;
41325
- const textWidth = width || 30;
41326
- if (isHorizontalChart) {
41327
- if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.width) > 0) {
41328
- const textPadding = 20;
41329
- const offset = textPadding + textWidth <= dataPoint.width ? textWidth : textWidth >= dataPoint.width ? 0 : 10;
41330
- const x = dataPoint.x + (isHorizontalReversed ? offset : -offset);
41331
- ctx.fillStyle = dataPoint.width <= textWidth ? getColor('--chart-value-default-color', '#000') : textColor;
41332
- if (percentage) {
41333
- ctx.fillText(text, x, dataPoint.y);
41334
- }
41335
- }
41336
- }
41337
- else {
41338
- if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.height) > 0) {
41339
- const y = textHeight >= dataPoint.height ? dataPoint.y - 10 : dataPoint.y + 10;
41340
- ctx.fillStyle = textHeight >= dataPoint.height ? getColor('--chart-value-default-color', '#000') : textColor;
41341
- if (!percentage) {
41342
- return;
41343
- }
41344
- ctx.fillText(text, dataPoint.x, y);
41345
- }
41461
+ const fontSize = calculateFontSize(labelData.percentage);
41462
+ const textMetrics = getTextMetrics(ctx, labelData.text, fontSize);
41463
+ const position = calculateBarLabelPosition(dataPoint, textMetrics, isHorizontalChart, isHorizontalReversed, labelData.backgroundColor);
41464
+ if (position) {
41465
+ prepareCanvasForText(ctx, fontSize, position.color);
41466
+ ctx.fillText(labelData.text, position.x, position.y);
41346
41467
  }
41347
41468
  });
41348
41469
  });
41349
41470
  }
41350
- function doughnutChartLabels(chart) {
41351
- const { ctx, data } = chart;
41352
- chart.data.datasets.forEach((dataset, datasetIndex) => {
41353
- const meta = chart.getDatasetMeta(datasetIndex);
41354
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
41355
- meta.data.forEach((arc, index) => {
41356
- if (!arc)
41357
- return;
41358
- const percentage = (dataset.data[index] / totalSum) * 100;
41359
- const isVisible = chart.getDataVisibility(index);
41360
- if (!percentage || !isVisible) {
41361
- return;
41362
- }
41363
- const midAngle = (arc.startAngle + arc.endAngle) / 2;
41364
- const x = arc.x + Math.cos(midAngle) * (arc.outerRadius / 1.2);
41365
- const y = arc.y + Math.sin(midAngle) * (arc.outerRadius / 1.2);
41366
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
41367
- const bgColor = dataset.backgroundColor[index] || '#00000';
41368
- prepareText(ctx, fontSize, bgColor);
41369
- ctx.fillText(`${percentage.toFixed()}%`, x, y);
41370
- });
41371
- });
41471
+ function calculateBarLabelPosition(dataPoint, textMetrics, isHorizontal, isReversed, backgroundColor) {
41472
+ const { textPadding } = LABEL_CONFIG;
41473
+ if (isHorizontal) {
41474
+ const fitsInside = textMetrics.width + textPadding * 2 <= dataPoint.width;
41475
+ if (fitsInside) {
41476
+ return {
41477
+ x: dataPoint.x + (isReversed ? textMetrics.width / 2 : -textMetrics.width / 2),
41478
+ y: dataPoint.y,
41479
+ color: getTextColor(backgroundColor)
41480
+ };
41481
+ }
41482
+ else {
41483
+ return {
41484
+ x: dataPoint.x + (isReversed ? -textMetrics.width / 2 - textPadding : textMetrics.width / 2 + textPadding),
41485
+ y: dataPoint.y,
41486
+ color: getColor('--chart-value-default-color', '#000')
41487
+ };
41488
+ }
41489
+ }
41490
+ else {
41491
+ const fitsInside = textMetrics.height + textPadding * 2 <= dataPoint.height;
41492
+ if (fitsInside) {
41493
+ return {
41494
+ x: dataPoint.x,
41495
+ y: dataPoint.y,
41496
+ color: getTextColor(backgroundColor)
41497
+ };
41498
+ }
41499
+ else {
41500
+ return {
41501
+ x: dataPoint.x,
41502
+ y: dataPoint.y - textMetrics.height / 2 - textPadding,
41503
+ color: getColor('--chart-value-default-color', '#000')
41504
+ };
41505
+ }
41506
+ }
41372
41507
  }
41508
+ // Pie chart implementation
41373
41509
  function pieChartLabels(chart) {
41374
- const { ctx, data } = chart;
41510
+ renderArcLabels(chart, 'pie');
41511
+ }
41512
+ // Doughnut chart implementation
41513
+ function doughnutChartLabels(chart) {
41514
+ renderArcLabels(chart, 'doughnut');
41515
+ }
41516
+ function renderArcLabels(chart, chartType) {
41517
+ const { ctx } = chart;
41375
41518
  chart.data.datasets.forEach((dataset, datasetIndex) => {
41376
41519
  const meta = chart.getDatasetMeta(datasetIndex);
41377
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
41520
+ const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
41378
41521
  meta.data.forEach((arc, index) => {
41379
41522
  if (!arc)
41380
41523
  return;
41381
- const percentage = (dataset.data[index] / totalSum) * 100;
41382
- const isVisible = chart.getDataVisibility(index);
41383
- if (!percentage || !isVisible) {
41524
+ const labelData = extractLabelData(dataset, index, totalSum, chart);
41525
+ if (!labelData)
41384
41526
  return;
41527
+ if (shouldShowArcLabel(arc, labelData.text, chartType)) {
41528
+ const position = calculateArcLabelPosition(arc, chartType);
41529
+ const fontSize = calculateFontSize(labelData.percentage);
41530
+ const textColor = getTextColor(labelData.backgroundColor || '#000000');
41531
+ prepareCanvasForText(ctx, fontSize, textColor);
41532
+ ctx.fillText(labelData.text, position.x, position.y);
41385
41533
  }
41386
- const midAngle = (arc.startAngle + arc.endAngle) / 2;
41387
- const x = arc.x + Math.cos(midAngle) * (arc.outerRadius / 1.5);
41388
- const y = arc.y + Math.sin(midAngle) * (arc.outerRadius / 1.5);
41389
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
41390
- const bgColor = dataset.backgroundColor[index] || '#00000';
41391
- prepareText(ctx, fontSize, bgColor);
41392
- ctx.fillText(`${percentage.toFixed()}%`, x, y);
41393
41534
  });
41394
41535
  });
41395
41536
  }
41396
- function isBarChartReversed(chart) {
41397
- var _a, _b;
41398
- const scales = chart.options.scales;
41399
- const isVerticalReversed = ((_a = scales === null || scales === void 0 ? void 0 : scales.y) === null || _a === void 0 ? void 0 : _a.reverse) === true;
41400
- const isHorizontalReversed = ((_b = scales === null || scales === void 0 ? void 0 : scales.x) === null || _b === void 0 ? void 0 : _b.reverse) === true;
41537
+ function shouldShowArcLabel(arc, text, chartType) {
41538
+ const arcAngle = Math.abs(arc.endAngle - arc.startAngle);
41539
+ // Don't show labels for very small slices
41540
+ if (arcAngle < LABEL_CONFIG.minAngleForPieLabel) {
41541
+ return false;
41542
+ }
41543
+ // For doughnut charts, also check if there's enough radial space
41544
+ if (chartType === 'doughnut') {
41545
+ const radialSpace = arc.outerRadius - arc.innerRadius;
41546
+ return radialSpace >= LABEL_CONFIG.defaultFontSize * 1.5;
41547
+ }
41548
+ return true;
41549
+ }
41550
+ function calculateArcLabelPosition(arc, chartType) {
41551
+ const midAngle = (arc.startAngle + arc.endAngle) / 2;
41552
+ const radiusMultiplier = LABEL_CONFIG.arcRadiusMultiplier[chartType];
41553
+ let radius;
41554
+ if (chartType === 'doughnut') {
41555
+ radius = (arc.outerRadius + arc.innerRadius) / 2;
41556
+ }
41557
+ else {
41558
+ radius = arc.outerRadius * radiusMultiplier;
41559
+ }
41401
41560
  return {
41402
- isVerticalReversed,
41403
- isHorizontalReversed
41561
+ x: arc.x + Math.cos(midAngle) * radius,
41562
+ y: arc.y + Math.sin(midAngle) * radius
41404
41563
  };
41405
41564
  }
41406
- function getTextMetrics(ctx, text) {
41407
- const metrics = ctx.measureText(text);
41408
- const textHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;
41565
+ // Utility functions
41566
+ function getBarChartOrientation(chart) {
41567
+ var _a, _b;
41568
+ const scales = chart.options.scales;
41409
41569
  return {
41410
- height: textHeight,
41411
- width: metrics.width
41570
+ isVerticalReversed: ((_a = scales === null || scales === void 0 ? void 0 : scales.y) === null || _a === void 0 ? void 0 : _a.reverse) === true,
41571
+ isHorizontalReversed: ((_b = scales === null || scales === void 0 ? void 0 : scales.x) === null || _b === void 0 ? void 0 : _b.reverse) === true
41412
41572
  };
41413
- }
41414
- function prepareText(ctx, fontSize, bgColor) {
41415
- const textColor = getTextColor(bgColor || getColor('--chart-value-default-color', '#000'));
41416
- ctx.font = `bold ${fontSize}px sans-serif`;
41417
- ctx.textAlign = 'center';
41418
- ctx.textBaseline = 'middle';
41419
- ctx.fillStyle = textColor;
41420
41573
  }
41421
41574
 
41422
41575
  var index = /*#__PURE__*/Object.freeze({
@@ -41434,9 +41587,9 @@ class BaseChart extends DestroySubject {
41434
41587
  this.injector = injector;
41435
41588
  this._translateService = this.injector.get(TranslateService);
41436
41589
  this._rebuildTriggerSub = new BehaviorSubject(false);
41437
- this._dataSub = new ReplaySubject(null);
41438
41590
  this._configSub = new ReplaySubject(null);
41439
41591
  this._isInitialized = false;
41592
+ this._dataSub = new ReplaySubject(null);
41440
41593
  this.onReady = new EventEmitter();
41441
41594
  this._subscribeToLanguage();
41442
41595
  }
@@ -41631,13 +41784,13 @@ class ChartManagerService {
41631
41784
  });
41632
41785
  this._charts.clear();
41633
41786
  }
41634
- printChart(id, label) {
41787
+ printChart(id, label, options = {}, plugins = []) {
41635
41788
  return __awaiter(this, void 0, void 0, function* () {
41636
41789
  const _chart = this._charts.get(id);
41637
41790
  if (!_chart) {
41638
41791
  return;
41639
41792
  }
41640
- const { chart, destroy: destroyTempChart } = yield this._createHiddenCanvasForExport(_chart, label);
41793
+ const { chart, destroy: destroyTempChart } = yield this._createHiddenCanvasForExport(_chart, label, options, plugins);
41641
41794
  if (!chart) {
41642
41795
  return;
41643
41796
  }
@@ -41649,7 +41802,7 @@ class ChartManagerService {
41649
41802
  destroyTempChart();
41650
41803
  });
41651
41804
  }
41652
- _createHiddenCanvasForExport(chart, label) {
41805
+ _createHiddenCanvasForExport(chart, label, options = {}, plugins = []) {
41653
41806
  const currentLang = this._translateService.currentLang;
41654
41807
  return new Promise((resolve) => {
41655
41808
  var _a;
@@ -41665,9 +41818,13 @@ class ChartManagerService {
41665
41818
  const hiddenChart = new Chart(hiddenCanvas, {
41666
41819
  type: (_a = chart.config) === null || _a === void 0 ? void 0 : _a.type,
41667
41820
  data: chart.config.data,
41668
- options: Object.assign(Object.assign({}, chart.config.options), { animation: false, responsive: false, layout: {
41821
+ options: ___default.merge({}, chart.config.options, {
41822
+ animation: false,
41823
+ responsive: false,
41824
+ layout: {
41669
41825
  padding: padding
41670
- }, plugins: Object.assign(Object.assign({}, chart.config.options.plugins), { title: {
41826
+ },
41827
+ plugins: Object.assign(Object.assign({}, chart.config.options.plugins), { title: {
41671
41828
  display: true,
41672
41829
  text: label,
41673
41830
  padding: {
@@ -41678,8 +41835,9 @@ class ChartManagerService {
41678
41835
  display: true,
41679
41836
  rtl: currentLang == 'ar',
41680
41837
  position: currentLang == 'ar' ? 'right' : 'left'
41681
- } }) }),
41682
- plugins: [
41838
+ } })
41839
+ }, options),
41840
+ plugins: ___default.merge([], [
41683
41841
  chartDataLabels,
41684
41842
  {
41685
41843
  id: 'canvasBackgroundColor',
@@ -41704,7 +41862,7 @@ class ChartManagerService {
41704
41862
  });
41705
41863
  }
41706
41864
  }
41707
- ]
41865
+ ], plugins)
41708
41866
  });
41709
41867
  hiddenChart.render();
41710
41868
  });
@@ -41728,7 +41886,7 @@ class ReportTransformService {
41728
41886
  }
41729
41887
  _extractDataFormats(data) {
41730
41888
  const extractedData = ___default.flatMap(data, (item) => {
41731
- if (Array.isArray(item === null || item === void 0 ? void 0 : item.datasource)) {
41889
+ if ('datasource' in item && Array.isArray(item === null || item === void 0 ? void 0 : item.datasource)) {
41732
41890
  return ___default.filter(item.datasource, (source) => source.dataFormat);
41733
41891
  }
41734
41892
  return [];
@@ -42719,6 +42877,8 @@ class BaseReport extends DestroySubject {
42719
42877
  constructor(injector) {
42720
42878
  super();
42721
42879
  this.injector = injector;
42880
+ this._translateService = this.injector.get(TranslateService);
42881
+ this._cdr = this.injector.get(ChangeDetectorRef);
42722
42882
  this._configMapperService = this.injector.get(ReportConfigMapperService);
42723
42883
  this._configSub = new BehaviorSubject(null);
42724
42884
  this.config$ = this._configSub.asObservable();
@@ -42777,6 +42937,177 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
42777
42937
  type: Output
42778
42938
  }] } });
42779
42939
 
42940
+ class ReportsDialogService {
42941
+ constructor(injector) {
42942
+ this.injector = injector;
42943
+ this._translateService = this.injector.get(TranslateService);
42944
+ this._dialog = this.injector.get(MatDialog);
42945
+ }
42946
+ open(component, options) {
42947
+ const { config, data, criteria, direction } = options;
42948
+ const _a = (config === null || config === void 0 ? void 0 : config.dialog) || {}, { active, width, height, maxWidth } = _a, resetOptions = __rest(_a, ["active", "width", "height", "maxWidth"]);
42949
+ this._dialog.open(component, Object.assign(Object.assign({}, resetOptions), { width: width || '100%', height: height || '100%', maxWidth: maxWidth || '100%', direction: direction, data: {
42950
+ config: config,
42951
+ data: data,
42952
+ title: config.label,
42953
+ direction: direction,
42954
+ criteria: criteria
42955
+ } }));
42956
+ }
42957
+ }
42958
+ ReportsDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDialogService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
42959
+ ReportsDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDialogService, providedIn: 'root' });
42960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDialogService, decorators: [{
42961
+ type: Injectable,
42962
+ args: [{
42963
+ providedIn: 'root'
42964
+ }]
42965
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
42966
+
42967
+ class BaseGraphReport extends BaseReport {
42968
+ constructor() {
42969
+ super(...arguments);
42970
+ this._dialog = this.injector.get(ReportsDialogService);
42971
+ }
42972
+ openGraphDialog(component = GraphChartComponent) {
42973
+ this._dialog.open(component, {
42974
+ config: this.config,
42975
+ data: this.data,
42976
+ criteria: this.criteria,
42977
+ direction: this.direction
42978
+ });
42979
+ }
42980
+ }
42981
+ BaseGraphReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseGraphReport, deps: null, target: i0.ɵɵFactoryTarget.Directive });
42982
+ BaseGraphReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseGraphReport, usesInheritance: true, ngImport: i0 });
42983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseGraphReport, decorators: [{
42984
+ type: Directive
42985
+ }] });
42986
+
42987
+ class BaseCustomReport extends DestroySubject {
42988
+ constructor(injector) {
42989
+ super();
42990
+ this.injector = injector;
42991
+ this._chartHelperService = this.injector.get(ChartManagerService);
42992
+ this.direction = 'rtl';
42993
+ this._dataSub = new ReplaySubject(null);
42994
+ this._criteriaSub = new ReplaySubject(null);
42995
+ this.criteria$ = this._criteriaSub.asObservable();
42996
+ this._configSub = new BehaviorSubject(null);
42997
+ this.config$ = this._configSub.asObservable();
42998
+ }
42999
+ set data(data) {
43000
+ this._data = data;
43001
+ this._dataSub.next(data);
43002
+ }
43003
+ get data() {
43004
+ return this._data;
43005
+ }
43006
+ set criteria(value) {
43007
+ this._criteria = ___default.cloneDeep(value);
43008
+ this._criteriaSub.next(this._criteria);
43009
+ }
43010
+ get criteria() {
43011
+ return this._criteria;
43012
+ }
43013
+ set config(obj) {
43014
+ if (obj) {
43015
+ this._configSub.next(obj);
43016
+ }
43017
+ }
43018
+ get config() {
43019
+ return this._configSub.getValue();
43020
+ }
43021
+ chartReady(chart) {
43022
+ this.chart = chart;
43023
+ this._chartHelperService.setChart(chart);
43024
+ this._printListener = (event) => {
43025
+ this.chart.resize();
43026
+ };
43027
+ window.addEventListener('beforeprint', this._printListener);
43028
+ queueMicrotask(() => {
43029
+ this.chart.resize();
43030
+ });
43031
+ }
43032
+ }
43033
+ BaseCustomReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
43034
+ BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", definition: "definition", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
43035
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, decorators: [{
43036
+ type: Directive
43037
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { direction: [{
43038
+ type: Input
43039
+ }], definition: [{
43040
+ type: Input
43041
+ }], data: [{
43042
+ type: Input
43043
+ }], criteria: [{
43044
+ type: Input
43045
+ }], config: [{
43046
+ type: Input
43047
+ }] } });
43048
+
43049
+ class CustomChartComponent extends BaseCustomReport {
43050
+ constructor() {
43051
+ super(...arguments);
43052
+ this._registeredComponents = this.injector.get(CustomReportsRegistry);
43053
+ }
43054
+ ngOnInit() {
43055
+ var _a, _b;
43056
+ const componentType = this._registeredComponents.getComponent((_a = this.config) === null || _a === void 0 ? void 0 : _a.type);
43057
+ if (!componentType) {
43058
+ console.warn(`No component registered for type: ${(_b = this.config) === null || _b === void 0 ? void 0 : _b.type}`);
43059
+ return;
43060
+ }
43061
+ this._componentRef = this._registeredComponents.renderComponent(componentType.type, this.container);
43062
+ combineLatest([this._dataSub.asObservable(), this._configSub.asObservable(), this._criteriaSub.asObservable()])
43063
+ .pipe(takeUntil(this.destroy$))
43064
+ .subscribe((res) => {
43065
+ this._prepareComponent();
43066
+ });
43067
+ }
43068
+ ngOnChanges(changes) {
43069
+ if (!this._componentRef) {
43070
+ return;
43071
+ }
43072
+ Object.keys(changes).forEach((key) => {
43073
+ this._componentRef.instance[key] = changes[key].currentValue;
43074
+ });
43075
+ this._componentRef.changeDetectorRef.detectChanges();
43076
+ }
43077
+ ngOnDestroy() {
43078
+ if (this._componentRef) {
43079
+ this._componentRef.destroy();
43080
+ }
43081
+ }
43082
+ _prepareComponent() {
43083
+ const instance = this._componentRef.instance;
43084
+ instance.config = this.config;
43085
+ instance.criteria = this.criteria;
43086
+ instance.data = this.data;
43087
+ instance.direction = this.direction;
43088
+ this._componentRef.changeDetectorRef.detectChanges();
43089
+ }
43090
+ print() {
43091
+ const instance = this._componentRef.instance;
43092
+ if (instance) {
43093
+ instance.print();
43094
+ }
43095
+ }
43096
+ }
43097
+ CustomChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
43098
+ CustomChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomChartComponent, selector: "app-custom-chart", viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<ng-container #dynamicContainer></ng-container>', isInline: true, styles: [""] });
43099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomChartComponent, decorators: [{
43100
+ type: Component,
43101
+ args: [{
43102
+ selector: 'app-custom-chart',
43103
+ template: '<ng-container #dynamicContainer></ng-container>',
43104
+ styleUrls: ['./custom-chart.component.scss']
43105
+ }]
43106
+ }], propDecorators: { container: [{
43107
+ type: ViewChild,
43108
+ args: ['dynamicContainer', { read: ViewContainerRef, static: true }]
43109
+ }] } });
43110
+
42780
43111
  class ChartPanel {
42781
43112
  }
42782
43113
  ChartPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ChartPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -42979,6 +43310,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
42979
43310
  type: Output
42980
43311
  }] } });
42981
43312
 
43313
+ class GraphReportComponent extends BaseGraphReport {
43314
+ constructor() {
43315
+ super(...arguments);
43316
+ this.chartType$ = this.config$.pipe(map((config) => {
43317
+ var _a, _b;
43318
+ if (config.chart.type !== 'bar') {
43319
+ return config.chart.type;
43320
+ }
43321
+ return ((_b = (_a = config.chart) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.indexAxis) == 'y' ? CHARTS_TYPES.horizontalBar : CHARTS_TYPES.verticalBar;
43322
+ }));
43323
+ }
43324
+ changeChartType(type) {
43325
+ var _a, _b;
43326
+ const _c = this._configSub.getValue(), { chart } = _c, config = __rest(_c, ["chart"]);
43327
+ const { options } = chart, chartConfig = __rest(chart, ["options"]);
43328
+ if (config.mode !== REPORT_MODE.graph) {
43329
+ return;
43330
+ }
43331
+ const barTypes = {
43332
+ [CHARTS_TYPES.horizontalBar]: 'bar',
43333
+ [CHARTS_TYPES.verticalBar]: 'bar'
43334
+ };
43335
+ const chartType = (_a = barTypes[type]) !== null && _a !== void 0 ? _a : type;
43336
+ this._configSub.next(Object.assign(Object.assign({}, config), { chart: Object.assign(Object.assign({}, chartConfig), { type: chartType, options: (_b = chart.overrides) === null || _b === void 0 ? void 0 : _b[type] }) }));
43337
+ }
43338
+ printChart() {
43339
+ if (this.graphChartComponent) {
43340
+ this.graphChartComponent.printChart();
43341
+ }
43342
+ }
43343
+ }
43344
+ GraphReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
43345
+ GraphReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GraphReportComponent, selector: "app-graph-report", host: { classAttribute: "graph-report flex flex-col flex-grow" }, viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<chart-panel *ngIf=\"config$ | async as config\" class=\"ndf-report chart-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</span>\r\n\t\t<button\r\n\t\t\t*ngIf=\"config?.dialog?.active\"\r\n\t\t\tclass=\"dialog-button print:hidden\"\r\n\t\t\t(click)=\"openGraphDialog()\"\r\n\t\t\t[matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n\t\t>\r\n\t\t\t<mat-icon>fullscreen</mat-icon>\r\n\t\t</button>\r\n\t</chart-panel-header>\r\n\r\n\t<app-graph-chart\r\n\t\t#graphChart\r\n\t\tclass=\"ndf-report__content graph-chart\"\r\n\t\t[config]=\"config\"\r\n\t\t[data]=\"data\"\r\n\t></app-graph-chart>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer flex-wrap\">\r\n\t\t<app-report-actions\r\n\t\t\t[config]=\"config\"\r\n\t\t\t(print)=\"printChart()\"\r\n\t\t\t(navigate)=\"navigate()\"\r\n\t\t\t(open)=\"onOpen.emit(null)\"\r\n\t\t></app-report-actions>\r\n\r\n\t\t<chart-type-selector\r\n [config]=\"config?.typeConfig\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t[type]=\"chartType$ | async\"\r\n\t\t\t(typeChange)=\"changeChartType($event)\"\r\n\t\t></chart-type-selector>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}:host{min-width:0;max-width:100%}\n"], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: ReportActionsComponent, selector: "app-report-actions", inputs: ["config"], outputs: ["navigate", "open", "print"] }, { type: ChartTypeSelectorComponent, selector: "chart-type-selector", inputs: ["direction", "config", "type"], outputs: ["typeChange"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe } });
43346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphReportComponent, decorators: [{
43347
+ type: Component,
43348
+ args: [{
43349
+ selector: 'app-graph-report',
43350
+ templateUrl: './graph-report.component.html',
43351
+ styleUrls: ['./graph-report.component.scss'],
43352
+ host: {
43353
+ class: 'graph-report flex flex-col flex-grow'
43354
+ }
43355
+ }]
43356
+ }], propDecorators: { graphChartComponent: [{
43357
+ type: ViewChild,
43358
+ args: ['graphChart']
43359
+ }] } });
43360
+
42982
43361
  class TimeGroupSelectorComponent {
42983
43362
  constructor() {
42984
43363
  this.groups = this._prepareGroups();
@@ -43120,82 +43499,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
43120
43499
  args: ['graphChart']
43121
43500
  }] } });
43122
43501
 
43123
- class BaseGraphReport extends BaseReport {
43124
- constructor() {
43125
- super(...arguments);
43126
- this._translateService = this.injector.get(TranslateService);
43127
- this._cdr = this.injector.get(ChangeDetectorRef);
43128
- this._dialog = this.injector.get(MatDialog);
43129
- }
43130
- openGraphDialog(_options) {
43131
- var _a;
43132
- const { config, data, component, criteria } = _options || {
43133
- config: this.config,
43134
- data: this.data,
43135
- component: GraphDialogComponent
43136
- };
43137
- const _b = ((_a = this.config) === null || _a === void 0 ? void 0 : _a.dialog) || {}, { active, width, height, maxWidth } = _b, options = __rest(_b, ["active", "width", "height", "maxWidth"]);
43138
- this._dialog.open(component, Object.assign(Object.assign({}, options), { width: width || '100%', height: height || '100%', maxWidth: maxWidth || '100%', direction: this.direction, data: {
43139
- config: config,
43140
- data: data,
43141
- title: config.label,
43142
- direction: this.direction,
43143
- criteria: criteria
43144
- } }));
43145
- }
43146
- }
43147
- BaseGraphReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseGraphReport, deps: null, target: i0.ɵɵFactoryTarget.Directive });
43148
- BaseGraphReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseGraphReport, usesInheritance: true, ngImport: i0 });
43149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseGraphReport, decorators: [{
43150
- type: Directive
43151
- }] });
43152
-
43153
- class GraphReportComponent extends BaseGraphReport {
43154
- constructor() {
43155
- super(...arguments);
43156
- this.chartType$ = this.config$.pipe(map((config) => {
43157
- var _a, _b;
43158
- if (config.chart.type !== 'bar') {
43159
- return config.chart.type;
43160
- }
43161
- return ((_b = (_a = config.chart) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.indexAxis) == 'y' ? CHARTS_TYPES.horizontalBar : CHARTS_TYPES.verticalBar;
43162
- }));
43502
+ class CustomChartDialogComponent {
43503
+ constructor(dialogRef, chart) {
43504
+ this.dialogRef = dialogRef;
43505
+ this.chart = chart;
43163
43506
  }
43164
- changeChartType(type) {
43165
- var _a, _b;
43166
- const _c = this._configSub.getValue(), { chart } = _c, config = __rest(_c, ["chart"]);
43167
- const { options } = chart, chartConfig = __rest(chart, ["options"]);
43168
- if (config.mode !== REPORT_MODE.graph) {
43169
- return;
43170
- }
43171
- const barTypes = {
43172
- [CHARTS_TYPES.horizontalBar]: 'bar',
43173
- [CHARTS_TYPES.verticalBar]: 'bar'
43174
- };
43175
- const chartType = (_a = barTypes[type]) !== null && _a !== void 0 ? _a : type;
43176
- this._configSub.next(Object.assign(Object.assign({}, config), { chart: Object.assign(Object.assign({}, chartConfig), { type: chartType, options: (_b = chart.overrides) === null || _b === void 0 ? void 0 : _b[type] }) }));
43507
+ close() {
43508
+ this.dialogRef.close();
43177
43509
  }
43178
43510
  printChart() {
43179
- if (this.graphChartComponent) {
43180
- this.graphChartComponent.printChart();
43511
+ if (this.customChartComponent) {
43512
+ this.customChartComponent.print();
43181
43513
  }
43182
43514
  }
43183
43515
  }
43184
- GraphReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
43185
- GraphReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: GraphReportComponent, selector: "app-graph-report", host: { classAttribute: "graph-report flex flex-col flex-grow" }, viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<chart-panel *ngIf=\"config$ | async as config\" class=\"ndf-report chart-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</span>\r\n\t\t<button\r\n\t\t\t*ngIf=\"config?.dialog?.active\"\r\n\t\t\tclass=\"dialog-button print:hidden\"\r\n\t\t\t(click)=\"openGraphDialog()\"\r\n\t\t\t[matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n\t\t>\r\n\t\t\t<mat-icon>fullscreen</mat-icon>\r\n\t\t</button>\r\n\t</chart-panel-header>\r\n\r\n\t<app-graph-chart\r\n\t\t#graphChart\r\n\t\tclass=\"ndf-report__content graph-chart\"\r\n\t\t[config]=\"config\"\r\n\t\t[data]=\"data\"\r\n\t></app-graph-chart>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer flex-wrap\">\r\n\t\t<app-report-actions\r\n\t\t\t[config]=\"config\"\r\n\t\t\t(print)=\"printChart()\"\r\n\t\t\t(navigate)=\"navigate()\"\r\n\t\t\t(open)=\"onOpen.emit(null)\"\r\n\t\t></app-report-actions>\r\n\r\n\t\t<chart-type-selector\r\n [config]=\"config?.typeConfig\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t[type]=\"chartType$ | async\"\r\n\t\t\t(typeChange)=\"changeChartType($event)\"\r\n\t\t></chart-type-selector>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}:host{min-width:0;max-width:100%}\n"], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: ReportActionsComponent, selector: "app-report-actions", inputs: ["config"], outputs: ["navigate", "open", "print"] }, { type: ChartTypeSelectorComponent, selector: "chart-type-selector", inputs: ["direction", "config", "type"], outputs: ["typeChange"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe } });
43186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GraphReportComponent, decorators: [{
43516
+ CustomChartDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomChartDialogComponent, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
43517
+ CustomChartDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomChartDialogComponent, selector: "app-custom-chart-dialog", viewQueries: [{ propertyName: "customChartComponent", first: true, predicate: ["customChart"], descendants: true }], ngImport: i0, template: "<ndf-nuxeo-dialog dialogTitle=\"{{ chart?.title | translate }}\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<app-custom-chart\r\n\t\t\t#customChart\r\n\t\t\tclass=\"ndf-report__content graph-chart\"\r\n\t\t\t[config]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t></app-custom-chart>\r\n\t</ng-template>\r\n\t<ng-template #footerTemplate>\r\n\t\t<div class=\"flex gap-x-4\">\r\n\t\t\t<div class=\"chart-actions flex items-center rounded-lg gap-2 p-1\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tclass=\"print-button chart-actions__item rounded\"\r\n\t\t\t\t\t(click)=\"printChart()\"\r\n\t\t\t\t\t[matTooltip]=\"'REPORTS.print' | translate\"\r\n\t\t\t\t\t*ngIf=\"chart.config?.print\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<mat-icon>print</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: [""], components: [{ type: NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "loaderMode"] }, { type: CustomChartComponent, selector: "app-custom-chart" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i1.TranslatePipe } });
43518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomChartDialogComponent, decorators: [{
43187
43519
  type: Component,
43188
43520
  args: [{
43189
- selector: 'app-graph-report',
43190
- templateUrl: './graph-report.component.html',
43191
- styleUrls: ['./graph-report.component.scss'],
43192
- host: {
43193
- class: 'graph-report flex flex-col flex-grow'
43194
- }
43521
+ selector: 'app-custom-chart-dialog',
43522
+ templateUrl: './custom-chart-dialog.component.html',
43523
+ styleUrls: ['./custom-chart-dialog.component.scss']
43195
43524
  }]
43196
- }], propDecorators: { graphChartComponent: [{
43525
+ }], ctorParameters: function () { return [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
43526
+ type: Inject,
43527
+ args: [MAT_DIALOG_DATA]
43528
+ }] }]; }, propDecorators: { customChartComponent: [{
43197
43529
  type: ViewChild,
43198
- args: ['graphChart']
43530
+ args: ['customChart']
43199
43531
  }] } });
43200
43532
 
43201
43533
  class DynamicTimelineReportComponent extends BaseGraphReport {
@@ -43227,11 +43559,7 @@ class DynamicTimelineReportComponent extends BaseGraphReport {
43227
43559
  this._timelineService.changeGroup(group);
43228
43560
  }
43229
43561
  openTimelineDialog() {
43230
- this.openGraphDialog({
43231
- config: this.config,
43232
- data: this.data,
43233
- component: TimelineDialogComponent
43234
- });
43562
+ this.openGraphDialog(TimelineDialogComponent);
43235
43563
  }
43236
43564
  openDetails() {
43237
43565
  this.onOpen.emit(this._timelineService.payload);
@@ -43256,94 +43584,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
43256
43584
  args: ['graphChart']
43257
43585
  }] } });
43258
43586
 
43259
- class BaseCustomReport extends DestroySubject {
43260
- constructor(injector) {
43261
- super();
43262
- this.injector = injector;
43263
- this._chartHelperService = this.injector.get(ChartManagerService);
43264
- this.direction = 'rtl';
43265
- this._criteriaSub = new ReplaySubject(null);
43266
- this.criteria$ = this._criteriaSub.asObservable();
43267
- this._configSub = new BehaviorSubject(null);
43268
- this.config$ = this._configSub.asObservable();
43269
- }
43270
- set criteria(value) {
43271
- this._criteria = ___default.cloneDeep(value);
43272
- this._criteriaSub.next(this._criteria);
43273
- }
43274
- set config(obj) {
43275
- if (obj) {
43276
- this._configSub.next(obj);
43277
- }
43278
- }
43279
- get config() {
43280
- return this._configSub.getValue();
43281
- }
43282
- chartReady(chart) {
43283
- this.chart = chart;
43284
- this._chartHelperService.setChart(chart);
43285
- this._printListener = (event) => {
43286
- this.chart.resize();
43287
- };
43288
- window.addEventListener('beforeprint', this._printListener);
43289
- queueMicrotask(() => {
43290
- this.chart.resize();
43291
- });
43292
- }
43293
- }
43294
- BaseCustomReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
43295
- BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
43296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, decorators: [{
43297
- type: Directive
43298
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { direction: [{
43299
- type: Input
43300
- }], data: [{
43301
- type: Input
43302
- }], criteria: [{
43303
- type: Input
43304
- }], config: [{
43305
- type: Input
43306
- }] } });
43307
-
43308
43587
  class CustomReportComponent extends BaseReport {
43309
43588
  constructor() {
43310
43589
  super(...arguments);
43311
- this._registeredComponents = this.injector.get(CustomReportsRegistry);
43590
+ this._dialog = this.injector.get(ReportsDialogService);
43312
43591
  }
43313
- ngOnInit() {
43314
- var _a, _b;
43315
- const componentType = this._registeredComponents.getComponent((_a = this.config) === null || _a === void 0 ? void 0 : _a.type);
43316
- if (!componentType) {
43317
- console.warn(`No component registered for type: ${(_b = this.config) === null || _b === void 0 ? void 0 : _b.type}`);
43318
- return;
43592
+ printChart() {
43593
+ if (this.customChartComponent) {
43594
+ this.customChartComponent.print();
43319
43595
  }
43320
- this._componentRef = this._registeredComponents.renderComponent(componentType.type, this.container);
43321
- this._prepareComponent();
43322
43596
  }
43323
- ngOnChanges(changes) {
43324
- if (!this._componentRef) {
43325
- return;
43326
- }
43327
- Object.keys(changes).forEach((key) => {
43328
- this._componentRef.instance[key] = changes[key].currentValue;
43597
+ openDialog() {
43598
+ this._dialog.open(CustomChartDialogComponent, {
43599
+ config: this.config,
43600
+ data: this.data,
43601
+ criteria: this.criteria,
43602
+ direction: this.direction
43329
43603
  });
43330
- this._componentRef.changeDetectorRef.markForCheck();
43331
- }
43332
- ngOnDestroy() {
43333
- if (this._componentRef) {
43334
- this._componentRef.destroy();
43335
- }
43336
- }
43337
- _prepareComponent() {
43338
- const instance = this._componentRef.instance;
43339
- instance.config = this.config;
43340
- instance.criteria = this.criteria;
43341
- instance.data = this.data;
43342
- instance.direction = this.direction;
43343
43604
  }
43344
43605
  }
43345
43606
  CustomReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
43346
- CustomReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomReportComponent, selector: "app-custom-report", host: { classAttribute: "custom-report flex flex-col flex-grow" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["dynamicContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<chart-panel *ngIf=\"config$ | async as config\" class=\"ndf-report chart-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</span>\r\n\t\t<!--<button\r\n *ngIf=\"config?.dialog?.active\"\r\n class=\"dialog-button print:hidden\"\r\n (click)=\"openGraphDialog()\"\r\n [matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n >\r\n <mat-icon>fullscreen</mat-icon>\r\n </button>-->\r\n\t</chart-panel-header>\r\n\r\n\t<ng-container #dynamicContainer></ng-container>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer flex-wrap\">\r\n\t\t<app-report-actions\r\n\t\t\t[config]=\"config\"\r\n\t\t\t(print)=\"printChart()\"\r\n\t\t\t(navigate)=\"navigate()\"\r\n\t\t\t(open)=\"onOpen.emit(null)\"\r\n\t\t></app-report-actions>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n", styles: [""], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: ReportActionsComponent, selector: "app-report-actions", inputs: ["config"], outputs: ["navigate", "open", "print"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe } });
43607
+ CustomReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomReportComponent, selector: "app-custom-report", host: { classAttribute: "custom-report flex flex-col flex-grow" }, viewQueries: [{ propertyName: "customChartComponent", first: true, predicate: ["customChart"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<chart-panel *ngIf=\"config$ | async as config\" class=\"ndf-report chart-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config?.label | translate }}\r\n\t\t</span>\r\n\t\t<button\r\n\t\t\t*ngIf=\"config?.dialog?.active\"\r\n\t\t\tclass=\"dialog-button print:hidden\"\r\n\t\t\t(click)=\"openDialog()\"\r\n\t\t\t[matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n\t\t>\r\n\t\t\t<mat-icon>fullscreen</mat-icon>\r\n\t\t</button>\r\n\t</chart-panel-header>\r\n\r\n\t<app-custom-chart\r\n\t\t#customChart\r\n\t\tclass=\"ndf-report__content graph-chart\"\r\n\t\t[config]=\"config\"\r\n\t\t[data]=\"data\"\r\n\t\t[criteria]=\"criteria\"\r\n\t\t[direction]=\"direction\"\r\n\t></app-custom-chart>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer flex-wrap\">\r\n\t\t<app-report-actions\r\n\t\t\t[config]=\"config\"\r\n\t\t\t(print)=\"printChart()\"\r\n\t\t\t(navigate)=\"navigate()\"\r\n\t\t\t(open)=\"onOpen.emit(null)\"\r\n\t\t></app-report-actions>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n", styles: [""], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: CustomChartComponent, selector: "app-custom-chart" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: ReportActionsComponent, selector: "app-report-actions", inputs: ["config"], outputs: ["navigate", "open", "print"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe } });
43347
43608
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomReportComponent, decorators: [{
43348
43609
  type: Component,
43349
43610
  args: [{
@@ -43354,9 +43615,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
43354
43615
  class: 'custom-report flex flex-col flex-grow'
43355
43616
  }
43356
43617
  }]
43357
- }], propDecorators: { container: [{
43618
+ }], propDecorators: { customChartComponent: [{
43358
43619
  type: ViewChild,
43359
- args: ['dynamicContainer', { read: ViewContainerRef, static: true }]
43620
+ args: ['customChart']
43360
43621
  }] } });
43361
43622
 
43362
43623
  function mapToNdfTableConfig(report, details) {
@@ -43413,7 +43674,7 @@ class NdfReportComponent extends DestroySubject {
43413
43674
  }
43414
43675
  }
43415
43676
  NdfReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
43416
- NdfReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportComponent, selector: "app-ndf-report", inputs: { config: "config", direction: "direction", data: "data", criteria: "criteria" }, outputs: { onNavigate: "onNavigate", onOpen: "onOpen" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"config\">\r\n\t<ng-container [ngSwitch]=\"config.mode\">\r\n\t\t<app-graph-report\r\n\t\t\t*ngSwitchCase=\"reportModes.graph\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n [criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onNavigate)=\"onNavigate.emit($event)\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-graph-report>\r\n\t\t<app-dynamic-timeline-report\r\n\t\t\t*ngSwitchCase=\"reportModes.dynamicLine\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n [criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n (onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-dynamic-timeline-report>\r\n\t\t<app-digit-report\r\n\t\t\t*ngSwitchCase=\"reportModes.digit\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n [criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n (onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-digit-report>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}\n"], components: [{ type: GraphReportComponent, selector: "app-graph-report" }, { type: DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report" }, { type: DigitReportComponent, selector: "app-digit-report" }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
43677
+ NdfReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportComponent, selector: "app-ndf-report", inputs: { config: "config", direction: "direction", data: "data", criteria: "criteria" }, outputs: { onNavigate: "onNavigate", onOpen: "onOpen" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"config\">\r\n\t<ng-container [ngSwitch]=\"config.mode\">\r\n\r\n\t\t<app-graph-report\r\n\t\t\t*ngSwitchCase=\"reportModes.graph\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onNavigate)=\"onNavigate.emit($event)\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-graph-report>\r\n\r\n\t\t<app-dynamic-timeline-report\r\n\t\t\t*ngSwitchCase=\"reportModes.dynamicLine\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-dynamic-timeline-report>\r\n\r\n\t\t<app-digit-report\r\n\t\t\t*ngSwitchCase=\"reportModes.digit\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t></app-digit-report>\r\n\r\n\t\t<app-custom-report\r\n\t\t\t*ngSwitchCase=\"reportModes.custom\"\r\n\t\t\t[definition]=\"config\"\r\n\t\t\t[data]=\"data\"\r\n\t\t\t[criteria]=\"criteria\"\r\n\t\t\t[direction]=\"direction\"\r\n\t\t\t(onOpen)=\"onOpen.emit($event)\"\r\n\t\t>\r\n\t\t</app-custom-report>\r\n\t</ng-container>\r\n</ng-container>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}@media print{.chart-actions{display:none}}\n"], components: [{ type: GraphReportComponent, selector: "app-graph-report" }, { type: DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report" }, { type: DigitReportComponent, selector: "app-digit-report" }, { type: CustomReportComponent, selector: "app-custom-report" }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
43417
43678
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportComponent, decorators: [{
43418
43679
  type: Component,
43419
43680
  args: [{
@@ -43692,7 +43953,7 @@ class NdfReportsComponent extends DestroySubject {
43692
43953
  }
43693
43954
  }
43694
43955
  NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: FiltersMapperService }, { token: NdfReportsService }, { token: ChartManagerService }, { token: ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: FilterQueryService }, { token: ReportsStateService }, { token: i1$5.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
43695
- NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"reportsData$ | async as reports\"\r\n\tclass=\"ndf-reports__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n>\r\n\t<div class=\"ndf-reports__panel print:hidden\" *ngIf=\"!!filtersConfig?.fields?.length\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig?.fields\"\r\n\t\t\t[aggregations]=\"aggregations\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\tclass=\"ndf-reports__filters\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\r\n\t<div class=\"ndf-reports__content\" (scrolled)=\"onContentScroll($event)\">\r\n\t\t<div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<app-editor-button\r\n\t\t\t\t*ngIf=\"jsonEditorEnabled && reportsKey\"\r\n\t\t\t\t[key]=\"reportsKey\"\r\n\t\t\t\t[type]=\"editorType\"\r\n\t\t\t></app-editor-button>\r\n\t\t\t<button mat-stroked-button *ngIf=\"config?.options?.print\" class=\"print-button\" (click)=\"printAll()\">\r\n\t\t\t\t<mat-icon> print</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<mat-spinner *ngIf=\"isLoadingResult\" class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n\r\n\t\t<div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n\t\t\t<app-ndf-report\r\n\t\t\t\t*ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n\t\t\t\t[config]=\"config\"\r\n\t\t\t\t[data]=\"reports?.response\"\r\n\t\t\t\t[criteria]=\"filtersParams$ | async\"\r\n\t\t\t\t[direction]=\"direction\"\r\n\t\t\t\t[attr.data-width]=\"config?.layout?.width || 4\"\r\n\t\t\t\t[attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n\t\t\t\t[attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n\t\t\t\t[attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n\t\t\t\t[class.wide]=\"config?.layout?.width >= 6\"\r\n\t\t\t\tclass=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n\t\t\t\t(onNavigate)=\"onNavigate($event)\"\r\n\t\t\t\t(onOpen)=\"openReportDetails($event, config)\"\r\n\t\t\t></app-ndf-report>\r\n\t\t</div>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"ndf-reports__details print:hidden\"\r\n\t\t[class.opened]=\"showDetails\"\r\n\t\t[@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n\t\t(@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n\t>\r\n\t\t<app-ndf-table\r\n\t\t\t*ngIf=\"reportDetails$ | async as report\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\t[customCriteria]=\"filtersParams$ | async\"\r\n\t\t>\r\n\t\t\t<ng-template searchTableTemplate>\r\n\t\t\t\t<div class=\"ndf-reports__details__header flex gap-2\">\r\n\t\t\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-stroked-button class=\"close-button\" (click)=\"closeDetailsPanel()\">\r\n\t\t\t\t\t\t<mat-icon> close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\t{{ report.label | translate }}\r\n\t\t\t\t</h3>\r\n\t\t\t</ng-template>\r\n\t\t</app-ndf-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-margin: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-margin, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{background:#f5f5f5;display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 11mm;--reports-grid-margin-top: 9mm;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i3$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
43956
+ NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"reportsData$ | async as reports\"\r\n\tclass=\"ndf-reports__container\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tndfFluidHeight\r\n>\r\n\t<div class=\"ndf-reports__panel print:hidden\" *ngIf=\"!!filtersConfig?.fields?.length\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig?.fields\"\r\n\t\t\t[aggregations]=\"aggregations\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\tclass=\"ndf-reports__filters\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\r\n\t<div class=\"ndf-reports__content\" (scrolled)=\"onContentScroll($event)\">\r\n\t\t<div class=\"ndf-reports__header flex pt-4 print:hidden\">\r\n\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<app-editor-button\r\n\t\t\t\t*ngIf=\"jsonEditorEnabled && reportsKey\"\r\n\t\t\t\t[key]=\"reportsKey\"\r\n\t\t\t\t[type]=\"editorType\"\r\n\t\t\t></app-editor-button>\r\n\t\t\t<button mat-stroked-button *ngIf=\"config?.options?.print\" class=\"print-button\" (click)=\"printAll()\">\r\n\t\t\t\t<mat-icon> print</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<mat-spinner *ngIf=\"isLoadingResult\" class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n\r\n\t\t<div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n\t\t\t<app-ndf-report\r\n\t\t\t\t*ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n\t\t\t\t[config]=\"config\"\r\n\t\t\t\t[data]=\"reports?.response\"\r\n\t\t\t\t[criteria]=\"filtersParams$ | async\"\r\n\t\t\t\t[direction]=\"direction\"\r\n\t\t\t\t[attr.data-width]=\"config?.layout?.width || 4\"\r\n\t\t\t\t[attr.data-height]=\"config?.layout?.height || 'auto'\"\r\n\t\t\t\t[attr.data-start-column]=\"config?.layout?.columnPosition || 'auto'\"\r\n\t\t\t\t[attr.data-start-row]=\"config?.layout?.rowPosition || 'auto'\"\r\n\t\t\t\t[class.wide]=\"config?.layout?.width >= 6\"\r\n\t\t\t\tclass=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n\t\t\t\t(onNavigate)=\"onNavigate($event)\"\r\n\t\t\t\t(onOpen)=\"openReportDetails($event, config)\"\r\n\t\t\t></app-ndf-report>\r\n\t\t</div>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"ndf-reports__details print:hidden\"\r\n\t\t[class.opened]=\"showDetails\"\r\n\t\t[@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n\t\t(@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n\t>\r\n\t\t<app-ndf-table\r\n\t\t\t*ngIf=\"reportDetails$ | async as report\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\t[customCriteria]=\"filtersParams$ | async\"\r\n\t\t>\r\n\t\t\t<ng-template searchTableTemplate>\r\n\t\t\t\t<div class=\"ndf-reports__details__header flex gap-2\">\r\n\t\t\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-stroked-button class=\"close-button\" (click)=\"closeDetailsPanel()\">\r\n\t\t\t\t\t\t<mat-icon> close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\t{{ report.label | translate }}\r\n\t\t\t\t</h3>\r\n\t\t\t</ng-template>\r\n\t\t</app-ndf-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:var(--ndf-reports-container-overflow, hidden);display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-margin: var(--panel-width)}@media print{.ndf-reports__container{--ndf-reports-container-overflow: visible;height:100%}}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-margin, 1rem);padding-inline-end:var(--ndf-reports-content-pie, 1rem);padding-block:var(--ndf-reports-content-pb, 0 1rem);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative;display:flex;flex-direction:column}@media print{.ndf-reports__content{--ndf-reports-content-overflow-y: visible}}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-start-column=\"1\"]{--col-start: 1}.reports-grid__item[data-start-row=\"1\"]{--row-start: 1}.reports-grid__item[data-height=\"1\"]{--row-span: 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-start-column=\"2\"]{--col-start: 2}.reports-grid__item[data-start-row=\"2\"]{--row-start: 2}.reports-grid__item[data-height=\"2\"]{--row-span: 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-start-column=\"3\"]{--col-start: 3}.reports-grid__item[data-start-row=\"3\"]{--row-start: 3}.reports-grid__item[data-height=\"3\"]{--row-span: 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-start-column=\"4\"]{--col-start: 4}.reports-grid__item[data-start-row=\"4\"]{--row-start: 4}.reports-grid__item[data-height=\"4\"]{--row-span: 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-start-column=\"5\"]{--col-start: 5}.reports-grid__item[data-start-row=\"5\"]{--row-start: 5}.reports-grid__item[data-height=\"5\"]{--row-span: 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-start-column=\"6\"]{--col-start: 6}.reports-grid__item[data-start-row=\"6\"]{--row-start: 6}.reports-grid__item[data-height=\"6\"]{--row-span: 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-start-column=\"7\"]{--col-start: 7}.reports-grid__item[data-start-row=\"7\"]{--row-start: 7}.reports-grid__item[data-height=\"7\"]{--row-span: 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-start-column=\"8\"]{--col-start: 8}.reports-grid__item[data-start-row=\"8\"]{--row-start: 8}.reports-grid__item[data-height=\"8\"]{--row-span: 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-start-column=\"9\"]{--col-start: 9}.reports-grid__item[data-start-row=\"9\"]{--row-start: 9}.reports-grid__item[data-height=\"9\"]{--row-span: 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-start-column=\"10\"]{--col-start: 10}.reports-grid__item[data-start-row=\"10\"]{--row-start: 10}.reports-grid__item[data-height=\"10\"]{--row-span: 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-start-column=\"11\"]{--col-start: 11}.reports-grid__item[data-start-row=\"11\"]{--row-start: 11}.reports-grid__item[data-height=\"11\"]{--row-span: 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}.reports-grid__item[data-start-column=\"12\"]{--col-start: 12}.reports-grid__item[data-start-row=\"12\"]{--row-start: 12}.reports-grid__item[data-height=\"12\"]{--row-span: 12}@media screen{.reports-grid__item{grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--row-start, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 11mm;--reports-grid-margin-top: 9mm;--rg-columns: repeat(2, 1fr)}.reports-grid__item{--col-start: auto;--col-span: span 1;border:1px solid #f5f5f5;border-radius:var(--cp-radius, 1rem);page-break-inside:avoid;break-inside:avoid-page}}@media screen and (max-width: 1199px){.reports-grid__item[data-width=\"1\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"2\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"3\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"4\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"5\"]{--col-start: auto;--col-span: span 6}.reports-grid__item[data-width=\"6\"]{--col-start: auto;--col-span: span 6}.reports-grid__item.wide{--col-start: 1;--col-span: -1}}@media screen and (max-width: 767px){.reports-grid__item[data-width]{--col-start: 1;--col-span: -1}}\n"], components: [{ type: FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i3$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
43696
43957
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, decorators: [{
43697
43958
  type: Component,
43698
43959
  args: [{
@@ -43741,7 +44002,7 @@ NdfReportsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
43741
44002
  DynamicTimelineReportComponent,
43742
44003
  TimeGroupSelectorComponent,
43743
44004
  GraphDialogComponent,
43744
- TimelineDialogComponent, ScrollableDivDirective, GraphChartComponent, DigitChartComponent, ReportActionsComponent, CustomReportComponent], imports: [CommonModule,
44005
+ TimelineDialogComponent, ScrollableDivDirective, GraphChartComponent, DigitChartComponent, ReportActionsComponent, CustomReportComponent, CustomChartComponent, CustomChartDialogComponent], imports: [CommonModule,
43745
44006
  TranslateModule,
43746
44007
  MatMenuModule,
43747
44008
  MatIconModule,
@@ -43786,7 +44047,7 @@ NdfReportsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
43786
44047
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsModule, decorators: [{
43787
44048
  type: NgModule,
43788
44049
  args: [{
43789
- declarations: [CONTAINERS, COMPONENTS, DIRECTIVES, CHARTS, ReportActionsComponent, CustomReportComponent],
44050
+ declarations: [CONTAINERS, COMPONENTS, DIRECTIVES, CHARTS, ReportActionsComponent, CustomReportComponent, CustomChartComponent, CustomChartDialogComponent],
43790
44051
  imports: [
43791
44052
  CommonModule,
43792
44053
  TranslateModule,
@@ -43813,1350 +44074,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
43813
44074
  }]
43814
44075
  }] });
43815
44076
 
43816
- const TABLE_DATA = {
43817
- options: {
43818
- columns: {
43819
- toggle: true,
43820
- sortable: {
43821
- enabled: true,
43822
- },
43823
- },
43824
- filters: {
43825
- mode: 'payload',
43826
- reload: {
43827
- strategy: 'always',
43828
- },
43829
- panel: {
43830
- visible: true,
43831
- toggleButton: true,
43832
- },
43833
- fields: [
43834
- {
43835
- type: 'aggregation',
43836
- config: {
43837
- label: 'rmAdvancedSearch.recDefintionSystemName',
43838
- aggregation: 'RecordDefinition_systemName_agg',
43839
- fieldKey: 'recdef:systemName',
43840
- dataTransformer: 'system',
43841
- order: 0,
43842
- sendMode: 'queryParam',
43843
- render: {
43844
- type: 'checkbox',
43845
- options: {
43846
- showTotal: true,
43847
- },
43848
- },
43849
- },
43850
- },
43851
- {
43852
- type: 'aggregation',
43853
- config: {
43854
- label: 'rmAdvancedSearch.gdocCategoryHierarchyCode',
43855
- aggregation: 'generaldocument_categoryHierarchyCode_agg',
43856
- fieldKey: 'gdoc:categoryHierarchyCode',
43857
- dataTransformer: 'subject',
43858
- order: 0,
43859
- sendMode: 'queryParam',
43860
- valueType: 'property',
43861
- render: {
43862
- type: 'checkbox',
43863
- options: {
43864
- showTotal: true,
43865
- },
43866
- },
43867
- },
43868
- },
43869
- {
43870
- type: 'aggregation',
43871
- config: {
43872
- label: 'rmAdvancedSearch.gdocCategoryHierarchyCode1',
43873
- aggregation: 'generaldocument_categoryHierarchyCode_1_agg',
43874
- fieldKey: 'gdoc:categoryHierarchyCode__1',
43875
- order: 0,
43876
- sendMode: 'queryParam',
43877
- valueType: 'property',
43878
- dataTransformer: 'subject',
43879
- render: {
43880
- type: 'checkbox',
43881
- options: {
43882
- showTotal: true,
43883
- collapse: true,
43884
- },
43885
- },
43886
- },
43887
- },
43888
- {
43889
- type: 'aggregation',
43890
- config: {
43891
- label: 'rmAdvancedSearch.gdocDocumentTypeCode',
43892
- aggregation: 'generaldocument_documentTypeCode_agg',
43893
- fieldKey: 'gdoc:documentTypeCode',
43894
- dataTransformer: 'documentTypee',
43895
- sendMode: 'queryParam',
43896
- render: {
43897
- type: 'checkbox',
43898
- options: {
43899
- showTotal: true,
43900
- filter: true,
43901
- sort: true,
43902
- collapse: true,
43903
- },
43904
- },
43905
- },
43906
- },
43907
- {
43908
- type: 'predicate',
43909
- config: {
43910
- label: 'FILTERS.gdocDocumentSubject',
43911
- fieldKey: 'gdoc:documentSubject',
43912
- sendMode: 'payload',
43913
- valueType: 'valueObject',
43914
- render: {
43915
- type: 'input',
43916
- options: {
43917
- delay: 300,
43918
- suffix: {
43919
- dropdown: {
43920
- items: [
43921
- {
43922
- key: 'OPERATORS.equals',
43923
- value: '=',
43924
- },
43925
- {
43926
- key: 'OPERATORS.notEquals',
43927
- value: '!=',
43928
- },
43929
- {
43930
- key: 'OPERATORS.like',
43931
- value: 'LIKE',
43932
- },
43933
- {
43934
- key: 'OPERATORS.iLike',
43935
- value: 'ILIKE',
43936
- },
43937
- ],
43938
- },
43939
- },
43940
- },
43941
- },
43942
- },
43943
- },
43944
- {
43945
- type: 'predicate',
43946
- config: {
43947
- label: 'FILTERS.dcTitle',
43948
- fieldKey: 'dc:title',
43949
- sendMode: 'payload',
43950
- valueType: 'valueObject',
43951
- render: {
43952
- type: 'input',
43953
- options: {
43954
- delay: 300,
43955
- suffix: {
43956
- dropdown: {
43957
- items: [
43958
- {
43959
- key: 'OPERATORS.equals',
43960
- value: '=',
43961
- },
43962
- {
43963
- key: 'OPERATORS.notEquals',
43964
- value: '!=',
43965
- },
43966
- {
43967
- key: 'OPERATORS.like',
43968
- value: 'LIKE',
43969
- },
43970
- {
43971
- key: 'OPERATORS.iLike',
43972
- value: 'ILIKE',
43973
- },
43974
- ],
43975
- },
43976
- },
43977
- },
43978
- },
43979
- },
43980
- },
43981
- {
43982
- type: 'predicate',
43983
- config: {
43984
- label: 'FILTERS.documentNumber',
43985
- fieldKey: 'gdoc:documentReferenceNumber',
43986
- sendMode: 'payload',
43987
- valueType: 'valueObject',
43988
- render: {
43989
- type: 'input',
43990
- options: {
43991
- debounceTime: 300,
43992
- suffix: {
43993
- dropdown: {
43994
- items: [
43995
- {
43996
- key: 'OPERATORS.equals',
43997
- value: '=',
43998
- },
43999
- {
44000
- key: 'OPERATORS.notEquals',
44001
- value: '!=',
44002
- },
44003
- {
44004
- key: 'OPERATORS.like',
44005
- value: 'LIKE',
44006
- },
44007
- {
44008
- key: 'OPERATORS.iLike',
44009
- value: 'ILIKE',
44010
- },
44011
- ],
44012
- },
44013
- },
44014
- },
44015
- },
44016
- },
44017
- },
44018
- {
44019
- type: 'predicate',
44020
- config: {
44021
- label: 'FILTERS.recUnifiedNumber',
44022
- fieldKey: 'recdef:unifiedNumber',
44023
- sendMode: 'payload',
44024
- valueType: 'valueObject',
44025
- render: {
44026
- type: 'input',
44027
- options: {
44028
- delay: 300,
44029
- suffix: {
44030
- dropdown: {
44031
- items: [
44032
- {
44033
- key: 'OPERATORS.equals',
44034
- value: '=',
44035
- },
44036
- {
44037
- key: 'OPERATORS.notEquals',
44038
- value: '!=',
44039
- },
44040
- {
44041
- key: 'OPERATORS.like',
44042
- value: 'LIKE',
44043
- },
44044
- {
44045
- key: 'OPERATORS.iLike',
44046
- value: 'ILIKE',
44047
- },
44048
- ],
44049
- },
44050
- },
44051
- },
44052
- },
44053
- },
44054
- },
44055
- {
44056
- type: 'aggregation',
44057
- config: {
44058
- label: 'FILTERS.recPhysicalOriginal',
44059
- aggregation: 'RecordDefinition_physicalOriginal_agg',
44060
- fieldKey: 'recdef:physicalOriginal',
44061
- prefix: 'FILTERS.BUCKETS.physicalOriginal.',
44062
- sendMode: 'queryParam',
44063
- render: {
44064
- type: 'checkbox',
44065
- options: {
44066
- showTotal: true,
44067
- },
44068
- },
44069
- },
44070
- },
44071
- {
44072
- type: 'aggregation',
44073
- config: {
44074
- label: 'rmAdvancedSearch.gdocSecrecyLevel',
44075
- aggregation: 'generaldocument_secrecyLevel_agg',
44076
- fieldKey: 'gdoc:secrecyLevel',
44077
- prefix: 'search.buckets.',
44078
- sendMode: 'queryParam',
44079
- render: {
44080
- type: 'checkbox',
44081
- options: {
44082
- showTotal: true,
44083
- },
44084
- },
44085
- },
44086
- },
44087
- {
44088
- type: 'predicate',
44089
- config: {
44090
- label: 'FILTERS.tags',
44091
- fieldKey: 'ecm:tag',
44092
- sendMode: 'payload',
44093
- valueType: 'valueObject',
44094
- render: {
44095
- type: 'input',
44096
- options: {
44097
- delay: 300,
44098
- suffix: {
44099
- dropdown: {
44100
- items: [
44101
- {
44102
- key: 'OPERATORS.equals',
44103
- value: '=',
44104
- },
44105
- {
44106
- key: 'OPERATORS.notEquals',
44107
- value: '!=',
44108
- },
44109
- {
44110
- key: 'OPERATORS.like',
44111
- value: 'LIKE',
44112
- },
44113
- {
44114
- key: 'OPERATORS.iLike',
44115
- value: 'ILIKE',
44116
- },
44117
- ],
44118
- },
44119
- },
44120
- },
44121
- },
44122
- },
44123
- },
44124
- {
44125
- type: 'aggregation',
44126
- config: {
44127
- label: 'FILTERS.priority',
44128
- aggregation: 'generaldocument_importance_agg',
44129
- fieldKey: 'gdoc:importance',
44130
- prefix: 'search.buckets.',
44131
- sendMode: 'queryParam',
44132
- render: {
44133
- type: 'checkbox',
44134
- options: {
44135
- showTotal: true,
44136
- },
44137
- },
44138
- },
44139
- },
44140
- {
44141
- type: 'aggregation',
44142
- config: {
44143
- label: 'FILTERS.dcCreated',
44144
- aggregation: 'dublincore_created_agg',
44145
- fieldKey: 'dc:created',
44146
- prefix: 'search.buckets.',
44147
- sendMode: 'queryParam',
44148
- tooltip: {
44149
- type: 'date',
44150
- properties: {
44151
- from: 'from',
44152
- to: 'to',
44153
- },
44154
- },
44155
- render: {
44156
- type: 'checkbox',
44157
- options: {
44158
- showTotal: true,
44159
- },
44160
- },
44161
- },
44162
- },
44163
- {
44164
- type: 'aggregation',
44165
- config: {
44166
- label: 'rmAdvancedSearch.gdocGDocumentDate',
44167
- aggregation: 'generaldocument_gDocumentDate_agg',
44168
- fieldKey: 'gdoc:gDocumentDate',
44169
- prefix: 'search.buckets.',
44170
- sendMode: 'custom',
44171
- valueType: 'valueObject',
44172
- render: {
44173
- type: 'dateList',
44174
- view: 'list',
44175
- options: {
44176
- showTotal: true,
44177
- minMax: true,
44178
- },
44179
- },
44180
- },
44181
- },
44182
- {
44183
- type: 'aggregation',
44184
- config: {
44185
- label: 'rmAdvancedSearch.saveTypee',
44186
- aggregation: 'RetentionInfo_saveTypee_agg',
44187
- fieldKey: 'retentioninfo:saveTypee',
44188
- prefix: 'FILTERS.BUCKETS.physicalOriginal.',
44189
- sendMode: 'queryParam',
44190
- render: {
44191
- type: 'checkbox',
44192
- options: {
44193
- showTotal: true,
44194
- },
44195
- },
44196
- },
44197
- },
44198
- {
44199
- type: 'aggregation',
44200
- config: {
44201
- label: 'rmAdvancedSearch.retentionPlan',
44202
- aggregation: 'RetentionInfo_status_agg',
44203
- fieldKey: 'retentioninfo:status',
44204
- prefix: 'FILTERS.BUCKETS.physicalOriginal.',
44205
- sendMode: 'queryParam',
44206
- render: {
44207
- type: 'checkbox',
44208
- options: {
44209
- showTotal: true,
44210
- },
44211
- },
44212
- },
44213
- },
44214
- {
44215
- type: 'aggregation',
44216
- config: {
44217
- label: 'FILTERS.startDateActiveRetention',
44218
- aggregation: 'RetentionInfo_activeRetentionStartDateHijri_agg',
44219
- fieldKey: 'retentioninfo:activeRetentionStartDateHijri',
44220
- prefix: 'search.buckets.',
44221
- sendMode: 'queryParam',
44222
- permission: 'hasRoleOnArchiveOrLoan',
44223
- tooltip: {
44224
- type: 'date',
44225
- properties: {
44226
- from: 'from',
44227
- to: 'to',
44228
- },
44229
- },
44230
- render: {
44231
- type: 'checkbox',
44232
- options: {
44233
- showTotal: true,
44234
- },
44235
- },
44236
- },
44237
- },
44238
- {
44239
- type: 'aggregation',
44240
- config: {
44241
- label: 'FILTERS.endDateActiveRetention',
44242
- aggregation: 'RetentionInfo_activeRetentionEndDateHijri_agg',
44243
- fieldKey: 'retentioninfo:activeRetentionEndDateHijri',
44244
- prefix: 'search.buckets.',
44245
- sendMode: 'queryParam',
44246
- permission: 'hasRoleOnArchiveOrLoan',
44247
- tooltip: {
44248
- type: 'date',
44249
- properties: {
44250
- from: 'from',
44251
- to: 'to',
44252
- },
44253
- },
44254
- render: {
44255
- type: 'checkbox',
44256
- options: {
44257
- showTotal: true,
44258
- },
44259
- },
44260
- },
44261
- },
44262
- {
44263
- type: 'aggregation',
44264
- config: {
44265
- label: 'FILTERS.endDateRetention',
44266
- aggregation: 'RetentionInfo_retentionEndDateHijri_agg',
44267
- fieldKey: 'retentioninfo:retentionEndDateHijri',
44268
- prefix: 'search.buckets.',
44269
- sendMode: 'queryParam',
44270
- permission: 'hasRoleOnArchiveOrLoan',
44271
- tooltip: {
44272
- type: 'date',
44273
- properties: {
44274
- from: 'from',
44275
- to: 'to',
44276
- },
44277
- },
44278
- render: {
44279
- type: 'checkbox',
44280
- options: {
44281
- showTotal: true,
44282
- },
44283
- },
44284
- },
44285
- },
44286
- {
44287
- type: 'aggregation',
44288
- config: {
44289
- label: 'rmAdvancedSearch.locationReference_site_agg',
44290
- aggregation: 'LocationReferenceSchema_site_agg',
44291
- permission: 'hasRoleOnArchiveOrLoan',
44292
- fieldKey: 'locRef:site',
44293
- order: 0,
44294
- sendMode: 'queryParam',
44295
- valueType: 'property',
44296
- dataTransformer: 'site',
44297
- render: {
44298
- type: 'checkbox',
44299
- options: {
44300
- showTotal: true,
44301
- },
44302
- },
44303
- },
44304
- },
44305
- {
44306
- type: 'aggregation',
44307
- config: {
44308
- label: 'rmAdvancedSearch.locationReference_store_agg',
44309
- aggregation: 'LocationReferenceSchema_store_agg',
44310
- fieldKey: 'locRef:store',
44311
- permission: 'hasRoleOnArchiveOrLoan',
44312
- order: 0,
44313
- sendMode: 'queryParam',
44314
- valueType: 'property',
44315
- dataTransformer: 'store',
44316
- render: {
44317
- type: 'checkbox',
44318
- options: {
44319
- showTotal: true,
44320
- },
44321
- },
44322
- },
44323
- },
44324
- {
44325
- type: 'predicate',
44326
- config: {
44327
- label: 'rmAdvancedSearch.locationReference_box',
44328
- fieldKey: 'locRef:boxCode',
44329
- permission: 'hasRoleOnArchiveOrLoan',
44330
- sendMode: 'payload',
44331
- valueType: 'valueObject',
44332
- render: {
44333
- type: 'input',
44334
- options: {
44335
- debounceTime: 400,
44336
- mask: {
44337
- mask: '00-00-00-00-000',
44338
- dropSpecialCharacters: false,
44339
- showMaskTyped: true,
44340
- },
44341
- suffix: {
44342
- dropdown: {
44343
- items: [
44344
- {
44345
- key: 'OPERATORS.equals',
44346
- value: '=',
44347
- },
44348
- {
44349
- key: 'OPERATORS.notEquals',
44350
- value: '!=',
44351
- },
44352
- {
44353
- key: 'OPERATORS.like',
44354
- value: 'LIKE',
44355
- },
44356
- {
44357
- key: 'OPERATORS.iLike',
44358
- value: 'ILIKE',
44359
- },
44360
- ],
44361
- },
44362
- },
44363
- },
44364
- },
44365
- },
44366
- },
44367
- ],
44368
- },
44369
- search: {
44370
- fieldKey: 'ecm:fulltext',
44371
- searchMode: 'triggered',
44372
- suffix: {
44373
- dialog: {
44374
- title: 'INFO.dialogTitle',
44375
- content: [
44376
- '##INFO.query_sequence##',
44377
- '##INFO.query_and##',
44378
- '##INFO.query_negation##',
44379
- '##INFO.query_prefix##',
44380
- '##INFO.query_historical##',
44381
- '##INFO.query_or##',
44382
- '##INFO.query_phrase##',
44383
- ],
44384
- },
44385
- },
44386
- },
44387
- tableMode: {
44388
- mode: 'list',
44389
- componentName: 'rms.components.advancedSearchCard',
44390
- toggleMode: true,
44391
- availableMode: [
44392
- {
44393
- value: 'list',
44394
- icon: 'table_rows',
44395
- },
44396
- {
44397
- value: 'custom',
44398
- icon: 'rectangle',
44399
- },
44400
- ],
44401
- },
44402
- },
44403
- scrollbarH: true,
44404
- pageNumber: 1,
44405
- pageSize: 10,
44406
- prefix: 'LISTING.',
44407
- pageProvider: 'PP_RM_Record',
44408
- customUrl: {
44409
- url: '/api/v1/custom-search/pp/PP_RM_Record/execute',
44410
- method: 'POST',
44411
- },
44412
- headers: {
44413
- properties: 'dublincore, file, generaldocument, RecordDefinition,RetentionInfo, LocationReferenceSchema, facetedTag',
44414
- },
44415
- quickFilters: 'After Archiving',
44416
- fullWidth: 'auto',
44417
- fields: {
44418
- systemName: 'recdef:systemName',
44419
- categoryHierarchyCode: 'gdoc:categoryHierarchyCode',
44420
- docTypee: 'gdoc:documentTypeCode',
44421
- subject: 'gdoc:documentSubject',
44422
- title: 'dc:title',
44423
- docNum: 'gdoc:documentReferenceNumber',
44424
- unifiedNumber: 'recdef:unifiedNumber',
44425
- physicalOriginal: 'recdef:physicalOriginal',
44426
- secrecyLevel: 'gdoc:secrecyLevel',
44427
- tags: 'ecm:tag',
44428
- importance: 'gdoc:importance',
44429
- created: 'dc:created',
44430
- gdocumentDate: 'gdoc:gDocumentDate',
44431
- saveTypee: 'retentioninfo:saveTypee',
44432
- retentioninfoStatus: 'retentioninfo:status',
44433
- activeRetentionStartDateHijri: 'retentioninfo:activeRetentionStartDateHijri',
44434
- activeRetentionEndDateHijri: 'retentioninfo:activeRetentionEndDateHijri',
44435
- retentionEndDateHijri: 'retentioninfo:retentionEndDateHijri',
44436
- site: 'locRef:site',
44437
- store: 'locRef:store',
44438
- box: 'locRef:boxCode',
44439
- file: 'file:content',
44440
- },
44441
- columns: [
44442
- {
44443
- name: 'systemName',
44444
- prop: 'properties.systemName',
44445
- display: true,
44446
- type: 'custom',
44447
- template: 'common.components.systemName',
44448
- translatePrefix: 'search.buckets',
44449
- isOrginalKey: true,
44450
- sortable: false,
44451
- headerClass: 'recdef:systemName',
44452
- defaultVisible: true,
44453
- minWidth: 150,
44454
- },
44455
- {
44456
- name: 'categoryHierarchyCode',
44457
- prop: 'properties.categoryHierarchyCode',
44458
- display: true,
44459
- type: 'custom',
44460
- template: 'rms.components.mainAndSecondaryCategory',
44461
- mainCategory: true,
44462
- sortable: true,
44463
- headerClass: 'gdoc:categoryHierarchyCode',
44464
- defaultVisible: true,
44465
- },
44466
- {
44467
- name: 'categoryHierarchyCode1',
44468
- prop: 'properties.categoryHierarchyCode',
44469
- display: true,
44470
- type: 'custom',
44471
- template: 'rms.components.mainAndSecondaryCategory',
44472
- mainCategory: false,
44473
- sortable: true,
44474
- headerClass: 'gdoc:categoryHierarchyCode',
44475
- defaultVisible: true,
44476
- },
44477
- {
44478
- name: 'Doc_Type',
44479
- prop: 'properties.docTypee',
44480
- display: true,
44481
- template: 'common.components.documentType',
44482
- type: 'custom',
44483
- headerClass: 'gdoc:documentTypeCode',
44484
- defaultVisible: true,
44485
- },
44486
- {
44487
- name: 'Doc_subject',
44488
- prop: 'properties.subject',
44489
- display: true,
44490
- type: 'text',
44491
- headerClass: 'gdoc:documentSubject',
44492
- defaultVisible: true,
44493
- },
44494
- {
44495
- name: 'Doc_Name',
44496
- prop: 'properties.title',
44497
- display: true,
44498
- type: 'custom',
44499
- template: 'common.components.titleWithIcon',
44500
- sortable: true,
44501
- headerClass: 'dc:title',
44502
- defaultVisible: false,
44503
- },
44504
- {
44505
- name: 'Doc_RefernceNum',
44506
- prop: 'properties.docNum',
44507
- display: true,
44508
- type: 'text',
44509
- sortable: true,
44510
- headerClass: 'gdoc:documentReferenceNumber',
44511
- defaultVisible: true,
44512
- },
44513
- {
44514
- name: 'unifiedNumber',
44515
- prop: 'properties.unifiedNumber',
44516
- display: true,
44517
- type: 'text',
44518
- sortable: true,
44519
- headerClass: 'recdef:unifiedNumber',
44520
- defaultVisible: true,
44521
- },
44522
- {
44523
- name: 'physicalOriginal',
44524
- prop: 'properties.physicalOriginal',
44525
- display: true,
44526
- type: 'custom',
44527
- template: 'rms.components.TranslatedValueColumn',
44528
- translatePrefix: 'rmDocumentUpload.hasPhysicalOriginal',
44529
- isBooleanValue: true,
44530
- sortable: false,
44531
- headerClass: 'recdef:physicalOriginal',
44532
- defaultVisible: false,
44533
- minWidth: 150,
44534
- },
44535
- {
44536
- name: 'secrecyLevel',
44537
- prop: 'properties.secrecyLevel',
44538
- display: true,
44539
- type: 'custom',
44540
- template: 'common.components.coloredSecrecyLevel',
44541
- headerClass: 'gdoc:secrecyLevel',
44542
- defaultVisible: true,
44543
- minWidth: 150,
44544
- },
44545
- {
44546
- name: 'tags',
44547
- prop: 'properties.tags',
44548
- display: true,
44549
- type: 'custom',
44550
- template: 'common.components.tags',
44551
- translatePrefix: 'search.buckets',
44552
- isOrginalKey: true,
44553
- sortable: false,
44554
- headerClass: 'ecm:tag',
44555
- defaultVisible: false,
44556
- minWidth: 150,
44557
- },
44558
- {
44559
- name: 'importance',
44560
- prop: 'properties.importance',
44561
- display: true,
44562
- translatePrefix: 'search.buckets',
44563
- type: 'custom',
44564
- template: 'rms.components.TranslatedValueColumn',
44565
- sortable: true,
44566
- isOrginalKey: true,
44567
- headerClass: 'gdoc:importance',
44568
- defaultVisible: false,
44569
- },
44570
- {
44571
- name: 'date_created',
44572
- prop: 'properties.created',
44573
- display: true,
44574
- type: 'custom',
44575
- template: 'common.components.dateWithoutTime',
44576
- headerClass: 'dc:created',
44577
- defaultVisible: false,
44578
- minWidth: 150,
44579
- },
44580
- {
44581
- name: 'docDate',
44582
- prop: 'properties.gdocumentDate',
44583
- display: true,
44584
- type: 'custom',
44585
- template: 'common.components.dateWithoutTime',
44586
- headerClass: 'gdoc:gDocumentDate',
44587
- defaultVisible: false,
44588
- },
44589
- {
44590
- name: 'retentionType',
44591
- prop: 'properties.saveTypee',
44592
- display: true,
44593
- translatePrefix: 'search.buckets',
44594
- type: 'custom',
44595
- template: 'rms.components.TranslatedValueColumn',
44596
- headerClass: 'retentioninfo:saveTypee',
44597
- defaultVisible: false,
44598
- },
44599
- {
44600
- name: 'retentioninfoStatus',
44601
- prop: 'properties.retentioninfoStatus',
44602
- display: true,
44603
- translatePrefix: 'search.buckets',
44604
- type: 'custom',
44605
- template: 'rms.components.TranslatedValueColumn',
44606
- headerClass: 'retentioninfo:status',
44607
- defaultVisible: false,
44608
- },
44609
- {
44610
- name: 'activeRetentionStartDateHijri',
44611
- prop: 'properties.activeRetentionStartDateHijri',
44612
- display: false,
44613
- type: 'custom',
44614
- template: 'common.components.hijri',
44615
- headerClass: 'retentioninfo:activeRetentionStartDateHijri',
44616
- defaultVisible: false,
44617
- },
44618
- {
44619
- name: 'activeRetentionEndDateHijri',
44620
- prop: 'properties.activeRetentionEndDateHijri',
44621
- display: false,
44622
- type: 'custom',
44623
- template: 'common.components.hijri',
44624
- headerClass: 'retentioninfo:activeRetentionEndDateHijri',
44625
- defaultVisible: false,
44626
- },
44627
- {
44628
- name: 'retentionEndDateHijri',
44629
- prop: 'properties.retentionEndDateHijri',
44630
- display: false,
44631
- type: 'custom',
44632
- template: 'common.components.hijri',
44633
- headerClass: 'retentioninfo:retentionEndDateHijri',
44634
- defaultVisible: true,
44635
- },
44636
- {
44637
- name: 'site',
44638
- prop: 'properties.site',
44639
- display: false,
44640
- type: 'custom',
44641
- template: 'common.components.site',
44642
- headerClass: 'locRef:site',
44643
- defaultVisible: true,
44644
- },
44645
- {
44646
- name: 'store',
44647
- prop: 'properties.store',
44648
- display: false,
44649
- type: 'custom',
44650
- template: 'common.components.store',
44651
- headerClass: 'locRef:store',
44652
- defaultVisible: true,
44653
- },
44654
- {
44655
- name: 'Box',
44656
- prop: 'properties.box',
44657
- display: false,
44658
- type: 'custom',
44659
- template: 'common.components.box',
44660
- headerClass: 'locRef:boxCode',
44661
- defaultVisible: true,
44662
- },
44663
- ],
44664
- columnsWithDynamicDisplay: [
44665
- 'activeRetentionStartDateHijri',
44666
- 'activeRetentionEndDateHijri',
44667
- 'retentionEndDateHijri',
44668
- 'site',
44669
- 'store',
44670
- 'Box',
44671
- ],
44672
- };
44673
- const REPORTS_DATA = {
44674
- request: {
44675
- pageProvider: 'PP_RPT_Expected_TransferArchive_Records',
44676
- customUrl: {
44677
- url: '/custom-search/pp/PP_RPT_Expected_TransferArchive_Records/execute',
44678
- method: 'post',
44679
- },
44680
- params: {
44681
- pageSize: 1,
44682
- },
44683
- },
44684
- filters: {
44685
- mode: 'payload',
44686
- visible: true,
44687
- togglePanel: true,
44688
- fields: [
44689
- {
44690
- type: 'aggregation',
44691
- config: {
44692
- label: 'rmAdvancedSearch.gdocCategoryHierarchyCode',
44693
- aggregation: 'generaldocument_categoryHierarchyCode_agg',
44694
- fieldKey: 'gdoc:categoryHierarchyCode',
44695
- dataTransformer: 'subject',
44696
- order: 0,
44697
- sendMode: 'queryParam',
44698
- valueType: 'property',
44699
- render: {
44700
- type: 'checkbox',
44701
- options: {
44702
- showTotal: true,
44703
- },
44704
- },
44705
- },
44706
- },
44707
- {
44708
- type: 'aggregation',
44709
- config: {
44710
- label: 'rmAdvancedSearch.gdocCategoryHierarchyCode1',
44711
- aggregation: 'generaldocument_categoryHierarchyCode_1_agg',
44712
- fieldKey: 'gdoc:categoryHierarchyCode__1',
44713
- order: 0,
44714
- sendMode: 'queryParam',
44715
- valueType: 'property',
44716
- dataTransformer: 'subject',
44717
- render: {
44718
- type: 'checkbox',
44719
- options: {
44720
- showTotal: true,
44721
- collapse: true,
44722
- },
44723
- },
44724
- },
44725
- },
44726
- ],
44727
- },
44728
- reports: {
44729
- details: {
44730
- enabled: true,
44731
- prefix: 'LISTING.',
44732
- // quickFilters: 'After Archiving',
44733
- columnsOptions: {
44734
- toggle: true,
44735
- sortable: {
44736
- enabled: true,
44737
- },
44738
- },
44739
- request: {
44740
- headers: {
44741
- properties: 'dublincore, file, generaldocument, RecordDefinition,retentioninfo',
44742
- },
44743
- },
44744
- fields: {
44745
- title: 'dc:title',
44746
- subject: 'gdoc:documentSubject',
44747
- docTypee: 'gdoc:documentTypeCode',
44748
- secrecyLevel: 'gdoc:secrecyLevel',
44749
- docTypeId: 'documenttypee:documentTypeId',
44750
- created: 'dc:created',
44751
- department: 'department',
44752
- file: 'file:content',
44753
- systemName: 'recdef:systemName',
44754
- docNum: 'gdoc:documentReferenceNumber',
44755
- physicalOriginal: 'recdef:physicalOriginal',
44756
- gdocumentDate: 'gdoc:gDocumentDate',
44757
- importance: 'gdoc:importance',
44758
- unifiedNumber: 'recdef:unifiedNumber',
44759
- creator: 'dc:creator',
44760
- saveTypee: 'retentioninfo:saveTypee',
44761
- },
44762
- columns: [
44763
- {
44764
- name: 'Doc_Name',
44765
- prop: 'properties.title',
44766
- display: true,
44767
- type: 'custom',
44768
- template: 'common.components.titleWithIcon',
44769
- sortable: true,
44770
- headerClass: 'dc:title',
44771
- defaultVisible: true,
44772
- },
44773
- {
44774
- name: 'systemName',
44775
- prop: 'properties.systemName',
44776
- display: true,
44777
- type: 'custom',
44778
- template: 'common.components.systemName',
44779
- translatePrefix: 'search.buckets',
44780
- isOrginalKey: true,
44781
- sortable: false,
44782
- headerClass: 'recdef:systemName',
44783
- defaultVisible: true,
44784
- },
44785
- {
44786
- name: 'Doc_RefernceNum',
44787
- prop: 'properties.docNum',
44788
- display: true,
44789
- type: 'text',
44790
- sortable: true,
44791
- headerClass: 'gdoc:documentReferenceNumber',
44792
- defaultVisible: true,
44793
- },
44794
- {
44795
- name: 'Doc_Type',
44796
- prop: 'properties.docTypee',
44797
- display: true,
44798
- template: 'common.components.documentType',
44799
- type: 'custom',
44800
- headerClass: 'gdoc:documentTypeCode',
44801
- defaultVisible: false,
44802
- },
44803
- {
44804
- name: 'retentionType',
44805
- prop: 'properties.saveTypee',
44806
- display: true,
44807
- type: 'text',
44808
- translatePrefix: 'vocabulary.VOC_SaveType',
44809
- headerClass: 'retentioninfo:saveTypee',
44810
- defaultVisible: false,
44811
- },
44812
- {
44813
- name: 'physicalOriginal',
44814
- prop: 'properties.physicalOriginal',
44815
- display: true,
44816
- type: 'custom',
44817
- template: 'rms.components.TranslatedValueColumn',
44818
- translatePrefix: 'rmDocumentUpload.hasPhysicalOriginal',
44819
- isBooleanValue: true,
44820
- sortable: false,
44821
- headerClass: 'recdef:physicalOriginal',
44822
- defaultVisible: false,
44823
- },
44824
- {
44825
- name: 'mainTopic',
44826
- prop: 'properties.subject',
44827
- display: true,
44828
- type: 'text',
44829
- headerClass: 'gdoc:documentSubject',
44830
- defaultVisible: false,
44831
- },
44832
- {
44833
- name: 'docDate',
44834
- prop: 'properties.gdocumentDate',
44835
- display: true,
44836
- type: 'custom',
44837
- template: 'common.components.dateWithoutTime',
44838
- headerClass: 'gdoc:gDocumentDate',
44839
- defaultVisible: true,
44840
- },
44841
- {
44842
- name: 'secrecyLevel',
44843
- prop: 'properties.secrecyLevel',
44844
- display: true,
44845
- type: 'custom',
44846
- template: 'common.components.coloredSecrecyLevel',
44847
- headerClass: 'gdoc:secrecyLevel',
44848
- defaultVisible: true,
44849
- },
44850
- {
44851
- name: 'importance',
44852
- prop: 'properties.importance',
44853
- display: true,
44854
- translatePrefix: 'search.buckets',
44855
- type: 'custom',
44856
- template: 'rms.components.TranslatedValueColumn',
44857
- sortable: true,
44858
- isOrginalKey: true,
44859
- headerClass: 'gdoc:importance',
44860
- },
44861
- {
44862
- name: 'unifiedNumber',
44863
- prop: 'properties.unifiedNumber',
44864
- display: true,
44865
- type: 'text',
44866
- sortable: true,
44867
- headerClass: 'recdef:unifiedNumber',
44868
- },
44869
- {
44870
- name: 'docDate',
44871
- prop: 'properties.created',
44872
- display: true,
44873
- type: 'custom',
44874
- template: 'common.components.dateWithoutTime',
44875
- headerClass: 'dc:created',
44876
- defaultVisible: false,
44877
- },
44878
- {
44879
- name: 'creator',
44880
- prop: 'properties.creator',
44881
- display: true,
44882
- type: 'text',
44883
- sortable: true,
44884
- headerClass: 'dc:creator',
44885
- defaultVisible: false,
44886
- },
44887
- {
44888
- name: 'documentType',
44889
- prop: 'properties.docTypeId',
44890
- display: true,
44891
- type: 'custom',
44892
- template: 'common.components.documentType',
44893
- headerClass: 'gdoc:documentTypeCode',
44894
- defaultVisible: false,
44895
- },
44896
- {
44897
- name: 'orgUnit',
44898
- prop: 'department.title',
44899
- display: true,
44900
- type: 'custom',
44901
- template: 'common.components.departement',
44902
- headerClass: 'recdef:departmentCode',
44903
- sortable: false,
44904
- defaultVisible: false,
44905
- },
44906
- ],
44907
- },
44908
- items: [
44909
- {
44910
- id: 'resultsCount',
44911
- label: 'REPORTS.resultsCount',
44912
- mode: 'digit',
44913
- datasource: {
44914
- propertyPath: 'resultsCount',
44915
- },
44916
- },
44917
- {
44918
- id: 'future__gdocCategoryHierarchyCode',
44919
- label: 'REPORTS.gdocCategoryHierarchyCode',
44920
- mode: 'graph',
44921
- print: true,
44922
- dialog: {
44923
- active: true,
44924
- },
44925
- details: {
44926
- enabled: true,
44927
- },
44928
- datasource: [
44929
- {
44930
- propertyPath: 'aggregations.generaldocument_categoryHierarchyCode_agg.buckets',
44931
- dataFormat: 'subject',
44932
- transformer: 'reduceData',
44933
- },
44934
- ],
44935
- chart: {
44936
- type: 'pie',
44937
- plugins: [
44938
- 'chartDataLabels',
44939
- 'scrollableLegends',
44940
- 'doughnutEmptyState',
44941
- ],
44942
- },
44943
- },
44944
- {
44945
- id: 'future__generaldocument_categoryHierarchyCode_1_agg',
44946
- label: 'REPORTS.gdocCategoryHierarchyCode1',
44947
- mode: 'graph',
44948
- print: true,
44949
- dialog: {
44950
- active: true,
44951
- },
44952
- details: {
44953
- enabled: true,
44954
- },
44955
- datasource: [
44956
- {
44957
- propertyPath: 'aggregations.generaldocument_categoryHierarchyCode_1_agg.buckets',
44958
- dataFormat: 'subject',
44959
- transformer: 'reduceData',
44960
- },
44961
- ],
44962
- chart: {
44963
- type: 'doughnut',
44964
- plugins: [
44965
- 'chartDataLabels',
44966
- 'scrollableLegends',
44967
- 'doughnutEmptyState',
44968
- ],
44969
- },
44970
- },
44971
- {
44972
- id: 'future__generaldocument_secrecyLevel_agg',
44973
- label: 'REPORTS.gdocSecrecyLevel',
44974
- mode: 'graph',
44975
- print: true,
44976
- dialog: {
44977
- active: true,
44978
- },
44979
- prefix: 'search.buckets.',
44980
- details: {
44981
- enabled: true,
44982
- },
44983
- datasource: [
44984
- {
44985
- propertyPath: 'aggregations.generaldocument_secrecyLevel_agg.buckets',
44986
- transformer: 'reduceData',
44987
- },
44988
- ],
44989
- chart: {
44990
- type: 'bar',
44991
- options: {
44992
- indexAxis: 'y',
44993
- responsive: true,
44994
- maintainAspectRatio: false,
44995
- scales: {
44996
- x: {
44997
- ticks: {
44998
- stepSize: 1,
44999
- },
45000
- grid: {
45001
- color: '#eee',
45002
- },
45003
- },
45004
- y: {
45005
- ticks: {
45006
- precision: 0,
45007
- stepSize: 1,
45008
- color: '#000',
45009
- crossAlign: 'far',
45010
- callback: function (_, index) {
45011
- const label = `${this.getLabels()[index]}`;
45012
- const maxLength = 18;
45013
- return (label === null || label === void 0 ? void 0 : label.length) > maxLength
45014
- ? label.substring(0, maxLength) + '...'
45015
- : label;
45016
- },
45017
- },
45018
- grid: {
45019
- color: '#000',
45020
- },
45021
- },
45022
- },
45023
- plugins: {
45024
- legend: {
45025
- display: false,
45026
- },
45027
- },
45028
- },
45029
- plugins: [
45030
- 'chartDataLabels',
45031
- 'scrollableLegends',
45032
- 'doughnutEmptyState',
45033
- ],
45034
- },
45035
- },
45036
- {
45037
- id: 'future__RetentionInfo_saveTypee_agg',
45038
- label: 'REPORTS.rinfoSaveTypee',
45039
- mode: 'graph',
45040
- print: true,
45041
- prefix: 'search.buckets.',
45042
- details: {
45043
- enabled: true,
45044
- },
45045
- datasource: [
45046
- {
45047
- propertyPath: 'aggregations.RetentionInfo_saveTypee_agg.buckets',
45048
- transformer: 'reduceData',
45049
- },
45050
- ],
45051
- chart: {
45052
- type: 'pie',
45053
- plugins: [
45054
- 'chartDataLabels',
45055
- 'scrollableLegends',
45056
- 'doughnutEmptyState',
45057
- ],
45058
- },
45059
- },
45060
- {
45061
- mode: 'dynamicLine',
45062
- id: 'late_RetentionInfo_activeRetentionExpireDate_agg',
45063
- label: 'REPORTS.expectedTransferDate',
45064
- print: true,
45065
- dialog: {
45066
- active: true,
45067
- },
45068
- details: {
45069
- enabled: true,
45070
- },
45071
- request: {
45072
- pageProvider: 'PP_RPT_Expected_TransferArchive_Records',
45073
- customUrl: {
45074
- url: '/custom-search/pp/PP_RPT_Expected_TransferArchive_Records/execute',
45075
- method: 'post',
45076
- },
45077
- },
45078
- datasource: [
45079
- {
45080
- aggregation: 'RetentionInfo_activeRetentionExpireDate_agg',
45081
- propertyPath: 'aggregations.RetentionInfo_activeRetentionExpireDate_agg.buckets',
45082
- transformer: 'timeFormat',
45083
- },
45084
- ],
45085
- chart: {
45086
- type: 'line',
45087
- options: {
45088
- layout: {
45089
- padding: {
45090
- right: 40,
45091
- left: 40,
45092
- },
45093
- },
45094
- },
45095
- datasets: [
45096
- {
45097
- borderWidth: 2,
45098
- borderColor: '#000',
45099
- pointBorderWidth: 0,
45100
- pointBackgroundColor: '#000',
45101
- },
45102
- ],
45103
- },
45104
- },
45105
- {
45106
- id: 'future__RecordDefinition_systemName_agg',
45107
- label: 'REPORTS.rdSystemName',
45108
- mode: 'graph',
45109
- print: true,
45110
- dialog: {
45111
- active: true,
45112
- },
45113
- prefix: 'search.buckets.',
45114
- details: {
45115
- enabled: true,
45116
- },
45117
- datasource: [
45118
- {
45119
- propertyPath: 'aggregations.RecordDefinition_systemName_agg.buckets',
45120
- transformer: 'reduceData',
45121
- },
45122
- ],
45123
- chart: {
45124
- type: 'bar',
45125
- direction: 'vertical',
45126
- plugins: [
45127
- 'chartDataLabels',
45128
- 'scrollableLegends',
45129
- 'doughnutEmptyState',
45130
- ],
45131
- },
45132
- },
45133
- ],
45134
- },
45135
- };
45136
-
45137
- class DataAccessService extends BaseService {
45138
- getData(key, type) {
45139
- if (type == NDF_EDITOR_TYPE.REPORTS) {
45140
- return of(JSON.stringify(REPORTS_DATA, null, 2));
45141
- }
45142
- return of(JSON.stringify(TABLE_DATA, null, 2));
44077
+ class DataAccessService extends BaseEditorConfigService {
44078
+ constructor(injector) {
44079
+ super(injector);
45143
44080
  }
45144
- saveData(key, data) {
45145
- return of(JSON.stringify(TABLE_DATA, null, 2));
44081
+ saveData(payload) {
44082
+ return this.customAutomation({
44083
+ operation: 'AC_UA_Create_UI_Configuration',
44084
+ context: payload
44085
+ });
45146
44086
  }
45147
44087
  }
45148
- DataAccessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
44088
+ DataAccessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
45149
44089
  DataAccessService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, providedIn: 'root' });
45150
44090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, decorators: [{
45151
44091
  type: Injectable,
45152
44092
  args: [{
45153
44093
  providedIn: 'root'
45154
44094
  }]
45155
- }] });
44095
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
44096
+
44097
+ const METADATA_EDITOR_OPTIONS = new InjectionToken('METADATA_EDITOR_CONFIG');
45156
44098
 
45157
44099
  class DataStoreService {
45158
- constructor(dataAccessService) {
44100
+ constructor(dataAccessService, environment, options) {
45159
44101
  this.dataAccessService = dataAccessService;
44102
+ this.environment = environment;
44103
+ this.options = options;
45160
44104
  this._editorTypeSubject = new BehaviorSubject(NDF_EDITOR_TYPE.TABLES);
45161
44105
  this.editorType$ = this._editorTypeSubject.asObservable();
45162
44106
  this._editorModeSubject = new BehaviorSubject(CONFIG_EDITOR_MODE.EDIT);
@@ -45181,24 +44125,49 @@ class DataStoreService {
45181
44125
  this._editorTypeSubject.next(type);
45182
44126
  }
45183
44127
  getData(key, type) {
45184
- return this.dataAccessService.getData(key, type).pipe(switchMap((data) => {
45185
- this._dataSubject.next(data);
44128
+ var _a, _b;
44129
+ const metadata = ((_a = this.options) === null || _a === void 0 ? void 0 : _a[type]) || {};
44130
+ return this.dataAccessService
44131
+ .fetchData({
44132
+ app: (_b = this.environment) === null || _b === void 0 ? void 0 : _b.appKey,
44133
+ key: key,
44134
+ type: type,
44135
+ localPath: metadata === null || metadata === void 0 ? void 0 : metadata.localPath
44136
+ })
44137
+ .pipe(switchMap((res) => {
44138
+ var _a, _b;
44139
+ if ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.config) {
44140
+ const data = JSON.stringify((_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.config, null, 2);
44141
+ this._dataSubject.next(data || '{\n"key": "value"\n}');
44142
+ }
45186
44143
  return this.editorData$;
45187
44144
  }));
45188
44145
  }
45189
- saveData(key) {
44146
+ saveData(key, type) {
44147
+ var _a;
45190
44148
  const data = this._dataSubject.getValue();
45191
- return this.dataAccessService.saveData(key, data);
44149
+ return this.dataAccessService.saveData({
44150
+ app: (_a = this.environment) === null || _a === void 0 ? void 0 : _a.appKey,
44151
+ key: key,
44152
+ type: type,
44153
+ content: data
44154
+ });
45192
44155
  }
45193
44156
  storeData(data) {
45194
44157
  this._dataSubject.next(data);
45195
44158
  }
45196
44159
  }
45197
- DataStoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, deps: [{ token: DataAccessService }], target: i0.ɵɵFactoryTarget.Injectable });
44160
+ DataStoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, deps: [{ token: DataAccessService }, { token: 'environment' }, { token: METADATA_EDITOR_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
45198
44161
  DataStoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService });
45199
44162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, decorators: [{
45200
44163
  type: Injectable
45201
- }], ctorParameters: function () { return [{ type: DataAccessService }]; } });
44164
+ }], ctorParameters: function () { return [{ type: DataAccessService }, { type: undefined, decorators: [{
44165
+ type: Inject,
44166
+ args: ['environment']
44167
+ }] }, { type: undefined, decorators: [{
44168
+ type: Inject,
44169
+ args: [METADATA_EDITOR_OPTIONS]
44170
+ }] }]; } });
45202
44171
 
45203
44172
  // monaco-loader.service.ts
45204
44173
  class MonacoLoaderService {
@@ -45646,7 +44615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45646
44615
  }] });
45647
44616
 
45648
44617
  class NdfConfigEditorComponent extends DestroySubject {
45649
- constructor(environment, dataStore, configService, matDialog, location) {
44618
+ constructor(environment, dataStore, configService, matDialog, location, toastrService) {
45650
44619
  var _a;
45651
44620
  super();
45652
44621
  this.environment = environment;
@@ -45654,6 +44623,7 @@ class NdfConfigEditorComponent extends DestroySubject {
45654
44623
  this.configService = configService;
45655
44624
  this.matDialog = matDialog;
45656
44625
  this.location = location;
44626
+ this.toastrService = toastrService;
45657
44627
  this.isEditorHasErrors = false;
45658
44628
  this._defaultEditorOptions = {
45659
44629
  value: ``,
@@ -45680,7 +44650,7 @@ class NdfConfigEditorComponent extends DestroySubject {
45680
44650
  ngOnInit() {
45681
44651
  this._dataKeySubject
45682
44652
  .pipe(switchMap((key) => this.dataStore.getData(key, this.metadata.type)), takeUntil(this.destroy$))
45683
- .subscribe((res) => { });
44653
+ .subscribe();
45684
44654
  }
45685
44655
  onDataChanged(data) {
45686
44656
  this.dataStore.storeData(data);
@@ -45689,7 +44659,12 @@ class NdfConfigEditorComponent extends DestroySubject {
45689
44659
  this.isEditorHasErrors = hasErrors;
45690
44660
  }
45691
44661
  saveData() {
45692
- this.dataStore.saveData(this.metadata.key);
44662
+ this.dataStore
44663
+ .saveData(this.metadata.key, this.metadata.type)
44664
+ .pipe(takeUntil(this.destroy$))
44665
+ .subscribe((res) => {
44666
+ this.toastrService.show('success', 'TOASTER.SUCCESS', 'JSON_EDITOR.MESSAGES.dataSaved');
44667
+ });
45693
44668
  }
45694
44669
  navigateBack() {
45695
44670
  this.location.back();
@@ -45734,7 +44709,7 @@ class NdfConfigEditorComponent extends DestroySubject {
45734
44709
  }
45735
44710
  }
45736
44711
  }
45737
- NdfConfigEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorComponent, deps: [{ token: 'environment' }, { token: DataStoreService }, { token: AppConfigService }, { token: i1$3.MatDialog }, { token: i4$1.Location }], target: i0.ɵɵFactoryTarget.Component });
44712
+ NdfConfigEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorComponent, deps: [{ token: 'environment' }, { token: DataStoreService }, { token: AppConfigService }, { token: i1$3.MatDialog }, { token: i4$1.Location }, { token: CustomToastrService }], target: i0.ɵɵFactoryTarget.Component });
45738
44713
  NdfConfigEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfConfigEditorComponent, selector: "app-ndf-config-editor", inputs: { metadata: "metadata", theme: "theme", options: "options" }, providers: [DataStoreService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"config?.enabled && isFeatureEnabled; else emptyTpl\">\r\n\t<div class=\"ndf-config-editor\" ndfFluidHeight *permission=\"{ name: config?.types[metadata?.type]?.permission }\">\r\n\t\t<div class=\"ndf-config-editor__sidebar\">\r\n\t\t\t<app-editor-settings class=\"ndf-config-editor__setting\"></app-editor-settings>\r\n\t\t\t<app-config-editor-actions\r\n\t\t\t\tappItemHeight\r\n\t\t\t\tcssVar=\"--ndf-editor-actions-height\"\r\n\t\t\t\t[saveDisabled]=\"isEditorHasErrors || !(dataStore.editorData | isValidJson)\"\r\n\t\t\t\t[config]=\"config?.types[metadata?.type]\"\r\n\t\t\t\t(onInfo)=\"openInfoDialog($event)\"\r\n\t\t\t\t(onBack)=\"navigateBack()\"\r\n\t\t\t\t(onSave)=\"saveData()\"\r\n\t\t\t>\r\n\t\t\t</app-config-editor-actions>\r\n\t\t</div>\r\n\t\t<div class=\"ndf-config-editor__content\">\r\n\t\t\t<div class=\"ndf-config-editor__topbar\">\r\n\t\t\t\t<app-editor-mode-switch\r\n\t\t\t\t\t[mode]=\"dataStore.editorMode\"\r\n\t\t\t\t\t(changeMode)=\"dataStore.changeMode($event)\"\r\n\t\t\t\t></app-editor-mode-switch>\r\n\t\t\t</div>\r\n\t\t\t<app-config-preview\r\n\t\t\t\t*ngIf=\"dataStore.editorMode === modes.PREVIEW\"\r\n [type]=\"dataStore.editorType$ | async\"\r\n\t\t\t\t[data]=\"previewData$ | async\"\r\n\t\t\t></app-config-preview>\r\n\t\t\t<ndf-monaco-editor\r\n\t\t\t\t*ngIf=\"dataStore.editorMode === modes.EDIT\"\r\n\t\t\t\t[value]=\"editorData$ | async\"\r\n\t\t\t\t[options]=\"options$ | async\"\r\n\t\t\t\t[theme]=\"theme$ | async\"\r\n\t\t\t\t(valueChange)=\"onDataChanged($event)\"\r\n\t\t\t\t(hasError)=\"onEditorErrors($event)\"\r\n\t\t\t\t(onInit)=\"onEditorReady($event)\"\r\n\t\t\t></ndf-monaco-editor>\r\n\t\t</div>\r\n\t</div>\r\n</ng-container>\r\n\r\n<ng-template #emptyTpl>\r\n\t<div class=\"ndf-empty-config\">\r\n\t\t<app-no-data-found message=\"JSON_EDITOR.MESSAGES.notAllowed\"></app-no-data-found>\r\n\t</div>\r\n</ng-template>\r\n", styles: [":host{display:var(--ndf-config-wrapper-display, flex);flex-direction:var(--ndf-config-wrapper-direction, column);grid-gap:var(--ndf-config-wrapper-gap, .5rem);gap:var(--ndf-config-wrapper-gap, .5rem);flex-grow:1;height:var(--ndf-config-wrapper-height, 100%)}.ndf-empty-config{justify-content:center;align-items:center}.ndf-empty-config,.ndf-config-editor{padding:var(--ndf-editor-padding, 1rem);background-color:var(--ndf-editor-background-color, #fff);color:var(--ndf-editor-color);border-radius:var(--ndf-editor-border-radius, .5rem);display:flex;flex-grow:1;max-height:var(--ndf-fluid-height, 100%)}.ndf-config-editor{grid-gap:var(--ndf-editor--gap, 1rem);gap:var(--ndf-editor--gap, 1rem)}.ndf-config-editor__sidebar{width:var(--ndf-editor-sidebar-width, 18rem);background:var(--ndf-editor-sidebar-background);border:var(--ndf-editor-sidebars-border, 0px solid transparent);border-radius:var(--ndf-editor-sidebar-radius, 0rem);display:grid;grid-template-rows:var(--ndf-editor-sidebar-rows, 1fr auto)}.ndf-config-editor__content{flex-grow:1;background:var(--ndf-editor-content-background);border:var(--ndf-editor-content-border, 0px solid transparent);border-radius:var(--ndf-editor-content-radius, 0rem);display:flex;flex-direction:column;grid-gap:var(--ndf-editor-content-gap, 1rem);gap:var(--ndf-editor-content-gap, 1rem)}.ndf-config-editor__topbar{display:var(--ndf-editor-topbar-display, flex);justify-content:var(--ndf-editor-topbar-justify-content, flex-end)}.ndf-config-editor__setting{max-height:var(--ndf-editor-content-max-height, calc(var(--ndf-fluid-height) - var(--ndf-editor-actions-height, 125px) - 2.5rem));overflow:auto}\n"], components: [{ type: EditorSettingsComponent, selector: "app-editor-settings" }, { type: ConfigEditorActionsComponent, selector: "app-config-editor-actions", inputs: ["saveDisabled", "config"], outputs: ["onSave", "onInfo", "onBack"] }, { type: EditorModeSwitchComponent, selector: "app-editor-mode-switch", inputs: ["mode"], outputs: ["changeMode"] }, { type: ConfigPreviewComponent, selector: "app-config-preview", inputs: ["type", "data"] }, { type: MonacoEditorComponent, selector: "ndf-monaco-editor", inputs: ["value", "options", "theme", "model"], outputs: ["onInit", "hasError", "valueChange"] }, { type: NoDataFoundComponent, selector: "app-no-data-found", inputs: ["message", "width", "height"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: ElementHeightDirective, selector: "[appItemHeight]", inputs: ["cssVar", "calculate", "inlineStyle"], exportAs: ["appItemHeight"] }], pipes: { "isValidJson": IsValidJsonPipe, "async": i4$1.AsyncPipe } });
45739
44714
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfConfigEditorComponent, decorators: [{
45740
44715
  type: Component,
@@ -45747,7 +44722,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45747
44722
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
45748
44723
  type: Inject,
45749
44724
  args: ['environment']
45750
- }] }, { type: DataStoreService }, { type: AppConfigService }, { type: i1$3.MatDialog }, { type: i4$1.Location }]; }, propDecorators: { metadata: [{
44725
+ }] }, { type: DataStoreService }, { type: AppConfigService }, { type: i1$3.MatDialog }, { type: i4$1.Location }, { type: CustomToastrService }]; }, propDecorators: { metadata: [{
45751
44726
  type: Input
45752
44727
  }], theme: [{
45753
44728
  type: Input
@@ -45859,5 +44834,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45859
44834
  * Generated bundle index. Do not edit.
45860
44835
  */
45861
44836
 
45862
- export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationGroupComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, index$2 as ChartUtils, ChartsModule, CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomReportsRegistry, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmptyTemplateDirective, EnvManager, Evaluator, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MapToAggregationConfigPipe, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportTransformService, ReportsDataTransformers, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getChartsOptions, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
44837
+ export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationGroupComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseCustomReport, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseEditorConfigService, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, index$2 as ChartUtils, ChartsModule, CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomReportsRegistry, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmptyTemplateDirective, EnvManager, Evaluator, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, METADATA_EDITOR_OPTIONS, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MapToAggregationConfigPipe, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportTransformService, ReportsDataTransformers, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getChartsOptions, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
45863
44838
  //# sourceMappingURL=nuxeo-development-framework.js.map