@esfaenza/es-charts 13.1.2 → 13.1.6

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 (137) hide show
  1. package/esm2020/lib/adapters/BaseAdapter.mjs +50 -0
  2. package/esm2020/lib/adapters/IBaseAdapter.mjs +2 -0
  3. package/esm2020/lib/components/base/base-chart.component.mjs +20 -5
  4. package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +1 -1
  5. package/esm2020/lib/components/specializations/es-area-chart.component.mjs +11 -10
  6. package/esm2020/lib/components/specializations/es-chart.component.mjs +24 -11
  7. package/esm2020/lib/components/specializations/es-line-chart.component.mjs +12 -11
  8. package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +11 -10
  9. package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +11 -10
  10. package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +11 -10
  11. package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +11 -10
  12. package/esm2020/lib/es-charts.module.mjs +13 -5
  13. package/esm2020/lib/models/core/ChartDispatcher.mjs +91 -0
  14. package/esm2020/lib/models/core/ChartLoader.mjs +201 -0
  15. package/esm2020/lib/models/core/ChartThemes.mjs +61 -0
  16. package/esm2020/lib/models/data/AreaChartData.mjs +16 -0
  17. package/esm2020/lib/models/data/LineChartData.mjs +16 -0
  18. package/esm2020/lib/models/data/PagedChartData.mjs +20 -0
  19. package/esm2020/lib/models/data/PieChartData.mjs +14 -0
  20. package/esm2020/lib/models/data/Vertical2DChartData.mjs +16 -0
  21. package/esm2020/lib/models/data/VerticalChartData.mjs +14 -0
  22. package/esm2020/lib/models/data/VerticalStackedChartData.mjs +14 -0
  23. package/esm2020/lib/models/data/base/DateValue.mjs +11 -0
  24. package/esm2020/lib/models/data/base/KeyValue.mjs +11 -0
  25. package/esm2020/lib/models/data/base/KeyValueColor.mjs +12 -0
  26. package/esm2020/lib/models/data/base/Limit.mjs +15 -0
  27. package/esm2020/lib/models/data/base/LineSerie.mjs +24 -0
  28. package/esm2020/lib/models/settings/AreaChartSettings.mjs +11 -0
  29. package/esm2020/lib/models/settings/LineChartSettings.mjs +11 -0
  30. package/esm2020/lib/models/settings/PieChartSettings.mjs +7 -0
  31. package/esm2020/lib/models/settings/Vertical2DChartSettings.mjs +11 -0
  32. package/esm2020/lib/models/settings/VerticalChartSettings.mjs +11 -0
  33. package/esm2020/lib/models/settings/VerticalStackedChartSettings.mjs +11 -0
  34. package/esm2020/lib/models/settings/base/BaseInterval.mjs +6 -0
  35. package/esm2020/lib/models/settings/base/BaseSettings.mjs +6 -0
  36. package/esm2020/lib/models/settings/base/LegendPad.mjs +6 -0
  37. package/esm2020/lib/services/AreaChartService.mjs +134 -0
  38. package/esm2020/lib/services/LineChartService.mjs +337 -0
  39. package/esm2020/lib/services/PieChartService.mjs +111 -0
  40. package/esm2020/lib/services/Vertical2DChartService.mjs +160 -0
  41. package/esm2020/lib/services/VerticalChartService.mjs +103 -0
  42. package/esm2020/lib/services/VerticalStackedChartService.mjs +124 -0
  43. package/esm2020/lib/services/base/IBaseService.mjs +2 -0
  44. package/esm2020/public-api.mjs +26 -25
  45. package/fesm2015/esfaenza-es-charts.mjs +420 -393
  46. package/fesm2015/esfaenza-es-charts.mjs.map +1 -1
  47. package/fesm2020/esfaenza-es-charts.mjs +409 -382
  48. package/fesm2020/esfaenza-es-charts.mjs.map +1 -1
  49. package/lib/adapters/{classes/BaseAdapter.d.ts → BaseAdapter.d.ts} +6 -1
  50. package/lib/adapters/{classes/IBaseAdapter.d.ts → IBaseAdapter.d.ts} +6 -1
  51. package/lib/components/base/base-chart.component.d.ts +20 -5
  52. package/lib/components/chart-pager/chart-pager.component.d.ts +1 -1
  53. package/lib/components/specializations/es-area-chart.component.d.ts +6 -4
  54. package/lib/components/specializations/es-chart.component.d.ts +17 -5
  55. package/lib/components/specializations/es-line-chart.component.d.ts +6 -4
  56. package/lib/components/specializations/es-pie-chart.component.d.ts +6 -4
  57. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +6 -4
  58. package/lib/components/specializations/es-vertical-chart.component.d.ts +6 -4
  59. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +6 -4
  60. package/lib/models/core/{classes/ChartDispatcher.d.ts → ChartDispatcher.d.ts} +0 -0
  61. package/lib/models/core/{classes/ChartLoader.d.ts → ChartLoader.d.ts} +0 -0
  62. package/lib/models/core/{classes/ChartThemes.d.ts → ChartThemes.d.ts} +0 -0
  63. package/lib/models/data/{classes/AreaChartData.d.ts → AreaChartData.d.ts} +1 -1
  64. package/lib/models/data/{classes/LineChartData.d.ts → LineChartData.d.ts} +0 -0
  65. package/lib/models/data/{classes/PagedChartData.d.ts → PagedChartData.d.ts} +0 -0
  66. package/lib/models/data/{classes/PieChartData.d.ts → PieChartData.d.ts} +0 -0
  67. package/lib/models/data/{classes/Vertical2DChartData.d.ts → Vertical2DChartData.d.ts} +0 -0
  68. package/lib/models/data/{classes/VerticalChartData.d.ts → VerticalChartData.d.ts} +0 -0
  69. package/lib/models/data/{classes/VerticalStackedChartData.d.ts → VerticalStackedChartData.d.ts} +0 -0
  70. package/lib/models/data/{classes/base → base}/DateValue.d.ts +0 -0
  71. package/lib/models/data/{classes/base → base}/KeyValue.d.ts +0 -0
  72. package/lib/models/data/{classes/base → base}/KeyValueColor.d.ts +0 -0
  73. package/lib/models/data/{classes/base → base}/Limit.d.ts +0 -0
  74. package/lib/models/data/{classes/base → base}/LineSerie.d.ts +1 -1
  75. package/lib/models/settings/{classes/AreaChartSettings.d.ts → AreaChartSettings.d.ts} +0 -0
  76. package/lib/models/settings/{classes/LineChartSettings.d.ts → LineChartSettings.d.ts} +0 -0
  77. package/lib/models/settings/{classes/PieChartSettings.d.ts → PieChartSettings.d.ts} +0 -0
  78. package/lib/models/settings/{classes/Vertical2DChartSettings.d.ts → Vertical2DChartSettings.d.ts} +0 -0
  79. package/lib/models/settings/{classes/VerticalChartSettings.d.ts → VerticalChartSettings.d.ts} +0 -0
  80. package/lib/models/settings/{classes/VerticalStackedChartSettings.d.ts → VerticalStackedChartSettings.d.ts} +0 -0
  81. package/lib/models/settings/{classes/base → base}/BaseInterval.d.ts +0 -0
  82. package/lib/models/settings/{classes/base → base}/BaseSettings.d.ts +1 -1
  83. package/lib/models/settings/{classes/base → base}/LegendPad.d.ts +0 -0
  84. package/lib/services/{classes/AreaChartService.d.ts → AreaChartService.d.ts} +3 -3
  85. package/lib/services/{classes/LineChartService.d.ts → LineChartService.d.ts} +7 -3
  86. package/lib/services/{classes/PieChartService.d.ts → PieChartService.d.ts} +3 -3
  87. package/lib/services/{classes/Vertical2DChartService.d.ts → Vertical2DChartService.d.ts} +3 -3
  88. package/lib/services/{classes/VerticalChartService.d.ts → VerticalChartService.d.ts} +3 -3
  89. package/lib/services/{classes/VerticalStackedChartService.d.ts → VerticalStackedChartService.d.ts} +3 -3
  90. package/lib/services/{classes/base → base}/IBaseService.d.ts +1 -1
  91. package/package.json +2 -2
  92. package/public-api.d.ts +25 -24
  93. package/esm2020/lib/adapters/classes/BaseAdapter.mjs +0 -50
  94. package/esm2020/lib/adapters/classes/IBaseAdapter.mjs +0 -2
  95. package/esm2020/lib/adapters/index.mjs +0 -3
  96. package/esm2020/lib/components/index.mjs +0 -9
  97. package/esm2020/lib/models/core/classes/ChartDispatcher.mjs +0 -91
  98. package/esm2020/lib/models/core/classes/ChartLoader.mjs +0 -201
  99. package/esm2020/lib/models/core/classes/ChartThemes.mjs +0 -61
  100. package/esm2020/lib/models/core/index.mjs +0 -4
  101. package/esm2020/lib/models/data/classes/AreaChartData.mjs +0 -16
  102. package/esm2020/lib/models/data/classes/LineChartData.mjs +0 -16
  103. package/esm2020/lib/models/data/classes/PagedChartData.mjs +0 -20
  104. package/esm2020/lib/models/data/classes/PieChartData.mjs +0 -14
  105. package/esm2020/lib/models/data/classes/Vertical2DChartData.mjs +0 -16
  106. package/esm2020/lib/models/data/classes/VerticalChartData.mjs +0 -14
  107. package/esm2020/lib/models/data/classes/VerticalStackedChartData.mjs +0 -14
  108. package/esm2020/lib/models/data/classes/base/DateValue.mjs +0 -11
  109. package/esm2020/lib/models/data/classes/base/KeyValue.mjs +0 -11
  110. package/esm2020/lib/models/data/classes/base/KeyValueColor.mjs +0 -12
  111. package/esm2020/lib/models/data/classes/base/Limit.mjs +0 -15
  112. package/esm2020/lib/models/data/classes/base/LineSerie.mjs +0 -24
  113. package/esm2020/lib/models/data/index.mjs +0 -13
  114. package/esm2020/lib/models/settings/classes/AreaChartSettings.mjs +0 -11
  115. package/esm2020/lib/models/settings/classes/LineChartSettings.mjs +0 -11
  116. package/esm2020/lib/models/settings/classes/PieChartSettings.mjs +0 -7
  117. package/esm2020/lib/models/settings/classes/Vertical2DChartSettings.mjs +0 -11
  118. package/esm2020/lib/models/settings/classes/VerticalChartSettings.mjs +0 -11
  119. package/esm2020/lib/models/settings/classes/VerticalStackedChartSettings.mjs +0 -11
  120. package/esm2020/lib/models/settings/classes/base/BaseInterval.mjs +0 -6
  121. package/esm2020/lib/models/settings/classes/base/BaseSettings.mjs +0 -6
  122. package/esm2020/lib/models/settings/classes/base/LegendPad.mjs +0 -6
  123. package/esm2020/lib/models/settings/index.mjs +0 -10
  124. package/esm2020/lib/services/classes/AreaChartService.mjs +0 -134
  125. package/esm2020/lib/services/classes/LineChartService.mjs +0 -324
  126. package/esm2020/lib/services/classes/PieChartService.mjs +0 -111
  127. package/esm2020/lib/services/classes/Vertical2DChartService.mjs +0 -160
  128. package/esm2020/lib/services/classes/VerticalChartService.mjs +0 -103
  129. package/esm2020/lib/services/classes/VerticalStackedChartService.mjs +0 -124
  130. package/esm2020/lib/services/classes/base/IBaseService.mjs +0 -2
  131. package/esm2020/lib/services/index.mjs +0 -8
  132. package/lib/adapters/index.d.ts +0 -2
  133. package/lib/components/index.d.ts +0 -8
  134. package/lib/models/core/index.d.ts +0 -3
  135. package/lib/models/data/index.d.ts +0 -12
  136. package/lib/models/settings/index.d.ts +0 -9
  137. package/lib/services/index.d.ts +0 -7
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, ChangeDetectionStrategy, Input, Output, ContentChild, InjectionToken, Inject, Directive, PLATFORM_ID, NgModule } from '@angular/core';
3
- import * as i4 from '@angular/common';
3
+ import * as i5 from '@angular/common';
4
4
  import { isPlatformBrowser, CommonModule } from '@angular/common';
