mdt-charts 1.28.2 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/lib/config/config.d.ts +164 -165
  2. package/lib/designer/designerConfig.d.ts +62 -59
  3. package/lib/engine/block/block.d.ts +22 -16
  4. package/lib/engine/block/block.js +51 -51
  5. package/lib/engine/block/blockHelper.d.ts +6 -6
  6. package/lib/engine/block/blockHelper.js +16 -16
  7. package/lib/engine/block/blockHtml.d.ts +8 -8
  8. package/lib/engine/block/blockHtml.js +15 -15
  9. package/lib/engine/block/blockSvg.d.ts +20 -20
  10. package/lib/engine/block/blockSvg.js +65 -66
  11. package/lib/engine/block/defs/LinearGradientDef.d.ts +2 -2
  12. package/lib/engine/block/defs/LinearGradientDef.js +27 -27
  13. package/lib/engine/block/defs/hatchPattern.d.ts +4 -4
  14. package/lib/engine/block/defs/hatchPattern.js +9 -9
  15. package/lib/engine/colorReader/colorReader.d.ts +5 -5
  16. package/lib/engine/colorReader/colorReader.js +18 -18
  17. package/lib/engine/contentManager/contentManager.d.ts +6 -6
  18. package/lib/engine/contentManager/contentManager.js +15 -15
  19. package/lib/engine/contentManager/contentManagerFactory.d.ts +6 -6
  20. package/lib/engine/contentManager/contentManagerFactory.js +12 -12
  21. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +70 -22
  22. package/lib/engine/elementHighlighter/elementHighlighter.js +230 -181
  23. package/lib/engine/elementHighlighter/selectHighlighter.d.ts +29 -4
  24. package/lib/engine/elementHighlighter/selectHighlighter.js +189 -87
  25. package/lib/engine/engine.d.ts +16 -16
  26. package/lib/engine/engine.js +87 -62
  27. package/lib/engine/features/aggregator/aggregator.d.ts +24 -17
  28. package/lib/engine/features/aggregator/aggregator.js +113 -102
  29. package/lib/engine/features/axis/axis.d.ts +22 -9
  30. package/lib/engine/features/axis/axis.js +159 -150
  31. package/lib/engine/features/axis/axisDomHelper.d.ts +7 -2
  32. package/lib/engine/features/axis/axisDomHelper.js +19 -20
  33. package/lib/engine/features/axis/axisHelper.d.ts +9 -5
  34. package/lib/engine/features/axis/axisHelper.js +28 -33
  35. package/lib/engine/features/axis/axisLabelDomHelper.d.ts +26 -11
  36. package/lib/engine/features/axis/axisLabelDomHelper.js +156 -152
  37. package/lib/engine/features/axis/axisLabelsEventManager.d.ts +2 -2
  38. package/lib/engine/features/axis/axisLabelsEventManager.js +32 -32
  39. package/lib/engine/features/embeddedLabels/embeddedLabels.d.ts +51 -16
  40. package/lib/engine/features/embeddedLabels/embeddedLabels.js +234 -134
  41. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +13 -2
  42. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +20 -23
  43. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +32 -15
  44. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +56 -63
  45. package/lib/engine/features/gridLine/gidLineHelper.d.ts +13 -7
  46. package/lib/engine/features/gridLine/gidLineHelper.js +42 -49
  47. package/lib/engine/features/gridLine/gridLine.d.ts +19 -5
  48. package/lib/engine/features/gridLine/gridLine.js +35 -36
  49. package/lib/engine/features/legend/legend.d.ts +38 -29
  50. package/lib/engine/features/legend/legend.js +117 -92
  51. package/lib/engine/features/legend/legendDomHelper.d.ts +13 -6
  52. package/lib/engine/features/legend/legendDomHelper.js +63 -62
  53. package/lib/engine/features/legend/legendEventsManager.d.ts +13 -8
  54. package/lib/engine/features/legend/legendEventsManager.js +48 -47
  55. package/lib/engine/features/legend/legendHelper.d.ts +39 -14
  56. package/lib/engine/features/legend/legendHelper.js +98 -93
  57. package/lib/engine/features/legend/legendHelperService.d.ts +13 -6
  58. package/lib/engine/features/legend/legendHelperService.js +24 -25
  59. package/lib/engine/features/legend/legendMarkerCreator.d.ts +18 -9
  60. package/lib/engine/features/legend/legendMarkerCreator.js +79 -76
  61. package/lib/engine/features/legend/legendWidthCalculator.d.ts +7 -7
  62. package/lib/engine/features/legend/legendWidthCalculator.js +126 -122
  63. package/lib/engine/features/markDots/markDot.d.ts +42 -15
  64. package/lib/engine/features/markDots/markDot.js +101 -70
  65. package/lib/engine/features/markDots/markDotsHelper.d.ts +8 -1
  66. package/lib/engine/features/markDots/markDotsHelper.js +13 -12
  67. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.d.ts +17 -17
  68. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.js +42 -47
  69. package/lib/engine/features/scale/scale.d.ts +17 -12
  70. package/lib/engine/features/scale/scale.js +76 -69
  71. package/lib/engine/features/tipBox/tipBox.d.ts +9 -5
  72. package/lib/engine/features/tipBox/tipBox.js +24 -24
  73. package/lib/engine/features/tipBox/tipBoxHelper.d.ts +16 -9
  74. package/lib/engine/features/tipBox/tipBoxHelper.js +60 -45
  75. package/lib/engine/features/title/title.d.ts +6 -6
  76. package/lib/engine/features/title/title.js +34 -35
  77. package/lib/engine/features/tolltip/newTooltip/newTooltip.d.ts +15 -11
  78. package/lib/engine/features/tolltip/newTooltip/newTooltip.js +21 -21
  79. package/lib/engine/features/tolltip/newTooltip/newTooltipService.d.ts +13 -8
  80. package/lib/engine/features/tolltip/newTooltip/newTooltipService.js +26 -23
  81. package/lib/engine/features/tolltip/tooltip.d.ts +17 -11
  82. package/lib/engine/features/tolltip/tooltip.js +296 -142
  83. package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +21 -10
  84. package/lib/engine/features/tolltip/tooltipComponentsManager.js +113 -114
  85. package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +43 -21
  86. package/lib/engine/features/tolltip/tooltipDomHelper.js +144 -120
  87. package/lib/engine/features/tolltip/tooltipHelper.d.ts +39 -9
  88. package/lib/engine/features/tolltip/tooltipHelper.js +114 -91
  89. package/lib/engine/features/valueLabels/valueLabels.d.ts +58 -38
  90. package/lib/engine/features/valueLabels/valueLabels.js +205 -169
  91. package/lib/engine/features/valueLabels/valueLabelsHelper.d.ts +7 -1
  92. package/lib/engine/features/valueLabels/valueLabelsHelper.js +23 -18
  93. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.d.ts +18 -15
  94. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.js +46 -47
  95. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.d.ts +6 -3
  96. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.js +49 -45
  97. package/lib/engine/filterManager/filterEventManager.d.ts +37 -26
  98. package/lib/engine/filterManager/filterEventManager.js +174 -129
  99. package/lib/engine/helpers/domHelper.d.ts +45 -20
  100. package/lib/engine/helpers/domHelper.js +62 -61
  101. package/lib/engine/helpers/fontResizer/fontResizer.d.ts +10 -10
  102. package/lib/engine/helpers/fontResizer/fontResizer.js +21 -16
  103. package/lib/engine/helpers/fontResizer/fontResizerService.d.ts +1 -1
  104. package/lib/engine/helpers/fontResizer/fontResizerService.js +9 -10
  105. package/lib/engine/helpers/helper.d.ts +27 -27
  106. package/lib/engine/helpers/helper.js +91 -92
  107. package/lib/engine/helpers/namesHelper.d.ts +3 -3
  108. package/lib/engine/helpers/namesHelper.js +6 -6
  109. package/lib/engine/helpers/pipeline/Pipeline.d.ts +5 -5
  110. package/lib/engine/helpers/pipeline/Pipeline.js +33 -33
  111. package/lib/engine/polarNotation/donut/DonutHelper.d.ts +25 -11
  112. package/lib/engine/polarNotation/donut/DonutHelper.js +71 -70
  113. package/lib/engine/polarNotation/donut/donut.d.ts +38 -23
  114. package/lib/engine/polarNotation/donut/donut.js +109 -99
  115. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.d.ts +7 -7
  116. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.js +36 -36
  117. package/lib/engine/polarNotation/polarManager.d.ts +5 -5
  118. package/lib/engine/polarNotation/polarManager.js +66 -52
  119. package/lib/engine/transitionManager.d.ts +13 -14
  120. package/lib/engine/transitionManager.js +48 -49
  121. package/lib/engine/twoDimensionalNotation/area/area.d.ts +44 -28
  122. package/lib/engine/twoDimensionalNotation/area/area.js +272 -238
  123. package/lib/engine/twoDimensionalNotation/area/areaGenerator.d.ts +13 -5
  124. package/lib/engine/twoDimensionalNotation/area/areaGenerator.js +13 -13
  125. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +4 -4
  126. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +57 -41
  127. package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +54 -29
  128. package/lib/engine/twoDimensionalNotation/bar/bar.js +362 -224
  129. package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +71 -32
  130. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +162 -126
  131. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.d.ts +6 -6
  132. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.js +24 -24
  133. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.d.ts +2 -2
  134. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.js +16 -17
  135. package/lib/engine/twoDimensionalNotation/dot/dotChart.d.ts +23 -23
  136. package/lib/engine/twoDimensionalNotation/dot/dotChart.js +135 -114
  137. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.d.ts +7 -7
  138. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.js +28 -28
  139. package/lib/engine/twoDimensionalNotation/line/line.d.ts +37 -16
  140. package/lib/engine/twoDimensionalNotation/line/line.js +162 -132
  141. package/lib/engine/twoDimensionalNotation/line/lineBuilder.d.ts +14 -11
  142. package/lib/engine/twoDimensionalNotation/line/lineBuilder.js +47 -48
  143. package/lib/engine/twoDimensionalNotation/line/lineGenerator.d.ts +4 -4
  144. package/lib/engine/twoDimensionalNotation/line/lineGenerator.js +8 -8
  145. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +12 -6
  146. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +76 -60
  147. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.d.ts +6 -6
  148. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.d.ts +5 -5
  149. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.js +16 -17
  150. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.d.ts +11 -10
  151. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.js +9 -7
  152. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.d.ts +3 -1
  153. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +9 -9
  154. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +252 -143
  155. package/lib/engine/valueFormatter.d.ts +3 -3
  156. package/lib/engine/valueFormatter.js +6 -6
  157. package/lib/main.d.ts +82 -75
  158. package/lib/main.js +79 -84
  159. package/lib/model/EventEmitter.d.ts +8 -8
  160. package/lib/model/EventEmitter.js +24 -24
  161. package/lib/model/chartStyleModel/chartStyleModel.d.ts +5 -5
  162. package/lib/model/chartStyleModel/chartStyleModel.js +27 -25
  163. package/lib/model/chartStyleModel/colorRange.d.ts +3 -3
  164. package/lib/model/chartStyleModel/colorRange.js +19 -24
  165. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.d.ts +22 -12
  166. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.js +69 -60
  167. package/lib/model/configsValidator/configValidator.d.ts +1 -1
  168. package/lib/model/configsValidator/configValidator.js +4 -4
  169. package/lib/model/dataManagerModel/dataManagerModel.d.ts +36 -26
  170. package/lib/model/dataManagerModel/dataManagerModel.js +179 -128
  171. package/lib/model/dataManagerModel/dataManagerModelService.d.ts +2 -2
  172. package/lib/model/dataManagerModel/dataManagerModelService.js +25 -26
  173. package/lib/model/featuresModel/axisModel.d.ts +69 -18
  174. package/lib/model/featuresModel/axisModel.js +224 -169
  175. package/lib/model/featuresModel/axisModelService.d.ts +10 -6
  176. package/lib/model/featuresModel/axisModelService.js +27 -27
  177. package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +16 -11
  178. package/lib/model/featuresModel/legendModel/legendCanvasModel.js +55 -59
  179. package/lib/model/featuresModel/legendModel/legendModel.d.ts +7 -3
  180. package/lib/model/featuresModel/legendModel/legendModel.js +59 -41
  181. package/lib/model/featuresModel/legendModel/polarMarginCalculator.d.ts +8 -3
  182. package/lib/model/featuresModel/legendModel/polarMarginCalculator.js +18 -20
  183. package/lib/model/featuresModel/legendModel/twoDimLegendModel.d.ts +8 -4
  184. package/lib/model/featuresModel/legendModel/twoDimLegendModel.js +40 -27
  185. package/lib/model/featuresModel/otherComponents.d.ts +7 -4
  186. package/lib/model/featuresModel/otherComponents.js +9 -9
  187. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.d.ts +6 -6
  188. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.js +27 -23
  189. package/lib/model/featuresModel/scaleModel/scaleDomainService.d.ts +19 -5
  190. package/lib/model/featuresModel/scaleModel/scaleDomainService.js +44 -55
  191. package/lib/model/featuresModel/scaleModel/scaleModel.d.ts +10 -10
  192. package/lib/model/featuresModel/scaleModel/scaleModel.js +61 -50
  193. package/lib/model/featuresModel/scaleModel/scaleModelServices.js +15 -22
  194. package/lib/model/featuresModel/titleModel.d.ts +1 -1
  195. package/lib/model/featuresModel/titleModel.js +14 -14
  196. package/lib/model/featuresModel/tooltipModel.d.ts +1 -1
  197. package/lib/model/featuresModel/tooltipModel.js +5 -5
  198. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.d.ts +23 -11
  199. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.js +53 -51
  200. package/lib/model/helpers/modelHelper.d.ts +7 -7
  201. package/lib/model/helpers/modelHelper.js +38 -42
  202. package/lib/model/helpers/twoDimensionalModelHelper.d.ts +37 -9
  203. package/lib/model/helpers/twoDimensionalModelHelper.js +147 -125
  204. package/lib/model/helpers/unitsFromConfigReader.js +4 -4
  205. package/lib/model/helpers/unitsReader.d.ts +2 -2
  206. package/lib/model/helpers/unitsReader.js +11 -13
  207. package/lib/model/margin/marginModel.d.ts +7 -7
  208. package/lib/model/margin/marginModel.js +23 -20
  209. package/lib/model/margin/twoDim/twoDimMarginModel.d.ts +13 -13
  210. package/lib/model/margin/twoDim/twoDimMarginModel.js +184 -113
  211. package/lib/model/model.d.ts +308 -280
  212. package/lib/model/model.js +4 -4
  213. package/lib/model/modelBuilder.d.ts +27 -18
  214. package/lib/model/modelBuilder.js +85 -79
  215. package/lib/model/modelInstance/canvasModel/canvasModel.d.ts +17 -17
  216. package/lib/model/modelInstance/canvasModel/canvasModel.js +42 -43
  217. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasMarginModel.d.ts +7 -7
  218. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasSizeModel.d.ts +2 -2
  219. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.d.ts +6 -6
  220. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.js +24 -24
  221. package/lib/model/modelInstance/canvasModel/legendCanvasModel.d.ts +4 -4
  222. package/lib/model/modelInstance/canvasModel/legendCanvasModel.js +11 -11
  223. package/lib/model/modelInstance/canvasModel/titleCanvas.d.ts +4 -4
  224. package/lib/model/modelInstance/canvasModel/titleCanvas.js +9 -9
  225. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.d.ts +3 -3
  226. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.js +6 -6
  227. package/lib/model/modelInstance/configReader.d.ts +32 -23
  228. package/lib/model/modelInstance/configReader.js +125 -94
  229. package/lib/model/modelInstance/dataModel/dataModel.d.ts +9 -9
  230. package/lib/model/modelInstance/dataModel/dataModel.js +24 -24
  231. package/lib/model/modelInstance/dataModel/dataRepository.d.ts +14 -14
  232. package/lib/model/modelInstance/dataModel/dataRepository.js +42 -42
  233. package/lib/model/modelInstance/modelInstance.d.ts +11 -6
  234. package/lib/model/modelInstance/modelInstance.js +16 -16
  235. package/lib/model/modelInstance/titleConfigReader.d.ts +8 -8
  236. package/lib/model/modelInstance/titleConfigReader.js +37 -30
  237. package/lib/model/notations/polar/donut/donutAggregatorService.d.ts +9 -6
  238. package/lib/model/notations/polar/donut/donutAggregatorService.js +40 -37
  239. package/lib/model/notations/polar/donut/donutModel.d.ts +9 -5
  240. package/lib/model/notations/polar/donut/donutModel.js +28 -28
  241. package/lib/model/notations/polar/donut/donutThicknessService.d.ts +3 -3
  242. package/lib/model/notations/polar/donut/donutThicknessService.js +13 -15
  243. package/lib/model/notations/polar/polarModel.d.ts +18 -7
  244. package/lib/model/notations/polar/polarModel.js +79 -65
  245. package/lib/model/notations/twoDimensional/styles.d.ts +44 -7
  246. package/lib/model/notations/twoDimensional/styles.js +234 -125
  247. package/lib/model/notations/twoDimensionalModel.d.ts +23 -13
  248. package/lib/model/notations/twoDimensionalModel.js +330 -162
  249. package/lib/optionsServices/publicOptionsService.d.ts +1 -1
  250. package/lib/optionsServices/publicOptionsService.js +4 -4
  251. package/lib/optionsServices/validators/sizeValidator.d.ts +2 -2
  252. package/lib/optionsServices/validators/sizeValidator.js +10 -11
  253. package/lib/style/charts-main.css +150 -151
  254. package/lib/style/charts-main.less +150 -151
  255. package/package.json +1 -1
