mdt-charts 1.29.0 → 1.30.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 (257) hide show
  1. package/lib/config/config.d.ts +170 -178
  2. package/lib/designer/designerConfig.d.ts +59 -62
  3. package/lib/engine/block/block.d.ts +16 -22
  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 +66 -65
  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 +7 -6
  18. package/lib/engine/contentManager/contentManager.js +15 -15
  19. package/lib/engine/contentManager/contentManagerFactory.d.ts +7 -7
  20. package/lib/engine/contentManager/contentManagerFactory.js +12 -12
  21. package/lib/engine/elementHighlighter/elementHighlighter.d.ts +22 -70
  22. package/lib/engine/elementHighlighter/elementHighlighter.js +181 -230
  23. package/lib/engine/elementHighlighter/selectHighlighter.d.ts +4 -29
  24. package/lib/engine/elementHighlighter/selectHighlighter.js +87 -189
  25. package/lib/engine/engine.d.ts +17 -17
  26. package/lib/engine/engine.js +62 -87
  27. package/lib/engine/features/aggregator/aggregator.d.ts +17 -24
  28. package/lib/engine/features/aggregator/aggregator.js +102 -113
  29. package/lib/engine/features/axis/axis.d.ts +9 -22
  30. package/lib/engine/features/axis/axis.js +150 -159
  31. package/lib/engine/features/axis/axisDomHelper.d.ts +2 -7
  32. package/lib/engine/features/axis/axisDomHelper.js +20 -19
  33. package/lib/engine/features/axis/axisHelper.d.ts +5 -9
  34. package/lib/engine/features/axis/axisHelper.js +33 -28
  35. package/lib/engine/features/axis/axisLabelDomHelper.d.ts +11 -26
  36. package/lib/engine/features/axis/axisLabelDomHelper.js +152 -156
  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 +16 -51
  40. package/lib/engine/features/embeddedLabels/embeddedLabels.js +134 -234
  41. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.d.ts +2 -13
  42. package/lib/engine/features/embeddedLabels/embeddedLabelsDomHelper.js +23 -20
  43. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.d.ts +15 -32
  44. package/lib/engine/features/embeddedLabels/embeddedLabelsHelper.js +63 -56
  45. package/lib/engine/features/gridLine/gidLineHelper.d.ts +7 -13
  46. package/lib/engine/features/gridLine/gidLineHelper.js +49 -42
  47. package/lib/engine/features/gridLine/gridLine.d.ts +5 -19
  48. package/lib/engine/features/gridLine/gridLine.js +36 -35
  49. package/lib/engine/features/legend/legend.d.ts +28 -38
  50. package/lib/engine/features/legend/legend.js +92 -118
  51. package/lib/engine/features/legend/legendDomHelper.d.ts +6 -13
  52. package/lib/engine/features/legend/legendDomHelper.js +62 -63
  53. package/lib/engine/features/legend/legendEventsManager.d.ts +8 -13
  54. package/lib/engine/features/legend/legendEventsManager.js +47 -48
  55. package/lib/engine/features/legend/legendHelper.d.ts +14 -39
  56. package/lib/engine/features/legend/legendHelper.js +92 -98
  57. package/lib/engine/features/legend/legendHelperService.d.ts +6 -13
  58. package/lib/engine/features/legend/legendHelperService.js +25 -24
  59. package/lib/engine/features/legend/legendMarkerCreator.d.ts +9 -18
  60. package/lib/engine/features/legend/legendMarkerCreator.js +76 -79
  61. package/lib/engine/features/legend/legendWidthCalculator.d.ts +7 -7
  62. package/lib/engine/features/legend/legendWidthCalculator.js +122 -126
  63. package/lib/engine/features/markDots/markDot.d.ts +15 -42
  64. package/lib/engine/features/markDots/markDot.js +70 -101
  65. package/lib/engine/features/markDots/markDotsHelper.d.ts +1 -8
  66. package/lib/engine/features/markDots/markDotsHelper.js +12 -13
  67. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.d.ts +5 -23
  68. package/lib/engine/features/recordOverflowAlert/recordOverflowAlertCore.js +34 -42
  69. package/lib/engine/features/scale/scale.d.ts +12 -17
  70. package/lib/engine/features/scale/scale.js +69 -76
  71. package/lib/engine/features/tipBox/tipBox.d.ts +5 -9
  72. package/lib/engine/features/tipBox/tipBox.js +24 -24
  73. package/lib/engine/features/tipBox/tipBoxHelper.d.ts +9 -16
  74. package/lib/engine/features/tipBox/tipBoxHelper.js +45 -60
  75. package/lib/engine/features/title/title.d.ts +6 -6
  76. package/lib/engine/features/title/title.js +35 -34
  77. package/lib/engine/features/tolltip/newTooltip/newTooltip.d.ts +11 -15
  78. package/lib/engine/features/tolltip/newTooltip/newTooltip.js +21 -21
  79. package/lib/engine/features/tolltip/newTooltip/newTooltipService.d.ts +8 -13
  80. package/lib/engine/features/tolltip/newTooltip/newTooltipService.js +23 -26
  81. package/lib/engine/features/tolltip/tooltip.d.ts +11 -17
  82. package/lib/engine/features/tolltip/tooltip.js +142 -296
  83. package/lib/engine/features/tolltip/tooltipComponentsManager.d.ts +10 -21
  84. package/lib/engine/features/tolltip/tooltipComponentsManager.js +114 -113
  85. package/lib/engine/features/tolltip/tooltipDomHelper.d.ts +21 -43
  86. package/lib/engine/features/tolltip/tooltipDomHelper.js +120 -144
  87. package/lib/engine/features/tolltip/tooltipHelper.d.ts +9 -39
  88. package/lib/engine/features/tolltip/tooltipHelper.js +91 -114
  89. package/lib/engine/features/valueLabels/valueLabels.d.ts +38 -58
  90. package/lib/engine/features/valueLabels/valueLabels.js +170 -205
  91. package/lib/engine/features/valueLabels/valueLabelsHelper.d.ts +1 -7
  92. package/lib/engine/features/valueLabels/valueLabelsHelper.js +18 -23
  93. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.d.ts +15 -18
  94. package/lib/engine/features/valueLabelsCollision/valueLabelsCollision.js +47 -46
  95. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.d.ts +3 -6
  96. package/lib/engine/features/valueLabelsCollision/valueLabelsCollisionHelper.js +45 -49
  97. package/lib/engine/filterManager/filterEventManager.d.ts +30 -37
  98. package/lib/engine/filterManager/filterEventManager.js +131 -174
  99. package/lib/engine/helpers/domHelper.d.ts +20 -45
  100. package/lib/engine/helpers/domHelper.js +61 -62
  101. package/lib/engine/helpers/fontResizer/fontResizer.d.ts +10 -10
  102. package/lib/engine/helpers/fontResizer/fontResizer.js +16 -21
  103. package/lib/engine/helpers/fontResizer/fontResizerService.d.ts +1 -1
  104. package/lib/engine/helpers/fontResizer/fontResizerService.js +10 -9
  105. package/lib/engine/helpers/helper.d.ts +27 -27
  106. package/lib/engine/helpers/helper.js +92 -91
  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 +11 -25
  112. package/lib/engine/polarNotation/donut/DonutHelper.js +70 -71
  113. package/lib/engine/polarNotation/donut/donut.d.ts +23 -38
  114. package/lib/engine/polarNotation/donut/donut.js +99 -109
  115. package/lib/engine/polarNotation/polarManager.d.ts +6 -6
  116. package/lib/engine/polarNotation/polarManager.js +47 -67
  117. package/lib/engine/transitionManager.d.ts +14 -13
  118. package/lib/engine/transitionManager.js +49 -48
  119. package/lib/engine/twoDimensionalNotation/area/area.d.ts +28 -44
  120. package/lib/engine/twoDimensionalNotation/area/area.js +238 -272
  121. package/lib/engine/twoDimensionalNotation/area/areaGenerator.d.ts +5 -13
  122. package/lib/engine/twoDimensionalNotation/area/areaGenerator.js +13 -13
  123. package/lib/engine/twoDimensionalNotation/area/areaHelper.d.ts +4 -4
  124. package/lib/engine/twoDimensionalNotation/area/areaHelper.js +41 -57
  125. package/lib/engine/twoDimensionalNotation/bar/bar.d.ts +29 -54
  126. package/lib/engine/twoDimensionalNotation/bar/bar.js +224 -362
  127. package/lib/engine/twoDimensionalNotation/bar/barHelper.d.ts +32 -71
  128. package/lib/engine/twoDimensionalNotation/bar/barHelper.js +126 -162
  129. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.d.ts +6 -6
  130. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStacker.js +24 -24
  131. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.d.ts +2 -2
  132. package/lib/engine/twoDimensionalNotation/bar/stackedData/dataStackerService.js +17 -16
  133. package/lib/engine/twoDimensionalNotation/dot/dotChart.d.ts +23 -23
  134. package/lib/engine/twoDimensionalNotation/dot/dotChart.js +114 -135
  135. package/lib/engine/twoDimensionalNotation/line/line.d.ts +16 -37
  136. package/lib/engine/twoDimensionalNotation/line/line.js +132 -162
  137. package/lib/engine/twoDimensionalNotation/line/lineBuilder.d.ts +11 -14
  138. package/lib/engine/twoDimensionalNotation/line/lineBuilder.js +48 -47
  139. package/lib/engine/twoDimensionalNotation/line/lineGenerator.d.ts +4 -4
  140. package/lib/engine/twoDimensionalNotation/line/lineGenerator.js +8 -8
  141. package/lib/engine/twoDimensionalNotation/line/lineHelper.d.ts +6 -12
  142. package/lib/engine/twoDimensionalNotation/line/lineHelper.js +60 -76
  143. package/lib/engine/twoDimensionalNotation/lineLike/generatorFactory/lineLikeGeneratorFactory.d.ts +6 -6
  144. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.d.ts +5 -5
  145. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorCurveMiddleware.js +17 -16
  146. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.d.ts +10 -11
  147. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorDefineMiddleware.js +7 -9
  148. package/lib/engine/twoDimensionalNotation/lineLike/generatorMiddleware/lineLikeGeneratorMiddleware.d.ts +1 -3
  149. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.d.ts +10 -10
  150. package/lib/engine/twoDimensionalNotation/twoDimensionalManager.js +138 -253
  151. package/lib/engine/valueFormatter.d.ts +3 -3
  152. package/lib/engine/valueFormatter.js +6 -6
  153. package/lib/main.d.ts +79 -82
  154. package/lib/main.js +84 -79
  155. package/lib/model/EventEmitter.d.ts +8 -8
  156. package/lib/model/EventEmitter.js +24 -24
  157. package/lib/model/chartStyleModel/chartStyleModel.d.ts +5 -5
  158. package/lib/model/chartStyleModel/chartStyleModel.js +25 -27
  159. package/lib/model/chartStyleModel/colorRange.d.ts +3 -3
  160. package/lib/model/chartStyleModel/colorRange.js +24 -19
  161. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.d.ts +12 -22
  162. package/lib/model/chartStyleModel/twoDimensionalChartStyleModel.js +60 -69
  163. package/lib/model/configsValidator/configValidator.d.ts +1 -1
  164. package/lib/model/configsValidator/configValidator.js +4 -4
  165. package/lib/model/dataManagerModel/dataManagerModel.d.ts +26 -36
  166. package/lib/model/dataManagerModel/dataManagerModel.js +128 -179
  167. package/lib/model/dataManagerModel/dataManagerModelService.d.ts +2 -2
  168. package/lib/model/dataManagerModel/dataManagerModelService.js +26 -25
  169. package/lib/model/featuresModel/axisModel.d.ts +18 -69
  170. package/lib/model/featuresModel/axisModel.js +169 -224
  171. package/lib/model/featuresModel/axisModelService.d.ts +6 -10
  172. package/lib/model/featuresModel/axisModelService.js +27 -27
  173. package/lib/model/featuresModel/legendModel/legendCanvasModel.d.ts +11 -16
  174. package/lib/model/featuresModel/legendModel/legendCanvasModel.js +59 -55
  175. package/lib/model/featuresModel/legendModel/legendModel.d.ts +3 -7
  176. package/lib/model/featuresModel/legendModel/legendModel.js +41 -59
  177. package/lib/model/featuresModel/legendModel/polarMarginCalculator.d.ts +3 -8
  178. package/lib/model/featuresModel/legendModel/polarMarginCalculator.js +20 -18
  179. package/lib/model/featuresModel/legendModel/twoDimLegendModel.d.ts +4 -8
  180. package/lib/model/featuresModel/legendModel/twoDimLegendModel.js +27 -40
  181. package/lib/model/featuresModel/otherComponents.d.ts +4 -7
  182. package/lib/model/featuresModel/otherComponents.js +9 -9
  183. package/lib/model/featuresModel/recordOverflowModel/recordOverflowModel.d.ts +4 -0
  184. package/lib/model/featuresModel/recordOverflowModel/recordOverflowModel.js +33 -0
  185. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.d.ts +6 -6
  186. package/lib/model/featuresModel/scaleModel/scaleAxisRecalcer.js +23 -27
  187. package/lib/model/featuresModel/scaleModel/scaleDomainService.d.ts +5 -19
  188. package/lib/model/featuresModel/scaleModel/scaleDomainService.js +55 -44
  189. package/lib/model/featuresModel/scaleModel/scaleModel.d.ts +10 -10
  190. package/lib/model/featuresModel/scaleModel/scaleModel.js +50 -61
  191. package/lib/model/featuresModel/scaleModel/scaleModelServices.js +22 -15
  192. package/lib/model/featuresModel/titleModel.d.ts +1 -1
  193. package/lib/model/featuresModel/titleModel.js +14 -14
  194. package/lib/model/featuresModel/tooltipModel.d.ts +1 -1
  195. package/lib/model/featuresModel/tooltipModel.js +5 -5
  196. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.d.ts +11 -23
  197. package/lib/model/featuresModel/valueLabelsModel/valueLabelsModel.js +51 -53
  198. package/lib/model/helpers/modelHelper.d.ts +7 -7
  199. package/lib/model/helpers/modelHelper.js +42 -38
  200. package/lib/model/helpers/twoDimensionalModelHelper.d.ts +9 -37
  201. package/lib/model/helpers/twoDimensionalModelHelper.js +125 -147
  202. package/lib/model/helpers/unitsFromConfigReader.js +4 -4
  203. package/lib/model/helpers/unitsReader.d.ts +2 -2
  204. package/lib/model/helpers/unitsReader.js +13 -11
  205. package/lib/model/margin/marginModel.d.ts +7 -7
  206. package/lib/model/margin/marginModel.js +20 -23
  207. package/lib/model/margin/twoDim/twoDimMarginModel.d.ts +13 -13
  208. package/lib/model/margin/twoDim/twoDimMarginModel.js +113 -184
  209. package/lib/model/model.d.ts +281 -315
  210. package/lib/model/model.js +4 -4
  211. package/lib/model/modelBuilder.d.ts +18 -27
  212. package/lib/model/modelBuilder.js +79 -85
  213. package/lib/model/modelInstance/canvasModel/canvasModel.d.ts +17 -17
  214. package/lib/model/modelInstance/canvasModel/canvasModel.js +43 -42
  215. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasMarginModel.d.ts +7 -7
  216. package/lib/model/modelInstance/canvasModel/canvasSizesModel/canvasSizeModel.d.ts +2 -2
  217. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.d.ts +6 -6
  218. package/lib/model/modelInstance/canvasModel/canvasSizesModel/marginModelService.js +24 -24
  219. package/lib/model/modelInstance/canvasModel/legendCanvasModel.d.ts +4 -4
  220. package/lib/model/modelInstance/canvasModel/legendCanvasModel.js +11 -11
  221. package/lib/model/modelInstance/canvasModel/titleCanvas.d.ts +4 -4
  222. package/lib/model/modelInstance/canvasModel/titleCanvas.js +9 -9
  223. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.d.ts +3 -3
  224. package/lib/model/modelInstance/chartBlockVersion/chartBlockVersion.js +6 -6
  225. package/lib/model/modelInstance/configReader.d.ts +23 -32
  226. package/lib/model/modelInstance/configReader.js +94 -125
  227. package/lib/model/modelInstance/dataModel/dataModel.d.ts +10 -10
  228. package/lib/model/modelInstance/dataModel/dataModel.js +25 -25
  229. package/lib/model/modelInstance/dataModel/dataRepository.d.ts +14 -14
  230. package/lib/model/modelInstance/dataModel/dataRepository.js +42 -42
  231. package/lib/model/modelInstance/modelInstance.d.ts +6 -11
  232. package/lib/model/modelInstance/modelInstance.js +16 -16
  233. package/lib/model/modelInstance/titleConfigReader.d.ts +8 -8
  234. package/lib/model/modelInstance/titleConfigReader.js +30 -37
  235. package/lib/model/notations/polar/donut/donutAggregatorService.d.ts +6 -9
  236. package/lib/model/notations/polar/donut/donutAggregatorService.js +37 -40
  237. package/lib/model/notations/polar/donut/donutModel.d.ts +5 -9
  238. package/lib/model/notations/polar/donut/donutModel.js +28 -28
  239. package/lib/model/notations/polar/donut/donutThicknessService.d.ts +3 -3
  240. package/lib/model/notations/polar/donut/donutThicknessService.js +15 -13
  241. package/lib/model/notations/polar/polarModel.d.ts +7 -18
  242. package/lib/model/notations/polar/polarModel.js +72 -79
  243. package/lib/model/notations/twoDimensional/styles.d.ts +7 -44
  244. package/lib/model/notations/twoDimensional/styles.js +125 -234
  245. package/lib/model/notations/twoDimensionalModel.d.ts +13 -23
  246. package/lib/model/notations/twoDimensionalModel.js +170 -330
  247. package/lib/optionsServices/publicOptionsService.d.ts +1 -1
  248. package/lib/optionsServices/publicOptionsService.js +4 -4
  249. package/lib/optionsServices/validators/sizeValidator.d.ts +2 -2
  250. package/lib/optionsServices/validators/sizeValidator.js +11 -10
  251. package/lib/style/charts-main.css +151 -150
  252. package/lib/style/charts-main.less +151 -150
  253. package/package.json +5 -5
  254. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.d.ts +0 -15
  255. package/lib/engine/polarNotation/extenders/polarRecordOverflowAlert.js +0 -40
  256. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.d.ts +0 -15
  257. package/lib/engine/twoDimensionalNotation/extenders/twoDimRecordOverflowAlert.js +0 -32