5
5
  import * as am4core from '@amcharts/amcharts4/core';
6
6
  import * as am4charts from '@amcharts/amcharts4/charts';
7
- import * as i2 from '@esfaenza/extensions';
7
+ import * as i3 from '@esfaenza/extensions';
8
8
 
9
9
  /**
10
10
  * Adapter Base da reimplementare per trasformare i dati da una libreria di grafici a questa per evitare di riscrivere tutto il codice di
@@ -358,7 +358,7 @@ class PageChartSelector {
358
358
  }
359
359
  }
360
360
  PageChartSelector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PageChartSelector, deps: [], target: i0.ɵɵFactoryTarget.Component });
361
- PageChartSelector.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PageChartSelector, selector: "chart-pager", inputs: { Items: "Items", Dtos: "Dtos", BrowseDelayMs: "BrowseDelayMs", StartIndex: "StartIndex" }, outputs: { onPageChange: "onPageChange" }, queries: [{ propertyName: "headerInner_tr", first: true, predicate: ["header_inner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
361
+ PageChartSelector.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: PageChartSelector, selector: "chart-pager", inputs: { Items: "Items", Dtos: "Dtos", BrowseDelayMs: "BrowseDelayMs", StartIndex: "StartIndex" }, outputs: { onPageChange: "onPageChange" }, queries: [{ propertyName: "headerInner_tr", first: true, predicate: ["header_inner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
362
362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: PageChartSelector, decorators: [{
363
363
  type: Component,
364
364
  args: [{ selector: "chart-pager", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"(Items || Dtos) && (Items || Dtos).length > 0\" class=\"pcs-no-selection\">\r\n <div class=\"pcs-button pcs-backward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"currentpage != 1 && Previous(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"currentpage == 1 ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-left\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"pcs-infos\">\r\n <ng-container *ngIf=\"headerInner_tr\">\r\n <ng-container *ngTemplateOutlet=\"headerInner_tr; context : {$implicit: (Items || Dtos)[currentpage - 1]}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"pcs-button pcs-forward\">\r\n <svg class=\"pcs-svg-header\">\r\n <g class=\"pcs-svg-button-container\" role=\"button\" (click)=\"(Items || Dtos).length != currentpage && Next(); $event.stopPropagation(); $event.preventDefault();\">\r\n <!--Pulsante e freccettina all'interno-->\r\n <g class=\"pcs-svg-button\" [style.cursor]=\"(Items || Dtos).length == currentpage ? 'not-allowed' : 'pointer'\"><path d=\"M3,0 L53.027,0 a3,3 0 0 1 3,3 L56.027,36.817 a3,3 0 0 1 -3,3 L3,39.817 a3,3 0 0 1 -3,-3 L0,3 a3,3 0 0 1 3,-3 Z\"></path></g>\r\n <g class=\"pcs-svg-arrow pcs-svg-arrow-right\"><path d=\"M26,14H10l5.17-6.79A2,2,0,0,0,12,4.79l-7.62,10a2,2,0,0,0,0,2.42l7.62,10a2,2,0,0,0,3.18-2.42L10,18H26a2,2,0,0,0,0-4Z\"></path></g>\r\n </g>\r\n </svg>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n</div>", styles: [".pcs-button{width:60px}.pcs-forward{float:right;text-align:end}.pcs-backward{float:left}.pcs-svg-header{width:57px;height:40px}.pcs-svg-button-container{outline:currentcolor none medium}.pcs-svg-arrow{pointer-events:none;fill:#555}.pcs-svg-arrow-right{transform:translate(44px,36px) rotate(180deg)}.pcs-svg-arrow-left{transform:translate(13px,4px)}.pcs-svg-button{fill:#d9d9d9;stroke:#fff;fill-opacity:1;stroke-opacity:1}.pcs-svg-button:hover{fill:#a3a3a3;cursor:pointer}.pcs-infos{width:calc(100% - 120px);height:44px;float:left}.pcs-no-selection{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}\n"] }]
@@ -377,111 +377,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
377
377
  args: ['header_inner', { static: false }]
378
378
  }] } });
379
379
 
380
- /**
381
- * Token che identifica il Locale di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
382
- */
383
- const ESC_LOCALE = new InjectionToken('ESC_LOCALE');
384
- /**
385
- * Token che identifica il default per l'utilizzo o meno delle Animazioni per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
386
- */
387
- const ESC_ANIMATIONS = new InjectionToken('ESC_ANIMATIONS');
388
- /**
389
- * Token che identifica il Tema di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
390
- */
391
- const ESC_THEME = new InjectionToken('ESC_THEME');
392
- /**
393
- * Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
394
- */
395
- const ESC_LOGS = new InjectionToken('ESC_LOGS');
396
-
397
- /**
398
- * Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
399
- */
400
- class ChartDispatcher {
401
- /**
402
- * @ignore
403
- */
404
- constructor(logs) {
405
- this.logs = logs;
406
- /**
407
- * Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
408
- */
409
- this.Initializations = [];
410
- /**
411
- * Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
412
- */
413
- this.InitializedGraphs = [];
414
- }
415
- /**
416
- * Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
417
- * precedentemente registati non hanno finito la fase di inizializzazione
418
- *
419
- * @param {string} name Identificativo del grafico da registrare
420
- * @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
421
- */
422
- register(name, chartCreationFunction) {
423
- if (this.InitializedGraphs.indexOf(name) != -1)
424
- throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
425
- this.log("DISPATCHER: Registering chart creation function execution for " + name);
426
- this.Initializations.push({ name: name, function: chartCreationFunction });
427
- if (this.Initializations.length == 1) {
428
- this.log("DISPATCHER: Initial drain started");
429
- this.drainInitQueues();
430
- }
431
- }
432
- /**
433
- * Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
434
- *
435
- * @param {string} name Identificativo del grafico da deregistrare
436
- */
437
- deregisterGraph(name) {
438
- let index = this.InitializedGraphs.indexOf(name);
439
- if (index == -1) {
440
- //Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
441
- this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
442
- return;
443
- }
444
- this.log("DISPATCHER: Chart deregistered " + name);
445
- this.InitializedGraphs.splice(index, 1);
446
- }
447
- /**
448
- * Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
449
- * in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
450
- *
451
- * Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
452
- */
453
- drainInitQueues() {
454
- let toExecute = this.Initializations[0];
455
- this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
456
- toExecute.function().then(() => {
457
- this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
458
- this.InitializedGraphs.push(toExecute.name);
459
- this.Initializations.splice(0, 1);
460
- if (this.Initializations.length >= 1) {
461
- this.log("DISPATCHER: Found queued initializations. Continuing");
462
- this.drainInitQueues();
463
- }
464
- else
465
- this.log("DISPATCHER: queue is over, nothing more to do");
466
- });
467
- }
468
- /**
469
- * @ignore
470
- */
471
- log(text) {
472
- if (this.logs)
473
- console.log("@esfaenza/es-charts: " + text);
474
- }
475
- }
476
- ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
477
- ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher });
478
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, decorators: [{
479
- type: Injectable
480
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
481
- type: Inject,
482
- args: [ESC_LOGS]
483
- }] }]; } });
484
-
485
380
  /** @ignore */