package/lib/main.js CHANGED
@@ -2,90 +2,85 @@ import { Engine } from "./engine/engine";
2
2
  import { assembleModel, getPreparedData } from "./model/modelBuilder";
3
3
  import { PublicOptionsService } from "./optionsServices/publicOptionsService";
4
4
  export class Chart {
5
- /**
6
- * @param config Объект конфигуратора
7
- * @param designerConfig Объект конфигуратора дизайнера
8
- * @param data Данные
9
- * @param isResizable Флаг подстройки размера блока графика под родительский элемент
10
- * @param filterCallback Функция коллбэк, вызываемая во время клика на элемент графика. Предназначена для обеспечения кросс-фильтрации
11
- * @param selectedIds Id выделенных записей
12
- */
13
- constructor(config, designerConfig, data, isResizable = false, filterCallback = null, selectedIds = []) {
14
- this.resizeHandler = this.resizeListener.bind(this);
15
- Chart.chartCounter++;
16
- this.id = Chart.chartCounter;
17
- this.config = config;
18
- this.designerConfig = designerConfig;
19
- this.data = data;
20
- this.isResizable = isResizable;
21
- this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
22
- this.engine = new Engine(this.id, filterCallback, selectedIds);
23
- }
24
- /**
25
- * Рендер графика
26
- * @param parentElement родительский элемент для графика
27
- */
28
- render(parentElement) {
29
- this.parentElement = parentElement;
30
- this.engine.render(this.model, getPreparedData(this.model, this.data, this.config), this.parentElement);
31
- if (this.isResizable)
32
- this.registerResizeEvent();
33
- }
34
- /**
35
- * Удаление графика со страницы
36
- */
37
- destroy() {
38
- this.engine.destroy();
39
- if (this.isResizable)
40
- this.removeResizeEvent();
41
- }
42
- /**
43
- * Обновление графика для новых данных
44
- * @param data Новые данные
45
- */
46
- updateData(data) {
47
- this.model = assembleModel(this.config, data, this.designerConfig, this.id);
48
- this.data = data;
49
- this.engine.updateData(this.model, getPreparedData(this.model, this.data, this.config));
50
- }
51
- /**
52
- * Изменение размера блока с графиком
53
- * @param newSize Новый размер
54
- */
55
- updateSize(newSize) {
56
- if (!PublicOptionsService.validateSize(newSize))
57
- return;
58
- if (newSize.height)
59
- this.config.canvas.size.height = newSize.height;
60
- if (newSize.width)
61
- this.config.canvas.size.width = newSize.width;
62
- this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
63
- this.engine.updateFullBlock(this.model, getPreparedData(this.model, this.data, this.config));
64
- }
65
- /**
66
- * Обновление цветов графиков на основе новых базовых цветов
67
- * @param newColors Новые базовые цвета
68
- */
69
- updateColors(newColors) {
70
- this.designerConfig.chartStyle.baseColors = [...newColors];
71
- this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
72
- this.engine.updateColors(this.model);
73
- }
74
- clearSelection() {
75
- this.engine.clearSelection(this.model);
76
- }
77
- registerResizeEvent() {
78
- window.addEventListener("resize", this.resizeHandler);
79
- }
80
- removeResizeEvent() {
81
- window.removeEventListener("resize", this.resizeHandler);
82
- }
83
- resizeListener() {
84
- this.updateSize({
85
- height: null,
86
- width: this.parentElement.offsetWidth
87
- });
88
- }
5
+ /**
6
+ * @param config Объект конфигуратора
7
+ * @param designerConfig Объект конфигуратора дизайнера
8
+ * @param data Данные
9
+ * @param isResizable Флаг подстройки размера блока графика под родительский элемент
10
+ * @param filterCallback Функция коллбэк, вызываемая во время клика на элемент графика. Предназначена для обеспечения кросс-фильтрации
11
+ * @param selectedIds Id выделенных записей
12
+ */
13
+ constructor(config, designerConfig, data, isResizable = false, filterCallback = null, selectedIds = []) {
14
+ this.resizeHandler = this.resizeListener.bind(this);
15
+ Chart.chartCounter++;
16
+ this.id = Chart.chartCounter;
17
+ this.config = config;
18
+ this.designerConfig = designerConfig;
19
+ this.data = data;
20
+ this.isResizable = isResizable;
21
+ this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
22
+ this.engine = new Engine(this.id, filterCallback, selectedIds);
23
+ }
24
+ /**
25
+ * Рендер графика
26
+ * @param parentElement родительский элемент для графика
27
+ */
28
+ render(parentElement) {
29
+ this.parentElement = parentElement;
30
+ this.engine.render(this.model, getPreparedData(this.model, this.data, this.config), this.parentElement);
31
+ if (this.isResizable) this.registerResizeEvent();
32
+ }
33
+ /**
34
+ * Удаление графика со страницы
35
+ */
36
+ destroy() {
37
+ this.engine.destroy();
38
+ if (this.isResizable) this.removeResizeEvent();
39
+ }
40
+ /**
41
+ * Обновление графика для новых данных
42
+ * @param data Новые данные
43
+ */
44
+ updateData(data) {
45
+ this.model = assembleModel(this.config, data, this.designerConfig, this.id);
46
+ this.data = data;
47
+ this.engine.updateData(this.model, getPreparedData(this.model, this.data, this.config));
48
+ }
49
+ /**
50
+ * Изменение размера блока с графиком
51
+ * @param newSize Новый размер
52
+ */
53
+ updateSize(newSize) {
54
+ if (!PublicOptionsService.validateSize(newSize)) return;
55
+ if (newSize.height) this.config.canvas.size.height = newSize.height;
56
+ if (newSize.width) this.config.canvas.size.width = newSize.width;
57
+ this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
58
+ this.engine.updateFullBlock(this.model, getPreparedData(this.model, this.data, this.config));
59
+ }
60
+ /**
61
+ * Обновление цветов графиков на основе новых базовых цветов
62
+ * @param newColors Новые базовые цвета
63
+ */
64
+ updateColors(newColors) {
65
+ this.designerConfig.chartStyle.baseColors = [...newColors];
66
+ this.model = assembleModel(this.config, this.data, this.designerConfig, this.id);
67
+ this.engine.updateColors(this.model);
68
+ }
69
+ clearSelection() {
70
+ this.engine.clearSelection(this.model);
71
+ }
72
+ registerResizeEvent() {
73
+ window.addEventListener("resize", this.resizeHandler);
74
+ }
75
+ removeResizeEvent() {
76
+ window.removeEventListener("resize", this.resizeHandler);
77
+ }
78
+ resizeListener() {
79
+ this.updateSize({
80
+ height: null,
81
+ width: this.parentElement.offsetWidth
82
+ });
83
+ }
89
84
  }
