@esfaenza/es-charts 12.2.13 → 13.1.4

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 (97) hide show
  1. package/esfaenza-es-charts.d.ts +1 -6
  2. package/esm2020/esfaenza-es-charts.mjs +5 -0
  3. package/esm2020/lib/adapters/classes/BaseAdapter.mjs +50 -0
  4. package/{esm2015/lib/adapters/classes/IBaseAdapter.js → esm2020/lib/adapters/classes/IBaseAdapter.mjs} +0 -0
  5. package/{esm2015/lib/adapters/index.js → esm2020/lib/adapters/index.mjs} +0 -0
  6. package/esm2020/lib/components/base/base-chart.component.mjs +339 -0
  7. package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +89 -0
  8. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  9. package/esm2020/lib/components/specializations/es-area-chart.component.mjs +78 -0
  10. package/esm2020/lib/components/specializations/es-chart.component.mjs +111 -0
  11. package/esm2020/lib/components/specializations/es-line-chart.component.mjs +110 -0
  12. package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +99 -0
  13. package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +96 -0
  14. package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +93 -0
  15. package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +93 -0
  16. package/esm2020/lib/es-charts.module.mjs +61 -0
  17. package/{esm2015/lib/models/EsChaartsModuleConfig.js → esm2020/lib/models/EsChaartsModuleConfig.mjs} +0 -0
  18. package/esm2020/lib/models/core/classes/ChartDispatcher.mjs +91 -0
  19. package/{esm2015/lib/models/core/classes/ChartLoader.js → esm2020/lib/models/core/classes/ChartLoader.mjs} +0 -0
  20. package/{esm2015/lib/models/core/classes/ChartThemes.js → esm2020/lib/models/core/classes/ChartThemes.mjs} +0 -0
  21. package/{esm2015/lib/models/core/index.js → esm2020/lib/models/core/index.mjs} +0 -0
  22. package/{esm2015/lib/models/data/classes/AreaChartData.js → esm2020/lib/models/data/classes/AreaChartData.mjs} +0 -0
  23. package/{esm2015/lib/models/data/classes/LineChartData.js → esm2020/lib/models/data/classes/LineChartData.mjs} +0 -0
  24. package/{esm2015/lib/models/data/classes/PagedChartData.js → esm2020/lib/models/data/classes/PagedChartData.mjs} +0 -0
  25. package/{esm2015/lib/models/data/classes/PieChartData.js → esm2020/lib/models/data/classes/PieChartData.mjs} +0 -0
  26. package/{esm2015/lib/models/data/classes/Vertical2DChartData.js → esm2020/lib/models/data/classes/Vertical2DChartData.mjs} +0 -0
  27. package/{esm2015/lib/models/data/classes/VerticalChartData.js → esm2020/lib/models/data/classes/VerticalChartData.mjs} +0 -0
  28. package/{esm2015/lib/models/data/classes/VerticalStackedChartData.js → esm2020/lib/models/data/classes/VerticalStackedChartData.mjs} +0 -0
  29. package/{esm2015/lib/models/data/classes/base/DateValue.js → esm2020/lib/models/data/classes/base/DateValue.mjs} +0 -0
  30. package/{esm2015/lib/models/data/classes/base/KeyValue.js → esm2020/lib/models/data/classes/base/KeyValue.mjs} +0 -0
  31. package/{esm2015/lib/models/data/classes/base/KeyValueColor.js → esm2020/lib/models/data/classes/base/KeyValueColor.mjs} +0 -0
  32. package/{esm2015/lib/models/data/classes/base/Limit.js → esm2020/lib/models/data/classes/base/Limit.mjs} +0 -0
  33. package/{esm2015/lib/models/data/classes/base/LineSerie.js → esm2020/lib/models/data/classes/base/LineSerie.mjs} +0 -0
  34. package/{esm2015/lib/models/data/index.js → esm2020/lib/models/data/index.mjs} +0 -0
  35. package/{esm2015/lib/models/settings/classes/AreaChartSettings.js → esm2020/lib/models/settings/classes/AreaChartSettings.mjs} +0 -0
  36. package/{esm2015/lib/models/settings/classes/LineChartSettings.js → esm2020/lib/models/settings/classes/LineChartSettings.mjs} +0 -0
  37. package/{esm2015/lib/models/settings/classes/PieChartSettings.js → esm2020/lib/models/settings/classes/PieChartSettings.mjs} +0 -0
  38. package/{esm2015/lib/models/settings/classes/Vertical2DChartSettings.js → esm2020/lib/models/settings/classes/Vertical2DChartSettings.mjs} +0 -0
  39. package/{esm2015/lib/models/settings/classes/VerticalChartSettings.js → esm2020/lib/models/settings/classes/VerticalChartSettings.mjs} +0 -0
  40. package/{esm2015/lib/models/settings/classes/VerticalStackedChartSettings.js → esm2020/lib/models/settings/classes/VerticalStackedChartSettings.mjs} +0 -0
  41. package/{esm2015/lib/models/settings/classes/base/BaseInterval.js → esm2020/lib/models/settings/classes/base/BaseInterval.mjs} +0 -0
  42. package/{esm2015/lib/models/settings/classes/base/BaseSettings.js → esm2020/lib/models/settings/classes/base/BaseSettings.mjs} +0 -0
  43. package/{esm2015/lib/models/settings/classes/base/LegendPad.js → esm2020/lib/models/settings/classes/base/LegendPad.mjs} +0 -0
  44. package/{esm2015/lib/models/settings/index.js → esm2020/lib/models/settings/index.mjs} +0 -0
  45. package/esm2020/lib/services/classes/AreaChartService.mjs +134 -0
  46. package/esm2020/lib/services/classes/LineChartService.mjs +356 -0
  47. package/esm2020/lib/services/classes/PieChartService.mjs +111 -0
  48. package/esm2020/lib/services/classes/Vertical2DChartService.mjs +160 -0
  49. package/esm2020/lib/services/classes/VerticalChartService.mjs +103 -0
  50. package/esm2020/lib/services/classes/VerticalStackedChartService.mjs +124 -0
  51. package/{esm2015/lib/services/classes/base/IBaseService.js → esm2020/lib/services/classes/base/IBaseService.mjs} +0 -0
  52. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  53. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  54. package/esm2020/public-api.mjs +38 -0
  55. package/fesm2015/{esfaenza-es-charts.js → esfaenza-es-charts.mjs} +530 -384
  56. package/fesm2015/esfaenza-es-charts.mjs.map +1 -0
  57. package/fesm2020/esfaenza-es-charts.mjs +2747 -0
  58. package/fesm2020/esfaenza-es-charts.mjs.map +1 -0
  59. package/lib/adapters/classes/BaseAdapter.d.ts +3 -0
  60. package/lib/components/base/base-chart.component.d.ts +12 -0
  61. package/lib/components/chart-pager/chart-pager.component.d.ts +3 -0
  62. package/lib/components/specializations/es-area-chart.component.d.ts +3 -0
  63. package/lib/components/specializations/es-chart.component.d.ts +3 -0
  64. package/lib/components/specializations/es-line-chart.component.d.ts +3 -0
  65. package/lib/components/specializations/es-pie-chart.component.d.ts +3 -0
  66. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +3 -0
  67. package/lib/components/specializations/es-vertical-chart.component.d.ts +3 -0
  68. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +3 -0
  69. package/lib/es-charts.module.d.ts +13 -0
  70. package/lib/models/core/classes/ChartDispatcher.d.ts +3 -0
  71. package/lib/services/classes/LineChartService.d.ts +4 -0
  72. package/package.json +22 -10
  73. package/public-api.d.ts +2 -0
  74. package/bundles/esfaenza-es-charts.umd.js +0 -3212
  75. package/bundles/esfaenza-es-charts.umd.js.map +0 -1
  76. package/esfaenza-es-charts.metadata.json +0 -1
  77. package/esm2015/esfaenza-es-charts.js +0 -11
  78. package/esm2015/lib/adapters/classes/BaseAdapter.js +0 -47
  79. package/esm2015/lib/components/base/base-chart.component.js +0 -311
  80. package/esm2015/lib/components/chart-pager/chart-pager.component.js +0 -84
  81. package/esm2015/lib/components/specializations/es-area-chart.component.js +0 -75
  82. package/esm2015/lib/components/specializations/es-chart.component.js +0 -108
  83. package/esm2015/lib/components/specializations/es-line-chart.component.js +0 -98
  84. package/esm2015/lib/components/specializations/es-pie-chart.component.js +0 -89
  85. package/esm2015/lib/components/specializations/es-vertical-2d-chart.component.js +0 -87
  86. package/esm2015/lib/components/specializations/es-vertical-chart.component.js +0 -85
  87. package/esm2015/lib/components/specializations/es-vertical-stacked-chart.component.js +0 -85
  88. package/esm2015/lib/es-charts.module.js +0 -42
  89. package/esm2015/lib/models/core/classes/ChartDispatcher.js +0 -88
  90. package/esm2015/lib/services/classes/AreaChartService.js +0 -135
  91. package/esm2015/lib/services/classes/LineChartService.js +0 -326
  92. package/esm2015/lib/services/classes/PieChartService.js +0 -112
  93. package/esm2015/lib/services/classes/Vertical2DChartService.js +0 -163
  94. package/esm2015/lib/services/classes/VerticalChartService.js +0 -105
  95. package/esm2015/lib/services/classes/VerticalStackedChartService.js +0 -127
  96. package/esm2015/public-api.js +0 -36
  97. package/fesm2015/esfaenza-es-charts.js.map +0 -1