@@ -1,51 +1,47 @@
1
1
  export class ValueLabelsCollisionHelper {
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
- }
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
+ }
51
47
  }
@@ -5,46 +5,39 @@ 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
+ }
14
+ export interface ChartClearSelectionOptions {
15
+ /** @default true */
16
+ firePublicEvent?: boolean;
13
17
  }
14
18
  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(
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;
19
+ private callback;
20
+ private fullDataset;
21
+ private filterable;
22
+ private block;
23
+ private selectedKeys;
24
+ eventEmitter: EventEmitter<FilterEventMap>;
25
+ constructor(callback: FilterCallback, fullDataset: MdtChartsDataRow[], filtrable: boolean, keyFieldName: string, selectedIds?: number[]);
26
+ setBlock(block: Block): void;
27
+ getSelectedKeys(): string[];
28
+ updateData(newDataset: MdtChartsDataRow[]): void;
29
+ isSelected(keyValue: string): boolean;
30
+ clearKeysFor2D(options: TwoDimensionalOptionsModel, clearSelectionOptions?: ChartClearSelectionOptions): void;
31
+ clearKeysForPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel, clearSelectionOptions?: ChartClearSelectionOptions): void;
32
+ private setKey;
33
+ private addId;
34
+ private removeId;
35
+ private processKey;
36
+ setListenerPolar(margin: BlockMargin, blockSize: Size, options: PolarOptionsModel): void;
37
+ event2DUpdate(options: TwoDimensionalOptionsModel): void;
38
+ registerEventFor2D(scaleKey: AxisScale<any>, margin: BlockMargin, blockSize: Size, options: TwoDimensionalOptionsModel): void;
39
+ private registerEventToDonut;
40
+ private getMultyParamByEvent;
41
+ private getMultySelectParam;
49
42
  }