90
85
  Chart.chartCounter = 0;
91
86
  export * from "./config/config";
@@ -1,10 +1,10 @@
1
1
  export declare class EventEmitter<E = Record<string, Record<string, any>>> {
2
- private events;
3
- subscribe<T extends keyof E>(code: T, listener: (args: E[T]) => void): () => void;
4
- unsubscribe<T extends keyof E>(code: T, listener: (args: E[T]) => void): void;
5
- emit<T extends keyof E>(code: T, args?: E[T]): void;
6
- getSubscribeController(): {
7
- subscribe: <T extends keyof E>(code: T, listener: (args: E[T]) => void) => () => void;
8
- unsubscribe: <T_1 extends keyof E>(code: T_1, listener: (args: E[T_1]) => void) => void;
9
- };
2
+ private events;
3
+ subscribe<T extends keyof E>(code: T, listener: (args: E[T]) => void): () => void;
4
+ unsubscribe<T extends keyof E>(code: T, listener: (args: E[T]) => void): void;
5
+ emit<T extends keyof E>(code: T, args?: E[T]): void;
6
+ getSubscribeController(): {
7
+ subscribe: <T extends keyof E>(code: T, listener: (args: E[T]) => void) => () => void;
8
+ unsubscribe: <T_1 extends keyof E>(code: T_1, listener: (args: E[T_1]) => void) => void;
9
+ };
10
10
  }
