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
@@ -1,18 +1,18 @@
1
1
  import { getChartContentManager } from "./contentManagerFactory";
2
2
  export class ContentManager {
3
- constructor(model) {
4
- this.manager = getChartContentManager(model);
5
- }
6
- render(model, engine) {
7
- this.manager.render(engine, model);
8
- }
9
- updateData(block, model, newData) {
10
- this.manager.updateData(block, model, newData);
11
- }
12
- updateColors(engine, model) {
13
- this.manager.updateColors(engine.block, model);
14
- }
15
- clearSelection(engine, model) {
16
- this.manager.clearSelection(engine.block.filterEventManager, model);
17
- }
3
+ constructor(model) {
4
+ this.manager = getChartContentManager(model);
5
+ }
6
+ render(model, engine) {
7
+ this.manager.render(engine, model);
8
+ }
9
+ updateData(block, model, newData) {
10
+ this.manager.updateData(block, model, newData);
11
+ }
12
+ updateColors(engine, model) {
13
+ this.manager.updateColors(engine.block, model);
14
+ }
15
+ clearSelection(engine, model) {
16
+ this.manager.clearSelection(engine.block.filterEventManager, model);
17
+ }
18
18
  }
@@ -4,13 +4,13 @@ import { Block } from "../block/block";
4
4
  import { Engine } from "../engine";
5
5
  import { FilterEventManager } from "../filterManager/filterEventManager";
6
6
  export interface ChartContentManager {
7
- render(engine: Engine, model: Model): void;
8
- updateData(block: Block, model: Model, newData: MdtChartsDataSource): void;
9
- updateColors(block: Block, model: Model): void;
10
- clearSelection(filterEventManager: FilterEventManager, model: Model): void;
7
+ render(engine: Engine, model: Model): void;
8
+ updateData(block: Block, model: Model, newData: MdtChartsDataSource): void;
9
+ updateColors(block: Block, model: Model): void;
10
+ clearSelection(filterEventManager: FilterEventManager, model: Model): void;
11
11
  }
12
12
  export declare class ContentManagerFactory {
13
- private managers;
14
- getManager(type: ChartNotation): ChartContentManager;
13
+ private managers;
14
+ getManager(type: ChartNotation): ChartContentManager;
15
15
  }
16
16
  export declare function getChartContentManager(model: Model): ChartContentManager;
@@ -1,18 +1,18 @@
1
1
  import { PolarManager } from "../polarNotation/polarManager";
2
2
  import { TwoDimensionalManager } from "../twoDimensionalNotation/twoDimensionalManager";
3
3
  export class ContentManagerFactory {
4
- constructor() {
5
- this.managers = {
6
- "2d": TwoDimensionalManager,
7
- polar: PolarManager
8
- };
9
- }
10
- getManager(type) {
11
- const managerClass = this.managers[type];
12
- return new managerClass();
13
- }
4
+ constructor() {
5
+ this.managers = {
6
+ "2d": TwoDimensionalManager,
7
+ polar: PolarManager
8
+ };
9
+ }
10
+ getManager(type) {
11
+ const managerClass = this.managers[type];
12
+ return new managerClass();
13
+ }
14
14
  }
15
15
  export function getChartContentManager(model) {
16
- const factory = new ContentManagerFactory();
17
- return factory.getManager(model.options.type);
16
+ const factory = new ContentManagerFactory();
17
+ return factory.getManager(model.options.type);
18
18
  }
@@ -4,26 +4,74 @@ import { BlockMargin, TwoDimensionalChartModel } from "../../model/model";
4
4
  import { Block } from "../block/block";
5
5
  import { MdtChartsDataRow, Size } from "../../config/config";
