mdt-charts 1.28.1 → 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
@@ -1,47 +1,51 @@
1
1
  export class ValueLabelsCollisionHelper {
2
- static calculateValueLabelsVisibility(elements) {
3
- const sortedLabels = elements.sort((label1, label2) => label1.boundingClientRect.x - label2.boundingClientRect.x);
4
- const activeLabels = [];
5
- const labelsVisibility = new Map();
6
- elements.forEach((label) => {
7
- labelsVisibility.set(label.index, { index: label.index, isVisible: true });
8
- });
9
- sortedLabels.forEach((currentLabel) => {
10
- for (let i = activeLabels.length - 1; i >= 0; i--) {
11
- const activeLabel = activeLabels[i];
12
- if (activeLabel.boundingClientRect.x + activeLabel.boundingClientRect.width <
13
- currentLabel.boundingClientRect.x) {
14
- activeLabels.splice(i, 1);
15
- }
16
- }
17
- for (const activeLabel of activeLabels) {
18
- if (this.isOverlapping(currentLabel.boundingClientRect, activeLabel.boundingClientRect)) {
19
- if (currentLabel.boundingClientRect.x > activeLabel.boundingClientRect.x) {
20
- labelsVisibility.get(currentLabel.index).isVisible = false;
21
- break;
22
- }
23
- else if (currentLabel.boundingClientRect.x === activeLabel.boundingClientRect.x) {
24
- if (currentLabel.boundingClientRect.y > activeLabel.boundingClientRect.y) {
25
- labelsVisibility.get(currentLabel.index).isVisible = false;
26
- break;
27
- }
28
- else
29
- labelsVisibility.get(activeLabel.index).isVisible = false;
30
- }
31
- else
32
- labelsVisibility.get(activeLabel.index).isVisible = false;
33
- }
34
- }
35
- if (labelsVisibility.get(currentLabel.index).isVisible) {
36
- activeLabels.push(currentLabel);
37
- }
38
- });
39
- return labelsVisibility;
40
- }
41
- static isOverlapping(rect1, rect2) {
42
- return !(rect1.x + rect1.width < rect2.x ||
43
- rect1.x > rect2.x + rect2.width ||
44
- rect1.y + rect1.height < rect2.y ||
45
- rect1.y > rect2.y + rect2.height);
46
- }
2
+ static calculateValueLabelsVisibility(elements) {
3
+ const sortedLabels = elements.sort(
4
+ (label1, label2) => label1.boundingClientRect.x - label2.boundingClientRect.x
5
+ );
6
+ const activeLabels = [];
7
+ const labelsVisibility = new Map();
8
+ elements.forEach((label) => {
9
+ labelsVisibility.set(label.index, {
10
+ index: label.index,
11
+ isVisible: true
12
+ });
13
+ });
14
+ sortedLabels.forEach((currentLabel) => {
15
+ for (let i = activeLabels.length - 1; i >= 0; i--) {
16
+ const activeLabel = activeLabels[i];
17
+ if (
18
+ activeLabel.boundingClientRect.x + activeLabel.boundingClientRect.width <
19
+ currentLabel.boundingClientRect.x
20
+ ) {
21
+ activeLabels.splice(i, 1);
22
+ }
23
+ }
24
+ for (const activeLabel of activeLabels) {
25
+ if (this.isOverlapping(currentLabel.boundingClientRect, activeLabel.boundingClientRect)) {
26
+ if (currentLabel.boundingClientRect.x > activeLabel.boundingClientRect.x) {
27
+ labelsVisibility.get(currentLabel.index).isVisible = false;
28
+ break;
29
+ } else if (currentLabel.boundingClientRect.x === activeLabel.boundingClientRect.x) {
30
+ if (currentLabel.boundingClientRect.y > activeLabel.boundingClientRect.y) {
31
+ labelsVisibility.get(currentLabel.index).isVisible = false;
32
+ break;
33
+ } else labelsVisibility.get(activeLabel.index).isVisible = false;
34
+ } else labelsVisibility.get(activeLabel.index).isVisible = false;
35
+ }
36
+ }
37
+ if (labelsVisibility.get(currentLabel.index).isVisible) {
38
+ activeLabels.push(currentLabel);
39
+ }
40
+ });
41
+ return labelsVisibility;
42
+ }
43
+ static isOverlapping(rect1, rect2) {
44
+ return !(
45
+ rect1.x + rect1.width < rect2.x ||
46
+ rect1.x > rect2.x + rect2.width ||
47
+ rect1.y + rect1.height < rect2.y ||
48
+ rect1.y > rect2.y + rect2.height
49
+ );
50
+ }
47
51
  }