@@ -1,26 +1,26 @@
1
1
  export class EventEmitter {
2
- constructor() {
3
- this.events = {};
4
- }
5
- subscribe(code, listener) {
6
- if (!this.events[code])
7
- this.events[code] = [];
8
- this.events[code].push(listener);
9
- return () => this.unsubscribe(code, listener);
10
- }
11
- unsubscribe(code, listener) {
12
- var _a;
13
- this.events[code] = (_a = this.events[code]) === null || _a === void 0 ? void 0 : _a.filter((cur) => cur != listener);
14
- }
15
- emit(code, args) {
16
- (this.events[code] || []).forEach((callback) => {
17
- callback(args);
18
- });
19
- }
20
- getSubscribeController() {
21
- return {
22
- subscribe: (code, listener) => this.subscribe(code, listener),
23
- unsubscribe: (code, listener) => this.unsubscribe(code, listener)
24
- };
25
- }
2
+ constructor() {
3
+ this.events = {};
4
+ }
5
+ subscribe(code, listener) {
6
+ if (!this.events[code]) this.events[code] = [];
7
+ this.events[code].push(listener);
8
+ return () => this.unsubscribe(code, listener);
9
+ }
10
+ unsubscribe(code, listener) {
11
+ var _a;
12
+ this.events[code] =
13
+ (_a = this.events[code]) === null || _a === void 0 ? void 0 : _a.filter((cur) => cur != listener);
14
+ }
15
+ emit(code, args) {
16
+ (this.events[code] || []).forEach((callback) => {
17
+ callback(args);
18
+ });
19
+ }
20
+ getSubscribeController() {
21
+ return {
22
+ subscribe: (code, listener) => this.subscribe(code, listener),
23
+ unsubscribe: (code, listener) => this.unsubscribe(code, listener)
24
+ };
25
+ }
26
26
  }