486
381
  const _spiritedaway = 'spiritedaway';
487
382
  /** @ignore */
@@ -743,6 +638,111 @@ class ChartLoader {
743
638
  }
744
639
  }
745
640
 
641
+ /**
642
+ * Token che identifica il Locale di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
643
+ */
644
+ const ESC_LOCALE = new InjectionToken('ESC_LOCALE');
645
+ /**
646
+ * Token che identifica il default per l'utilizzo o meno delle Animazioni per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
647
+ */
648
+ const ESC_ANIMATIONS = new InjectionToken('ESC_ANIMATIONS');
649
+ /**
650
+ * Token che identifica il Tema di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
651
+ */
652
+ const ESC_THEME = new InjectionToken('ESC_THEME');
653
+ /**
654
+ * Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
655
+ */
656
+ const ESC_LOGS = new InjectionToken('ESC_LOGS');
657
+
658
+ /**
659
+ * Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
660
+ */
661
+ class ChartDispatcher {
662
+ /**
663
+ * @ignore
664
+ */
665
+ constructor(logs) {
666
+ this.logs = logs;
667
+ /**
668
+ * Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
669
+ */
670
+ this.Initializations = [];
671
+ /**
672
+ * Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
673
+ */
674
+ this.InitializedGraphs = [];
675
+ }
676
+ /**
677
+ * Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
678
+ * precedentemente registati non hanno finito la fase di inizializzazione
679
+ *
680
+ * @param {string} name Identificativo del grafico da registrare
681
+ * @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
682
+ */
683
+ register(name, chartCreationFunction) {
684
+ if (this.InitializedGraphs.indexOf(name) != -1)
685
+ throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
686
+ this.log("DISPATCHER: Registering chart creation function execution for " + name);
687
+ this.Initializations.push({ name: name, function: chartCreationFunction });
688
+ if (this.Initializations.length == 1) {
689
+ this.log("DISPATCHER: Initial drain started");
690
+ this.drainInitQueues();
691
+ }
692
+ }
693
+ /**
694
+ * Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
695
+ *
696
+ * @param {string} name Identificativo del grafico da deregistrare
697
+ */
698
+ deregisterGraph(name) {
699
+ let index = this.InitializedGraphs.indexOf(name);
700
+ if (index == -1) {
701
+ //Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
702
+ this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
703
+ return;
704
+ }
705
+ this.log("DISPATCHER: Chart deregistered " + name);
706
+ this.InitializedGraphs.splice(index, 1);
707
+ }
708
+ /**
709
+ * Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
710
+ * in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
711
+ *
712
+ * Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
713
+ */
714
+ drainInitQueues() {
715
+ let toExecute = this.Initializations[0];
716
+ this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
717
+ toExecute.function().then(() => {
718
+ this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
719
+ this.InitializedGraphs.push(toExecute.name);
720
+ this.Initializations.splice(0, 1);
721
+ if (this.Initializations.length >= 1) {
722
+ this.log("DISPATCHER: Found queued initializations. Continuing");
723
+ this.drainInitQueues();
724
+ }
725
+ else
726
+ this.log("DISPATCHER: queue is over, nothing more to do");
727
+ });
728
+ }
729
+ /**
730
+ * @ignore
731
+ */
732
+ log(text) {
733
+ if (this.logs)
734
+ console.log("@esfaenza/es-charts: " + text);
735
+ }
736
+ }
737
+ ChartDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, deps: [{ token: ESC_LOGS }], target: i0.ɵɵFactoryTarget.Injectable });
738
+ ChartDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher });
739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ChartDispatcher, decorators: [{
740
+ type: Injectable
741
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
742
+ type: Inject,
743
+ args: [ESC_LOGS]
744
+ }] }]; } });
745
+
746
746
  /**
747
747
  * Componente Grafico Base che gestisce tutte le cose comuni dei vari grafici istanziabili, come la presenza o menu di una legenda,
748
748
  * il tema utilizzato, il locale del singolo grafico, ecc ecc...
@@ -797,6 +797,11 @@ class BaseChartComponent {
797
797
  * Evento lanciato al termine del caricamento di una nuova pagina del grafico
798
798
  */
799
799
  this.onLoadEnd = new EventEmitter();
800
+ /**
801
+ * Evento lanciato al termine della creazione del grafico referenziando l'istanza nativa del grafico creato in modo da poter effettuare modifiche
802
+ * post inizializzazione lato applicativo
803
+ */
804
+ this.chartLoaded = new EventEmitter();
800
805
  /**
801
806
  * Serve a decidere se sarà presente l'interfaccia di paginazione
802
807
  */
@@ -884,7 +889,7 @@ class BaseChartComponent {
884
889
  this.Chart = this.ChartService.ChartInstance;
885
890
  if (!this.Chart)
886
891
  this.log("Chart " + this.name + ": Could not create graph");
887
- return this.Charter.applyLocale(this.Chart, this.Locale).then(() => this.initDone = true);
892
+ return this.Charter.applyLocale(this.Chart, this.Locale).then(() => { this.initDone = true; this.chartLoaded.emit(this); });
888
893
  })
889
894
  ]);
890
895
  }
@@ -979,6 +984,13 @@ class BaseChartComponent {
979
984
  this.Chart.dispose(); this.Dispatcher.deregisterGraph(this.name); });
980
985
  this.Dispatcher.register(this.name, () => { return this.loadChart(); });
981
986
  }
987
+ /**
988
+ * Permette di aggiungere un blocco di dati in maniera "live" ad un grafico
989
+ */
990
+ addData(chartData) {
991
+ this.ChartService.refreshData(chartData);
992
+ }
993
+ ;
982
994
  /**
983
995
  * Funzione che si occupa di caricare i temi necessari per il grafico in oggetto. Prima applica il tema, poi, se serve, applica le animazioni
984
996
  */
@@ -1008,7 +1020,7 @@ class BaseChartComponent {
1008
1020
  }
1009
1021
  }
1010
1022
  BaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