6
6
  export declare class ElementHighlighter {
7
- private static inactiveElemClass;
8
- static toggleActivityStyle(elementSelection: Selection<BaseType, unknown, BaseType, unknown>, isActive: boolean): void;
9
- /**
10
- * @param blurPercent процент от макс. размера блюра
11
- */
12
- static setShadowFilter(elemSelection: Selection<BaseType, any, BaseType, any>, blurPercent?: number): void;
13
- static removeFilter(elemSelection: Selection<BaseType, any, BaseType, any>): void;
14
- static removeShadowClone(block: Block, keyFieldName: string, selectedSegment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>, margin: BlockMargin, blockSize: Size, donutThickness: number): void;
15
- static removeCloneForElem(block: Block, keyFieldName: string, selectedSegment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>): void;
16
- static removeDonutArcClones(block: Block): void;
17
- static renderArcCloneAndHighlight(block: Block, margin: BlockMargin, arcSelection: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>, blockSize: Size, donutThickness: number): void;
18
- static toggleDonutHighlightState(segment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>, margin: BlockMargin, blockSize: Size, donutThickness: number, transitionDuration: number, on: boolean): Promise<any>;
19
- static removeDonutHighlightingByKeys(arcSegments: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>, keyFieldName: string, keyValues: string[], margin: BlockMargin, blockSize: Size, donutThickness: number): void;
20
- static setInactiveFor2D(block: Block, keyFieldName: string, charts: TwoDimensionalChartModel[]): void;
21
- static remove2DChartsFullHighlighting(block: Block, charts: TwoDimensionalChartModel[], transitionDuration?: number): void;
22
- static removeUnselected2DHighlight(block: Block, keyFieldName: string, charts: TwoDimensionalChartModel[], transitionDuration: number): void;
23
- static toggle2DElements(elemSelection: Selection<BaseType, any, BaseType, any>, isHighlight: boolean, chart: TwoDimensionalChartModel, transitionDuration: number): void;
24
- private static makeArcClone;
25
- private static makeArcShadow;
26
- private static renderDonutSegmentClone;
27
- private static toggleBar;
28
- private static toggleDot;
7
+ private static inactiveElemClass;
8
+ static toggleActivityStyle(
9
+ elementSelection: Selection<BaseType, unknown, BaseType, unknown>,
10
+ isActive: boolean
11
+ ): void;
12
+ /**
13
+ * @param blurPercent процент от макс. размера блюра
14
+ */
15
+ static setShadowFilter(elemSelection: Selection<BaseType, any, BaseType, any>, blurPercent?: number): void;
16
+ static removeFilter(elemSelection: Selection<BaseType, any, BaseType, any>): void;
17
+ static removeShadowClone(
18
+ block: Block,
19
+ keyFieldName: string,
20
+ selectedSegment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>,
21
+ margin: BlockMargin,
22
+ blockSize: Size,
23
+ donutThickness: number
24
+ ): void;
25
+ static removeCloneForElem(
26
+ block: Block,
27
+ keyFieldName: string,
28
+ selectedSegment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>
29
+ ): void;
30
+ static removeDonutArcClones(block: Block): void;
31
+ static renderArcCloneAndHighlight(
32
+ block: Block,
33
+ margin: BlockMargin,
34
+ arcSelection: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>,
35
+ blockSize: Size,
36
+ donutThickness: number
37
+ ): void;
38
+ static toggleDonutHighlightState(
39
+ segment: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>,
40
+ margin: BlockMargin,
41
+ blockSize: Size,
42
+ donutThickness: number,
43
+ transitionDuration: number,
44
+ on: boolean
45
+ ): Promise<any>;
46
+ static removeDonutHighlightingByKeys(
47
+ arcSegments: Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, BaseType, unknown>,
48
+ keyFieldName: string,
49
+ keyValues: string[],
50
+ margin: BlockMargin,
51
+ blockSize: Size,
52
+ donutThickness: number
53
+ ): void;
54
+ static setInactiveFor2D(block: Block, keyFieldName: string, charts: TwoDimensionalChartModel[]): void;
55
+ static remove2DChartsFullHighlighting(
56
+ block: Block,
57
+ charts: TwoDimensionalChartModel[],
58
+ transitionDuration?: number
59
+ ): void;
60
+ static removeUnselected2DHighlight(
61
+ block: Block,
62
+ keyFieldName: string,
63
+ charts: TwoDimensionalChartModel[],
64
+ transitionDuration: number
65
+ ): void;
66
+ static toggle2DElements(
67
+ elemSelection: Selection<BaseType, any, BaseType, any>,
68
+ isHighlight: boolean,
69
+ chart: TwoDimensionalChartModel,
70
+ transitionDuration: number
71
+ ): void;
72
+ private static makeArcClone;
73
+ private static makeArcShadow;
74
+ private static renderDonutSegmentClone;
75
+ private static toggleBar;
76
+ private static toggleDot;
29
77
  }