50
43
  export {};
@@ -6,178 +6,135 @@ 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) 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
- }
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, clearSelectionOptions) {
29
+ var _a;
30
+ this.selectedKeys = [];
31
+ if (((_a = clearSelectionOptions === null || clearSelectionOptions === void 0 ? void 0 : clearSelectionOptions.firePublicEvent) !== null && _a !== void 0 ? _a : true) && this.callback)
32
+ this.callback([]);
33
+ this.eventEmitter.emit("change", this.selectedKeys);
34
+ SelectHighlighter.clear2D(this.block, options);
35
+ }
36
+ clearKeysForPolar(margin, blockSize, options, clearSelectionOptions) {
37
+ var _a;
38
+ this.selectedKeys = [];
39
+ if (((_a = clearSelectionOptions === null || clearSelectionOptions === void 0 ? void 0 : clearSelectionOptions.firePublicEvent) !== null && _a !== void 0 ? _a : true) && this.callback)
40
+ this.callback([]);
41
+ this.eventEmitter.emit("change", this.selectedKeys);
42
+ SelectHighlighter.clearPolar(margin, blockSize, this.block, options, Donut.getAllArcGroups(this.block), options.chartCanvas);
43
+ }
44
+ setKey(key) {
45
+ this.selectedKeys = [key];
46
+ }
47
+ addId(key) {
48
+ this.selectedKeys.push(key);
49
+ }
50
+ removeId(key) {
51
+ this.selectedKeys.splice(this.selectedKeys.findIndex((k) => k === key), 1);
52
+ }
53
+ processKey(multySelect, keyValue) {
54
+ if (multySelect) {
55
+ if (this.getSelectedKeys().findIndex((key) => key === keyValue) === -1) {
56
+ this.addId(keyValue);
57
+ return true;
58
+ }
59
+ else {
60
+ this.removeId(keyValue);
61
+ return false;
62
+ }
63
+ }
64
+ else {
65
+ if (this.getSelectedKeys()[0] === keyValue && this.getSelectedKeys().length === 1) {
66
+ this.removeId(keyValue);
67
+ return false;
68
+ }
69
+ else {
70
+ this.setKey(keyValue);
71
+ return true;
72
+ }
73
+ }
74
+ }
75
+ setListenerPolar(margin, blockSize, options) {
76
+ if (this.filterable) {
77
+ this.registerEventToDonut(margin, blockSize, options, options.chartCanvas);
78
+ const selectedElems = Donut.getAllArcGroups(this.block).filter((d) => this.selectedKeys.findIndex((sid) => sid === d.data[options.data.keyField.name]) !== -1);
79
+ this.selectedKeys = [];
80
+ selectedElems.dispatch("click", { bubbles: false, cancelable: true, detail: { multySelect: true } });
81
+ }
82
+ }
83
+ event2DUpdate(options) {
84
+ if (this.filterable) {
85
+ const removedKeys = [];
86
+ this.selectedKeys.forEach((key) => {
87
+ if (this.fullDataset.findIndex((row) => row[options.data.keyField.name] === key) === -1)
88
+ removedKeys.push(key);
89
+ });
90
+ removedKeys.forEach((rKey) => this.selectedKeys.splice(this.selectedKeys.findIndex((sKey) => sKey === rKey), 1));
91
+ if (removedKeys.length > 0)
92
+ this.eventEmitter.emit("change", this.selectedKeys);
93
+ this.selectedKeys.forEach((key) => {
94
+ SelectHighlighter.click2DHandler(true, true, key, this.selectedKeys, this.block, options);
95
+ });
96
+ }
97
+ }
98
+ registerEventFor2D(scaleKey, margin, blockSize, options) {
99
+ if (this.filterable) {
100
+ const tipBox = TipBox.renderOrGet(this.block, margin, blockSize);
101
+ const thisClass = this;
102
+ tipBox.on("click", function (e) {
103
+ const multySelect = thisClass.getMultySelectParam(e);
104
+ const keyValue = e.detail.keyValue ||
105
+ TipBoxHelper.getKeyValueByPointer(pointer(e, this), options.orient, margin, blockSize, scaleKey, options.scale.key.type);
106
+ const appended = thisClass.processKey(multySelect, keyValue);
107
+ SelectHighlighter.click2DHandler(multySelect, appended, keyValue, thisClass.selectedKeys, thisClass.block, options);
108
+ if (thisClass.callback) {
109
+ thisClass.callback(Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset));
110
+ }
111
+ thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
112
+ });
113
+ }
114
+ }
115
+ registerEventToDonut(margin, blockSize, options, donutSettings) {
116
+ const arcItems = Donut.getAllArcGroups(this.block);
117
+ const thisClass = this;
118
+ arcItems.on("click", function (e, dataRow) {
119
+ const multySelect = thisClass.getMultySelectParam(e);
120
+ const keyValue = dataRow.data[options.data.keyField.name];
121
+ const appended = thisClass.processKey(multySelect, keyValue);
122
+ SelectHighlighter.clickPolarHandler(multySelect, appended, select(this), thisClass.getSelectedKeys(), margin, blockSize, thisClass.block, options, arcItems, donutSettings);
123
+ if (thisClass.callback) {
124
+ thisClass.callback(Helper.getRowsByKeys(thisClass.selectedKeys, options.data.keyField.name, thisClass.fullDataset));
125
+ }
126
+ thisClass.eventEmitter.emit("change", thisClass.selectedKeys);
127
+ });
128
+ }
129
+ getMultyParamByEvent(e) {
130
+ return e.ctrlKey || e.metaKey;
131
+ }
132
+ getMultySelectParam(e) {
133
+ const isMultyButtonToggle = this.getMultyParamByEvent(e);
134
+ return isMultyButtonToggle === undefined
135
+ ? e.detail.multySelect === undefined
136
+ ? false
137
+ : e.detail.multySelect
138
+ : isMultyButtonToggle;
139
+ }
183
140
  }
@@ -4,52 +4,27 @@ 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(
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;
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;
54
29
  }
55
30
  export {};