1011
- BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
1023
+ BaseChartComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseChartComponent, inputs: { XTitle: "XTitle", YTitle: "YTitle", Settings: "Settings", Legend: "Legend", LegendPosition: "LegendPosition", Timeline: "Timeline", name: "name", Animations: "Animations", Theme: "Theme", Locale: "Locale", HideSeriesOnLabelClick: "HideSeriesOnLabelClick", MinGridDistance: "MinGridDistance", AdaptLabelSizeAndOrientation: "AdaptLabelSizeAndOrientation", LegendPadding: "LegendPadding", DataDtos: "DataDtos", DataDtoStartIndex: "DataDtoStartIndex", DataRetrieve: "DataRetrieve", BrowseDelayMs: "BrowseDelayMs" }, outputs: { onSelectionChanged: "onSelectionChanged", onSeriesClicked: "onSeriesClicked", onLoadStart: "onLoadStart", onLoadEnd: "onLoadEnd", chartLoaded: "chartLoaded" }, queries: [{ propertyName: "header_tr", first: true, predicate: ["header"], descendants: true }, { propertyName: "loading_template", first: true, predicate: ["loading"], descendants: true }], usesOnChanges: true, ngImport: i0 });
1012
1024
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseChartComponent, decorators: [{
1013
1025
  type: Directive
1014
1026
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Object }, { type: i0.NgZone }, { type: ChartLoader }, { type: ChartDispatcher }, { type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; }, propDecorators: { XTitle: [{
@@ -1061,6 +1073,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1061
1073
  type: Output
1062
1074
  }], onLoadEnd: [{
1063
1075
  type: Output
1076
+ }], chartLoaded: [{
1077
+ type: Output
1064
1078
  }] } });
1065
1079
 
1066
1080
  /**
@@ -1075,6 +1089,8 @@ class LineChartService {
1075
1089
  this.DataGroupBucketSize = 1500;
1076
1090
  /** @ignore */
1077
1091
  this.OpacityOnSelected = 0.3;
1092
+ /** @ignore */
1093
+ this.singleDataSet = false;
1078
1094
  //******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
1079
1095
  //TODO: spostarla in un metodo di utilità (esfaenza/extensions)
1080
1096
  /** @ignore */