@@ -9,186 +9,235 @@ import * as chroma from "chroma-js";
9
9
  import { NamesHelper } from "../helpers/namesHelper";
10
10
  import { DonutHelper } from "../polarNotation/donut/DonutHelper";
11
11
  export class ElementHighlighter {
12
- static toggleActivityStyle(elementSelection, isActive) {
13
- elementSelection.classed(this.inactiveElemClass, !isActive);
14
- }
15
- /**
16
- * @param blurPercent процент от макс. размера блюра
17
- */
18
- static setShadowFilter(elemSelection, blurPercent = 1) {
19
- const maxBlurSize = 8;
20
- elemSelection.each(function () {
21
- const elemFill = select(this).style("fill") || "rgb(0, 0, 0)";
22
- const colorInRgb = chroma(elemFill).css();
23
- const shadowColor = Helper.getRgbaFromRgb(colorInRgb, 0.6);
24
- select(this).style("filter", `drop-shadow(0px 0px ${blurPercent * maxBlurSize}px ${shadowColor})`);
25
- });
26
- }
27
- static removeFilter(elemSelection) {
28
- elemSelection.style("filter", null);
29
- }
30
- static removeShadowClone(block, keyFieldName, selectedSegment, margin, blockSize, donutThickness) {
31
- const shadowClone = Donut.getAllArcShadows(block).filter((d) => d.data[keyFieldName] === selectedSegment.datum().data[keyFieldName]);
32
- this.removeFilter(shadowClone.select("path"));
33
- this.toggleDonutHighlightState(shadowClone, margin, blockSize, donutThickness, block.transitionManager.durations.higlightedScale, false).then(() => shadowClone.remove());
34
- }
35
- static removeCloneForElem(block, keyFieldName, selectedSegment) {
36
- const clone = Donut.getAllArcClones(block).filter((d) => d.data[keyFieldName] === selectedSegment.datum().data[keyFieldName]);
37
- clone.remove();
38
- }
39
- static removeDonutArcClones(block) {
40
- Donut.getAllArcClones(block).remove();
41
- Donut.getAllArcShadows(block).remove();
42
- }
43
- static renderArcCloneAndHighlight(block, margin, arcSelection, blockSize, donutThickness) {
44
- const clone = this.makeArcClone(arcSelection, block);
45
- const shadowClone = this.makeArcShadow(arcSelection, block);
46
- this.toggleDonutHighlightState(arcSelection, margin, blockSize, donutThickness, block.transitionManager.durations.higlightedScale, true);
47
- this.toggleDonutHighlightState(clone, margin, blockSize, donutThickness, block.transitionManager.durations.higlightedScale, true);
48
- this.toggleDonutHighlightState(shadowClone, margin, blockSize, donutThickness, block.transitionManager.durations.higlightedScale, true);
49
- this.setShadowFilter(shadowClone.select("path"), donutThickness / 60);
50
- }
51
- static toggleDonutHighlightState(segment, margin, blockSize, donutThickness, transitionDuration, on) {
52
- return new Promise((resolve) => {
53
- let scaleSize = 0;
54
- if (on)
55
- scaleSize = 5; // Если нужно выделить сегмент, то scaleSize не равен нулю и отображается увеличенным
56
- segment
57
- .select("path")
58
- .interrupt()
59
- .transition()
60
- .duration(transitionDuration)
61
- .on("end", () => resolve(""))
62
- .ease(easeLinear)
63
- .attr("d", (d, i) => DonutHelper.getArcGeneratorObject(blockSize, margin, donutThickness)
64
- .outerRadius(DonutHelper.getOuterRadius(margin, blockSize) + scaleSize)
65
- .innerRadius(DonutHelper.getOuterRadius(margin, blockSize) - donutThickness - scaleSize)(d, i));
66
- });
67
- }
68
- static removeDonutHighlightingByKeys(arcSegments, keyFieldName, keyValues, margin, blockSize, donutThickness) {
69
- const segments = DomHelper.getChartElementsByKeys(arcSegments, true, keyFieldName, keyValues, SelectionCondition.Exclude);
70
- this.toggleDonutHighlightState(segments, margin, blockSize, donutThickness, 0, false);
71
- }
72
- static setInactiveFor2D(block, keyFieldName, charts) {
73
- charts.forEach((chart) => {
74
- const elems = DomHelper.get2DChartElements(block, chart);
75
- if (block.filterEventManager.getSelectedKeys().length === 0) {
76
- this.toggleActivityStyle(elems, true);
77
- }
78
- else {
79
- const unselectedElems = DomHelper.getChartElementsByKeys(elems, chart.isSegmented, keyFieldName, block.filterEventManager.getSelectedKeys(), SelectionCondition.Exclude);
80
- const selectedElems = DomHelper.getChartElementsByKeys(elems, chart.isSegmented, keyFieldName, block.filterEventManager.getSelectedKeys());
81
- this.toggleActivityStyle(unselectedElems, false);
82
- this.toggleActivityStyle(selectedElems, true);
83
- }
84
- });
85
- }
86
- static remove2DChartsFullHighlighting(block, charts, transitionDuration = 0) {
87
- charts.forEach((chart) => {
88
- const elems = DomHelper.get2DChartElements(block, chart);
89
- if (chart.type !== "bar")
90
- MarkDot.tryMakeMarkDotVisible(elems, chart.markersOptions, false);
91
- this.toggle2DElements(elems, false, chart, transitionDuration);
92
- this.toggleActivityStyle(elems, true);
93
- });
94
- }
95
- static removeUnselected2DHighlight(block, keyFieldName, charts, transitionDuration) {
96
- charts.forEach((chart) => {
97
- const elems = DomHelper.get2DChartElements(block, chart);
98
- const selectedElems = DomHelper.getChartElementsByKeys(elems, chart.isSegmented, keyFieldName, block.filterEventManager.getSelectedKeys(), SelectionCondition.Exclude);
99
- if (chart.type !== "bar")
100
- MarkDot.tryMakeMarkDotVisible(selectedElems, chart.markersOptions, false);
101
- this.toggle2DElements(selectedElems, false, chart, transitionDuration);
102
- if (block.filterEventManager.getSelectedKeys().length > 0)
103
- this.toggleActivityStyle(selectedElems, false);
104
- });
105
- }
106
- static toggle2DElements(elemSelection, isHighlight, chart, transitionDuration) {
107
- if (chart.type === "area" || chart.type === "line") {
108
- elemSelection.call(this.toggleDot, isHighlight, chart.markersOptions.styles, transitionDuration);
109
- }
110
- else {
111
- this.toggleBar(elemSelection, isHighlight);
112
- if (isHighlight) {
113
- elemSelection.each(function (d) {
114
- const attrs = this.attrs;
115
- const blurPercent = (attrs.orient === "vertical" ? attrs.width : attrs.height) / 30; // 30px = max bar size, 13px - max blurSize
116
- ElementHighlighter.setShadowFilter(select(this), blurPercent);
117
- });
118
- }
119
- else {
120
- this.removeFilter(elemSelection);
121
- }
122
- }
123
- }
124
- static makeArcClone(segment, block) {
125
- const clone = this.renderDonutSegmentClone(segment, `${Donut.arcCloneClass}`);
126
- block
127
- .getSvg()
128
- .select(`.${Donut.arcClonesGroupClass}`)
129
- .append(function () {
130
- return clone.node();
131
- });
132
- return clone;
133
- }
134
- static makeArcShadow(segment, block) {
135
- const shadowClone = this.renderDonutSegmentClone(segment, `${Donut.arcShadowClass}`);
136
- block
137
- .getSvg()
138
- .select(`.${Donut.arcShadowsGroupClass}`)
139
- .append(function () {
140
- return shadowClone.node();
141
- });
142
- return shadowClone;
143
- }
144
- static renderDonutSegmentClone(segment, newClass) {
145
- return segment
146
- .clone(true)
147
- .style("pointer-events", "none")
148
- .classed(`${Donut.arcCloneClass}`, false)
149
- .classed(newClass, true)
150
- .remove();
151
- }
152
- static toggleBar(elemSelection, isHighlight) {
153
- const animationName = "bar-highlight";
154
- if (isHighlight) {
155
- elemSelection.each(function () {
156
- const attrs = this.attrs;
157
- const handler = select(this).interrupt(animationName).transition(animationName).duration(200);
158
- if (attrs.orient === "vertical") {
159
- handler.attr("x", attrs.x - attrs.scaleSize).attr("width", attrs.width + attrs.scaleSize * 2);
160
- }
161
- else {
162
- handler.attr("y", attrs.y - attrs.scaleSize).attr("height", attrs.height + attrs.scaleSize * 2);
163
- }
164
- });
165
- }
166
- else {
167
- elemSelection.each(function () {
168
- const attrs = this.attrs;
169
- const handler = select(this).interrupt(animationName).transition(animationName).duration(200);
170
- handler.attr("x", attrs.x).attr("width", attrs.width).attr("y", attrs.y).attr("height", attrs.height);
171
- });
172
- }
173
- }
174
- static toggleDot(elementSelection, isScaled, styles, transitionDuration = 0) {
175
- const animationName = "size-scale";
176
- elementSelection.nodes().forEach((node) => {
177
- interrupt(node, animationName);
178
- });
179
- let elementsHandler = elementSelection;
180
- if (transitionDuration > 0) {
181
- elementsHandler = elementsHandler
182
- .interrupt()
183
- .transition(animationName)
184
- .duration(transitionDuration)
185
- .ease(easeLinear);
186
- }
187
- elementsHandler
188
- .attr("r", isScaled ? styles.highlighted.size.radius : styles.normal.size.radius)
189
- .style("stroke-width", isScaled ? styles.highlighted.size.borderSize : styles.normal.size.borderSize).each(function () {
190
- select(this).style("fill", isScaled ? select(this).style("stroke") : "white");
191
- });
192
- }
12
+ static toggleActivityStyle(elementSelection, isActive) {
13
+ elementSelection.classed(this.inactiveElemClass, !isActive);
14
+ }
15
+ /**
16
+ * @param blurPercent процент от макс. размера блюра
17
+ */
18
+ static setShadowFilter(elemSelection, blurPercent = 1) {
19
+ const maxBlurSize = 8;
20
+ elemSelection.each(function () {
21
+ const elemFill = select(this).style("fill") || "rgb(0, 0, 0)";
22
+ const colorInRgb = chroma(elemFill).css();
23
+ const shadowColor = Helper.getRgbaFromRgb(colorInRgb, 0.6);
24
+ select(this).style("filter", `drop-shadow(0px 0px ${blurPercent * maxBlurSize}px ${shadowColor})`);
25
+ });
26
+ }
27
+ static removeFilter(elemSelection) {
28
+ elemSelection.style("filter", null);
29
+ }
30
+ static removeShadowClone(block, keyFieldName, selectedSegment, margin, blockSize, donutThickness) {
31
+ const shadowClone = Donut.getAllArcShadows(block).filter(
32
+ (d) => d.data[keyFieldName] === selectedSegment.datum().data[keyFieldName]
33
+ );
34
+ this.removeFilter(shadowClone.select("path"));
35
+ this.toggleDonutHighlightState(
36
+ shadowClone,
37
+ margin,
38
+ blockSize,
39
+ donutThickness,
40
+ block.transitionManager.durations.higlightedScale,
41
+ false
42
+ ).then(() => shadowClone.remove());
43
+ }
44
+ static removeCloneForElem(block, keyFieldName, selectedSegment) {
45
+ const clone = Donut.getAllArcClones(block).filter(
46
+ (d) => d.data[keyFieldName] === selectedSegment.datum().data[keyFieldName]
47
+ );
48
+ clone.remove();
49
+ }
50
+ static removeDonutArcClones(block) {
51
+ Donut.getAllArcClones(block).remove();
52
+ Donut.getAllArcShadows(block).remove();
53
+ }
54
+ static renderArcCloneAndHighlight(block, margin, arcSelection, blockSize, donutThickness) {
55
+ const clone = this.makeArcClone(arcSelection, block);
56
+ const shadowClone = this.makeArcShadow(arcSelection, block);
57
+ this.toggleDonutHighlightState(
58
+ arcSelection,
59
+ margin,
60
+ blockSize,
61
+ donutThickness,
62
+ block.transitionManager.durations.higlightedScale,
63
+ true
64
+ );
65
+ this.toggleDonutHighlightState(
66
+ clone,
67
+ margin,
68
+ blockSize,
69
+ donutThickness,
70
+ block.transitionManager.durations.higlightedScale,
71
+ true
72
+ );
73
+ this.toggleDonutHighlightState(
74
+ shadowClone,
75
+ margin,
76
+ blockSize,
77
+ donutThickness,
78
+ block.transitionManager.durations.higlightedScale,
79
+ true
80
+ );
81
+ this.setShadowFilter(shadowClone.select("path"), donutThickness / 60);
82
+ }
83
+ static toggleDonutHighlightState(segment, margin, blockSize, donutThickness, transitionDuration, on) {
84
+ return new Promise((resolve) => {
85
+ let scaleSize = 0;
86
+ if (on) scaleSize = 5; // Если нужно выделить сегмент, то scaleSize не равен нулю и отображается увеличенным
87
+ segment
88
+ .select("path")
89
+ .interrupt()
90
+ .transition()
91
+ .duration(transitionDuration)
92
+ .on("end", () => resolve(""))
93
+ .ease(easeLinear)
94
+ .attr("d", (d, i) =>
95
+ DonutHelper.getArcGeneratorObject(blockSize, margin, donutThickness)
96
+ .outerRadius(DonutHelper.getOuterRadius(margin, blockSize) + scaleSize)
97
+ .innerRadius(DonutHelper.getOuterRadius(margin, blockSize) - donutThickness - scaleSize)(d, i)
98
+ );
99
+ });
100
+ }
101
+ static removeDonutHighlightingByKeys(arcSegments, keyFieldName, keyValues, margin, blockSize, donutThickness) {
102
+ const segments = DomHelper.getChartElementsByKeys(
103
+ arcSegments,
104
+ true,
105
+ keyFieldName,
106
+ keyValues,
107
+ SelectionCondition.Exclude
108
+ );
109
+ this.toggleDonutHighlightState(segments, margin, blockSize, donutThickness, 0, false);
110
+ }
111
+ static setInactiveFor2D(block, keyFieldName, charts) {
112
+ charts.forEach((chart) => {
113
+ const elems = DomHelper.get2DChartElements(block, chart);
114
+ if (block.filterEventManager.getSelectedKeys().length === 0) {
115
+ this.toggleActivityStyle(elems, true);
116
+ } else {
117
+ const unselectedElems = DomHelper.getChartElementsByKeys(
118
+ elems,
119
+ chart.isSegmented,
120
+ keyFieldName,
121
+ block.filterEventManager.getSelectedKeys(),
122
+ SelectionCondition.Exclude
123
+ );
124
+ const selectedElems = DomHelper.getChartElementsByKeys(
125
+ elems,
126
+ chart.isSegmented,
127
+ keyFieldName,
128
+ block.filterEventManager.getSelectedKeys()
129
+ );
130
+ this.toggleActivityStyle(unselectedElems, false);
131
+ this.toggleActivityStyle(selectedElems, true);
132
+ }
133
+ });
134
+ }
135
+ static remove2DChartsFullHighlighting(block, charts, transitionDuration = 0) {
136
+ charts.forEach((chart) => {
137
+ const elems = DomHelper.get2DChartElements(block, chart);
138
+ if (chart.type !== "bar") MarkDot.tryMakeMarkDotVisible(elems, chart.markersOptions, false);
139
+ this.toggle2DElements(elems, false, chart, transitionDuration);
140
+ this.toggleActivityStyle(elems, true);
141
+ });
142
+ }
143
+ static removeUnselected2DHighlight(block, keyFieldName, charts, transitionDuration) {
144
+ charts.forEach((chart) => {
145
+ const elems = DomHelper.get2DChartElements(block, chart);
146
+ const selectedElems = DomHelper.getChartElementsByKeys(
147
+ elems,
148
+ chart.isSegmented,
149
+ keyFieldName,
150
+ block.filterEventManager.getSelectedKeys(),
151
+ SelectionCondition.Exclude
152
+ );
153
+ if (chart.type !== "bar") MarkDot.tryMakeMarkDotVisible(selectedElems, chart.markersOptions, false);
154
+ this.toggle2DElements(selectedElems, false, chart, transitionDuration);
155
+ if (block.filterEventManager.getSelectedKeys().length > 0) this.toggleActivityStyle(selectedElems, false);
156
+ });
157
+ }
158
+ static toggle2DElements(elemSelection, isHighlight, chart, transitionDuration) {
159
+ if (chart.type === "area" || chart.type === "line") {
160
+ elemSelection.call(this.toggleDot, isHighlight, chart.markersOptions.styles, transitionDuration);
161
+ } else {
162
+ this.toggleBar(elemSelection, isHighlight);
163
+ if (isHighlight) {
164
+ elemSelection.each(function (d) {
165
+ const attrs = this.attrs;
166
+ const blurPercent = (attrs.orient === "vertical" ? attrs.width : attrs.height) / 30; // 30px = max bar size, 13px - max blurSize
167
+ ElementHighlighter.setShadowFilter(select(this), blurPercent);
168
+ });
169
+ } else {
170
+ this.removeFilter(elemSelection);
171
+ }
172
+ }
173
+ }
174
+ static makeArcClone(segment, block) {
175
+ const clone = this.renderDonutSegmentClone(segment, `${Donut.arcCloneClass}`);
176
+ block
177
+ .getSvg()
178
+ .select(`.${Donut.arcClonesGroupClass}`)
179
+ .append(function () {
180
+ return clone.node();
181
+ });
182
+ return clone;
183
+ }
184
+ static makeArcShadow(segment, block) {
185
+ const shadowClone = this.renderDonutSegmentClone(segment, `${Donut.arcShadowClass}`);
186
+ block
187
+ .getSvg()
188
+ .select(`.${Donut.arcShadowsGroupClass}`)
189
+ .append(function () {
190
+ return shadowClone.node();
191
+ });
192
+ return shadowClone;
193
+ }
194
+ static renderDonutSegmentClone(segment, newClass) {
195
+ return segment
196
+ .clone(true)
197
+ .style("pointer-events", "none")
198
+ .classed(`${Donut.arcCloneClass}`, false)
199
+ .classed(newClass, true)
200
+ .remove();
201
+ }
202
+ static toggleBar(elemSelection, isHighlight) {
203
+ const animationName = "bar-highlight";
204
+ if (isHighlight) {
205
+ elemSelection.each(function () {
206
+ const attrs = this.attrs;
207
+ const handler = select(this).interrupt(animationName).transition(animationName).duration(200);
208
+ if (attrs.orient === "vertical") {
209
+ handler.attr("x", attrs.x - attrs.scaleSize).attr("width", attrs.width + attrs.scaleSize * 2);
210
+ } else {
211
+ handler.attr("y", attrs.y - attrs.scaleSize).attr("height", attrs.height + attrs.scaleSize * 2);
212
+ }
213
+ });
214
+ } else {
215
+ elemSelection.each(function () {
216
+ const attrs = this.attrs;
217
+ const handler = select(this).interrupt(animationName).transition(animationName).duration(200);
218
+ handler.attr("x", attrs.x).attr("width", attrs.width).attr("y", attrs.y).attr("height", attrs.height);
219
+ });
220
+ }
221
+ }
222
+ static toggleDot(elementSelection, isScaled, styles, transitionDuration = 0) {
223
+ const animationName = "size-scale";
224
+ elementSelection.nodes().forEach((node) => {
225
+ interrupt(node, animationName);
226
+ });
227
+ let elementsHandler = elementSelection;
228
+ if (transitionDuration > 0) {
229
+ elementsHandler = elementsHandler
230
+ .interrupt()
231
+ .transition(animationName)
232
+ .duration(transitionDuration)
233
+ .ease(easeLinear);
234
+ }
235
+ elementsHandler
236
+ .attr("r", isScaled ? styles.highlighted.size.radius : styles.normal.size.radius)
237
+ .style("stroke-width", isScaled ? styles.highlighted.size.borderSize : styles.normal.size.borderSize)
238
+ .each(function () {
239
+ select(this).style("fill", isScaled ? select(this).style("stroke") : "white");
240
+ });
241
+ }
193
242
  }
194
243
  ElementHighlighter.inactiveElemClass = NamesHelper.getClassName("opacity-inactive");