@@ -0,0 +1,78 @@
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { AreaChartSettings } from '../../models/settings';
5
+ import { AreaChartService } from '../../services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core";
8
+ import * as i2 from "../../adapters";
9
+ import * as i3 from "../chart-pager/chart-pager.component";
10
+ import * as i4 from "@angular/common";
11
+ /**
12
+ * Componente specifico per la graficazione di un grafico ad Area
13
+ */
14
+ export class EsAreaChartComponent extends BaseChartComponent {
15
+ /**
16
+ * @ignore
17
+ */
18
+ constructor(el, ChartLoader, ChartDispatcher, adapter, zone, platformId, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME) {
19
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME);
20
+ this.adapter = adapter;
21
+ }
22
+ /**
23
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
24
+ */
25
+ getSpecificPropertiesToCheck() {
26
+ return ["Data", "DataArray"];
27
+ }
28
+ /**
29
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
30
+ *
31
+ * @returns {AreaChartSettings} Settings castati al tipo giusto
32
+ */
33
+ getCastedSettings() {
34
+ return (this.Settings ?? new AreaChartSettings());
35
+ }
36
+ /**
37
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
38
+ *
39
+ * @param {AreaChartSettings} settingsCasted Settings castati al tipo giusto
40
+ */
41
+ fillSpecificSettings(settingsCasted) {
42
+ }
43
+ /**
44
+ * Effettua il rendering di questo grafico in base ai Settings
45
+ *
46
+ * @param {AreaChartSettings} settingsCasted Impostazioni di graficazione
47
+ * @returns {AreaChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
48
+ */
49
+ graphicate(settingsCasted) {
50
+ return new AreaChartService(this.adapter).graphicate(this.Data, settingsCasted);
51
+ }
52
+ }
53
+ EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i1.ChartDispatcher }, { token: i2.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
54
+ EsAreaChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsAreaChartComponent, selector: "es-area-chart", inputs: { Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i3.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'es-area-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
58
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i1.ChartDispatcher }, { type: i2.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
59
+ type: Inject,
60
+ args: [PLATFORM_ID]
61
+ }] }, { type: undefined, decorators: [{
62
+ type: Inject,
63
+ args: [ESC_LOGS]
64
+ }] }, { type: undefined, decorators: [{
65
+ type: Inject,
66
+ args: [ESC_ANIMATIONS]
67
+ }] }, { type: undefined, decorators: [{
68
+ type: Inject,
69
+ args: [ESC_LOCALE]
70
+ }] }, { type: undefined, decorators: [{
71
+ type: Inject,
72
+ args: [ESC_THEME]
73
+ }] }]; }, propDecorators: { Data: [{
74
+ type: Input
75
+ }], DataArray: [{
76
+ type: Input
77
+ }] } });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtYXJlYS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1hcmVhLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVUsdUJBQXVCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFJbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBR2xEOztHQUVHO0FBT0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGtCQUFrQjtJQVkxRDs7T0FFRztJQUNILFlBQVksRUFBYyxFQUFFLFdBQXdCLEVBQUUsZUFBZ0MsRUFBVSxPQUFvQixFQUFFLElBQVksRUFDM0csVUFBa0IsRUFDckIsUUFBaUIsRUFDWCxjQUF1QixFQUMzQixVQUFrQixFQUNuQixTQUFpQjtRQUNwQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5iLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFPcEgsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNEJBQTRCO1FBQzFCLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUI7UUFDZixPQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxjQUFpQztJQUV0RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsY0FBaUM7UUFDMUMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQWdCLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakcsQ0FBQzs7aUhBekRVLG9CQUFvQix1SkFnQnJCLFdBQVcsYUFDWCxRQUFRLGFBQ1IsY0FBYyxhQUNkLFVBQVUsYUFDVixTQUFTO3FHQXBCUixvQkFBb0IsOEhDdEJqQyx3akNBbUJ3STsyRkRHM0gsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTswTEFrQlosTUFBTTswQkFBdEMsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFNBQVM7NENBZlYsSUFBSTtzQkFBWixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBJbmplY3QsIFBMQVRGT1JNX0lELCBOZ1pvbmUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzJztcclxuaW1wb3J0IHsgRVNDX0FOSU1BVElPTlMsIEVTQ19MT0NBTEUsIEVTQ19USEVNRSwgRVNDX0xPR1MgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEFyZWFDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgQXJlYUNoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgQXJlYUNoYXJ0RGF0YSwgUGFnZWRDaGFydERhdGEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGF0YSc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBzcGVjaWZpY28gcGVyIGxhIGdyYWZpY2F6aW9uZSBkaSB1biBncmFmaWNvIGFkIEFyZWFcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZXMtYXJlYS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNBcmVhQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ2hhcnRDb21wb25lbnQge1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIHNwZWNpZmljaSBwZXIgaWwgZ3JhZmljbyBvIGRpIHVuIHRpcG8gdHJhbXV0YWJpbGUgYWwgdGlwbyAqKkFyZWFDaGFydERhdGEqKiBjb2wgc3VwcG9ydG8gZGVsICoqQmFzZUFkYXB0ZXIqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGE6IEFyZWFDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKkFyZWFDaGFydERhdGEqKiBjb2wgc3VwcG9ydG8gZGVsICoqQmFzZUFkYXB0ZXIqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFBcnJheTogUGFnZWRDaGFydERhdGE8QXJlYUNoYXJ0RGF0YT5bXSB8IFBhZ2VkQ2hhcnREYXRhPGFueT5bXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBDaGFydExvYWRlcjogQ2hhcnRMb2FkZXIsIENoYXJ0RGlzcGF0Y2hlcjogQ2hhcnREaXNwYXRjaGVyLCBwcml2YXRlIGFkYXB0ZXI6IEJhc2VBZGFwdGVyLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19MT0dTKSBFU0NfTE9HUzogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfTE9DQUxFKSBFU0NfTE9DQUxFOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfTE9HUywgRVNDX0FOSU1BVElPTlMsIEVTQ19MT0NBTEUsIEVTQ19USEVNRSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGxlIHByb3ByaWV0w6Agc3BlY2lmaWNoZSBwZXIgcXVlc3RhIHRpcG9sb2dpYSBkaSBncmFmaWNvIHBlciBjdWkgc2VydmUgcmlncmFmaWNhcmVcclxuICAgKi9cclxuICBnZXRTcGVjaWZpY1Byb3BlcnRpZXNUb0NoZWNrKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXCJEYXRhXCIsIFwiRGF0YUFycmF5XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtBcmVhQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCk6IEFyZWFDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8QXJlYUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IEFyZWFDaGFydFNldHRpbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJlYUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogQXJlYUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZmZldHR1YSBpbCByZW5kZXJpbmcgZGkgcXVlc3RvIGdyYWZpY28gaW4gYmFzZSBhaSBTZXR0aW5nc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7QXJlYUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIEltcG9zdGF6aW9uaSBkaSBncmFmaWNhemlvbmVcclxuICAgKiBAcmV0dXJucyB7QXJlYUNoYXJ0U2VydmljZX0gTGEgc2VydmljZSB1dGlsaXp6YXRhIHBlciBpbCByZW5kZXJpbmcgbmVsbG8gc3RhdG8gc3ViaXRvIHN1Y2Nlc3Npdm8gYWwgcmVuZGVyaW5nIGVmZmV0dHVhdG9cclxuICAgKi9cclxuICBncmFwaGljYXRlKHNldHRpbmdzQ2FzdGVkOiBBcmVhQ2hhcnRTZXR0aW5ncyk6IGFueSB7XHJcbiAgICByZXR1cm4gbmV3IEFyZWFDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyKS5ncmFwaGljYXRlKDxBcmVhQ2hhcnREYXRhPnRoaXMuRGF0YSwgc2V0dGluZ3NDYXN0ZWQpO1xyXG4gIH1cclxufSIsIjxjaGFydC1wYWdlciAqbmdJZj1cImlzUGFnZWRcIiAob25QYWdlQ2hhbmdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiIFtJdGVtc109XCJEYXRhQXJyYXlcIiBbRHRvc109XCJEYXRhRHRvc1wiIFtTdGFydEluZGV4XT1cIkRhdGFEdG9TdGFydEluZGV4XCJcclxuICAgIFtCcm93c2VEZWxheU1zXT1cIkJyb3dzZURlbGF5TXNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyX2lubmVyIGxldC1oZWFkZXJJdGVtPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJfdHI7IGNvbnRleHQgOiB7JGltcGxpY2l0OiBoZWFkZXJJdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jaGFydC1wYWdlcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ190ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiAhbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImVzYy1sb2FkaW5nLW92ZXJsYXlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+TG9hZGluZy4uLi48L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IFtjbGFzcy5oaWRlLWJsb2NrXT1cImxvYWRpbmdDaGFydFwiIGlkPVwie3tuYW1lfX1cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj48L2Rpdj4iXX0=
@@ -0,0 +1,111 @@
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { PieChartSettings, LineChartSettings, VerticalChartSettings, Vertical2DChartSettings, VerticalStackedChartSettings, AreaChartSettings } from '../../models/settings';
5
+ import { LineChartService, PieChartService, VerticalChartService, Vertical2DChartService, VerticalStackedChartService, AreaChartService } from '../../services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core";
8
+ import * as i2 from "@esfaenza/extensions";
9
+ import * as i3 from "../../adapters";
10
+ import * as i4 from "../chart-pager/chart-pager.component";
11
+ import * as i5 from "@angular/common";
12
+ /**
13
+ * Componente specifico per la graficazione di un qualsiasi tipo di grafico.
14
+ *
15
+ * Si basa sul tipo specificato dalla proprietà **Type**
16
+ */
17
+ export class EsChartComponent extends BaseChartComponent {
18
+ /**
19
+ * @ignore
20
+ */
21
+ constructor(el, ChartLoader, ChartDispatcher, dateService, adapter, zone, platformId, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME) {
22
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME);
23
+ this.dateService = dateService;
24
+ this.adapter = adapter;
25
+ }
26
+ /**
27
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
28
+ */
29
+ getSpecificPropertiesToCheck() {
30
+ return ["Data", "Type"];
31
+ }
32
+ /**
33
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
34
+ *
35
+ * @returns {PieChartSettings | AreaChartSettings | LineChartSettings | VerticalChartSettings | Vertical2DChartSettings | VerticalStackedChartSettings} Settings castati al tipo giusto
36
+ */
37
+ getCastedSettings() {
38
+ switch (this.Type) {
39
+ case 'pie':
40
+ return (this.Settings ?? new PieChartSettings());
41
+ case 'area':
42
+ return (this.Settings ?? new AreaChartSettings());
43
+ case 'line':
44
+ return (this.Settings ?? new LineChartSettings());
45
+ case 'vertical':
46
+ return (this.Settings ?? new VerticalChartSettings());
47
+ case 'vertical-2d':
48
+ return (this.Settings ?? new Vertical2DChartSettings());
49
+ case 'vertical-stacked':
50
+ return (this.Settings ?? new VerticalStackedChartSettings());
51
+ }
52
+ }
53
+ /**
54
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
55
+ *
56
+ * @param {PieChartSettings | AreaChartSettings | LineChartSettings | VerticalChartSettings | Vertical2DChartSettings | VerticalStackedChartSettings} settingsCasted Settings castati al tipo giusto
57
+ */
58
+ fillSpecificSettings(settingsCasted) {
59
+ // Nope. Se si usa l'es-chart si danno i settings con l'oggetto
60
+ }
61
+ /**
62
+ * Effettua il rendering di questo grafico in base ai Settings
63
+ *
64
+ * @param {PieChartSettings | AreaChartSettings | LineChartSettings | VerticalChartSettings | Vertical2DChartSettings | VerticalStackedChartSettings} settingsCasted Impostazioni di graficazione
65
+ * @returns {PieChartService | AreaChartService | LineChartService | VerticalChartService | Vertical2DChartService | VerticalStackedChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
66
+ */
67
+ graphicate(settings) {
68
+ switch (this.Type) {
69
+ case 'pie':
70
+ return new PieChartService(this.adapter).graphicate(this.Data, settings);
71
+ case 'area':
72
+ return new AreaChartService(this.adapter).graphicate(this.Data, settings);
73
+ case 'line':
74
+ return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settings);
75
+ case 'vertical':
76
+ return new VerticalChartService(this.adapter).graphicate(this.Data, settings);
77
+ case 'vertical-2d':
78
+ return new Vertical2DChartService(this.adapter).graphicate(this.Data, settings);
79
+ case 'vertical-stacked':
80
+ return new VerticalStackedChartService(this.adapter).graphicate(this.Data, settings);
81
+ }
82
+ }
83
+ }
84
+ EsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i1.ChartDispatcher }, { token: i2.DateService }, { token: i3.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
85
+ EsChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsChartComponent, selector: "es-chart", inputs: { Type: "Type", Data: "Data", DataArray: "DataArray" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ selector: 'es-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
89
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i1.ChartDispatcher }, { type: i2.DateService }, { type: i3.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
90
+ type: Inject,
91
+ args: [PLATFORM_ID]
92
+ }] }, { type: undefined, decorators: [{
93
+ type: Inject,
94
+ args: [ESC_LOGS]
95
+ }] }, { type: undefined, decorators: [{
96
+ type: Inject,
97
+ args: [ESC_ANIMATIONS]
98
+ }] }, { type: undefined, decorators: [{
99
+ type: Inject,
100
+ args: [ESC_LOCALE]
101
+ }] }, { type: undefined, decorators: [{
102
+ type: Inject,
103
+ args: [ESC_THEME]
104
+ }] }]; }, propDecorators: { Type: [{
105
+ type: Input
106
+ }], Data: [{
107
+ type: Input
108
+ }], DataArray: [{
109
+ type: Input
110
+ }] } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9zcGVjaWFsaXphdGlvbnMvZXMtY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBVSx1QkFBdUIsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUluSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSw0QkFBNEIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdLLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsMkJBQTJCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUdoSzs7OztHQUlHO0FBT0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGtCQUFrQjtJQXVCdEQ7O09BRUc7SUFDSCxZQUFZLEVBQWMsRUFBRSxXQUF3QixFQUFFLGVBQWdDLEVBQVUsV0FBd0IsRUFBVSxPQUFvQixFQUFFLElBQVksRUFDN0ksVUFBa0IsRUFDckIsUUFBaUIsRUFDWCxjQUF1QixFQUMzQixVQUFrQixFQUNuQixTQUFpQjtRQUNwQyxLQUFLLENBQUMsRUFB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TTtvTkE2QlosTUFBTTswQkFBdEMsTUFBTTsyQkFBQyxXQUFXOzswQkFDbEIsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLGNBQWM7OzBCQUNyQixNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFNBQVM7NENBMUJWLElBQUk7c0JBQVosS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdCwgUExBVEZPUk1fSUQsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xyXG5pbXBvcnQgeyBFU0NfQU5JTUFUSU9OUywgRVNDX0xPQ0FMRSwgRVNDX1RIRU1FLCBFU0NfTE9HUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hhcnRMb2FkZXIsIENoYXJ0RGlzcGF0Y2hlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgUGllQ2hhcnRTZXR0aW5ncywgTGluZUNoYXJ0U2V0dGluZ3MsIFZlcnRpY2FsQ2hhcnRTZXR0aW5ncywgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MsIFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3MsIEFyZWFDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0U2VydmljZSwgUGllQ2hhcnRTZXJ2aWNlLCBWZXJ0aWNhbENoYXJ0U2VydmljZSwgVmVydGljYWwyRENoYXJ0U2VydmljZSwgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlLCBBcmVhQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBQaWVDaGFydERhdGEsIExpbmVDaGFydERhdGEsIFZlcnRpY2FsQ2hhcnREYXRhLCBWZXJ0aWNhbDJEQ2hhcnREYXRhLCBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGEsIFBhZ2VkQ2hhcnREYXRhLCBBcmVhQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gcXVhbHNpYXNpIHRpcG8gZGkgZ3JhZmljby5cclxuICogXHJcbiAqIFNpIGJhc2Egc3VsIHRpcG8gc3BlY2lmaWNhdG8gZGFsbGEgcHJvcHJpZXTDoCAqKlR5cGUqKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlcy1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRpcG9sb2dpYSBkaSBncmFmaWNvIGRhIHByZXNlbnRhcmVcclxuICAgKi9cclxuICBASW5wdXQoKSBUeXBlOiAncGllJyB8ICdsaW5lJyB8ICd2ZXJ0aWNhbCcgfCAndmVydGljYWwtMmQnIHwgJ3ZlcnRpY2FsLXN0YWNrZWQnIHwgJ2FyZWEnO1xyXG5cclxuICAvKipcclxuICAgKiBEYXRpIHNwZWNpZmljaSBwZXIgaWwgZ3JhZmljbyBvIGRpIHVuIHRpcG8gdHJhbXV0YWJpbGUgYWwgdGlwbyBnaXVzdG8gY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBMaW5lQ2hhcnREYXRhIHwgUGllQ2hhcnREYXRhIHwgVmVydGljYWwyRENoYXJ0RGF0YSB8IFZlcnRpY2FsQ2hhcnREYXRhIHwgVmVydGljYWxTdGFja2VkQ2hhcnREYXRhIHwgQXJlYUNoYXJ0RGF0YSB8IGFueTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGlzdGEgZGkgRGF0aSBzcGVjaWZpY2kgcGVyIHVuIGdyYWZpY28gcGFnaW5hdG8gbyBkaSBjdWkgb2duaSBibG9jY28gZGF0aSDDqCB0cmFtdXRhYmlsZSBhbCB0aXBvIGdpdXN0byBjb2wgc3VwcG9ydG8gZGVsICoqQmFzZUFkYXB0ZXIqKlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIERhdGFBcnJheTogUGFnZWRDaGFydERhdGE8TGluZUNoYXJ0RGF0YT5bXVxyXG4gICAgfCBQYWdlZENoYXJ0RGF0YTxQaWVDaGFydERhdGE+W11cclxuICAgIHwgUGFnZWRDaGFydERhdGE8VmVydGljYWwyRENoYXJ0RGF0YT5bXVxyXG4gICAgfCBQYWdlZENoYXJ0RGF0YTxWZXJ0aWNhbENoYXJ0RGF0YT5bXVxyXG4gICAgfCBQYWdlZENoYXJ0RGF0YTxWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGE+W11cclxuICAgIHwgUGFnZWRDaGFydERhdGE8QXJlYUNoYXJ0RGF0YT5bXVxyXG4gICAgfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZiwgQ2hhcnRMb2FkZXI6IENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXI6IENoYXJ0RGlzcGF0Y2hlciwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZVNlcnZpY2UsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHpvbmU6IE5nWm9uZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIEBJbmplY3QoRVNDX0xPR1MpIEVTQ19MT0dTOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfQU5JTUFUSU9OUykgRVNDX0FOSU1BVElPTlM6IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KEVTQ19MT0NBTEUpIEVTQ19MT0NBTEU6IHN0cmluZyxcclxuICAgIEBJbmplY3QoRVNDX1RIRU1FKSBFU0NfVEhFTUU6IHN0cmluZykge1xyXG4gICAgc3VwZXIoZWwsIHBsYXRmb3JtSWQsIHpvbmUsIENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIsIEVTQ19MT0dTLCBFU0NfQU5JTUFUSU9OUywgRVNDX0xPQ0FMRSwgRVNDX1RIRU1FKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE90dGllbmUgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2hlIHBlciBxdWVzdGEgdGlwb2xvZ2lhIGRpIGdyYWZpY28gcGVyIGN1aSBzZXJ2ZSByaWdyYWZpY2FyZVxyXG4gICAqL1xyXG4gIGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFtcIkRhdGFcIiwgXCJUeXBlXCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQaWVDaGFydFNldHRpbmdzIHwgQXJlYUNoYXJ0U2V0dGluZ3MgfCBMaW5lQ2hhcnRTZXR0aW5ncyB8IFZlcnRpY2FsQ2hhcnRTZXR0aW5ncyB8IFZlcnRpY2FsMkRDaGFydFNldHRpbmdzIHwgVmVydGljYWxTdGFja2VkQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLlR5cGUpIHtcclxuICAgICAgY2FzZSAncGllJzpcclxuICAgICAgICByZXR1cm4gPFBpZUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IFBpZUNoYXJ0U2V0dGluZ3MoKSk7XHJcbiAgICAgIGNhc2UgJ2FyZWEnOlxyXG4gICAgICAgIHJldHVybiA8QXJlYUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IEFyZWFDaGFydFNldHRpbmdzKCkpO1xyXG4gICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICByZXR1cm4gPExpbmVDaGFydFNldHRpbmdzPih0aGlzLlNldHRpbmdzID8/IG5ldyBMaW5lQ2hhcnRTZXR0aW5ncygpKTtcclxuICAgICAgY2FzZSAndmVydGljYWwnOlxyXG4gICAgICAgIHJldHVybiA8VmVydGljYWxDaGFydFNldHRpbmdzPih0aGlzLlNldHRpbmdzID8/IG5ldyBWZXJ0aWNhbENoYXJ0U2V0dGluZ3MoKSk7XHJcbiAgICAgIGNhc2UgJ3ZlcnRpY2FsLTJkJzpcclxuICAgICAgICByZXR1cm4gPFZlcnRpY2FsMkRDaGFydFNldHRpbmdzPih0aGlzLlNldHRpbmdzID8/IG5ldyBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncygpKTtcclxuICAgICAgY2FzZSAndmVydGljYWwtc3RhY2tlZCc6XHJcbiAgICAgICAgcmV0dXJuIDxWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzPih0aGlzLlNldHRpbmdzID8/IG5ldyBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7UGllQ2hhcnRTZXR0aW5ncyB8IEFyZWFDaGFydFNldHRpbmdzIHwgTGluZUNoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbENoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncyB8IFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogUGllQ2hhcnRTZXR0aW5ncyB8IEFyZWFDaGFydFNldHRpbmdzIHwgTGluZUNoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbENoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncyB8IFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIC8vIE5vcGUuIFNlIHNpIHVzYSBsJ2VzLWNoYXJ0IHNpIGRhbm5vIGkgc2V0dGluZ3MgY29uIGwnb2dnZXR0b1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWZmZXR0dWEgaWwgcmVuZGVyaW5nIGRpIHF1ZXN0byBncmFmaWNvIGluIGJhc2UgYWkgU2V0dGluZ3NcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1BpZUNoYXJ0U2V0dGluZ3MgfCBBcmVhQ2hhcnRTZXR0aW5ncyB8IExpbmVDaGFydFNldHRpbmdzIHwgVmVydGljYWxDaGFydFNldHRpbmdzIHwgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzfSBzZXR0aW5nc0Nhc3RlZCBJbXBvc3RhemlvbmkgZGkgZ3JhZmljYXppb25lXHJcbiAgICogQHJldHVybnMge1BpZUNoYXJ0U2VydmljZSB8IEFyZWFDaGFydFNlcnZpY2UgfCBMaW5lQ2hhcnRTZXJ2aWNlIHwgVmVydGljYWxDaGFydFNlcnZpY2UgfCBWZXJ0aWNhbDJEQ2hhcnRTZXJ2aWNlIHwgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlfSBMYSBzZXJ2aWNlIHV0aWxpenphdGEgcGVyIGlsIHJlbmRlcmluZyBuZWxsbyBzdGF0byBzdWJpdG8gc3VjY2Vzc2l2byBhbCByZW5kZXJpbmcgZWZmZXR0dWF0b1xyXG4gICAqL1xyXG4gIGdyYXBoaWNhdGUoc2V0dGluZ3M6IFBpZUNoYXJ0U2V0dGluZ3MgfCBBcmVhQ2hhcnRTZXR0aW5ncyB8IExpbmVDaGFydFNldHRpbmdzIHwgVmVydGljYWxDaGFydFNldHRpbmdzIHwgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MgfCBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzKTogYW55IHtcclxuICAgIHN3aXRjaCAodGhpcy5UeXBlKSB7XHJcbiAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQaWVDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyKS5ncmFwaGljYXRlKDxQaWVDaGFydERhdGE+dGhpcy5EYXRhLCA8UGllQ2hhcnRTZXR0aW5ncz5zZXR0aW5ncyk7XHJcbiAgICAgIGNhc2UgJ2FyZWEnOlxyXG4gICAgICAgIHJldHVybiBuZXcgQXJlYUNoYXJ0U2VydmljZSh0aGlzLmFkYXB0ZXIpLmdyYXBoaWNhdGUoPEFyZWFDaGFydERhdGE+dGhpcy5EYXRhLCA8QXJlYUNoYXJ0U2V0dGluZ3M+c2V0dGluZ3MpO1xyXG4gICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICByZXR1cm4gbmV3IExpbmVDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyLCB0aGlzLmRhdGVTZXJ2aWNlKS5ncmFwaGljYXRlKDxMaW5lQ2hhcnREYXRhPnRoaXMuRGF0YSwgPExpbmVDaGFydFNldHRpbmdzPnNldHRpbmdzKTtcclxuICAgICAgY2FzZSAndmVydGljYWwnOlxyXG4gICAgICAgIHJldHVybiBuZXcgVmVydGljYWxDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyKS5ncmFwaGljYXRlKDxWZXJ0aWNhbENoYXJ0RGF0YT50aGlzLkRhdGEsIDxWZXJ0aWNhbENoYXJ0U2V0dGluZ3M+c2V0dGluZ3MpO1xyXG4gICAgICBjYXNlICd2ZXJ0aWNhbC0yZCc6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZXJ0aWNhbDJEQ2hhcnRTZXJ2aWNlKHRoaXMuYWRhcHRlcikuZ3JhcGhpY2F0ZSg8VmVydGljYWwyRENoYXJ0RGF0YT50aGlzLkRhdGEsIDxWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncz5zZXR0aW5ncyk7XHJcbiAgICAgIGNhc2UgJ3ZlcnRpY2FsLXN0YWNrZWQnOlxyXG4gICAgICAgIHJldHVybiBuZXcgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlKHRoaXMuYWRhcHRlcikuZ3JhcGhpY2F0ZSg8VmVydGljYWxTdGFja2VkQ2hhcnREYXRhPnRoaXMuRGF0YSwgPFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3M+c2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gIH1cclxufSIsIjxjaGFydC1wYWdlciAqbmdJZj1cImlzUGFnZWRcIiAob25QYWdlQ2hhbmdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiIFtJdGVtc109XCJEYXRhQXJyYXlcIiBbRHRvc109XCJEYXRhRHRvc1wiIFtTdGFydEluZGV4XT1cIkRhdGFEdG9TdGFydEluZGV4XCJcclxuICAgIFtCcm93c2VEZWxheU1zXT1cIkJyb3dzZURlbGF5TXNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyX2lubmVyIGxldC1oZWFkZXJJdGVtPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJfdHI7IGNvbnRleHQgOiB7JGltcGxpY2l0OiBoZWFkZXJJdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jaGFydC1wYWdlcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ190ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiAhbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImVzYy1sb2FkaW5nLW92ZXJsYXlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+TG9hZGluZy4uLi48L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IFtjbGFzcy5oaWRlLWJsb2NrXT1cImxvYWRpbmdDaGFydFwiIGlkPVwie3tuYW1lfX1cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj48L2Rpdj4iXX0=
@@ -0,0 +1,110 @@
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { LineChartSettings } from '../../models/settings';
5
+ import { LineChartService } from '../../services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core";
8
+ import * as i2 from "../../adapters";
9
+ import * as i3 from "@esfaenza/extensions";
10
+ import * as i4 from "../chart-pager/chart-pager.component";
11
+ import * as i5 from "@angular/common";
12
+ /**
13
+ * Componente specifico per la graficazione di un grafico a Linea su un asse temporale
14
+ */
15
+ export class EsLineChartComponent extends BaseChartComponent {
16
+ /**
17
+ * @ignore
18
+ */
19
+ constructor(el, ChartLoader, ChartDispatcher, adapter, dateService, zone, platformId, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME) {
20
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME);
21
+ this.adapter = adapter;
22
+ this.dateService = dateService;
23
+ }
24
+ /**
25
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
26
+ */
27
+ getSpecificPropertiesToCheck() {
28
+ return ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Fill", "Min", "Max"];
29
+ }
30
+ /**
31
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
32
+ *
33
+ * @returns {LineChartSettings} Settings castati al tipo giusto
34
+ */
35
+ getCastedSettings() {
36
+ return (this.Settings ?? new LineChartSettings());
37
+ }
38
+ /**
39
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
40
+ *
41
+ * @param {LineChartSettings} settingsCasted Settings castati al tipo giusto
42
+ */
43
+ fillSpecificSettings(settingsCasted) {
44
+ settingsCasted.Step = settingsCasted.Step != null ? settingsCasted.Step : this.Step;
45
+ settingsCasted.DataGroupBucketSize = settingsCasted.DataGroupBucketSize != null ? settingsCasted.DataGroupBucketSize : this.DataGroupBucketSize;
46
+ settingsCasted.StrokeSize = settingsCasted.StrokeSize != null ? settingsCasted.StrokeSize : this.StrokeSize;
47
+ settingsCasted.DataGroupingThreshold = settingsCasted.DataGroupingThreshold != null ? settingsCasted.DataGroupingThreshold : this.DataGroupingThreshold;
48
+ settingsCasted.AllowGaps = settingsCasted.AllowGaps != null ? settingsCasted.AllowGaps : this.AllowGaps;
49
+ settingsCasted.MergeDatasets = settingsCasted.MergeDatasets != null ? settingsCasted.MergeDatasets : this.MergeDatasets;
50
+ settingsCasted.FinalInstants = settingsCasted.FinalInstants != null ? settingsCasted.FinalInstants : this.FinalInstants;
51
+ settingsCasted.Min = settingsCasted.Min != null ? settingsCasted.Min : this.Min;
52
+ settingsCasted.Max = settingsCasted.Max != null ? settingsCasted.Max : this.Max;
53
+ settingsCasted.Fill = settingsCasted.Fill != null ? settingsCasted.Fill : this.Fill;
54
+ }
55
+ /**
56
+ * Effettua il rendering di questo grafico in base ai Settings
57
+ *
58
+ * @param {LineChartSettings} settingsCasted Impostazioni di graficazione
59
+ * @returns {LineChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
60
+ */
61
+ graphicate(settingsCasted) {
62
+ return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settingsCasted);
63
+ }
64
+ }
65
+ EsLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i1.ChartDispatcher }, { token: i2.BaseAdapter }, { token: i3.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
66
+ EsLineChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsLineChartComponent, selector: "es-line-chart", inputs: { Data: "Data", DataArray: "DataArray", Step: "Step", DataGroupBucketSize: "DataGroupBucketSize", DataGroupingThreshold: "DataGroupingThreshold", StrokeSize: "StrokeSize", AllowGaps: "AllowGaps", MergeDatasets: "MergeDatasets", FinalInstants: "FinalInstants", Min: "Min", Max: "Max", Fill: "Fill" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i4.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'es-line-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
70
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i1.ChartDispatcher }, { type: i2.BaseAdapter }, { type: i3.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
71
+ type: Inject,
72
+ args: [PLATFORM_ID]
73
+ }] }, { type: undefined, decorators: [{
74
+ type: Inject,
75
+ args: [ESC_LOGS]
76
+ }] }, { type: undefined, decorators: [{
77
+ type: Inject,
78
+ args: [ESC_ANIMATIONS]
79
+ }] }, { type: undefined, decorators: [{
80
+ type: Inject,
81
+ args: [ESC_LOCALE]
82
+ }] }, { type: undefined, decorators: [{
83
+ type: Inject,
84
+ args: [ESC_THEME]
85
+ }] }]; }, propDecorators: { Data: [{
86
+ type: Input
87
+ }], DataArray: [{
88
+ type: Input
89
+ }], Step: [{
90
+ type: Input
91
+ }], DataGroupBucketSize: [{
92
+ type: Input
93
+ }], DataGroupingThreshold: [{
94
+ type: Input
95
+ }], StrokeSize: [{
96
+ type: Input
97
+ }], AllowGaps: [{
98
+ type: Input
99
+ }], MergeDatasets: [{
100
+ type: Input
101
+ }], FinalInstants: [{
102
+ type: Input
103
+ }], Min: [{
104
+ type: Input
105
+ }], Max: [{
106
+ type: Input
107
+ }], Fill: [{
108
+ type: Input
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtbGluZS1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy1saW5lLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVUsdUJBQXVCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFJbkgsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUdsRDs7R0FFRztBQU9ILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUEyRTFEOztPQUVHO0lBQ0gsWUFBWSxFQUFjLEVBQUUsV0FBd0IsRUFBRSxlQUFnQyxFQUFVLE9BQW9CLEVBQVUsV0FBd0IsRUFBRSxJQUFZLEVBQzdJLFVBQWtCLEVBQ3JCLFFBQWlCLEVBQ1gsY0FBdUIsRUFDM0IsVUFBa0IsRUFDbkIsU0FBaUI7UUFDcEMsS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFOYixZQUFPLEdBQVAsT0FB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d2pDQW1Cd0k7MkZERzNILG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07b05BaUZaLE1BQU07MEJBQXRDLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxTQUFTOzRDQTlFVixJQUFJO3NCQUFaLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBUUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUtHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycyc7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfTE9DQUxFLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBMaW5lQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncyc7XHJcbmltcG9ydCB7IExpbmVDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IExpbmVDaGFydERhdGEsIFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gZ3JhZmljbyBhIExpbmVhIHN1IHVuIGFzc2UgdGVtcG9yYWxlXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VzLWxpbmUtY2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi4vYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi4vYmFzZS9iYXNlLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEVzTGluZUNoYXJ0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNoYXJ0Q29tcG9uZW50IHtcclxuXHJcbiAgLyoqXHJcbiAgICogRGF0aSBzcGVjaWZpY2kgcGVyIGlsIGdyYWZpY28gbyBkaSB1biB0aXBvIHRyYW11dGFiaWxlIGFsIHRpcG8gKipMaW5lQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55O1xyXG5cclxuICAvKipcclxuICAgKiBMaXN0YSBkaSBEYXRpIHNwZWNpZmljaSBwZXIgdW4gZ3JhZmljbyBwYWdpbmF0byBvIGRpIGN1aSBvZ25pIGJsb2NjbyBkYXRpIMOoIHRyYW11dGFiaWxlIGFsIHRpcG8gKipMaW5lQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhQXJyYXk6IFBhZ2VkQ2hhcnREYXRhPExpbmVDaGFydERhdGE+W10gfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBsYSBjdXJ2YSBkZXZlIGNvbGxlZ2FyZSBkaXJldHRhbWVudGUgdW4gZGF0YXBvaW50IGFsbCdhbHRybyBvIHNlIGRldmUgZmFyZSBkZWdsaSBzdGVwXHJcbiAgICovXHJcbiAgQElucHV0KCkgU3RlcDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGlsIG51bWVybyBtYXNzaW1vIGRpIGRhdGFwb2ludCB2aXN1YWxpenphYmlsZSBpbiB1bmEgc2luZ29sYSB2aXN0YSBkZWwgZ3JhZmljby4gTCdlY2NlZGVuemEgdmllbmUgcmFnZ3J1cHBhdGEgZSB2ZXJyw6AgbW9zdHJhdGEgc3VsbG8gem9vbS5cclxuICAgKiBcclxuICAgKiBBVFRFTlpJT05FOiBVdGlsaXp6YW5kbyBpbCBzaXN0ZW1hIGRpIGRlZmF1bHQgZGkgcmFnZ3J1cHBhbWVudG8gZGkgYW0tY2hhcnRzIHNpIHJpc2NoaWEgZGkgdGFnbGlhcmUgdmlhIHBlenppIGRhIHNlcmllIG1vbHRvIG9uZHVsYXRlXHJcbiAgICogaW4gcXVhbnRvIGlsIGNvbXBvcnRhbWVudG8gZGkgZGVmYXVsdCDDqCBxdWVsbG8gZGkgZWxpbWluYXJlIGkgZGF0YXBvaW50IGNoZSBub24gY2kgc3Rhbm5vLCBub24gZGkgaW50ZXJwb2xhcmxpXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUdyb3VwQnVja2V0U2l6ZTogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBTb2dsaWEgcGVyIGNvbnRyb2xsYXJlIG9sdHJlIGNoZSBudW1lcm8gZGkgZGF0YXBvaW50IGlsIGdyYWZpY28gZGV2ZSBpbml6aWFyZSBhZCBlZmZldHR1YXJlIHJhZ2dydXBwYW1lbnRpIGNvbnNpZGVyYW5kbyBsJ0lucHV0ICoqRGF0YUdyb3VwQnVja2V0U2l6ZSoqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUdyb3VwaW5nVGhyZXNob2xkOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBsZSBkaW1uc2lvbmksIGluIHBpeGVsIGRlbGxhIGxpbmVhIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQElucHV0KCkgU3Ryb2tlU2l6ZTogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2Ugc29ubyBwZXJtZXNzaSBkZWkgR2FwIGZyYSB1biB2YWxvcmUgZSBsJ2FsdHJvLlxyXG4gICAqIFxyXG4gICAqIE5vcm1hbG1lbnRlIHF1YW5kbyBjaSBzb25vIGRlaSBidWNoaSBsJ3VsdGltbyBkYXRhcG9pbnQgZGVsIGJ1Y28gdmllbmUgY29sbGVnYXRvIGRpcmV0dGFtZW50ZSBhbCBwcmltbyBkYXRhcG9pbnQgZGlzcG9uaWJpbGUuIFxyXG4gICAqIFxyXG4gICAqIEltcG9zdGFuZG8gcXVlc3RvIElucHV0IGEgdHJ1ZSBpbnZlY2UsIHBvc3RvIGRpIGF2ZXIgYXNzZWduYXRvIGxhIHZhcmlhYmlsZSAqKmludGVydmFsKiogZGVsbGEgY2xhc3NlICoqTGluZUNoYXJ0RGF0YSoqLCDDqCBwb3NzaWJpbGUgXHJcbiAgICogZmFyIGFwcGFyaXJlIGlsIGJsb2NjbyBkaSBkYXRpIG1hbmNhbnRpIGNvbWUgdW4gYnVjbyB2ZXJvIGUgcHJvcHJpbywgc2VuemEgYWxjdW4gY29sbGVnYW1lbnRvIGZyYSBpIGR1ZSBkYXRhcG9pbnQgZXN0cmVtaVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEFsbG93R2FwczogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5wdXQgY2hlIHBlcm1ldHRlIGRpIHJpZWxhYm9yYXJlIGkgZGF0aSBkZWwgZ3JhZmljbyBwZXIgZ2VuZXJhcmUgdW4gc29sbyBEYXRhc2V0XHJcbiAgICogXHJcbiAgICogVmllbmUgdXRpbGl6emF0byBzZW1wbGljZW1lbnRlIHBlciBkYXJlIHVuIHRvb2x0aXAgbW9sdG8gcGnDuSBiZWxsby9hdmFuemF0byBzdWxsbyBzY29ycmltZW50b2RlbCBjdXJzb3JlIGFsbCdpbnRlcm5vIGRlbCBncmFmaWNvXHJcbiAgICovXHJcbiAgQElucHV0KCkgTWVyZ2VEYXRhc2V0czogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIGxlIGRhdGUgY2hlIGFycml2YW5vIGFsbCdhc3NlIFggZGV2b25vIGVzc2VyZSBjb25zaWRlcmF0ZSBcIklzdGFudGUgZmluYWxlXCIgZSBhZ2dpdXN0YXRlIGRpIGNvbnNlZ3VlbnphLiBcclxuICAgKiBTZSBub24gw6ggdmFsb3JpenphdGEgbGEgdmFyaWFiaWxlICoqaW50ZXJ2YWwqKiBkZWxsYSBjbGFzc2UgKipMaW5lQ2hhcnREYXRhKiogbm9uIGhhIGFsY3VuIGVmZmV0dG9cclxuICAgKiBcclxuICAgKiBBZCBlc2VtcGlvLCBsYSBkYXRhIDE2LzA3LzIwMjEgY29uIGludGVydmFsbG8gb3JhcmlvIHZlcnJlYmJlIHRyYXNmb3JtYXRhIGluIDE1LzA3LzIwMjEgMjQ6MDA6MDAgKE92dmlhbWVudGUgw6ggdXRpbGl6emF0byBzb2xvIGxhdG8gcHJlc2VudGF6aW9uZSlcclxuICAgKi9cclxuICBASW5wdXQoKSBGaW5hbEluc3RhbnRzOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBHZXN0aXNjZSBpbCBtaW5pbW8gZGVsbCdhc3NlIFlcclxuICAgKi9cclxuICBASW5wdXQoKSBNaW46IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2VzdGlzY2UgaWwgbWFzc2ltbyBkZWxsJ2Fzc2UgWVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1heDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgZWZmZXR0dWFyZSBpbCBGaWxsIGRlbGxhIHNlcmllIGluIG1vZG8gZGEgbm9uIHZlZGVyZSBzb2xvIGxhIGxpbmVhIG1hIHByb3ByaW8gbCdhcmVhIHNvdHRlc3NhIGNvbXBsZXRhbWVudGUgY29sb3JhdGFcclxuICAgKi9cclxuICBASW5wdXQoKSBGaWxsOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19MT0dTKSBFU0NfTE9HUzogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfTE9DQUxFKSBFU0NfTE9DQUxFOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfTE9HUywgRVNDX0FOSU1BVElPTlMsIEVTQ19MT0NBTEUsIEVTQ19USEVNRSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGxlIHByb3ByaWV0w6Agc3BlY2lmaWNoZSBwZXIgcXVlc3RhIHRpcG9sb2dpYSBkaSBncmFmaWNvIHBlciBjdWkgc2VydmUgcmlncmFmaWNhcmVcclxuICAgKi9cclxuICBnZXRTcGVjaWZpY1Byb3BlcnRpZXNUb0NoZWNrKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXCJEYXRhXCIsIFwiRGF0YUFycmF5XCIsIFwiU3RlcFwiLCBcIkRhdGFHcm91cEJ1Y2tldFNpemVcIiwgXCJEYXRhR3JvdXBpbmdUaHJlc2hvbGRcIiwgXCJTdHJva2VTaXplXCIsIFwiQWxsb3dHYXBzXCIsIFwiTWVyZ2VEYXRhc2V0c1wiLCBcIkZpbmFsSW5zdGFudHNcIiwgXCJGaWxsXCIsIFwiTWluXCIsIFwiTWF4XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtMaW5lQ2hhcnRTZXR0aW5nc30gU2V0dGluZ3MgY2FzdGF0aSBhbCB0aXBvIGdpdXN0b1xyXG4gICAqL1xyXG4gIGdldENhc3RlZFNldHRpbmdzKCk6IExpbmVDaGFydFNldHRpbmdzIHtcclxuICAgIHJldHVybiA8TGluZUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IExpbmVDaGFydFNldHRpbmdzKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW50ZWdyYSBpIFNldHRpbmdzIGJhc2UgY29uIHR1dHRpIGdsaSBJbnB1dCBzcGVjaWZpY2kgZGkgcXVlc3RvIGdyYWZpY28sIGRhbmRvIHByaW9yaXTDoCBhaSBTZXR0aW5ncyBzZSBkZWZpbml0aVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7TGluZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIFNldHRpbmdzIGNhc3RhdGkgYWwgdGlwbyBnaXVzdG9cclxuICAgKi9cclxuICBmaWxsU3BlY2lmaWNTZXR0aW5ncyhzZXR0aW5nc0Nhc3RlZDogTGluZUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIHNldHRpbmdzQ2FzdGVkLlN0ZXAgPSBzZXR0aW5nc0Nhc3RlZC5TdGVwICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5TdGVwIDogdGhpcy5TdGVwO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwQnVja2V0U2l6ZSA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cEJ1Y2tldFNpemUgOiB0aGlzLkRhdGFHcm91cEJ1Y2tldFNpemU7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5TdHJva2VTaXplID0gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuU3Ryb2tlU2l6ZSA6IHRoaXMuU3Ryb2tlU2l6ZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCA9IHNldHRpbmdzQ2FzdGVkLkRhdGFHcm91cGluZ1RocmVzaG9sZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRGF0YUdyb3VwaW5nVGhyZXNob2xkIDogdGhpcy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQ7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgPSBzZXR0aW5nc0Nhc3RlZC5BbGxvd0dhcHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkFsbG93R2FwcyA6IHRoaXMuQWxsb3dHYXBzO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTWVyZ2VEYXRhc2V0cyA9IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1lcmdlRGF0YXNldHMgOiB0aGlzLk1lcmdlRGF0YXNldHM7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5GaW5hbEluc3RhbnRzID0gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRmluYWxJbnN0YW50cyA6IHRoaXMuRmluYWxJbnN0YW50cztcclxuICAgIHNldHRpbmdzQ2FzdGVkLk1pbiA9IHNldHRpbmdzQ2FzdGVkLk1pbiAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTWluIDogdGhpcy5NaW47XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5NYXggPSBzZXR0aW5nc0Nhc3RlZC5NYXggIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLk1heCA6IHRoaXMuTWF4O1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuRmlsbCA9IHNldHRpbmdzQ2FzdGVkLkZpbGwgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkZpbGwgOiB0aGlzLkZpbGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFZmZldHR1YSBpbCByZW5kZXJpbmcgZGkgcXVlc3RvIGdyYWZpY28gaW4gYmFzZSBhaSBTZXR0aW5nc1xyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7TGluZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIEltcG9zdGF6aW9uaSBkaSBncmFmaWNhemlvbmVcclxuICAgKiBAcmV0dXJucyB7TGluZUNoYXJ0U2VydmljZX0gTGEgc2VydmljZSB1dGlsaXp6YXRhIHBlciBpbCByZW5kZXJpbmcgbmVsbG8gc3RhdG8gc3ViaXRvIHN1Y2Nlc3Npdm8gYWwgcmVuZGVyaW5nIGVmZmV0dHVhdG9cclxuICAgKi9cclxuICBncmFwaGljYXRlKHNldHRpbmdzQ2FzdGVkOiBMaW5lQ2hhcnRTZXR0aW5ncyk6IGFueSB7XHJcbiAgICByZXR1cm4gbmV3IExpbmVDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyLCB0aGlzLmRhdGVTZXJ2aWNlKS5ncmFwaGljYXRlKDxMaW5lQ2hhcnREYXRhPnRoaXMuRGF0YSwgc2V0dGluZ3NDYXN0ZWQpO1xyXG4gIH1cclxufSIsIjxjaGFydC1wYWdlciAqbmdJZj1cImlzUGFnZWRcIiAob25QYWdlQ2hhbmdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiIFtJdGVtc109XCJEYXRhQXJyYXlcIiBbRHRvc109XCJEYXRhRHRvc1wiIFtTdGFydEluZGV4XT1cIkRhdGFEdG9TdGFydEluZGV4XCJcclxuICAgIFtCcm93c2VEZWxheU1zXT1cIkJyb3dzZURlbGF5TXNcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyX2lubmVyIGxldC1oZWFkZXJJdGVtPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJfdHI7IGNvbnRleHQgOiB7JGltcGxpY2l0OiBoZWFkZXJJdGVtfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9jaGFydC1wYWdlcj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nQ2hhcnQgJiYgbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ190ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiAhbG9hZGluZ190ZW1wbGF0ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImVzYy1sb2FkaW5nLW92ZXJsYXlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj5cclxuICAgICAgICA8cCBjbGFzcz1cImxhYmVsXCI+TG9hZGluZy4uLi48L3A+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2IFtjbGFzcy5oaWRlLWJsb2NrXT1cImxvYWRpbmdDaGFydFwiIGlkPVwie3tuYW1lfX1cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZS5oZWlnaHRdPVwiaXNQYWdlZCA/ICdjYWxjKDEwMCUgLSA0NHB4KScgOiAnMTAwJSdcIj48L2Rpdj4iXX0=
@@ -0,0 +1,99 @@
1
+ import { Component, Input, Inject, PLATFORM_ID, ChangeDetectionStrategy } from '@angular/core';
2
+ import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
3
+ import { BaseChartComponent } from '../base/base-chart.component';
4
+ import { PieChartSettings } from '../../models/settings';
5
+ import { PieChartService } from '../../services';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../models/core";
8
+ import * as i2 from "../../adapters";
9
+ import * as i3 from "../chart-pager/chart-pager.component";
10
+ import * as i4 from "@angular/common";
11
+ /**
12
+ * Componente specifico per la graficazione di un grafico a Torta
13
+ */
14
+ export class EsPieChartComponent extends BaseChartComponent {
15
+ /**
16
+ * @ignore
17
+ */
18
+ constructor(el, ChartLoader, ChartDispatcher, adapter, zone, platformId, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME) {
19
+ super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME);
20
+ this.adapter = adapter;
21
+ }
22
+ /**
23
+ * Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
24
+ */
25
+ getSpecificPropertiesToCheck() {
26
+ return ["Data", "DataArray", "HideZeroes", "Mode3D", "LabelsWrap", "LabelsTruncate", "LabelsWidth", "LabelsVisible"];
27
+ }
28
+ /**
29
+ * Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
30
+ *
31
+ * @returns {PieChartSettings} Settings castati al tipo giusto
32
+ */
33
+ getCastedSettings() {
34
+ return (this.Settings ?? new PieChartSettings());
35
+ }
36
+ /**
37
+ * Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
38
+ *
39
+ * @param {PieChartSettings} settingsCasted Settings castati al tipo giusto
40
+ */
41
+ fillSpecificSettings(settingsCasted) {
42
+ settingsCasted.HideZeroes = settingsCasted.HideZeroes != null ? settingsCasted.HideZeroes : this.HideZeroes;
43
+ settingsCasted.Mode3D = settingsCasted.Mode3D != null ? settingsCasted.Mode3D : this.Mode3D;
44
+ settingsCasted.DonutRadiusPercentage = settingsCasted.DonutRadiusPercentage != null ? settingsCasted.DonutRadiusPercentage : this.DonutRadiusPercentage;
45
+ settingsCasted.LabelsWrap = settingsCasted.LabelsWrap != null ? settingsCasted.LabelsWrap : this.LabelsWrap;
46
+ settingsCasted.LabelsTruncate = settingsCasted.LabelsTruncate != null ? settingsCasted.LabelsTruncate : this.LabelsTruncate;
47
+ settingsCasted.LabelsWidth = settingsCasted.LabelsWidth != null ? settingsCasted.LabelsWidth : this.LabelsWidth;
48
+ settingsCasted.LabelsVisible = settingsCasted.LabelsVisible != null ? settingsCasted.LabelsVisible : this.LabelsVisible;
49
+ }
50
+ /**
51
+ * Effettua il rendering di questo grafico in base ai Settings
52
+ *
53
+ * @param {PieChartSettings} settingsCasted Impostazioni di graficazione
54
+ * @returns {PieChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
55
+ */
56
+ graphicate(settingsCasted) {
57
+ return new PieChartService(this.adapter).graphicate(this.Data, settingsCasted);
58
+ }
59
+ }
60
+ EsPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: i1.ChartLoader }, { token: i1.ChartDispatcher }, { token: i2.BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
61
+ EsPieChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsPieChartComponent, selector: "es-pie-chart", inputs: { Data: "Data", DataArray: "DataArray", HideZeroes: "HideZeroes", Mode3D: "Mode3D", DonutRadiusPercentage: "DonutRadiusPercentage", LabelsWrap: "LabelsWrap", LabelsTruncate: "LabelsTruncate", LabelsWidth: "LabelsWidth", LabelsVisible: "LabelsVisible" }, usesInheritance: true, ngImport: i0, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"], components: [{ type: i3.PageChartSelector, selector: "chart-pager", inputs: ["Items", "Dtos", "BrowseDelayMs", "StartIndex"], outputs: ["onPageChange"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, decorators: [{
63
+ type: Component,
64
+ args: [{ selector: 'es-pie-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>", styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:700;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"] }]
65
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ChartLoader }, { type: i1.ChartDispatcher }, { type: i2.BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
66
+ type: Inject,
67
+ args: [PLATFORM_ID]
68
+ }] }, { type: undefined, decorators: [{
69
+ type: Inject,
70
+ args: [ESC_LOGS]
71
+ }] }, { type: undefined, decorators: [{
72
+ type: Inject,
73
+ args: [ESC_ANIMATIONS]
74
+ }] }, { type: undefined, decorators: [{
75
+ type: Inject,
76
+ args: [ESC_LOCALE]
77
+ }] }, { type: undefined, decorators: [{
78
+ type: Inject,
79
+ args: [ESC_THEME]
80
+ }] }]; }, propDecorators: { Data: [{
81
+ type: Input
82
+ }], DataArray: [{
83
+ type: Input
84
+ }], HideZeroes: [{
85
+ type: Input
86
+ }], Mode3D: [{
87
+ type: Input
88
+ }], DonutRadiusPercentage: [{
89
+ type: Input
90
+ }], LabelsWrap: [{
91
+ type: Input
92
+ }], LabelsTruncate: [{
93
+ type: Input
94
+ }], LabelsWidth: [{
95
+ type: Input
96
+ }], LabelsVisible: [{
97
+ type: Input
98
+ }] } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtcGllLWNoYXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2NvbXBvbmVudHMvc3BlY2lhbGl6YXRpb25zL2VzLXBpZS1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFVLHVCQUF1QixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFHakQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsa0JBQWtCO0lBK0N6RDs7T0FFRztJQUNILFlBQVksRUFBYyxFQUFFLFdBQXdCLEVBQUUsZUFBZ0MsRUFBVSxPQUFvQixFQUFFLElBQVksRUFDM0csVUFBa0IsRUFDckIsUUFBaUIsRUFDWCxjQUF1QixFQUMzQixVQUFrQixFQUNuQixTQUFpQjtRQUNwQyxLQUFLLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQU5iLFlBQU8sR0FBUCxPQUFPLENBQWE7SUFPcEgsQ0FB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TEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycyc7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfTE9DQUxFLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBQaWVDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgUGllQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBQaWVDaGFydERhdGEsIFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gZ3JhZmljbyBhIFRvcnRhXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VzLXBpZS1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNQaWVDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqUGllQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBQaWVDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKlBpZUNoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxQaWVDaGFydERhdGE+W10gfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBtb3N0cmFyZSBvIG1lbm8gbGUgc2VyaWUgY29uIHBlcmNlbnR1YWxlIGEgMFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEhpZGVaZXJvZXM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSBhcHBhcmlyZSBpbiBtb2RhbGl0w6AgM0QgbyAyRFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIE1vZGUzRDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogUGVyY2VudHVhbGUgZGVsbCdhbHRlenphIGRlbCBncmFmaWNvIGNoZSB2aWVuZSB1dGlsaXp6YXRhIHBlciBjcmVhcmUgaWwgYnVjbyBhbGwnaW50ZXJubyBkZWxsYSBjaWFtYmVsbGEgKip3aW5rKiogKip3aW5rKipcclxuICAgKi9cclxuICAgQElucHV0KCkgRG9udXRSYWRpdXNQZXJjZW50YWdlOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBzZSB3cmFwcGFyZSBsZSBsYWJlbCBjaGUgbm9uIHN0YW5ubyBuZWwgY29udGVuaXRvcmVcclxuICAgKi9cclxuICAgQElucHV0KCkgTGFiZWxzV3JhcDogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIHNlIHRyb25jYXJlIGxlIGxhYmVsIGNoZSBub24gc3Rhbm5vIG5lbCBjb250ZW5pdG9yZVxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNUcnVuY2F0ZTogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhIGxhIGRpbWVuc2lvbmUgbWFzc2ltYSBjaGUgcG9zc29ubyBhc3N1bWVyZSBsZSBsYWJlbFxyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNXaWR0aDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2Egc2UgbW9zdHJhcmUgbyBtZW5vIGxlIGxhYmVsc1xyXG4gICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbHNWaXNpYmxlOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYsIENoYXJ0TG9hZGVyOiBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyOiBDaGFydERpc3BhdGNoZXIsIHByaXZhdGUgYWRhcHRlcjogQmFzZUFkYXB0ZXIsIHpvbmU6IE5nWm9uZSxcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCxcclxuICAgIEBJbmplY3QoRVNDX0xPR1MpIEVTQ19MT0dTOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfQU5JTUFUSU9OUykgRVNDX0FOSU1BVElPTlM6IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KEVTQ19MT0NBTEUpIEVTQ19MT0NBTEU6IHN0cmluZyxcclxuICAgIEBJbmplY3QoRVNDX1RIRU1FKSBFU0NfVEhFTUU6IHN0cmluZykge1xyXG4gICAgc3VwZXIoZWwsIHBsYXRmb3JtSWQsIHpvbmUsIENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIsIEVTQ19MT0dTLCBFU0NfQU5JTUFUSU9OUywgRVNDX0xPQ0FMRSwgRVNDX1RIRU1FKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE90dGllbmUgbGUgcHJvcHJpZXTDoCBzcGVjaWZpY2hlIHBlciBxdWVzdGEgdGlwb2xvZ2lhIGRpIGdyYWZpY28gcGVyIGN1aSBzZXJ2ZSByaWdyYWZpY2FyZVxyXG4gICAqL1xyXG4gIGdldFNwZWNpZmljUHJvcGVydGllc1RvQ2hlY2soKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFtcIkRhdGFcIiwgXCJEYXRhQXJyYXlcIiwgXCJIaWRlWmVyb2VzXCIsIFwiTW9kZTNEXCIsIFwiTGFiZWxzV3JhcFwiLCBcIkxhYmVsc1RydW5jYXRlXCIsIFwiTGFiZWxzV2lkdGhcIiwgXCJMYWJlbHNWaXNpYmxlXCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtQaWVDaGFydFNldHRpbmdzfSBTZXR0aW5ncyBjYXN0YXRpIGFsIHRpcG8gZ2l1c3RvXHJcbiAgICovXHJcbiAgZ2V0Q2FzdGVkU2V0dGluZ3MoKTogUGllQ2hhcnRTZXR0aW5ncyB7XHJcbiAgICByZXR1cm4gPFBpZUNoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IFBpZUNoYXJ0U2V0dGluZ3MoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ3JhIGkgU2V0dGluZ3MgYmFzZSBjb24gdHV0dGkgZ2xpIElucHV0IHNwZWNpZmljaSBkaSBxdWVzdG8gZ3JhZmljbywgZGFuZG8gcHJpb3JpdMOgIGFpIFNldHRpbmdzIHNlIGRlZmluaXRpXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtQaWVDaGFydFNldHRpbmdzfSBzZXR0aW5nc0Nhc3RlZCBTZXR0aW5ncyBjYXN0YXRpIGFsIHRpcG8gZ2l1c3RvXHJcbiAgICovXHJcbiAgZmlsbFNwZWNpZmljU2V0dGluZ3Moc2V0dGluZ3NDYXN0ZWQ6IFBpZUNoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkhpZGVaZXJvZXMgPSBzZXR0aW5nc0Nhc3RlZC5IaWRlWmVyb2VzICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5IaWRlWmVyb2VzIDogdGhpcy5IaWRlWmVyb2VzO1xyXG4gICAgc2V0dGluZ3NDYXN0ZWQuTW9kZTNEID0gc2V0dGluZ3NDYXN0ZWQuTW9kZTNEICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5Nb2RlM0QgOiB0aGlzLk1vZGUzRDtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkRvbnV0UmFkaXVzUGVyY2VudGFnZSA9IHNldHRpbmdzQ2FzdGVkLkRvbnV0UmFkaXVzUGVyY2VudGFnZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuRG9udXRSYWRpdXNQZXJjZW50YWdlIDogdGhpcy5Eb251dFJhZGl1c1BlcmNlbnRhZ2U7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNXcmFwID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV3JhcCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV3JhcCA6IHRoaXMuTGFiZWxzV3JhcDtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsc1RydW5jYXRlID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzVHJ1bmNhdGUgIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1RydW5jYXRlIDogdGhpcy5MYWJlbHNUcnVuY2F0ZTtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsc1dpZHRoID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxzV2lkdGggIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkxhYmVsc1dpZHRoIDogdGhpcy5MYWJlbHNXaWR0aDtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsc1Zpc2libGUgPSBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNWaXNpYmxlICE9IG51bGwgPyBzZXR0aW5nc0Nhc3RlZC5MYWJlbHNWaXNpYmxlIDogdGhpcy5MYWJlbHNWaXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRWZmZXR0dWEgaWwgcmVuZGVyaW5nIGRpIHF1ZXN0byBncmFmaWNvIGluIGJhc2UgYWkgU2V0dGluZ3NcclxuICAgKiBcclxuICAgKiBAcGFyYW0ge1BpZUNoYXJ0U2V0dGluZ3N9IHNldHRpbmdzQ2FzdGVkIEltcG9zdGF6aW9uaSBkaSBncmFmaWNhemlvbmVcclxuICAgKiBAcmV0dXJucyB7UGllQ2hhcnRTZXJ2aWNlfSBMYSBzZXJ2aWNlIHV0aWxpenphdGEgcGVyIGlsIHJlbmRlcmluZyBuZWxsbyBzdGF0byBzdWJpdG8gc3VjY2Vzc2l2byBhbCByZW5kZXJpbmcgZWZmZXR0dWF0b1xyXG4gICAqL1xyXG4gIGdyYXBoaWNhdGUoc2V0dGluZ3NDYXN0ZWQ6IFBpZUNoYXJ0U2V0dGluZ3MpOiBhbnkge1xyXG4gICAgcmV0dXJuIG5ldyBQaWVDaGFydFNlcnZpY2UodGhpcy5hZGFwdGVyKS5ncmFwaGljYXRlKDxQaWVDaGFydERhdGE+dGhpcy5EYXRhLCBzZXR0aW5nc0Nhc3RlZCk7XHJcbiAgfVxyXG59IiwiPGNoYXJ0LXBhZ2VyICpuZ0lmPVwiaXNQYWdlZFwiIChvblBhZ2VDaGFuZ2UpPVwiY2hhbmdlUGFnZSgkZXZlbnQpXCIgW0l0ZW1zXT1cIkRhdGFBcnJheVwiIFtEdG9zXT1cIkRhdGFEdG9zXCIgW1N0YXJ0SW5kZXhdPVwiRGF0YUR0b1N0YXJ0SW5kZXhcIlxyXG4gICAgW0Jyb3dzZURlbGF5TXNdPVwiQnJvd3NlRGVsYXlNc1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXJfaW5uZXIgbGV0LWhlYWRlckl0ZW0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlcl90cjsgY29udGV4dCA6IHskaW1wbGljaXQ6IGhlYWRlckl0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2NoYXJ0LXBhZ2VyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdDaGFydCAmJiBsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nX3RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ0NoYXJ0ICYmICFsb2FkaW5nX3RlbXBsYXRlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXNjLWxvYWRpbmctb3ZlcmxheVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5Mb2FkaW5nLi4uLjwvcD5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgW2NsYXNzLmhpZGUtYmxvY2tdPVwibG9hZGluZ0NoYXJ0XCIgaWQ9XCJ7e25hbWV9fVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlLmhlaWdodF09XCJpc1BhZ2VkID8gJ2NhbGMoMTAwJSAtIDQ0cHgpJyA6ICcxMDAlJ1wiPjwvZGl2PiJdfQ==