@@ -1086,7 +1102,7 @@ class LineChartService {
1086
1102
  graphicate(data, settings) {
1087
1103
  let dataConverted = this.Adapter ? this.Adapter.adaptDataForLineChart(data) : data;
1088
1104
  let threshold = settings.DataGroupingThreshold ?? 3000;
1089
- let singleDataSet = settings.MergeDatasets ?? false;
1105
+ this.singleDataSet = settings.MergeDatasets ?? false;
1090
1106
  let showTicks = settings.ShowTicks == null ? true : settings?.ShowTicks;
1091
1107
  let dataShouldBeGrouped = Math.max(...dataConverted.series.map(t => t.values.length)) > threshold;
1092
1108
  let showTimeline = settings.Timeline || dataShouldBeGrouped;
@@ -1165,31 +1181,9 @@ class LineChartService {
1165
1181
  let seriesColors = [];
1166
1182
  let defaultIndex = 0;
1167
1183
  //-- Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
1168
- if (singleDataSet) {
1169
- let dto = {};
1170
- dataConverted.series.forEach((vs, index) => {
1171
- for (let i = 0; i < vs.values.length; i++) {
1172
- var dataitem = vs.values[i];
1173
- var indexer = new Date(dataitem.d).valueOf();
1174
- if (!dto[indexer])
1175
- dto[indexer] = {};
1176
- dto[indexer]['v' + index] = dataitem.v;
1177
- }
1178
- });
1179
- var dates = Object.keys(dto);
1180
- let singleDS = [];
1181
- for (let i = 0; i < dates.length; i++) {
1182
- let values = dto[dates[i]];
1183
- let item = { d: new Date(parseInt(dates[i])) };
1184
- var vals = Object.keys(values);
1185
- for (let ii = 0; ii < vals.length; ii++) {
1186
- let series = vals[ii];
1187
- let singleVal = values[series];
1188
- item[series] = singleVal;
1189
- }
1190
- singleDS.push(item);
1191
- }
1192
- this.ChartInstance.data = singleDS;
1184
+ if (this.singleDataSet) {
1185
+ this.ChartInstance.data = this.generateSingleDataset(dataConverted);
1186
+ ;
1193
1187
  dateAxis.cursorTooltipEnabled = false;
1194
1188
  }
1195
1189
  //-- Fine generazione
@@ -1212,14 +1206,14 @@ class LineChartService {
1212
1206
  s.values.sort((d1, d2) => d1.d.getTime() - d2.d.getTime());
1213
1207
  let fill = s.fill != null && s.fill != undefined ? s.fill : (settings?.Fill ?? false);
1214
1208
  let series = settings?.Step ? new am4charts.StepLineSeries() : new am4charts.LineSeries();
1215
- series.dataFields.valueY = "v" + (singleDataSet ? index : "");
1209
+ series.dataFields.valueY = "v" + (this.singleDataSet ? index : "");
1216
1210
  series.dataFields.dateX = "d";
1217
1211
  series.dataFields.measureUnit = s.uom;
1218
1212
  series.name = s.name;
1219
1213
  series.strokeWidth = settings?.StrokeSize ?? 1;
1220
1214
  series.connect = !gapsAllowed;
1221
1215
  series.minBulletDistance = 10;
1222
- series.tooltipText = singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
1216
+ series.tooltipText = this.singleDataSet ? "" : s.name ? "{name}: [bold]{valueY}[/]" : "[bold]{valueY}[/]";
1223
1217
  series.tooltip.pointerOrientation = "vertical";
1224
1218
  series.tooltip.background.fillOpacity = 0.5;
1225
1219
  series.tooltip.label.padding(12, 12, 12, 12);
@@ -1227,7 +1221,7 @@ class LineChartService {
1227
1221
  series.stacked = fill;
1228
1222
  //Dataset singolo, i dati sono registrati a livello di chart, creo il tooltip che permette di vederli tutti insieme
1229
1223
  //altrimenti assegno i dati della serie direttamente alla serie
1230
- if (singleDataSet) {
1224
+ if (this.singleDataSet) {
1231
1225
  series.tooltip.getFillFromObject = false;
1232
1226
  series.tooltip.background.fill = am4core.color("#eee");
1233
1227
  series.tooltip.label.fill = am4core.color("#00");
@@ -1258,7 +1252,7 @@ class LineChartService {
1258
1252
  var text = "[bold]{dateX.formatDate()}[/]\n";
1259
1253
  this.ChartInstance.series.each((item) => {
1260
1254
  let uom = " [font-style: italic]" + series.dataFields.measureUnit || "" + "[/]";
1261
- text += "[" + item.stroke.hex + "]●[/] " + item.name + ": [bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
1255
+ text += "[" + item.stroke.hex + "]●[/] " + (item.name ? (item.name + ": ") : "") + "[bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
1262
1256
  });
1263
1257
  return text;
1264
1258
  });
@@ -1317,7 +1311,7 @@ class LineChartService {
1317
1311
  //******************************************************************************************************************************
1318
1312
  this.ChartInstance.cursor.xAxis = dateAxis;
1319
1313
  this.ChartInstance.cursor.yAxis = yAxis;
1320
- if (singleDataSet)
1314
+ if (this.singleDataSet)
1321
1315
  this.ChartInstance.cursor.maxTooltipDistance = -1;
1322
1316
  //TODO: Cercare di capire perché è figlio di puttana......
1323
1317
  dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
@@ -1326,7 +1320,40 @@ class LineChartService {
1326
1320
  }
1327
1321
  /** @ignore */
1328
1322
  refreshData(data) {
1329
- //TODO:IMPL
1323
+ let dataConverted = this.Adapter ? this.Adapter.adaptDataForLineChart(data) : data;
1324
+ if (this.singleDataSet) {
1325
+ var data = this.generateSingleDataset(dataConverted);
1326
+ this.ChartInstance.addData(data);
1327
+ return;
1328
+ }
1329
+ throw "Impossibile aggiornare i dati senza unire il dataset. Si prega di impostare [MergeDatasets] a true";
1330
+ }
1331
+ /** Partendo da dati divisi per seriue genera un dataset unito con la data come chiave e i vari valori dopo */
1332
+ generateSingleDataset(data) {
1333
+ let dto = {};
1334
+ data.series.forEach((vs, index) => {
1335
+ for (let i = 0; i < vs.values.length; i++) {
1336
+ var dataitem = vs.values[i];
1337
+ var indexer = new Date(dataitem.d).valueOf();
1338
+ if (!dto[indexer])
1339
+ dto[indexer] = {};
1340
+ dto[indexer]['v' + index] = dataitem.v;
1341
+ }
1342
+ });
1343
+ var dates = Object.keys(dto);
1344
+ var ret = [];
1345
+ for (let i = 0; i < dates.length; i++) {
1346
+ let values = dto[dates[i]];
1347
+ let item = { d: new Date(parseInt(dates[i])) };
1348
+ var vals = Object.keys(values);
1349
+ for (let ii = 0; ii < vals.length; ii++) {
1350
+ let series = vals[ii];
1351
+ let singleVal = values[series];
1352
+ item[series] = singleVal;
1353
+ }
1354
+ ret.push(item);
1355
+ }
1356
+ return ret;
1330
1357
  }
1331
1358
  /** @ignore */
1332
1359
  emitSelectionChanged(ev, settings) {
@@ -1386,153 +1413,21 @@ class LineChartService {
1386
1413
  }
1387
1414
 
1388
1415
  /**
1389
- * Classe il cui unico scopo è gestire il setup e rendering di un AreaChart
1416
+ * Classe il cui unico scopo è gestire il setup e rendering di un PieChart
1390
1417
  */
1391
- class AreaChartService {
1418
+ class PieChartService {
1392
1419
  /** @ignore */
1393
1420
  constructor(Adapter) {
1394
1421
  this.Adapter = Adapter;
1395
- //******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
1396
- //TODO: spostarla in un metodo di utilità (esfaenza/extensions)
1397
1422
  /** @ignore */
1398
- this.executionTimers = {};
1423
+ this.ViewAbsoluteValues = true;
1399
1424
  }
1400
1425
  /**
1401
- * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un AreaChart
1426
+ * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un PieChart
1402
1427
  */
1403
1428
  graphicate(data, settings) {
1404
1429
  if (settings.Timeline) {
1405
- console.error("Timeline not supported for area chart");
1406
- return null;
1407
- }
1408
- let dataConverted = this.Adapter ? this.Adapter.adaptDataForAreaChart(data) : data;
1409
- let showTicks = settings.ShowTicks == null ? true : settings?.ShowTicks;
1410
- let interval = dataConverted.interval;
1411
- //Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
1412
- am4core.options.autoDispose = true;
1413
- this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
1414
- let ChartInstanceCasted = this.ChartInstance;
1415
- if (settings.Legend) {
1416
- ChartInstanceCasted.legend = new am4charts.Legend();
1417
- ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
1418
- ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
1419
- if (settings.LegendPadding) {
1420
- let template = this.ChartInstance.legend.itemContainers.template;
1421
- template.paddingTop = settings.LegendPadding.top ?? 0;
1422
- template.paddingBottom = settings.LegendPadding.bottom ?? 0;
1423
- template.paddingLeft = settings.LegendPadding.left ?? 0;
1424
- template.paddingRight = settings.LegendPadding.right ?? 0;
1425
- }
1426
- }
1427
- let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
1428
- yAxis.tooltip.disabled = true;
1429
- if (settings.YAxisTitle) {
1430
- yAxis.title.text = settings.YAxisTitle;
1431
- yAxis.title.fontWeight = "bold";
1432
- }
1433
- yAxis.min = 0;
1434
- let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
1435
- dateAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 50;
1436
- dateAxis.startLocation = 0.5;
1437
- dateAxis.endLocation = 0.5;
1438
- if (settings.XAxisTitle) {
1439
- dateAxis.title.text = settings.XAxisTitle;
1440
- dateAxis.title.fontWeight = "bold";
1441
- }
1442
- if (showTicks) {
1443
- dateAxis.renderer.ticks.template.disabled = false;
1444
- dateAxis.renderer.ticks.template.strokeOpacity = 1;
1445
- dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
1446
- dateAxis.renderer.ticks.template.strokeWidth = 2;
1447
- dateAxis.renderer.ticks.template.length = 10;
1448
- dateAxis.renderer.ticks.template.location = 0;
1449
- }
1450
- if (!!interval)
1451
- dateAxis.baseInterval = { count: interval.count, timeUnit: interval.timeunit };
1452
- // Unisco il dataset e tiro fuori i dati
1453
- let chartData = [];
1454
- let seriesToMakeCache = {};
1455
- let seriesToMake = [];
1456
- for (let i = 0; i < dataConverted.groups.length; i++) {
1457
- let group = dataConverted.groups[i];
1458
- let dataItem = { date: group.name };
1459
- for (let ii = 0; ii < group.values.length; ii++) {
1460
- let val = group.values[ii];
1461
- dataItem[val.k] = val.v;
1462
- if (!seriesToMakeCache[val.k]) {
1463
- seriesToMakeCache[val.k] = true;
1464
- seriesToMake.push(val.k);
1465
- }
1466
- }
1467
- chartData.push(dataItem);
1468
- }
1469
- ChartInstanceCasted.data = chartData;
1470
- //---------------------------------------------------------
1471
- seriesToMake.forEach(s => { this.createSeries(ChartInstanceCasted, s); });
1472
- ChartInstanceCasted.cursor = new am4charts.XYCursor();
1473
- ChartInstanceCasted.cursor.xAxis = dateAxis;
1474
- dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
1475
- dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
1476
- return this;
1477
- }
1478
- /** @ignore */
1479
- refreshData(data) {
1480
- //TODO:IMPL
1481
- }
1482
- /** @ignore */
1483
- emitSelectionChanged(ev, settings) {
1484
- if (settings.OnSelectionChangedCallback) {
1485
- this.throttla("selchange", () => {
1486
- var axis = ev.target;
1487
- var start = new Date(axis.minZoomed);
1488
- var end = new Date(axis.maxZoomed);
1489
- var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
1490
- settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
1491
- }, 150);
1492
- }
1493
- }
1494
- /** @ignore */
1495
- createSeries(chart, name) {
1496
- let series = chart.series.push(new am4charts.LineSeries());
1497
- series.dataFields.dateX = "date";
1498
- series.name = name[0].toUpperCase() + name.slice(1);
1499
- series.dataFields.valueY = name;
1500
- series.tooltipText = "[#000]{valueY.value}[/]";
1501
- //series.tooltip.background.fill = am4core.color("#FFF");
1502
- series.tooltip.getStrokeFromObject = true;
1503
- series.tooltip.background.strokeWidth = 3;
1504
- series.tooltip.getFillFromObject = false;
1505
- series.fillOpacity = 0.6;
1506
- series.strokeWidth = 2;
1507
- series.stacked = true;
1508
- return series;
1509
- }
1510
- /** @ignore */
1511
- throttla(id, func, throttleTime) {
1512
- //Se ho la funzione che vuole eseguire ripulisco quel timeout
1513
- if (this.executionTimers[id])
1514
- clearTimeout(this.executionTimers[id]);
1515
- //Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
1516
- this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
1517
- }
1518
- }
1519
-
1520
- /**
1521
- * Classe il cui unico scopo è gestire il setup e rendering di un PieChart
1522
- */
1523
- class PieChartService {
1524
- /** @ignore */
1525
- constructor(Adapter) {
1526
- this.Adapter = Adapter;
1527
- /** @ignore */
1528
- this.ViewAbsoluteValues = true;
1529
- }
1530
- /**
1531
- * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un PieChart
1532
- */
1533
- graphicate(data, settings) {
1534
- if (settings.Timeline) {
1535
- console.error("Timeline not supported for pie chart");
1430
+ console.error("Timeline not supported for pie chart");
1536
1431
  return null;
1537
1432
  }
1538
1433
  //Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
@@ -1627,15 +1522,13 @@ class PieChartService {
1627
1522
  }
1628
1523
 
1629
1524
  /**
1630
- * Classe il cui unico scopo è gestire il setup e rendering di un Vertical2DChart
1525
+ * Classe il cui unico scopo è gestire il setup e rendering di un VerticalChart
1631
1526
  */
1632
- class Vertical2DChartService {
1527
+ class VerticalChartService {
1633
1528
  /** @ignore */
1634
1529
  constructor(Adapter) {
1635
1530
  this.Adapter = Adapter;
1636
1531
  /** @ignore */
1637
- this.DefaultGroupPaddingPercentage = 5;
1638
- /** @ignore */
1639
1532
  this.dangerZone = 50;
1640
1533
  /** @ignore */
1641
1534
  this.LabelWidth = 150;
@@ -1647,7 +1540,7 @@ class Vertical2DChartService {
1647
1540
  this.DefaultColumnWidthPercentage = 85;
1648
1541
  }
1649
1542
  /**
1650
- * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un Vertical2DChart
1543
+ * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalChart
1651
1544
  */
1652
1545
  graphicate(data, settings) {
1653
1546
  if (settings.Timeline) {
@@ -1658,6 +1551,8 @@ class Vertical2DChartService {
1658
1551
  am4core.options.autoDispose = true;
1659
1552
  this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
1660
1553
  let ChartInstanceCasted = this.ChartInstance;
1554
+ let dataConverted = this.Adapter ? this.Adapter.adaptDataForVerticalChart(data) : data;
1555
+ ChartInstanceCasted.data = dataConverted.values;
1661
1556
  if (settings.Legend) {
1662
1557
  ChartInstanceCasted.legend = new am4charts.Legend();
1663
1558
  ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
@@ -1680,10 +1575,7 @@ class Vertical2DChartService {
1680
1575
  categoryAxis.title.text = settings.XAxisTitle;
1681
1576
  categoryAxis.title.fontWeight = "bold";
1682
1577
  }
1683
- yAxis.min = 0;
1684
- categoryAxis.dataFields.category = 'key';
1685
- categoryAxis.renderer.cellStartLocation = am4core.percent(settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage).value;
1686
- categoryAxis.renderer.cellEndLocation = am4core.percent(100 - (settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage)).value;
1578
+ categoryAxis.dataFields.category = "k";
1687
1579
  categoryAxis.renderer.grid.template.location = 0;
1688
1580
  categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
1689
1581
  let label = categoryAxis.renderer.labels.template;
@@ -1711,87 +1603,35 @@ class Vertical2DChartService {
1711
1603
  }
1712
1604
  });
1713
1605
  }
1714
- let dataPreConverted = this.Adapter ? this.Adapter.adaptDataForVertical2DChart(data) : data;
1715
- let dataConverted = [];
1716
- for (let i = 0; i < dataPreConverted.groups.length; i++) {
1717
- let item = dataPreConverted.groups[i];
1718
- let obj = { key: item.name };
1719
- for (let p = 0; p < item.values.length; p++) {
1720
- let value = item.values[p];
1721
- obj[value.k] = value.v;
1722
- }
1723
- dataConverted.push(obj);
1724
- }
1725
- ChartInstanceCasted.data = dataConverted;
1726
- if (dataPreConverted.colorInfos)
1727
- ChartInstanceCasted.colors.list = dataPreConverted.colorInfos.map(c => am4core.color(c.color));
1728
- //Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
1729
- for (let prop in dataConverted[0])
1730
- if (prop !== "key")
1731
- this.createSeries(ChartInstanceCasted, settings, prop, prop);
1606
+ // Create series
1607
+ let series = ChartInstanceCasted.series.push(new am4charts.ColumnSeries());
1608
+ series.dataFields.valueY = "v";
1609
+ series.dataFields.categoryX = "k";
1610
+ series.name = "";
1611
+ series.columns.template.tooltipText = "{categoryX}: [bold]{valueY}[/]";
1612
+ series.columns.template.fillOpacity = .8;
1613
+ series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
1614
+ let columnTemplate = series.columns.template;
1615
+ columnTemplate.strokeWidth = 2;
1616
+ columnTemplate.strokeOpacity = 1;
1732
1617
  return this;
1733
1618
  }
1734
1619
  /** @ignore */
1735
1620
  refreshData(data) {
1736
1621
  //TODO:IMPL
1737
1622
  }
1738
- /** @ignore */
1739
- createSeries(chart, settings, value, name) {
1740
- let series = chart.series.push(new am4charts.ColumnSeries());
1741
- series.dataFields.valueY = value;
1742
- series.dataFields.categoryX = 'key';
1743
- series.name = name;
1744
- series.columns.template.tooltipText = "{name} {categoryX}: [bold]{valueY}[/]";
1745
- series.columns.template.fillOpacity = .8;
1746
- series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
1747
- series.events.on("hidden", () => this.arrangeColumns);
1748
- series.events.on("shown", () => this.arrangeColumns);
1749
- return series;
1750
- }
1751
- /** @ignore */
1752
- arrangeColumns() {
1753
- let ChartInstanceCasted = this.ChartInstance;
1754
- let series = ChartInstanceCasted.series.getIndex(0);
1755
- let xAxis = ChartInstanceCasted.xAxes.getIndex(0);
1756
- let w = 1 - xAxis.renderer.cellStartLocation - (1 - xAxis.renderer.cellEndLocation);
1757
- if (series.dataItems.length > 1) {
1758
- let x0 = xAxis.getX(series.dataItems.getIndex(0), "categoryX");
1759
- let x1 = xAxis.getX(series.dataItems.getIndex(1), "categoryX");
1760
- let delta = ((x1 - x0) / ChartInstanceCasted.series.length) * w;
1761
- if (am4core.isNumber(delta)) {
1762
- let middle = ChartInstanceCasted.series.length / 2;
1763
- let newIndex = 0;
1764
- ChartInstanceCasted.series.each((series) => {
1765
- if (!series.isHidden && !series.isHiding) {
1766
- series.dummyData = newIndex;
1767
- newIndex++;
1768
- }
1769
- else {
1770
- series.dummyData = ChartInstanceCasted.series.indexOf(series);
1771
- }
1772
- });
1773
- let visibleCount = newIndex;
1774
- let newMiddle = visibleCount / 2;
1775
- ChartInstanceCasted.series.each((series) => {
1776
- let trueIndex = ChartInstanceCasted.series.indexOf(series);
1777
- let newIndex = series.dummyData;
1778
- let dx = (newIndex - trueIndex + middle - newMiddle) * delta;
1779
- series.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
1780
- series.bulletsContainer.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
1781
- });
1782
- }
1783
- }
1784
- }
1785
1623
  }
1786
1624
 
1787
1625
  /**
1788
- * Classe il cui unico scopo è gestire il setup e rendering di un VerticalChart
1626
+ * Classe il cui unico scopo è gestire il setup e rendering di un Vertical2DChart
1789
1627
  */
1790
- class VerticalChartService {
1628
+ class Vertical2DChartService {
1791
1629
  /** @ignore */
1792
1630
  constructor(Adapter) {
1793
1631
  this.Adapter = Adapter;
1794
1632
  /** @ignore */
1633
+ this.DefaultGroupPaddingPercentage = 5;
1634
+ /** @ignore */
1795
1635
  this.dangerZone = 50;
1796
1636
  /** @ignore */
1797
1637
  this.LabelWidth = 150;
@@ -1803,7 +1643,7 @@ class VerticalChartService {
1803
1643
  this.DefaultColumnWidthPercentage = 85;
1804
1644
  }
1805
1645
  /**
1806
- * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalChart
1646
+ * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un Vertical2DChart
1807
1647
  */
1808
1648
  graphicate(data, settings) {
1809
1649
  if (settings.Timeline) {
@@ -1814,8 +1654,6 @@ class VerticalChartService {
1814
1654
  am4core.options.autoDispose = true;
1815
1655
  this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
1816
1656
  let ChartInstanceCasted = this.ChartInstance;
1817
- let dataConverted = this.Adapter ? this.Adapter.adaptDataForVerticalChart(data) : data;
1818
- ChartInstanceCasted.data = dataConverted.values;
1819
1657
  if (settings.Legend) {
1820
1658
  ChartInstanceCasted.legend = new am4charts.Legend();
1821
1659
  ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
@@ -1838,7 +1676,10 @@ class VerticalChartService {
1838
1676
  categoryAxis.title.text = settings.XAxisTitle;
1839
1677
  categoryAxis.title.fontWeight = "bold";
1840
1678
  }
1841
- categoryAxis.dataFields.category = "k";
1679
+ yAxis.min = 0;
1680
+ categoryAxis.dataFields.category = 'key';
1681
+ categoryAxis.renderer.cellStartLocation = am4core.percent(settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage).value;
1682
+ categoryAxis.renderer.cellEndLocation = am4core.percent(100 - (settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage)).value;
1842
1683
  categoryAxis.renderer.grid.template.location = 0;
1843
1684
  categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
1844
1685
  let label = categoryAxis.renderer.labels.template;
@@ -1866,23 +1707,77 @@ class VerticalChartService {
1866
1707
  }
1867
1708
  });
1868
1709
  }
1869
- // Create series
1870
- let series = ChartInstanceCasted.series.push(new am4charts.ColumnSeries());
1871
- series.dataFields.valueY = "v";
1872
- series.dataFields.categoryX = "k";
1873
- series.name = "";
1874
- series.columns.template.tooltipText = "{categoryX}: [bold]{valueY}[/]";
1875
- series.columns.template.fillOpacity = .8;
1876
- series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
1877
- let columnTemplate = series.columns.template;
1878
- columnTemplate.strokeWidth = 2;
1879
- columnTemplate.strokeOpacity = 1;
1710
+ let dataPreConverted = this.Adapter ? this.Adapter.adaptDataForVertical2DChart(data) : data;
1711
+ let dataConverted = [];
1712
+ for (let i = 0; i < dataPreConverted.groups.length; i++) {
1713
+ let item = dataPreConverted.groups[i];
1714
+ let obj = { key: item.name };
1715
+ for (let p = 0; p < item.values.length; p++) {
1716
+ let value = item.values[p];
1717
+ obj[value.k] = value.v;
1718
+ }
1719
+ dataConverted.push(obj);
1720
+ }
1721
+ ChartInstanceCasted.data = dataConverted;
1722
+ if (dataPreConverted.colorInfos)
1723
+ ChartInstanceCasted.colors.list = dataPreConverted.colorInfos.map(c => am4core.color(c.color));
1724
+ //Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
1725
+ for (let prop in dataConverted[0])
1726
+ if (prop !== "key")
1727
+ this.createSeries(ChartInstanceCasted, settings, prop, prop);
1880
1728
  return this;
1881
1729
  }
1882
1730
  /** @ignore */
1883
1731
  refreshData(data) {
1884
1732
  //TODO:IMPL
1885
1733
  }
1734
+ /** @ignore */
1735
+ createSeries(chart, settings, value, name) {
1736
+ let series = chart.series.push(new am4charts.ColumnSeries());
1737
+ series.dataFields.valueY = value;
1738
+ series.dataFields.categoryX = 'key';
1739
+ series.name = name;
1740
+ series.columns.template.tooltipText = "{name} {categoryX}: [bold]{valueY}[/]";
1741
+ series.columns.template.fillOpacity = .8;
1742
+ series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
1743
+ series.events.on("hidden", () => this.arrangeColumns);
1744
+ series.events.on("shown", () => this.arrangeColumns);
1745
+ return series;
1746
+ }
1747
+ /** @ignore */
1748
+ arrangeColumns() {
1749
+ let ChartInstanceCasted = this.ChartInstance;
1750
+ let series = ChartInstanceCasted.series.getIndex(0);
1751
+ let xAxis = ChartInstanceCasted.xAxes.getIndex(0);
1752
+ let w = 1 - xAxis.renderer.cellStartLocation - (1 - xAxis.renderer.cellEndLocation);
1753
+ if (series.dataItems.length > 1) {
1754
+ let x0 = xAxis.getX(series.dataItems.getIndex(0), "categoryX");
1755
+ let x1 = xAxis.getX(series.dataItems.getIndex(1), "categoryX");
1756
+ let delta = ((x1 - x0) / ChartInstanceCasted.series.length) * w;
1757
+ if (am4core.isNumber(delta)) {
1758
+ let middle = ChartInstanceCasted.series.length / 2;
1759
+ let newIndex = 0;
1760
+ ChartInstanceCasted.series.each((series) => {
1761
+ if (!series.isHidden && !series.isHiding) {
1762
+ series.dummyData = newIndex;
1763
+ newIndex++;
1764
+ }
1765
+ else {
1766
+ series.dummyData = ChartInstanceCasted.series.indexOf(series);
1767
+ }
1768
+ });
1769
+ let visibleCount = newIndex;
1770
+ let newMiddle = visibleCount / 2;
1771
+ ChartInstanceCasted.series.each((series) => {
1772
+ let trueIndex = ChartInstanceCasted.series.indexOf(series);
1773
+ let newIndex = series.dummyData;
1774
+ let dx = (newIndex - trueIndex + middle - newMiddle) * delta;
1775
+ series.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
1776
+ series.bulletsContainer.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
1777
+ });
1778
+ }
1779
+ }
1780
+ }
1886
1781
  }
1887
1782
 
1888
1783
  /**
@@ -2007,6 +1902,138 @@ class VerticalStackedChartService {
2007
1902
  }
2008
1903
  }
2009
1904
 
1905
+ /**
1906
+ * Classe il cui unico scopo è gestire il setup e rendering di un AreaChart
1907
+ */
1908
+ class AreaChartService {
1909
+ /** @ignore */
1910
+ constructor(Adapter) {
1911
+ this.Adapter = Adapter;
1912
+ //******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
1913
+ //TODO: spostarla in un metodo di utilità (esfaenza/extensions)
1914
+ /** @ignore */
1915
+ this.executionTimers = {};
1916
+ }
1917
+ /**
1918
+ * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un AreaChart
1919
+ */
1920
+ graphicate(data, settings) {
1921
+ if (settings.Timeline) {
1922
+ console.error("Timeline not supported for area chart");
1923
+ return null;
1924
+ }
1925
+ let dataConverted = this.Adapter ? this.Adapter.adaptDataForAreaChart(data) : data;
1926
+ let showTicks = settings.ShowTicks == null ? true : settings?.ShowTicks;
1927
+ let interval = dataConverted.interval;
1928
+ //Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
1929
+ am4core.options.autoDispose = true;
1930
+ this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
1931
+ let ChartInstanceCasted = this.ChartInstance;
1932
+ if (settings.Legend) {
1933
+ ChartInstanceCasted.legend = new am4charts.Legend();
1934
+ ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
1935
+ ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
1936
+ if (settings.LegendPadding) {
1937
+ let template = this.ChartInstance.legend.itemContainers.template;
1938
+ template.paddingTop = settings.LegendPadding.top ?? 0;
1939
+ template.paddingBottom = settings.LegendPadding.bottom ?? 0;
1940
+ template.paddingLeft = settings.LegendPadding.left ?? 0;
1941
+ template.paddingRight = settings.LegendPadding.right ?? 0;
1942
+ }
1943
+ }
1944
+ let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
1945
+ yAxis.tooltip.disabled = true;
1946
+ if (settings.YAxisTitle) {
1947
+ yAxis.title.text = settings.YAxisTitle;
1948
+ yAxis.title.fontWeight = "bold";
1949
+ }
1950
+ yAxis.min = 0;
1951
+ let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
1952
+ dateAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 50;
1953
+ dateAxis.startLocation = 0.5;
1954
+ dateAxis.endLocation = 0.5;
1955
+ if (settings.XAxisTitle) {
1956
+ dateAxis.title.text = settings.XAxisTitle;
1957
+ dateAxis.title.fontWeight = "bold";
1958
+ }
1959
+ if (showTicks) {
1960
+ dateAxis.renderer.ticks.template.disabled = false;
1961
+ dateAxis.renderer.ticks.template.strokeOpacity = 1;
1962
+ dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
1963
+ dateAxis.renderer.ticks.template.strokeWidth = 2;
1964
+ dateAxis.renderer.ticks.template.length = 10;
1965
+ dateAxis.renderer.ticks.template.location = 0;
1966
+ }
1967
+ if (!!interval)
1968
+ dateAxis.baseInterval = { count: interval.count, timeUnit: interval.timeunit };
1969
+ // Unisco il dataset e tiro fuori i dati
1970
+ let chartData = [];
1971
+ let seriesToMakeCache = {};
1972
+ let seriesToMake = [];
1973
+ for (let i = 0; i < dataConverted.groups.length; i++) {
1974
+ let group = dataConverted.groups[i];
1975
+ let dataItem = { date: group.name };
1976
+ for (let ii = 0; ii < group.values.length; ii++) {
1977
+ let val = group.values[ii];
1978
+ dataItem[val.k] = val.v;
1979
+ if (!seriesToMakeCache[val.k]) {
1980
+ seriesToMakeCache[val.k] = true;
1981
+ seriesToMake.push(val.k);
1982
+ }
1983
+ }
1984
+ chartData.push(dataItem);
1985
+ }
1986
+ ChartInstanceCasted.data = chartData;
1987
+ //---------------------------------------------------------
1988
+ seriesToMake.forEach(s => { this.createSeries(ChartInstanceCasted, s); });
1989
+ ChartInstanceCasted.cursor = new am4charts.XYCursor();
1990
+ ChartInstanceCasted.cursor.xAxis = dateAxis;
1991
+ dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
1992
+ dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
1993
+ return this;
1994
+ }
1995
+ /** @ignore */
1996
+ refreshData(data) {
1997
+ //TODO:IMPL
1998
+ }
1999
+ /** @ignore */
2000
+ emitSelectionChanged(ev, settings) {
2001
+ if (settings.OnSelectionChangedCallback) {
2002
+ this.throttla("selchange", () => {
2003
+ var axis = ev.target;
2004
+ var start = new Date(axis.minZoomed);
2005
+ var end = new Date(axis.maxZoomed);
2006
+ var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
2007
+ settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
2008
+ }, 150);
2009
+ }
2010
+ }
2011
+ /** @ignore */
2012
+ createSeries(chart, name) {
2013
+ let series = chart.series.push(new am4charts.LineSeries());
2014
+ series.dataFields.dateX = "date";
2015
+ series.name = name[0].toUpperCase() + name.slice(1);
2016
+ series.dataFields.valueY = name;
2017
+ series.tooltipText = "[#000]{valueY.value}[/]";
2018
+ //series.tooltip.background.fill = am4core.color("#FFF");
2019
+ series.tooltip.getStrokeFromObject = true;
2020
+ series.tooltip.background.strokeWidth = 3;
2021
+ series.tooltip.getFillFromObject = false;
2022
+ series.fillOpacity = 0.6;
2023
+ series.strokeWidth = 2;
2024
+ series.stacked = true;
2025
+ return series;
2026
+ }
2027
+ /** @ignore */
2028
+ throttla(id, func, throttleTime) {
2029
+ //Se ho la funzione che vuole eseguire ripulisco quel timeout
2030
+ if (this.executionTimers[id])
2031
+ clearTimeout(this.executionTimers[id]);
2032
+ //Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
2033
+ this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
2034
+ }
2035
+ }
2036
+
2010
2037
  /**
2011
2038
  * Componente specifico per la graficazione di un qualsiasi tipo di grafico.
2012
2039
  *
@@ -2079,12 +2106,12 @@ class EsChartComponent extends BaseChartComponent {
2079
2106
  }
2080
2107
  }
2081
2108
  }
2082
- EsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: i2.DateService }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2083
- 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: 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 });
2109
+ EsChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: i3.DateService }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2110
+ 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: 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 });
2084
2111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsChartComponent, decorators: [{
2085
2112
  type: Component,
2086
2113
  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"] }]
2087
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ChartLoader }, { type: ChartDispatcher }, { type: i2.DateService }, { type: BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
2114
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ChartLoader }, { type: ChartDispatcher }, { type: i3.DateService }, { type: BaseAdapter }, { type: i0.NgZone }, { type: Object, decorators: [{
2088
2115
  type: Inject,
2089
2116
  args: [PLATFORM_ID]
2090
2117
  }] }, { type: undefined, decorators: [{
@@ -2150,7 +2177,7 @@ class EsAreaChartComponent extends BaseChartComponent {
2150
2177
  }
2151
2178
  }
2152
2179
  EsAreaChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2153
- 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: 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 });
2180
+ 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: 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 });
2154
2181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsAreaChartComponent, decorators: [{
2155
2182
  type: Component,
2156
2183
  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"] }]
@@ -2228,12 +2255,12 @@ class EsLineChartComponent extends BaseChartComponent {
2228
2255
  return new LineChartService(this.adapter, this.dateService).graphicate(this.Data, settingsCasted);
2229
2256
  }
2230
2257
  }
2231
- EsLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i2.DateService }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2232
- 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: 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 });
2258
+ EsLineChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: 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 });
2259
+ 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: 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 });
2233
2260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsLineChartComponent, decorators: [{
2234
2261
  type: Component,
2235
2262
  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"] }]
2236
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ChartLoader }, { type: ChartDispatcher }, { type: BaseAdapter }, { type: i2.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
2263
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ChartLoader }, { type: ChartDispatcher }, { type: BaseAdapter }, { type: i3.DateService }, { type: i0.NgZone }, { type: Object, decorators: [{
2237
2264
  type: Inject,
2238
2265
  args: [PLATFORM_ID]
2239
2266
  }] }, { type: undefined, decorators: [{
@@ -2324,7 +2351,7 @@ class EsPieChartComponent extends BaseChartComponent {
2324
2351
  }
2325
2352
  }
2326
2353
  EsPieChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2327
- 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: 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 });
2354
+ 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: 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 });
2328
2355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsPieChartComponent, decorators: [{
2329
2356
  type: Component,
2330
2357
  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"] }]
@@ -2412,7 +2439,7 @@ class EsVertical2DChartComponent extends BaseChartComponent {
2412
2439
  }
2413
2440
  }
2414
2441
  EsVertical2DChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVertical2DChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2415
- EsVertical2DChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVertical2DChartComponent, selector: "es-vertical-2d-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", GroupPaddingPercentage: "GroupPaddingPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2442
+ EsVertical2DChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVertical2DChartComponent, selector: "es-vertical-2d-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", GroupPaddingPercentage: "GroupPaddingPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2416
2443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVertical2DChartComponent, decorators: [{
2417
2444
  type: Component,
2418
2445
  args: [{ selector: 'es-vertical-2d-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"] }]
@@ -2497,7 +2524,7 @@ class EsVerticalChartComponent extends BaseChartComponent {
2497
2524
  }
2498
2525
  }
2499
2526
  EsVerticalChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2500
- EsVerticalChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalChartComponent, selector: "es-vertical-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2527
+ EsVerticalChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalChartComponent, selector: "es-vertical-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2501
2528
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalChartComponent, decorators: [{
2502
2529
  type: Component,
2503
2530
  args: [{ selector: 'es-vertical-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"] }]
@@ -2580,7 +2607,7 @@ class EsVerticalStackedChartComponent extends BaseChartComponent {
2580
2607
  }
2581
2608
  }
2582
2609
  EsVerticalStackedChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalStackedChartComponent, deps: [{ token: i0.ElementRef }, { token: ChartLoader }, { token: ChartDispatcher }, { token: BaseAdapter }, { token: i0.NgZone }, { token: PLATFORM_ID }, { token: ESC_LOGS }, { token: ESC_ANIMATIONS }, { token: ESC_LOCALE }, { token: ESC_THEME }], target: i0.ɵɵFactoryTarget.Component });
2583
- EsVerticalStackedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalStackedChartComponent, selector: "es-vertical-stacked-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2610
+ EsVerticalStackedChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: EsVerticalStackedChartComponent, selector: "es-vertical-stacked-chart", inputs: { Data: "Data", DataArray: "DataArray", ColumnWidthPercentage: "ColumnWidthPercentage", LabelWidth: "LabelWidth", LabelVerticalOrientationCutoffWidth: "LabelVerticalOrientationCutoffWidth", LabelRightWhenCompressed: "LabelRightWhenCompressed", LabelTopWhenCompressed: "LabelTopWhenCompressed" }, 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: 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 });
2584
2611
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsVerticalStackedChartComponent, decorators: [{
2585
2612
  type: Component,
2586
2613
  args: [{ selector: 'es-vertical-stacked-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"] }]
@@ -2697,5 +2724,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2697
2724
  * Generated bundle index. Do not edit.
2698
2725
  */
2699
2726
 
2700
- export { AreaChartData, AreaChartSettings, BaseAdapter, BaseInterval, BaseSettings, ChartThemes, DateValue, EsAreaChartComponent, EsChartComponent, EsChartsModule, EsLineChartComponent, EsPieChartComponent, EsVertical2DChartComponent, EsVerticalChartComponent, EsVerticalStackedChartComponent, KeyValue, KeyValueColor, LegendPad, Limit, LineChartData, LineChartSettings, LineSerie, PageChartSelector, PagedChartData, PieChartData, PieChartSettings, Vertical2DChartData, Vertical2DChartSettings, VerticalChartData, VerticalChartSettings, VerticalStackedChartData, VerticalStackedChartSettings };
2727
+ export { AreaChartData, AreaChartSettings, BaseAdapter, BaseChartComponent, BaseInterval, BaseSettings, ChartThemes, DateValue, EsAreaChartComponent, EsChartComponent, EsChartsModule, EsLineChartComponent, EsPieChartComponent, EsVertical2DChartComponent, EsVerticalChartComponent, EsVerticalStackedChartComponent, KeyValue, KeyValueColor, LegendPad, Limit, LineChartData, LineChartSettings, LineSerie, PageChartSelector, PagedChartData, PieChartData, PieChartSettings, Vertical2DChartData, Vertical2DChartSettings, VerticalChartData, VerticalChartSettings, VerticalStackedChartData, VerticalStackedChartSettings };
2701
2728
  //# sourceMappingURL=esfaenza-es-charts.mjs.map