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,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, options) {
16
+ this.manager.clearSelection(engine.block.filterEventManager, model, options);
17
+ }
18
18
  }
@@ -2,15 +2,15 @@ import { ChartNotation, MdtChartsDataSource } from "../../config/config";
2
2
  import { Model } from "../../model/model";
3
3
  import { Block } from "../block/block";
4
4
  import { Engine } from "../engine";
5
- import { FilterEventManager } from "../filterManager/filterEventManager";
5
+ import { ChartClearSelectionOptions, 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, options?: ChartClearSelectionOptions): 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,74 +4,26 @@ 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(
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;
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;
77
29
  }
@@ -9,235 +9,186 @@ 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(
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
- }
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
+ }
242
193
  }
243
194
  ElementHighlighter.inactiveElemClass = NamesHelper.getClassName("opacity-inactive");