@@ -5,35 +5,46 @@ import { Block } from "../block/block";
5
5
  import { EventEmitter } from "../../model/EventEmitter";
6
6
  export declare type FilterCallback = (rows: MdtChartsDataRow[]) => void;
7
7
  export interface SelectDetails {
8
- multySelect: boolean;
9
- keyValue?: string;
8
+ multySelect: boolean;
9
+ keyValue?: string;
10
10
  }
11
11
  interface FilterEventMap {
12
- change: string[];
12
+ change: string[];
13
13
  }
14
14
  export declare class FilterEventManager {
15
- private callback;
16
- private fullDataset;
17
- private filterable;
18
- private block;
19
- private selectedKeys;
20
- eventEmitter: EventEmitter<FilterEventMap>;
21
- constructor(callback: FilterCallback, fullDataset: MdtChartsDataRow[], filtrable: boolean, keyFieldName: string, selectedIds?: number[]);
22
- setBlock(block: Block): void;
23
- getSelectedKeys(): string[];
24
- updateData(newDataset: MdtChartsDataRow[]): void;
25
- isSelected(keyValue: string): boolean;
26
- clearKeysFor2D(options: TwoDimensionalOptionsModel): void;
27
- clearKeysForPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel): void;
28
- private setKey;
29
- private addId;
30
- private removeId;
31
- private processKey;
32
- setListenerPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel): void;
33
- event2DUpdate(options: TwoDimensionalOptionsModel): void;
34
- registerEventFor2D(scaleKey: AxisScale<any>, margin: BlockMargin, blockSize: Size, options: TwoDimensionalOptionsModel): void;
35
- private registerEventToDonut;
36
- private getMultyParamByEvent;
37
- private getMultySelectParam;
15
+ private callback;
16
+ private fullDataset;
17
+ private filterable;
18
+ private block;
19
+ private selectedKeys;
20
+ eventEmitter: EventEmitter<FilterEventMap>;
21
+ constructor(
22
+ callback: FilterCallback,
23
+ fullDataset: MdtChartsDataRow[],
24
+ filtrable: boolean,
25
+ keyFieldName: string,
26
+ selectedIds?: number[]
27
+ );
28
+ setBlock(block: Block): void;
29
+ getSelectedKeys(): string[];
30
+ updateData(newDataset: MdtChartsDataRow[]): void;
31
+ isSelected(keyValue: string): boolean;
32
+ clearKeysFor2D(options: TwoDimensionalOptionsModel): void;
33
+ clearKeysForPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel): void;
34
+ private setKey;
35
+ private addId;
36
+ private removeId;
37
+ private processKey;
38
+ setListenerPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel): void;
39
+ event2DUpdate(options: TwoDimensionalOptionsModel): void;
40
+ registerEventFor2D(
41
+ scaleKey: AxisScale<any>,
42
+ margin: BlockMargin,
43
+ blockSize: Size,
44
+ options: TwoDimensionalOptionsModel
45
+ ): void;
46
+ private registerEventToDonut;
47
+ private getMultyParamByEvent;
48
+ private getMultySelectParam;
38
49
  }
39
50
  export {};
@@ -6,133 +6,178 @@ import { Helper } from "../helpers/helper";
6
6
  import { Donut } from "../polarNotation/donut/donut";
7
7
  import { EventEmitter } from "../../model/EventEmitter";
