mdt-charts 1.29.0 → 1.29.1

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 +167 -177
  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 +169 -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 +284 -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 +1 -1
  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
@@ -8,367 +8,229 @@ import { Helper } from "../../helpers/helper";
8
8
  import { getStackedDataWithOwn } from "./stackedData/dataStacker";
9
9
  import { Pipeline } from "../../helpers/pipeline/Pipeline";
10
10
  export class Bar {
11
- constructor() {
12
- this.barItemClass = Bar.barItemClass;
13
- this.barSegmentGroupClass = "bar-segment-group";
14
- this.createBarPipeline = new Pipeline();
15
- this.createSegmentGroupBarsPipeline = new Pipeline();
16
- onBarChartInit(this.createBarPipeline, this.createSegmentGroupBarsPipeline);
17
- }
18
- static get() {
19
- return new Bar();
20
- }
21
- render(block, scales, data, keyField, margin, keyAxisOrient, chart, blockSize, barSettings, barsAmounts) {
22
- if (chart.isSegmented)
23
- this.renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, barSettings);
24
- else
25
- this.renderGrouped(
26
- block,
27
- scales,
28
- data,
29
- keyField,
30
- margin,
31
- keyAxisOrient,
32
- chart,
33
- barsAmounts,
34
- blockSize,
35
- barSettings
36
- );
37
- }
38
- update(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, barSettings) {
39
- let promises;
40
- if (chart.isSegmented) {
41
- promises = this.updateSegmented(
42
- block,
43
- newData,
44
- scales,
45
- margin,
46
- keyAxisOrient,
47
- chart,
48
- barsAmounts,
49
- keyField,
50
- barSettings
51
- );
52
- } else {
53
- promises = this.updateGrouped(
54
- block,
55
- newData,
56
- scales,
57
- margin,
58
- keyAxisOrient,
59
- chart,
60
- blockSize,
61
- barsAmounts,
62
- keyField,
63
- barSettings
64
- );
65
- }
66
- return promises;
67
- }
68
- updateColors(block, chart) {
69
- chart.data.valueFields.forEach((_vf, index) => {
70
- const bars = block.svg
71
- .getChartGroup(chart.index)
72
- .selectAll(
73
- `.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(
74
- Helper.getCssClassesWithElementIndex(chart.cssClasses, index)
75
- )}`
76
- );
77
- DomHelper.setChartStyle(bars, chart.style, index, "fill");
78
- });
79
- }
80
- getAllBarsForChart(block, chartCssClasses) {
81
- return block.getSvg().selectAll(`rect.${this.barItemClass}${Helper.getCssClassesLine(chartCssClasses)}`);
82
- }
83
- renderGrouped(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, blockSize, barSettings) {
84
- chart.data.valueFields.forEach((field, index) => {
85
- let bars = block.svg
86
- .getChartGroup(chart.index)
87
- .selectAll(
88
- `.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(
89
- Helper.getCssClassesWithElementIndex(chart.cssClasses, index)
90
- )}`
91
- )
92
- .data(data)
93
- .enter()
94
- .append("rect")
95
- .attr("class", this.barItemClass)
96
- .style("clip-path", `url(#${block.svg.getClipPathId()})`);
97
- bars = this.createBarPipeline.execute(bars, chart);
98
- const barAttrs = BarHelper.getGroupedBarAttrs(
99
- keyAxisOrient,
100
- scales,
101
- margin,
102
- keyField.name,
103
- field.name,
104
- chart.barViewOptions.barIndexes[index],
105
- sum(barsAmounts),
106
- barSettings
107
- );
108
- this.fillBarAttrs(bars, barAttrs);
109
- DomHelper.setCssClasses(bars, Helper.getCssClassesWithElementIndex(chart.cssClasses, index));
110
- DomHelper.setChartStyle(bars, chart.style, index, "fill");
111
- this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
112
- if (chart.embeddedLabels !== "none")
113
- EmbeddedLabels.render(
114
- block,
115
- bars,
116
- barAttrs,
117
- EmbeddedLabelsHelper.getLabelField(chart.embeddedLabels, chart.data.valueFields, keyField, index),
118
- chart.embeddedLabels,
119
- keyAxisOrient,
120
- blockSize,
121
- margin,
122
- index,
123
- chart.cssClasses
124
- );
125
- });
126
- }
127
- renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, barSettings) {
128
- const stackedData = getStackedDataWithOwn(
129
- data,
130
- chart.data.valueFields.map((field) => field.name)
131
- );
132
- let groups = block.svg
133
- .getChartGroup(chart.index)
134
- .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
135
- .data(stackedData);
136
- if (groups.empty())
137
- groups = groups.data(stackedData).enter().append("g").attr("class", this.barSegmentGroupClass);
138
- let bars = groups
139
- .selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`)
140
- .data((d) => d)
141
- .enter()
142
- .append("rect")
143
- .attr("class", this.barItemClass)
144
- .style("clip-path", `url(#${block.svg.getClipPathId()})`);
145
- bars = this.createBarPipeline.execute(bars, chart);
146
- const barAttrs = BarHelper.getStackedBarAttr(
147
- keyAxisOrient,
148
- scales,
149
- margin,
150
- keyField.name,
151
- chart.barViewOptions.barIndexes[0],
152
- sum(barsAmounts),
153
- barSettings
154
- );
155
- this.fillBarAttrs(bars, barAttrs);
156
- this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
157
- DomHelper.setCssClasses(groups, chart.cssClasses);
158
- DomHelper.setCssClasses(bars, chart.cssClasses); // Для обозначения принадлежности бара к конкретному чарту
159
- const thisClass = this;
160
- groups.each(function (d, i) {
161
- const barsInGroup = select(this).selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`);
162
- DomHelper.setCssClasses(barsInGroup, Helper.getCssClassesWithElementIndex(chart.cssClasses, i)); // Для обозначения принадлежности бара к конкретной части стака
163
- thisClass.createSegmentGroupBarsPipeline.execute(barsInGroup, {
164
- segmentIndex: i,
165
- chart
166
- });
167
- thisClass.setSegmentColor(
168
- select(this).selectAll(Helper.getCssClassesLine(chart.cssClasses)),
169
- chart.style.elementColors,
170
- i
171
- );
172
- });
173
- }
174
- updateGrouped(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, barSettings) {
175
- const promises = [];
176
- chart.data.valueFields.forEach((valueField, index) => {
177
- const indexesOfRemoved = [];
178
- block.svg
179
- .getChartGroup(chart.index)
180
- .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
181
- .filter((d, i) => {
182
- if (newData.findIndex((row) => row[keyField.name] === d[keyField.name]) === -1) {
183
- indexesOfRemoved.push(i); // Набор индексов для встроенных лейблов
184
- return true;
185
- }
186
- return false;
187
- })
188
- .transition()
189
- .duration(block.transitionManager.durations.elementFadeOut)
190
- .style("opacity", 0)
191
- .remove();
192
- const bars = block.svg
193
- .getChartGroup(chart.index)
194
- .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
195
- .filter((d) => newData.findIndex((row) => row[keyField.name] === d[keyField.name]) !== -1)
196
- .style("opacity", 1)
197
- .data(newData);
198
- let newBars = bars
199
- .enter()
200
- .append("rect")
201
- .attr("class", this.barItemClass)
202
- .style("clip-path", `url(#${block.svg.getClipPathId()})`);
203
- newBars = this.createBarPipeline.execute(newBars, chart);
204
- const barAttrs = BarHelper.getGroupedBarAttrs(
205
- keyAxisOrient,
206
- scales,
207
- margin,
208
- keyField.name,
209
- valueField.name,
210
- chart.barViewOptions.barIndexes[index],
211
- sum(barsAmounts),
212
- barSettings
213
- );
214
- const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate).then(() => {
215
- bars.style("opacity", null);
216
- this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
217
- });
218
- this.fillBarAttrs(newBars, barAttrs);
219
- promises.push(prom);
220
- this.setInitialAttrsInfo(newBars, keyAxisOrient, barSettings);
221
- DomHelper.setCssClasses(newBars, Helper.getCssClassesWithElementIndex(chart.cssClasses, index));
222
- DomHelper.setChartStyle(newBars, chart.style, index, "fill");
223
- if (chart.embeddedLabels !== "none") {
224
- EmbeddedLabels.removeUnused(block, chart.cssClasses, index, indexesOfRemoved);
225
- EmbeddedLabels.update(
226
- block,
227
- bars,
228
- keyAxisOrient,
229
- barAttrs,
230
- margin,
231
- valueField,
232
- chart.embeddedLabels,
233
- blockSize,
234
- newData,
235
- index,
236
- chart.cssClasses
237
- );
238
- if (!newBars.empty())
239
- EmbeddedLabels.render(
240
- block,
241
- newBars,
242
- barAttrs,
243
- valueField,
244
- chart.embeddedLabels,
245
- keyAxisOrient,
246
- blockSize,
247
- margin,
248
- index,
249
- chart.cssClasses
250
- );
251
- EmbeddedLabels.restoreRemoved(
252
- block,
253
- bars,
254
- barAttrs,
255
- valueField,
256
- chart.embeddedLabels,
257
- keyAxisOrient,
258
- blockSize,
259
- margin,
260
- index,
261
- chart.cssClasses,
262
- keyField.name
263
- );
264
- }
265
- });
266
- return promises;
267
- }
268
- updateSegmented(block, newData, scales, margin, keyAxisOrient, chart, barsAmounts, keyField, barSettings) {
269
- const stackedData = getStackedDataWithOwn(
270
- newData,
271
- chart.data.valueFields.map((field) => field.name)
272
- );
273
- block.svg
274
- .getChartGroup(chart.index)
275
- .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
276
- .filter((d) => newData.findIndex((row) => row[keyField.name] === d.data[keyField.name]) === -1)
277
- .transition()
278
- .duration(block.transitionManager.durations.elementFadeOut)
279
- .style("opacity", 0)
280
- .remove();
281
- const groups = block.svg
282
- .getChartGroup(chart.index)
283
- .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
284
- .data(stackedData);
285
- const bars = groups
286
- .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
287
- .filter((d) => newData.findIndex((row) => row[keyField.name] === d.data[keyField.name]) !== -1)
288
- .style("opacity", 1)
289
- .data((d) => d);
290
- let newBars = bars
291
- .enter()
292
- .append("rect")
293
- .attr("class", this.barItemClass)
294
- .style("clip-path", `url(#${block.svg.getClipPathId()})`);
295
- newBars = this.createBarPipeline.execute(newBars, chart);
296
- const barAttrs = BarHelper.getStackedBarAttr(
297
- keyAxisOrient,
298
- scales,
299
- margin,
300
- keyField.name,
301
- chart.barViewOptions.barIndexes[0],
302
- sum(barsAmounts),
303
- barSettings
304
- );
305
- const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate).then(() => {
306
- this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
307
- bars.style("opacity", null);
308
- });
309
- this.fillBarAttrs(newBars, barAttrs);
310
- this.setInitialAttrsInfo(newBars, keyAxisOrient, barSettings);
311
- DomHelper.setCssClasses(newBars, chart.cssClasses);
312
- const thisClass = this;
313
- groups.each(function (d, i) {
314
- const barsInGroup = select(this).selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`);
315
- DomHelper.setCssClasses(barsInGroup, Helper.getCssClassesWithElementIndex(chart.cssClasses, i)); // Для обозначения принадлежности бара к конкретной части стака
316
- thisClass.createSegmentGroupBarsPipeline.execute(barsInGroup, {
317
- segmentIndex: i,
318
- chart
319
- });
320
- thisClass.setSegmentColor(
321
- select(this).selectAll(Helper.getCssClassesLine(chart.cssClasses)),
322
- chart.style.elementColors,
323
- i
324
- );
325
- });
326
- return [prom];
327
- }
328
- fillBarAttrs(bars, barAttrs, transitionDuration = 0) {
329
- return new Promise((resolve) => {
330
- if (bars.size() === 0) {
331
- resolve("");
332
- return;
333
- }
334
- let barsHandler = bars;
335
- if (transitionDuration > 0) {
336
- barsHandler = barsHandler
337
- .interrupt()
338
- .transition()
339
- .duration(transitionDuration)
340
- .on("end", () => resolve(""));
341
- }
342
- barsHandler
343
- .attr("x", (d) => barAttrs.x(d))
344
- .attr("y", (d) => barAttrs.y(d))
345
- .attr("height", (d) => barAttrs.height(d))
346
- .attr("width", (d) => barAttrs.width(d));
347
- if (transitionDuration <= 0) resolve("");
348
- });
349
- }
350
- setSegmentColor(segments, colorPalette, segmentedIndex) {
351
- segments.style("fill", colorPalette[segmentedIndex % colorPalette.length]);
352
- }
353
- /**
354
- * Устнановка координат для удобного обновления.
355
- */
356
- setInitialAttrsInfo(bars, keyAxisOrient, barSettings) {
357
- bars.each(function () {
358
- const width = DomHelper.getSelectionNumericAttr(select(this), "width");
359
- const height = DomHelper.getSelectionNumericAttr(select(this), "height");
360
- const orient = keyAxisOrient === "left" || keyAxisOrient === "right" ? "horizontal" : "vertical";
361
- let scaleSize = 0.06 * (orient === "vertical" ? width : height);
362
- scaleSize = scaleSize > barSettings.barDistance / 2 ? barSettings.barDistance / 2 : scaleSize;
363
- this.attrs = {
364
- x: DomHelper.getSelectionNumericAttr(select(this), "x"),
365
- y: DomHelper.getSelectionNumericAttr(select(this), "y"),
366
- width,
367
- height,
368
- orient,
369
- scaleSize
370
- };
371
- });
372
- }
11
+ constructor() {
12
+ this.barItemClass = Bar.barItemClass;
13
+ this.barSegmentGroupClass = "bar-segment-group";
14
+ this.createBarPipeline = new Pipeline();
15
+ this.createSegmentGroupBarsPipeline = new Pipeline();
16
+ onBarChartInit(this.createBarPipeline, this.createSegmentGroupBarsPipeline);
17
+ }
18
+ static get() {
19
+ return new Bar();
20
+ }
21
+ render(block, scales, data, keyField, margin, keyAxisOrient, chart, blockSize, barSettings, barsAmounts) {
22
+ if (chart.isSegmented)
23
+ this.renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, barSettings);
24
+ else
25
+ this.renderGrouped(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, blockSize, barSettings);
26
+ }
27
+ update(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, barSettings) {
28
+ let promises;
29
+ if (chart.isSegmented) {
30
+ promises = this.updateSegmented(block, newData, scales, margin, keyAxisOrient, chart, barsAmounts, keyField, barSettings);
31
+ }
32
+ else {
33
+ promises = this.updateGrouped(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, barSettings);
34
+ }
35
+ return promises;
36
+ }
37
+ updateColors(block, chart) {
38
+ chart.data.valueFields.forEach((_vf, index) => {
39
+ const bars = block.svg
40
+ .getChartGroup(chart.index)
41
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(Helper.getCssClassesWithElementIndex(chart.cssClasses, index))}`);
42
+ DomHelper.setChartStyle(bars, chart.style, index, "fill");
43
+ });
44
+ }
45
+ getAllBarsForChart(block, chartCssClasses) {
46
+ return block.getSvg().selectAll(`rect.${this.barItemClass}${Helper.getCssClassesLine(chartCssClasses)}`);
47
+ }
48
+ renderGrouped(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, blockSize, barSettings) {
49
+ chart.data.valueFields.forEach((field, index) => {
50
+ let bars = block.svg
51
+ .getChartGroup(chart.index)
52
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}${Helper.getCssClassesLine(Helper.getCssClassesWithElementIndex(chart.cssClasses, index))}`)
53
+ .data(data)
54
+ .enter()
55
+ .append("rect")
56
+ .attr("class", this.barItemClass)
57
+ .style("clip-path", `url(#${block.svg.getClipPathId()})`);
58
+ bars = this.createBarPipeline.execute(bars, chart);
59
+ const barAttrs = BarHelper.getGroupedBarAttrs(keyAxisOrient, scales, margin, keyField.name, field.name, chart.barViewOptions.barIndexes[index], sum(barsAmounts), barSettings);
60
+ this.fillBarAttrs(bars, barAttrs);
61
+ DomHelper.setCssClasses(bars, Helper.getCssClassesWithElementIndex(chart.cssClasses, index));
62
+ DomHelper.setChartStyle(bars, chart.style, index, "fill");
63
+ this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
64
+ if (chart.embeddedLabels !== "none")
65
+ EmbeddedLabels.render(block, bars, barAttrs, EmbeddedLabelsHelper.getLabelField(chart.embeddedLabels, chart.data.valueFields, keyField, index), chart.embeddedLabels, keyAxisOrient, blockSize, margin, index, chart.cssClasses);
66
+ });
67
+ }
68
+ renderSegmented(block, scales, data, keyField, margin, keyAxisOrient, chart, barsAmounts, barSettings) {
69
+ const stackedData = getStackedDataWithOwn(data, chart.data.valueFields.map((field) => field.name));
70
+ let groups = block.svg
71
+ .getChartGroup(chart.index)
72
+ .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
73
+ .data(stackedData);
74
+ if (groups.empty())
75
+ groups = groups.data(stackedData).enter().append("g").attr("class", this.barSegmentGroupClass);
76
+ let bars = groups
77
+ .selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`)
78
+ .data((d) => d)
79
+ .enter()
80
+ .append("rect")
81
+ .attr("class", this.barItemClass)
82
+ .style("clip-path", `url(#${block.svg.getClipPathId()})`);
83
+ bars = this.createBarPipeline.execute(bars, chart);
84
+ const barAttrs = BarHelper.getStackedBarAttr(keyAxisOrient, scales, margin, keyField.name, chart.barViewOptions.barIndexes[0], sum(barsAmounts), barSettings);
85
+ this.fillBarAttrs(bars, barAttrs);
86
+ this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
87
+ DomHelper.setCssClasses(groups, chart.cssClasses);
88
+ DomHelper.setCssClasses(bars, chart.cssClasses); // Для обозначения принадлежности бара к конкретному чарту
89
+ const thisClass = this;
90
+ groups.each(function (d, i) {
91
+ const barsInGroup = select(this).selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`);
92
+ DomHelper.setCssClasses(barsInGroup, Helper.getCssClassesWithElementIndex(chart.cssClasses, i)); // Для обозначения принадлежности бара к конкретной части стака
93
+ thisClass.createSegmentGroupBarsPipeline.execute(barsInGroup, { segmentIndex: i, chart });
94
+ thisClass.setSegmentColor(select(this).selectAll(Helper.getCssClassesLine(chart.cssClasses)), chart.style.elementColors, i);
95
+ });
96
+ }
97
+ updateGrouped(block, newData, scales, margin, keyAxisOrient, chart, blockSize, barsAmounts, keyField, barSettings) {
98
+ const promises = [];
99
+ chart.data.valueFields.forEach((valueField, index) => {
100
+ const indexesOfRemoved = [];
101
+ block.svg
102
+ .getChartGroup(chart.index)
103
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
104
+ .filter((d, i) => {
105
+ if (newData.findIndex((row) => row[keyField.name] === d[keyField.name]) === -1) {
106
+ indexesOfRemoved.push(i); // Набор индексов для встроенных лейблов
107
+ return true;
108
+ }
109
+ return false;
110
+ })
111
+ .transition()
112
+ .duration(block.transitionManager.durations.elementFadeOut)
113
+ .style("opacity", 0)
114
+ .remove();
115
+ const bars = block.svg
116
+ .getChartGroup(chart.index)
117
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}.chart-element-${index}`)
118
+ .filter((d) => newData.findIndex((row) => row[keyField.name] === d[keyField.name]) !== -1)
119
+ .style("opacity", 1)
120
+ .data(newData);
121
+ let newBars = bars
122
+ .enter()
123
+ .append("rect")
124
+ .attr("class", this.barItemClass)
125
+ .style("clip-path", `url(#${block.svg.getClipPathId()})`);
126
+ newBars = this.createBarPipeline.execute(newBars, chart);
127
+ const barAttrs = BarHelper.getGroupedBarAttrs(keyAxisOrient, scales, margin, keyField.name, valueField.name, chart.barViewOptions.barIndexes[index], sum(barsAmounts), barSettings);
128
+ const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate).then(() => {
129
+ bars.style("opacity", null);
130
+ this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
131
+ });
132
+ this.fillBarAttrs(newBars, barAttrs);
133
+ promises.push(prom);
134
+ this.setInitialAttrsInfo(newBars, keyAxisOrient, barSettings);
135
+ DomHelper.setCssClasses(newBars, Helper.getCssClassesWithElementIndex(chart.cssClasses, index));
136
+ DomHelper.setChartStyle(newBars, chart.style, index, "fill");
137
+ if (chart.embeddedLabels !== "none") {
138
+ EmbeddedLabels.removeUnused(block, chart.cssClasses, index, indexesOfRemoved);
139
+ EmbeddedLabels.update(block, bars, keyAxisOrient, barAttrs, margin, valueField, chart.embeddedLabels, blockSize, newData, index, chart.cssClasses);
140
+ if (!newBars.empty())
141
+ EmbeddedLabels.render(block, newBars, barAttrs, valueField, chart.embeddedLabels, keyAxisOrient, blockSize, margin, index, chart.cssClasses);
142
+ EmbeddedLabels.restoreRemoved(block, bars, barAttrs, valueField, chart.embeddedLabels, keyAxisOrient, blockSize, margin, index, chart.cssClasses, keyField.name);
143
+ }
144
+ });
145
+ return promises;
146
+ }
147
+ updateSegmented(block, newData, scales, margin, keyAxisOrient, chart, barsAmounts, keyField, barSettings) {
148
+ const stackedData = getStackedDataWithOwn(newData, chart.data.valueFields.map((field) => field.name));
149
+ block.svg
150
+ .getChartGroup(chart.index)
151
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
152
+ .filter((d) => newData.findIndex((row) => row[keyField.name] === d.data[keyField.name]) === -1)
153
+ .transition()
154
+ .duration(block.transitionManager.durations.elementFadeOut)
155
+ .style("opacity", 0)
156
+ .remove();
157
+ const groups = block.svg
158
+ .getChartGroup(chart.index)
159
+ .selectAll(`g.${this.barSegmentGroupClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
160
+ .data(stackedData);
161
+ const bars = groups
162
+ .selectAll(`.${this.barItemClass}${Helper.getCssClassesLine(chart.cssClasses)}`)
163
+ .filter((d) => newData.findIndex((row) => row[keyField.name] === d.data[keyField.name]) !== -1)
164
+ .style("opacity", 1)
165
+ .data((d) => d);
166
+ let newBars = bars
167
+ .enter()
168
+ .append("rect")
169
+ .attr("class", this.barItemClass)
170
+ .style("clip-path", `url(#${block.svg.getClipPathId()})`);
171
+ newBars = this.createBarPipeline.execute(newBars, chart);
172
+ const barAttrs = BarHelper.getStackedBarAttr(keyAxisOrient, scales, margin, keyField.name, chart.barViewOptions.barIndexes[0], sum(barsAmounts), barSettings);
173
+ const prom = this.fillBarAttrs(bars, barAttrs, block.transitionManager.durations.chartUpdate).then(() => {
174
+ this.setInitialAttrsInfo(bars, keyAxisOrient, barSettings);
175
+ bars.style("opacity", null);
176
+ });
177
+ this.fillBarAttrs(newBars, barAttrs);
178
+ this.setInitialAttrsInfo(newBars, keyAxisOrient, barSettings);
179
+ DomHelper.setCssClasses(newBars, chart.cssClasses);
180
+ const thisClass = this;
181
+ groups.each(function (d, i) {
182
+ const barsInGroup = select(this).selectAll(`rect${Helper.getCssClassesLine(chart.cssClasses)}`);
183
+ DomHelper.setCssClasses(barsInGroup, Helper.getCssClassesWithElementIndex(chart.cssClasses, i)); // Для обозначения принадлежности бара к конкретной части стака
184
+ thisClass.createSegmentGroupBarsPipeline.execute(barsInGroup, { segmentIndex: i, chart });
185
+ thisClass.setSegmentColor(select(this).selectAll(Helper.getCssClassesLine(chart.cssClasses)), chart.style.elementColors, i);
186
+ });
187
+ return [prom];
188
+ }
189
+ fillBarAttrs(bars, barAttrs, transitionDuration = 0) {
190
+ return new Promise((resolve) => {
191
+ if (bars.size() === 0) {
192
+ resolve("");
193
+ return;
194
+ }
195
+ let barsHandler = bars;
196
+ if (transitionDuration > 0) {
197
+ barsHandler = barsHandler
198
+ .interrupt()
199
+ .transition()
200
+ .duration(transitionDuration)
201
+ .on("end", () => resolve(""));
202
+ }
203
+ barsHandler
204
+ .attr("x", (d) => barAttrs.x(d))
205
+ .attr("y", (d) => barAttrs.y(d))
206
+ .attr("height", (d) => barAttrs.height(d))
207
+ .attr("width", (d) => barAttrs.width(d));
208
+ if (transitionDuration <= 0)
209
+ resolve("");
210
+ });
211
+ }
212
+ setSegmentColor(segments, colorPalette, segmentedIndex) {
213
+ segments.style("fill", colorPalette[segmentedIndex % colorPalette.length]);
214
+ }
215
+ /**
216
+ * Устнановка координат для удобного обновления.
217
+ */
218
+ setInitialAttrsInfo(bars, keyAxisOrient, barSettings) {
219
+ bars.each(function () {
220
+ const width = DomHelper.getSelectionNumericAttr(select(this), "width");
221
+ const height = DomHelper.getSelectionNumericAttr(select(this), "height");
222
+ const orient = keyAxisOrient === "left" || keyAxisOrient === "right" ? "horizontal" : "vertical";
223
+ let scaleSize = 0.06 * (orient === "vertical" ? width : height);
224
+ scaleSize = scaleSize > barSettings.barDistance / 2 ? barSettings.barDistance / 2 : scaleSize;
225
+ this.attrs = {
226
+ x: DomHelper.getSelectionNumericAttr(select(this), "x"),
227
+ y: DomHelper.getSelectionNumericAttr(select(this), "y"),
228
+ width,
229
+ height,
230
+ orient,
231
+ scaleSize
232
+ };
233
+ });
234
+ }
373
235
  }
374
236
  Bar.barItemClass = "bar-item";