@@ -1,9 +1,9 @@
1
1
  import { ChartStyleConfig } from "../../designer/designerConfig";
2
2
  import { ChartStyle } from "../model";
3
3
  export declare class ChartStyleModelService {
4
- private static standardColors;
5
- static getCssClasses(chartIndex: number): string[];
6
- static getChartStyle(elementsAmount: number, styleConfig: ChartStyleConfig): ChartStyle;
7
- static getColorSet(baseColors: string[], elementsAmount: number): string[];
8
- static checkAndGet(baseColors: string[]): string[];
4
+ private static standardColors;
5
+ static getCssClasses(chartIndex: number): string[];
6
+ static getChartStyle(elementsAmount: number, styleConfig: ChartStyleConfig): ChartStyle;
7
+ static getColorSet(baseColors: string[], elementsAmount: number): string[];
8
+ static checkAndGet(baseColors: string[]): string[];
9
9
  }
@@ -1,29 +1,31 @@
1
1
  import * as chroma from "chroma-js";
2
2
  export class ChartStyleModelService {
3
- static getCssClasses(chartIndex) {
4
- const cssClasses = [`chart-${chartIndex}`];
5
- return cssClasses;
6
- }
7
- static getChartStyle(elementsAmount, styleConfig) {
8
- const baseColors = this.checkAndGet(styleConfig.baseColors);
9
- return {
10
- elementColors: this.getColorSet(baseColors, elementsAmount),
11
- opacity: 1
12
- };
13
- }
14
- static getColorSet(baseColors, elementsAmount) {
15
- return chroma
16
- .scale(baseColors)
17
- .mode("rgb")
18
- .domain([0, 0.55, 0.75, 1])
19
- .colors(elementsAmount <= 1 ? 2 : elementsAmount);
20
- }
21
- static checkAndGet(baseColors) {
22
- if (baseColors.length === 0 ||
23
- baseColors.filter((color) => color === "rgba(0, 0, 0, 0)" || !color).length > 0) {
24
- return this.standardColors;
25
- }
26
- return baseColors;
27
- }
3
+ static getCssClasses(chartIndex) {
4
+ const cssClasses = [`chart-${chartIndex}`];
5
+ return cssClasses;
6
+ }
7
+ static getChartStyle(elementsAmount, styleConfig) {
8
+ const baseColors = this.checkAndGet(styleConfig.baseColors);
9
+ return {
10
+ elementColors: this.getColorSet(baseColors, elementsAmount),
11
+ opacity: 1
12
+ };
13
+ }
14
+ static getColorSet(baseColors, elementsAmount) {
15
+ return chroma
16
+ .scale(baseColors)
17
+ .mode("rgb")
18
+ .domain([0, 0.55, 0.75, 1])
19
+ .colors(elementsAmount <= 1 ? 2 : elementsAmount);
20
+ }
21
+ static checkAndGet(baseColors) {
22
+ if (
23
+ baseColors.length === 0 ||
24
+ baseColors.filter((color) => color === "rgba(0, 0, 0, 0)" || !color).length > 0
25
+ ) {
26
+ return this.standardColors;
27
+ }
28
+ return baseColors;
29
+ }
28
30
  }