8
8
  export class FilterEventManager {
9
- constructor(callback, fullDataset, filtrable, keyFieldName, selectedIds = []) {
10
- this.callback = callback;
11
- this.fullDataset = fullDataset;
12
- this.selectedKeys = Helper.getKeysByIds(selectedIds, keyFieldName, fullDataset);
13
- this.filterable = filtrable;
14
- this.eventEmitter = new EventEmitter();
15
- }
16
- setBlock(block) {
17
- this.block = block;
18
- }
19
- getSelectedKeys() {
20
- return this.selectedKeys;
21
- }
22
- updateData(newDataset) {
23
- this.fullDataset = newDataset;
24
- }
25
- isSelected(keyValue) {
26
- return this.selectedKeys.findIndex((key) => key === keyValue) !== -1;
27
- }
28
- clearKeysFor2D(options) {
29
- this.selectedKeys = [];
30
- if (this.callback)
31
- this.callback([]);
32
- this.eventEmitter.emit("change", this.selectedKeys);
33
- SelectHighlighter.clear2D(this.block, options);
34
- }
35
- clearKeysForPolar(margin, blockSize, options) {
36
- this.selectedKeys = [];
37
- if (this.callback)
38
- this.callback([]);
39
- this.eventEmitter.emit("change", this.selectedKeys);
40
- SelectHighlighter.clearPolar(margin, blockSize, this.block, options, Donut.getAllArcGroups(this.block), options.chartCanvas);
41
- }
42
- setKey(key) {
43
- this.selectedKeys = [key];
44
- }
45
- addId(key) {
46
- this.selectedKeys.push(key);
47
- }
48
- removeId(key) {
49
- this.selectedKeys.splice(this.selectedKeys.findIndex((k) => k === key), 1);
50
- }
51
- processKey(multySelect, keyValue) {
52
- if (multySelect) {
53
- if (this.getSelectedKeys().findIndex((key) => key === keyValue) === -1) {
54
- this.addId(keyValue);
55
- return true;
56
- }
57
- else {
58
- this.removeId(keyValue);
59
- return false;
60
- }
61
- }
62
- else {
63
- if (this.getSelectedKeys()[0] === keyValue && this.getSelectedKeys().length === 1) {
64
- this.removeId(keyValue);
65
- return false;
66
- }
67
- else {
68
- this.setKey(keyValue);
69
- return true;
70
- }
71
- }
72
- }
73
- setListenerPolar(margin, blockSize, options) {
74
- if (this.filterable) {
75
- this.registerEventToDonut(margin, blockSize, options, options.chartCanvas);
76
- const selectedElems = Donut.getAllArcGroups(this.block).filter((d) => this.selectedKeys.findIndex((sid) => sid === d.data[options.data.keyField.name]) !== -1);
77
- this.selectedKeys = [];
78
- selectedElems.dispatch("click", { bubbles: false, cancelable: true, detail: { multySelect: true } });
79
- }
80
- }
81
- event2DUpdate(options) {
82
- if (this.filterable) {
83
- const removedKeys = [];
84
- this.selectedKeys.forEach((key) => {
85
- if (this.fullDataset.findIndex((row) => row[options.data.keyField.name] === key) === -1)
86
- removedKeys.push(key);
87
- });
88
- removedKeys.forEach((rKey) => this.selectedKeys.splice(this.selectedKeys.findIndex((sKey) => sKey === rKey), 1));
89
- if (removedKeys.length > 0)
90
- this.eventEmitter.emit("change", this.selectedKeys);
91
- this.selectedKeys.forEach((key) => {
92
- SelectHighlighter.click2DHandler(true, true, key, this.selectedKeys, this.block, options);
93
- });
94
- }
95
- }
96
- registerEventFor2D(scaleKey, margin, blockSize, options) {
97
- if (this.filterable) {
98
- const tipBox = TipBox.renderOrGet(this.block, margin, blockSize);
99
- const thisClass = this;
100
- tipBox.on("click", function (e) {
101
- const multySelect = thisClass.getMultySelectParam(e);
102
- const keyValue = e.detail.keyValue ||
103
- TipBoxHelper.getKeyValueByPointer(pointer(e, this), options.orient, margin, blockSize, scaleKey, options.scale.key.type);
104
- const appended = thisClass.processKey(multySelect, keyValue);
105
- SelectHighlighter.click2DHandler(multySelect, appended, keyValue, thisClass.selectedKeys, thisClass.block, options);
106
- if (thisClass.callback) {
107
- thisClass.callback(Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset));
108
- }
109
- thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
110
- });
111
- }
112
- }
113
- registerEventToDonut(margin, blockSize, options, donutSettings) {
114
- const arcItems = Donut.getAllArcGroups(this.block);
115
- const thisClass = this;
116
- arcItems.on("click", function (e, dataRow) {
117
- const multySelect = thisClass.getMultySelectParam(e);
118
- const keyValue = dataRow.data[options.data.keyField.name];
119
- const appended = thisClass.processKey(multySelect, keyValue);
120
- SelectHighlighter.clickPolarHandler(multySelect, appended, select(this), thisClass.getSelectedKeys(), margin, blockSize, thisClass.block, options, arcItems, donutSettings);
121
- if (thisClass.callback) {
122
- thisClass.callback(Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset));
123
- }
124
- thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
125
- });
126
- }
127
- getMultyParamByEvent(e) {
128
- return e.ctrlKey || e.metaKey;
129
- }
130
- getMultySelectParam(e) {
131
- const isMultyButtonToggle = this.getMultyParamByEvent(e);
132
- return isMultyButtonToggle === undefined
133
- ? e.detail.multySelect === undefined
134
- ? false
135
- : e.detail.multySelect
136
- : isMultyButtonToggle;
137
- }
9
+ constructor(callback, fullDataset, filtrable, keyFieldName, selectedIds = []) {
10
+ this.callback = callback;
11
+ this.fullDataset = fullDataset;
12
+ this.selectedKeys = Helper.getKeysByIds(selectedIds, keyFieldName, fullDataset);
13
+ this.filterable = filtrable;
14
+ this.eventEmitter = new EventEmitter();
15
+ }
16
+ setBlock(block) {
17
+ this.block = block;
18
+ }
19
+ getSelectedKeys() {
20
+ return this.selectedKeys;
21
+ }
22
+ updateData(newDataset) {
23
+ this.fullDataset = newDataset;
24
+ }
25
+ isSelected(keyValue) {
26
+ return this.selectedKeys.findIndex((key) => key === keyValue) !== -1;
27
+ }
28
+ clearKeysFor2D(options) {
29
+ this.selectedKeys = [];
30
+ if (this.callback) this.callback([]);
31
+ this.eventEmitter.emit("change", this.selectedKeys);
32
+ SelectHighlighter.clear2D(this.block, options);
33
+ }
34
+ clearKeysForPolar(margin, blockSize, options) {
35
+ this.selectedKeys = [];
36
+ if (this.callback) this.callback([]);
37
+ this.eventEmitter.emit("change", this.selectedKeys);
38
+ SelectHighlighter.clearPolar(
39
+ margin,
40
+ blockSize,
41
+ this.block,
42
+ options,
43
+ Donut.getAllArcGroups(this.block),
44
+ options.chartCanvas
45
+ );
46
+ }
47
+ setKey(key) {
48
+ this.selectedKeys = [key];
49
+ }
50
+ addId(key) {
51
+ this.selectedKeys.push(key);
52
+ }
53
+ removeId(key) {
54
+ this.selectedKeys.splice(
55
+ this.selectedKeys.findIndex((k) => k === key),
56
+ 1
57
+ );
58
+ }
59
+ processKey(multySelect, keyValue) {
60
+ if (multySelect) {
61
+ if (this.getSelectedKeys().findIndex((key) => key === keyValue) === -1) {
62
+ this.addId(keyValue);
63
+ return true;
64
+ } else {
65
+ this.removeId(keyValue);
66
+ return false;
67
+ }
68
+ } else {
69
+ if (this.getSelectedKeys()[0] === keyValue && this.getSelectedKeys().length === 1) {
70
+ this.removeId(keyValue);
71
+ return false;
72
+ } else {
73
+ this.setKey(keyValue);
74
+ return true;
75
+ }
76
+ }
77
+ }
78
+ setListenerPolar(margin, blockSize, options) {
79
+ if (this.filterable) {
80
+ this.registerEventToDonut(margin, blockSize, options, options.chartCanvas);
81
+ const selectedElems = Donut.getAllArcGroups(this.block).filter(
82
+ (d) => this.selectedKeys.findIndex((sid) => sid === d.data[options.data.keyField.name]) !== -1
83
+ );
84
+ this.selectedKeys = [];
85
+ selectedElems.dispatch("click", {
86
+ bubbles: false,
87
+ cancelable: true,
88
+ detail: { multySelect: true }
89
+ });
90
+ }
91
+ }
92
+ event2DUpdate(options) {
93
+ if (this.filterable) {
94
+ const removedKeys = [];
95
+ this.selectedKeys.forEach((key) => {
96
+ if (this.fullDataset.findIndex((row) => row[options.data.keyField.name] === key) === -1)
97
+ removedKeys.push(key);
98
+ });
99
+ removedKeys.forEach((rKey) =>
100
+ this.selectedKeys.splice(
101
+ this.selectedKeys.findIndex((sKey) => sKey === rKey),
102
+ 1
103
+ )
104
+ );
105
+ if (removedKeys.length > 0) this.eventEmitter.emit("change", this.selectedKeys);
106
+ this.selectedKeys.forEach((key) => {
107
+ SelectHighlighter.click2DHandler(true, true, key, this.selectedKeys, this.block, options);
108
+ });
109
+ }
110
+ }
111
+ registerEventFor2D(scaleKey, margin, blockSize, options) {
112
+ if (this.filterable) {
113
+ const tipBox = TipBox.renderOrGet(this.block, margin, blockSize);
114
+ const thisClass = this;
115
+ tipBox.on("click", function (e) {
116
+ const multySelect = thisClass.getMultySelectParam(e);
117
+ const keyValue =
118
+ e.detail.keyValue ||
119
+ TipBoxHelper.getKeyValueByPointer(
120
+ pointer(e, this),
121
+ options.orient,
122
+ margin,
123
+ blockSize,
124
+ scaleKey,
125
+ options.scale.key.type
126
+ );
127
+ const appended = thisClass.processKey(multySelect, keyValue);
128
+ SelectHighlighter.click2DHandler(
129
+ multySelect,
130
+ appended,
131
+ keyValue,
132
+ thisClass.selectedKeys,
133
+ thisClass.block,
134
+ options
135
+ );
136
+ if (thisClass.callback) {
137
+ thisClass.callback(
138
+ Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset)
139
+ );
140
+ }
141
+ thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
142
+ });
143
+ }
144
+ }
145
+ registerEventToDonut(margin, blockSize, options, donutSettings) {
146
+ const arcItems = Donut.getAllArcGroups(this.block);
147
+ const thisClass = this;
148
+ arcItems.on("click", function (e, dataRow) {
149
+ const multySelect = thisClass.getMultySelectParam(e);
150
+ const keyValue = dataRow.data[options.data.keyField.name];
151
+ const appended = thisClass.processKey(multySelect, keyValue);
152
+ SelectHighlighter.clickPolarHandler(
153
+ multySelect,
154
+ appended,
155
+ select(this),
156
+ thisClass.getSelectedKeys(),
157
+ margin,
158
+ blockSize,
159
+ thisClass.block,
160
+ options,
161
+ arcItems,
162
+ donutSettings
163
+ );
164
+ if (thisClass.callback) {
165
+ thisClass.callback(
166
+ Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset)
167
+ );
168
+ }
169
+ thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
170
+ });
171
+ }
172
+ getMultyParamByEvent(e) {
173
+ return e.ctrlKey || e.metaKey;
174
+ }
175
+ getMultySelectParam(e) {
176
+ const isMultyButtonToggle = this.getMultyParamByEvent(e);
177
+ return isMultyButtonToggle === undefined
178
+ ? e.detail.multySelect === undefined
179
+ ? false
180
+ : e.detail.multySelect
181
+ : isMultyButtonToggle;
182
+ }
138
183
  }
@@ -4,27 +4,52 @@ import { ChartStyle, TwoDimensionalChartModel } from "../../model/model";
4
4
  import { Block } from "../block/block";
5
5
  declare type StyleColorType = "fill" | "stroke";
6
6
  export declare enum SelectionCondition {
7
- Include = 0,
8
- Exclude = 1
7
+ Include = 0,
8
+ Exclude = 1
9
9
  }
10
10
  export declare class DomHelper {
11
- static setCssClasses(elem: Selection<BaseType, unknown, any, unknown>, cssClasses: string[]): void;
12
- static get2DChartElements(block: Block, chart: TwoDimensionalChartModel): Selection<BaseType, MdtChartsDataRow, BaseType, unknown>;
13
- static getCssPropertyValue(node: Element, propertyName: string): string;
14
- static getSelectionNumericAttr(selection: Selection<BaseType, unknown, BaseType, unknown>, attrName: string): number;
15
- static setChartStyle(elements: Selection<BaseType, unknown, BaseType, unknown>, chartStyle: ChartStyle, fieldIndex: number, styleType: StyleColorType): void;
16
- static setChartElementColor(elements: Selection<BaseType, unknown, BaseType, unknown>, colorPalette: string[], fieldIndex: number, styleType: StyleColorType): void;
17
- static cropSvgLabels(labelBlocks: Selection<SVGGraphicsElement, unknown, BaseType, unknown>, maxWidth: number): void;
18
- /**
19
- * Возвращает выборку элементов, ключи которых содержатся или НЕ содержатся в переданном массиве
20
- * @param initialSelection Изначальная выборка
21
- * @param dataWrapped Содержаться ли данные в обертке .data
22
- * @param keyFieldName название поля ключей
23
- * @param keyValues значения ключей
24
- * @param condition включать или исключать элменты по ключам
25
- * @returns Выборка по ключам
26
- */
27
- static getChartElementsByKeys<T extends BaseType>(initialSelection: Selection<T, MdtChartsDataRow, BaseType, unknown>, dataWrapped: boolean, keyFieldName: string, keyValues: string[], condition?: SelectionCondition): Selection<T, any, BaseType, unknown>;
28
- private static setChartOpacity;
11
+ static setCssClasses(elem: Selection<BaseType, unknown, any, unknown>, cssClasses: string[]): void;
12
+ static get2DChartElements(
13
+ block: Block,
14
+ chart: TwoDimensionalChartModel
15
+ ): Selection<BaseType, MdtChartsDataRow, BaseType, unknown>;
16
+ static getCssPropertyValue(node: Element, propertyName: string): string;
17
+ static getSelectionNumericAttr(
18
+ selection: Selection<BaseType, unknown, BaseType, unknown>,
19
+ attrName: string
20
+ ): number;
21
+ static setChartStyle(
22
+ elements: Selection<BaseType, unknown, BaseType, unknown>,
23
+ chartStyle: ChartStyle,
24
+ fieldIndex: number,
25
+ styleType: StyleColorType
26
+ ): void;
27
+ static setChartElementColor(
28
+ elements: Selection<BaseType, unknown, BaseType, unknown>,
29
+ colorPalette: string[],
30
+ fieldIndex: number,
31
+ styleType: StyleColorType
32
+ ): void;
33
+ static cropSvgLabels(
34
+ labelBlocks: Selection<SVGGraphicsElement, unknown, BaseType, unknown>,
35
+ maxWidth: number
36
+ ): void;
37
+ /**
38
+ * Возвращает выборку элементов, ключи которых содержатся или НЕ содержатся в переданном массиве
39
+ * @param initialSelection Изначальная выборка
40
+ * @param dataWrapped Содержаться ли данные в обертке .data
41
+ * @param keyFieldName название поля ключей
42
+ * @param keyValues значения ключей
43
+ * @param condition включать или исключать элменты по ключам
44
+ * @returns Выборка по ключам
45
+ */
46
+ static getChartElementsByKeys<T extends BaseType>(
47
+ initialSelection: Selection<T, MdtChartsDataRow, BaseType, unknown>,
48
+ dataWrapped: boolean,
49
+ keyFieldName: string,
50
+ keyValues: string[],
51
+ condition?: SelectionCondition
52
+ ): Selection<T, any, BaseType, unknown>;
53
+ private static setChartOpacity;
29
54
  }
30
55
  export {};