29
31
  ChartStyleModelService.standardColors = ["#209DE3", "#FF3131", "#FFBA00", "#20B078"];
@@ -1,7 +1,7 @@
1
1
  import { MdtChartsColorRangeItem } from "../../config/config";
2
2
  export declare class ColorRangeManager {
3
- private sortedRange;
4
- constructor(range: MdtChartsColorRangeItem[]);
5
- getColorByValue(value: number): string;
3
+ private sortedRange;
4
+ constructor(range: MdtChartsColorRangeItem[]);
5
+ getColorByValue(value: number): string;
6
6
  }
7
7
  export declare function sortColorRange(colorRange: MdtChartsColorRangeItem[]): MdtChartsColorRangeItem[];
@@ -1,28 +1,23 @@
1
1
  export class ColorRangeManager {
2
- constructor(range) {
3
- this.sortedRange = sortColorRange(range);
4
- }
5
- getColorByValue(value) {
6
- for (let i = 0; i < this.sortedRange.length; i++) {
7
- const currentItem = this.sortedRange[i];
8
- const nextItem = this.sortedRange[i + 1];
9
- if (!nextItem)
10
- return currentItem.color;
11
- if (currentItem.value == null && value < nextItem.value)
12
- return currentItem.color;
13
- if (currentItem.value === value)
14
- return currentItem.color;
15
- if (value >= currentItem.value && value < nextItem.value)
16
- return currentItem.color;
17
- }
18
- }
2
+ constructor(range) {
3
+ this.sortedRange = sortColorRange(range);
4
+ }
5
+ getColorByValue(value) {
6
+ for (let i = 0; i < this.sortedRange.length; i++) {
7
+ const currentItem = this.sortedRange[i];
8
+ const nextItem = this.sortedRange[i + 1];
9
+ if (!nextItem) return currentItem.color;
10
+ if (currentItem.value == null && value < nextItem.value) return currentItem.color;
11
+ if (currentItem.value === value) return currentItem.color;
12
+ if (value >= currentItem.value && value < nextItem.value) return currentItem.color;
13
+ }
14
+ }
19
15
  }
20
16
  export function sortColorRange(colorRange) {
21
- const range = [...colorRange];
22
- range.sort((a, b) => {
23
- if (a.value == null)
24
- return -1;
25
- return a.value < b.value ? -1 : a.value == b.value ? 0 : 1;
26
- });
27
- return range;
17
+ const range = [...colorRange];
18
+ range.sort((a, b) => {
19
+ if (a.value == null) return -1;
20
+ return a.value < b.value ? -1 : a.value == b.value ? 0 : 1;
21
+ });
22
+ return range;
28
23
  }
@@ -2,18 +2,28 @@ import { MdtChartsTwoDimensionalChart, TwoDimensionalChartType } from "../../con
2
2
  import { ChartStyleConfig } from "../../designer/designerConfig";
3
3
  import { ChartStyle } from "../model";
4
4
  export declare class TwoDimensionalChartStyleModel {
5
- private charts;
6
- private chartStyleConfig;
7
- private service;
8
- constructor(charts: MdtChartsTwoDimensionalChart[], chartStyleConfig: ChartStyleConfig);
9
- getChartStyle(chart: MdtChartsTwoDimensionalChart, chartIndex: number): ChartStyle;
10
- private getChartsValueFieldsAmounts;
5
+ private charts;
6
+ private chartStyleConfig;
7
+ private service;
8
+ constructor(charts: MdtChartsTwoDimensionalChart[], chartStyleConfig: ChartStyleConfig);
9
+ getChartStyle(chart: MdtChartsTwoDimensionalChart, chartIndex: number): ChartStyle;
10
+ private getChartsValueFieldsAmounts;
11
11
  }
12
12
  export declare class TwoDimensionalChartStyleService {
13
- getChartColors(chart: MdtChartsTwoDimensionalChart, styleConfig: ChartStyleConfig, chartsFieldsAmounts: number[], chartIndex: number): string[];
14
- getChartOpacity(chartsLength: number, chartType: TwoDimensionalChartType, chartsValueFieldAmount: number, isChartSegmented: boolean): number;
15
- private generateNewChartColors;
16
- private isMoreThanOneValueFieldOnCanvas;
17
- private makeColorsBrighter;
18
- private getStartIndex;
13
+ getChartColors(
14
+ chart: MdtChartsTwoDimensionalChart,
15
+ styleConfig: ChartStyleConfig,
16
+ chartsFieldsAmounts: number[],
17
+ chartIndex: number
18
+ ): string[];
19
+ getChartOpacity(
20
+ chartsLength: number,
21
+ chartType: TwoDimensionalChartType,
22
+ chartsValueFieldAmount: number,
23
+ isChartSegmented: boolean
24
+ ): number;
25
+ private generateNewChartColors;
26
+ private isMoreThanOneValueFieldOnCanvas;
27
+ private makeColorsBrighter;
28
+ private getStartIndex;
19
29
  }
@@ -2,66 +2,75 @@ import * as chroma from "chroma-js";
2
2
  import { ModelHelper } from "../helpers/modelHelper";
3
3
  import { ChartStyleModelService } from "./chartStyleModel";
4
4
  export class TwoDimensionalChartStyleModel {
5
- constructor(charts, chartStyleConfig) {
6
- this.charts = charts;
7
- this.chartStyleConfig = chartStyleConfig;
8
- this.service = new TwoDimensionalChartStyleService();
9
- }
10
- getChartStyle(chart, chartIndex) {
11
- var _a, _b;
12
- const fieldsAmounts = this.getChartsValueFieldsAmounts();
13
- const opacity = chart.type === "area" && ((_b = (_a = chart.areaStyles) === null || _a === void 0 ? void 0 : _a.gradient) === null || _b === void 0 ? void 0 : _b.on)
14
- ? 1
15
- : this.service.getChartOpacity(this.charts.length, chart.type, fieldsAmounts[chartIndex], chart.isSegmented);
16
- return {
17
- elementColors: this.service.getChartColors(chart, this.chartStyleConfig, fieldsAmounts, chartIndex),
18
- opacity
19
- };
20
- }
21
- getChartsValueFieldsAmounts() {
22
- return this.charts.map((chart) => chart.data.valueFields.length);
23
- }
5
+ constructor(charts, chartStyleConfig) {
6
+ this.charts = charts;
7
+ this.chartStyleConfig = chartStyleConfig;
8
+ this.service = new TwoDimensionalChartStyleService();
9
+ }
10
+ getChartStyle(chart, chartIndex) {
11
+ var _a, _b;
12
+ const fieldsAmounts = this.getChartsValueFieldsAmounts();
13
+ const opacity =
14
+ chart.type === "area" &&
15
+ ((_b = (_a = chart.areaStyles) === null || _a === void 0 ? void 0 : _a.gradient) === null || _b === void 0
16
+ ? void 0
17
+ : _b.on)
18
+ ? 1
19
+ : this.service.getChartOpacity(
20
+ this.charts.length,
21
+ chart.type,
22
+ fieldsAmounts[chartIndex],
23
+ chart.isSegmented
24
+ );
25
+ return {
26
+ elementColors: this.service.getChartColors(chart, this.chartStyleConfig, fieldsAmounts, chartIndex),
27
+ opacity
28
+ };
29
+ }
30
+ getChartsValueFieldsAmounts() {
31
+ return this.charts.map((chart) => chart.data.valueFields.length);
32
+ }
24
33
  }
25
34
  export class TwoDimensionalChartStyleService {
26
- getChartColors(chart, styleConfig, chartsFieldsAmounts, chartIndex) {
27
- const generatedColors = this.generateNewChartColors(chart.type, styleConfig, chartsFieldsAmounts, chartIndex);
28
- chart.data.valueFields.forEach((field, fieldIndex) => {
29
- if (field.color)
30
- generatedColors[fieldIndex] = field.color;
31
- });
32
- return generatedColors;
33
- }
34
- getChartOpacity(chartsLength, chartType, chartsValueFieldAmount, isChartSegmented) {
35
- if (chartType === "area" &&
36
- this.isMoreThanOneValueFieldOnCanvas(chartsLength, chartsValueFieldAmount) &&
37
- !isChartSegmented)
38
- return 0.5; // combined area with other charts has 0.5 opacity
39
- return 1;
40
- }
41
- generateNewChartColors(chartType, styleConfig, chartsFieldsAmounts, chartIndex) {
42
- const startIndex = this.getStartIndex(chartIndex, chartsFieldsAmounts);
43
- const baseColors = ChartStyleModelService.checkAndGet(styleConfig.baseColors);
44
- const palette = ChartStyleModelService.getColorSet(baseColors, ModelHelper.getSum(chartsFieldsAmounts));
45
- const elementsAmount = chartsFieldsAmounts[chartIndex];
46
- const selectedColors = palette.slice(startIndex, startIndex + elementsAmount);
47
- if (chartType !== "line")
48
- return selectedColors;
49
- this.makeColorsBrighter(selectedColors);
50
- return selectedColors;
51
- }
52
- isMoreThanOneValueFieldOnCanvas(chartsLength, chartsValueFieldAmount) {
53
- return chartsLength > 1 || chartsValueFieldAmount > 1;
54
- }
55
- makeColorsBrighter(initialColors) {
56
- for (let i = 0; i < initialColors.length; i++) {
57
- initialColors[i] = chroma.mix(initialColors[i], "white", 0.2).saturate(3).hex();
58
- }
59
- }
60
- getStartIndex(chartIndex, chartsFieldsAmounts) {
61
- let startIndex = 0;
62
- for (let i = 0; i < chartIndex; i++) {
63
- startIndex += chartsFieldsAmounts[i];
64
- }
65
- return startIndex;
66
- }
35
+ getChartColors(chart, styleConfig, chartsFieldsAmounts, chartIndex) {
36
+ const generatedColors = this.generateNewChartColors(chart.type, styleConfig, chartsFieldsAmounts, chartIndex);
37
+ chart.data.valueFields.forEach((field, fieldIndex) => {
38
+ if (field.color) generatedColors[fieldIndex] = field.color;
39
+ });
40
+ return generatedColors;
41
+ }
42
+ getChartOpacity(chartsLength, chartType, chartsValueFieldAmount, isChartSegmented) {
43
+ if (
44
+ chartType === "area" &&
45
+ this.isMoreThanOneValueFieldOnCanvas(chartsLength, chartsValueFieldAmount) &&
46
+ !isChartSegmented
47
+ )
48
+ return 0.5; // combined area with other charts has 0.5 opacity
49
+ return 1;
50
+ }
51
+ generateNewChartColors(chartType, styleConfig, chartsFieldsAmounts, chartIndex) {
52
+ const startIndex = this.getStartIndex(chartIndex, chartsFieldsAmounts);
53
+ const baseColors = ChartStyleModelService.checkAndGet(styleConfig.baseColors);
54
+ const palette = ChartStyleModelService.getColorSet(baseColors, ModelHelper.getSum(chartsFieldsAmounts));
55
+ const elementsAmount = chartsFieldsAmounts[chartIndex];
56
+ const selectedColors = palette.slice(startIndex, startIndex + elementsAmount);
57
+ if (chartType !== "line") return selectedColors;
58
+ this.makeColorsBrighter(selectedColors);
59
+ return selectedColors;
60
+ }
61
+ isMoreThanOneValueFieldOnCanvas(chartsLength, chartsValueFieldAmount) {
62
+ return chartsLength > 1 || chartsValueFieldAmount > 1;
63
+ }
64
+ makeColorsBrighter(initialColors) {
65
+ for (let i = 0; i < initialColors.length; i++) {
66
+ initialColors[i] = chroma.mix(initialColors[i], "white", 0.2).saturate(3).hex();
67
+ }
68
+ }
69
+ getStartIndex(chartIndex, chartsFieldsAmounts) {
70
+ let startIndex = 0;
71
+ for (let i = 0; i < chartIndex; i++) {
72
+ startIndex += chartsFieldsAmounts[i];
73
+ }
74
+ return startIndex;
75
+ }
67
76
  }
@@ -1,5 +1,5 @@
1
1
  import { Size } from "../../config/config";
2
2
  export declare class ConfigValidatorClass {
3
- validateCanvasSize(size: Size): boolean;
3
+ validateCanvasSize(size: Size): boolean;
4
4
  }
5
5
  export declare const ConfigValidator: ConfigValidatorClass;
@@ -1,7 +1,7 @@
1
1
  export class ConfigValidatorClass {
2
- validateCanvasSize(size) {
3
- const validateSide = (side) => typeof side === "number" && side >= 0;
4
- return validateSide(size.width) && validateSide(size.height);
5
- }
2
+ validateCanvasSize(size) {
3
+ const validateSide = (side) => typeof side === "number" && side >= 0;
4
+ return validateSide(size.width) && validateSide(size.height);
5
+ }
6
6
  }
7
7
  export const ConfigValidator = new ConfigValidatorClass();