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
@@ -2,75 +2,74 @@ import { merge } from "d3-array";
2
2
  import { arc, pie } from "d3-shape";
3
3
  const MIN_CHART_BLOCK_SIZE_FOR_MAX_THICKNESS = 400;
4
4
  export class DonutHelper {
5
- static getThickness(donutSettings, blockSize, margin) {
6
- const thicknessOpts = donutSettings.thickness;
7
- const chartBlockSize = this.getChartBlockSize(blockSize, margin);
8
- if (thicknessOpts.value)
9
- return this.getThicknessByUnit(chartBlockSize, thicknessOpts.value, thicknessOpts.unit);
10
- if (Math.min(chartBlockSize.width, chartBlockSize.height) > MIN_CHART_BLOCK_SIZE_FOR_MAX_THICKNESS)
11
- return this.getThicknessByUnit(chartBlockSize, thicknessOpts.max, thicknessOpts.unit);
12
- return this.getThicknessByUnit(chartBlockSize, thicknessOpts.min, thicknessOpts.unit);
13
- }
14
- static getArcCentroid(blockSize, margin, dataItem, donutThickness) {
15
- const arc = this.getArcGeneratorObject(blockSize, margin, donutThickness);
16
- return arc.centroid(dataItem);
17
- }
18
- static getArcGeneratorObject(blockSize, margin, donutThickness) {
19
- const outerRadius = this.getOuterRadius(margin, blockSize);
20
- const arc = this.getArcGenerator(outerRadius, outerRadius - donutThickness);
21
- return arc;
22
- }
23
- static getOuterRadius(margin, blockSize) {
24
- return (
25
- Math.min(blockSize.width - margin.left - margin.right, blockSize.height - margin.top - margin.bottom) / 2
26
- );
27
- }
28
- static getInnerRadius(outerRadius, thickness) {
29
- return outerRadius - thickness;
30
- }
31
- static getTranslate(margin, blockSize) {
32
- return {
33
- x: (blockSize.width - margin.left - margin.right) / 2 + margin.left,
34
- y: (blockSize.height - margin.top - margin.bottom) / 2 + margin.top
35
- };
36
- }
37
- static getArcGenerator(outerRadius, innerRadius) {
38
- return arc().innerRadius(innerRadius).outerRadius(outerRadius);
39
- }
40
- static getPieGenerator(valueField, padAngle) {
41
- return pie()
42
- .padAngle(padAngle)
43
- .sort(null)
44
- .value((d) => d[valueField]);
45
- }
46
- static mergeDataWithZeros(firstDataset, secondDataset, keyField, colorField) {
47
- const secondSet = new Set();
48
- secondDataset.forEach((dataRow) => {
49
- secondSet.add(dataRow[keyField]);
50
- });
51
- const onlyNew = firstDataset
52
- .filter((d) => !secondSet.has(d[keyField]))
53
- .map((d, index, array) => {
54
- const data = {
55
- keyField: array[index][keyField],
56
- valueField: 0,
57
- [colorField]: array[index][colorField]
58
- //TODO: добавить цвет из ColorReader'а
59
- };
60
- return data;
61
- });
62
- const sortedMerge = merge([secondDataset, onlyNew]);
63
- return sortedMerge;
64
- }
65
- static getThicknessByUnit(chartBlockSize, valueInPx, unit) {
66
- if (unit === "px") return valueInPx;
67
- const minSideSize = Math.min(chartBlockSize.width, chartBlockSize.height);
68
- return (minSideSize / 2) * (valueInPx / 100);
69
- }
70
- static getChartBlockSize(blockSize, margin) {
71
- return {
72
- height: blockSize.height - margin.top - margin.bottom,
73
- width: blockSize.width - margin.left - margin.right
74
- };
75
- }
5
+ static getThickness(donutSettings, blockSize, margin) {
6
+ const thicknessOpts = donutSettings.thickness;
7
+ const chartBlockSize = this.getChartBlockSize(blockSize, margin);
8
+ if (thicknessOpts.value)
9
+ return this.getThicknessByUnit(chartBlockSize, thicknessOpts.value, thicknessOpts.unit);
10
+ if (Math.min(chartBlockSize.width, chartBlockSize.height) > MIN_CHART_BLOCK_SIZE_FOR_MAX_THICKNESS)
11
+ return this.getThicknessByUnit(chartBlockSize, thicknessOpts.max, thicknessOpts.unit);
12
+ return this.getThicknessByUnit(chartBlockSize, thicknessOpts.min, thicknessOpts.unit);
13
+ }
14
+ static getArcCentroid(blockSize, margin, dataItem, donutThickness) {
15
+ const arc = this.getArcGeneratorObject(blockSize, margin, donutThickness);
16
+ return arc.centroid(dataItem);
17
+ }
18
+ static getArcGeneratorObject(blockSize, margin, donutThickness) {
19
+ const outerRadius = this.getOuterRadius(margin, blockSize);
20
+ const arc = this.getArcGenerator(outerRadius, outerRadius - donutThickness);
21
+ return arc;
22
+ }
23
+ static getOuterRadius(margin, blockSize) {
24
+ return (Math.min(blockSize.width - margin.left - margin.right, blockSize.height - margin.top - margin.bottom) / 2);
25
+ }
26
+ static getInnerRadius(outerRadius, thickness) {
27
+ return outerRadius - thickness;
28
+ }
29
+ static getTranslate(margin, blockSize) {
30
+ return {
31
+ x: (blockSize.width - margin.left - margin.right) / 2 + margin.left,
32
+ y: (blockSize.height - margin.top - margin.bottom) / 2 + margin.top
33
+ };
34
+ }
35
+ static getArcGenerator(outerRadius, innerRadius) {
36
+ return arc().innerRadius(innerRadius).outerRadius(outerRadius);
37
+ }
38
+ static getPieGenerator(valueField, padAngle) {
39
+ return pie()
40
+ .padAngle(padAngle)
41
+ .sort(null)
42
+ .value((d) => d[valueField]);
43
+ }
44
+ static mergeDataWithZeros(firstDataset, secondDataset, keyField, colorField) {
45
+ const secondSet = new Set();
46
+ secondDataset.forEach((dataRow) => {
47
+ secondSet.add(dataRow[keyField]);
48
+ });
49
+ const onlyNew = firstDataset
50
+ .filter((d) => !secondSet.has(d[keyField]))
51
+ .map((d, index, array) => {
52
+ const data = {
53
+ keyField: array[index][keyField],
54
+ valueField: 0,
55
+ [colorField]: array[index][colorField]
56
+ //TODO: добавить цвет из ColorReader'а
57
+ };
58
+ return data;
59
+ });
60
+ const sortedMerge = merge([secondDataset, onlyNew]);
61
+ return sortedMerge;
62
+ }
63
+ static getThicknessByUnit(chartBlockSize, valueInPx, unit) {
64
+ if (unit === "px")
65
+ return valueInPx;
66
+ const minSideSize = Math.min(chartBlockSize.width, chartBlockSize.height);
67
+ return (minSideSize / 2) * (valueInPx / 100);
68
+ }
69
+ static getChartBlockSize(blockSize, margin) {
70
+ return {
71
+ height: blockSize.height - margin.top - margin.bottom,
72
+ width: blockSize.width - margin.left - margin.right
73
+ };
74
+ }
76
75
  }
@@ -4,44 +4,29 @@ import { BlockMargin, DonutChartSettings, PolarChartModel } from "../../../model
4
4
  import { Block } from "../../block/block";
5
5
  import { MdtChartsDataRow, Size } from "../../../config/config";
6
6
  export interface Translate {
7
- x: number;
8
- y: number;
7
+ x: number;
8
+ y: number;
9
9
  }
10
10
  export declare class Donut {
11
- static readonly donutBlockClass = "donut-block";
12
- static readonly arcPathClass = "arc-path";
13
- static readonly arcItemClass = "arc";
14
- static readonly arcHighlightedClass = "arc-highlighted";
15
- static readonly arcClonesGroupClass = "arc-clones";
16
- static readonly arcShadowsGroupClass = "arc-shadow-clones";
17
- static readonly arcCloneClass = "arc-clone";
18
- static readonly arcShadowClass = "arc-shadow-clone";
19
- static render(
20
- block: Block,
21
- data: MdtChartsDataRow[],
22
- margin: BlockMargin,
23
- chart: PolarChartModel,
24
- blockSize: Size,
25
- settings: DonutChartSettings
26
- ): void;
27
- static update(
28
- block: Block,
29
- data: MdtChartsDataRow[],
30
- margin: BlockMargin,
31
- chart: PolarChartModel,
32
- blockSize: Size,
33
- donutSettings: DonutChartSettings,
34
- keyField: string
35
- ): Promise<any>;
36
- static updateColors(block: Block, chart: PolarChartModel): void;
37
- static getAllArcGroups(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
38
- static getAllArcClones(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
39
- static getAllArcShadows(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
40
- private static renderNewArcItems;
41
- private static setElementsColor;
42
- /**
43
- * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
44
- */
45
- private static renderClonesG;
46
- private static raiseClonesG;
11
+ static readonly donutBlockClass = "donut-block";
12
+ static readonly arcPathClass = "arc-path";
13
+ static readonly arcItemClass = "arc";
14
+ static readonly arcHighlightedClass = "arc-highlighted";
15
+ static readonly arcClonesGroupClass = "arc-clones";
16
+ static readonly arcShadowsGroupClass = "arc-shadow-clones";
17
+ static readonly arcCloneClass = "arc-clone";
18
+ static readonly arcShadowClass = "arc-shadow-clone";
19
+ static render(block: Block, data: MdtChartsDataRow[], margin: BlockMargin, chart: PolarChartModel, blockSize: Size, settings: DonutChartSettings): void;
20
+ static update(block: Block, data: MdtChartsDataRow[], margin: BlockMargin, chart: PolarChartModel, blockSize: Size, donutSettings: DonutChartSettings, keyField: string): Promise<any>;
21
+ static updateColors(block: Block, chart: PolarChartModel): void;
22
+ static getAllArcGroups(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
23
+ static getAllArcClones(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
24
+ static getAllArcShadows(block: Block): Selection<SVGGElement, PieArcDatum<MdtChartsDataRow>, SVGGElement, unknown>;
25
+ private static renderNewArcItems;
26
+ private static setElementsColor;
27
+ /**
28
+ * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
29
+ */
30
+ private static renderClonesG;
31
+ private static raiseClonesG;
47
32
  }
@@ -4,115 +4,105 @@ import { DonutHelper } from "./DonutHelper";
4
4
  import { DomHelper } from "../../helpers/domHelper";
5
5
  import { ColorReader } from "../../colorReader/colorReader";
6
6
  export class Donut {
7
- static render(block, data, margin, chart, blockSize, settings) {
8
- const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
9
- const thickness = DonutHelper.getThickness(settings, blockSize, margin);
10
- const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
11
- const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
12
- const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, settings.padAngle);
13
- const translateAttr = DonutHelper.getTranslate(margin, blockSize);
14
- Aggregator.render(block, chart.data.valueField, innerRadius, translateAttr, thickness, settings.aggregator);
15
- const donutBlock = block
16
- .getSvg()
17
- .append("g")
18
- .attr("class", this.donutBlockClass)
19
- .attr("x", translateAttr.x)
20
- .attr("y", translateAttr.y)
21
- .attr("transform", `translate(${translateAttr.x}, ${translateAttr.y})`);
22
- this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart);
23
- this.renderClonesG(donutBlock);
24
- }
25
- static update(block, data, margin, chart, blockSize, donutSettings, keyField) {
26
- const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
27
- const thickness = DonutHelper.getThickness(donutSettings, blockSize, margin);
28
- const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
29
- const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
30
- const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, donutSettings.padAngle);
31
- const oldData = block
32
- .getSvg()
33
- .selectAll(`.${this.donutBlockClass}`)
34
- .selectAll("path")
35
- .data()
36
- .map((d) => d.data);
37
- const dataNewZeroRows = DonutHelper.mergeDataWithZeros(
38
- data,
39
- oldData,
40
- keyField,
41
- ColorReader.getChartColorField(chart)
42
- );
43
- const dataExtraZeroRows = DonutHelper.mergeDataWithZeros(
44
- oldData,
45
- data,
46
- keyField,
47
- ColorReader.getChartColorField(chart)
48
- );
49
- const donutBlock = block.getSvg().select(`.${this.donutBlockClass}`);
50
- this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, dataNewZeroRows, chart);
51
- const path = this.getAllArcGroups(block).data(pieGenerator(dataExtraZeroRows)).select("path");
52
- const items = this.getAllArcGroups(block).data(pieGenerator(data));
53
- this.setElementsColor(this.getAllArcGroups(block), chart);
54
- return new Promise((resolve) => {
55
- this.raiseClonesG(block);
56
- path.interrupt()
57
- .transition()
58
- .duration(block.transitionManager.durations.chartUpdate)
59
- .on("end", () => {
60
- items.exit().remove();
61
- resolve("updated");
62
- })
63
- .attrTween("d", function (d) {
64
- const interpolateFunc = interpolate(this._currentData, d);
65
- return (t) => {
66
- this._currentData = interpolateFunc(t); // _current - старые данные до обновления, задаются во время рендера
67
- return arcGenerator(this._currentData);
68
- };
69
- });
70
- });
71
- }
72
- static updateColors(block, chart) {
73
- this.setElementsColor(this.getAllArcGroups(block), chart);
74
- }
75
- static getAllArcGroups(block) {
76
- return block.getSvg().selectAll(`.${this.arcItemClass}`);
77
- }
78
- static getAllArcClones(block) {
79
- return block.getSvg().selectAll(`.${Donut.arcCloneClass}`);
80
- }
81
- static getAllArcShadows(block) {
82
- return block.getSvg().selectAll(`.${this.arcShadowClass}`);
83
- }
84
- static renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart) {
85
- const items = donutBlock
86
- .selectAll(`.${this.arcItemClass}`)
87
- .data(pieGenerator(data))
88
- .enter()
89
- .append("g")
90
- .attr("class", this.arcItemClass);
91
- const arcs = items
92
- .append("path")
93
- .attr("d", arcGenerator)
94
- .attr("class", this.arcPathClass)
95
- .each(function (d) {
96
- this._currentData = d;
97
- }); // _currentData используется для получения текущих данных внутри функции обновления.
98
- DomHelper.setCssClasses(arcs, chart.cssClasses);
99
- this.setElementsColor(items, chart);
100
- }
101
- static setElementsColor(arcItems, chart) {
102
- arcItems.select("path").style("fill", ({ data }, i) => ColorReader.getColorForArc(data, chart, i));
103
- }
104
- /**
105
- * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
106
- */
107
- static renderClonesG(donutBlock) {
108
- const clonesShadowsG = donutBlock.append("g").attr("class", this.arcShadowsGroupClass).raise();
109
- const clonesG = donutBlock.append("g").attr("class", this.arcClonesGroupClass).raise();
110
- // ElementHighlighter.setShadowFilter(clonesG);
111
- }
112
- static raiseClonesG(block) {
113
- block.getSvg().select(`.${this.donutBlockClass}`).select(`.${this.arcShadowsGroupClass}`).raise();
114
- block.getSvg().select(`.${this.donutBlockClass}`).select(`.${this.arcClonesGroupClass}`).raise();
115
- }
7
+ static render(block, data, margin, chart, blockSize, settings) {
8
+ const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
9
+ const thickness = DonutHelper.getThickness(settings, blockSize, margin);
10
+ const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
11
+ const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
12
+ const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, settings.padAngle);
13
+ const translateAttr = DonutHelper.getTranslate(margin, blockSize);
14
+ Aggregator.render(block, chart.data.valueField, innerRadius, translateAttr, thickness, settings.aggregator);
15
+ const donutBlock = block
16
+ .getSvg()
17
+ .append("g")
18
+ .attr("class", this.donutBlockClass)
19
+ .attr("x", translateAttr.x)
20
+ .attr("y", translateAttr.y)
21
+ .attr("transform", `translate(${translateAttr.x}, ${translateAttr.y})`);
22
+ this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart);
23
+ this.renderClonesG(donutBlock);
24
+ }
25
+ static update(block, data, margin, chart, blockSize, donutSettings, keyField) {
26
+ const outerRadius = DonutHelper.getOuterRadius(margin, blockSize);
27
+ const thickness = DonutHelper.getThickness(donutSettings, blockSize, margin);
28
+ const innerRadius = DonutHelper.getInnerRadius(outerRadius, thickness);
29
+ const arcGenerator = DonutHelper.getArcGenerator(outerRadius, innerRadius);
30
+ const pieGenerator = DonutHelper.getPieGenerator(chart.data.valueField.name, donutSettings.padAngle);
31
+ const oldData = block
32
+ .getSvg()
33
+ .selectAll(`.${this.donutBlockClass}`)
34
+ .selectAll("path")
35
+ .data()
36
+ .map((d) => d.data);
37
+ const dataNewZeroRows = DonutHelper.mergeDataWithZeros(data, oldData, keyField, ColorReader.getChartColorField(chart));
38
+ const dataExtraZeroRows = DonutHelper.mergeDataWithZeros(oldData, data, keyField, ColorReader.getChartColorField(chart));
39
+ const donutBlock = block.getSvg().select(`.${this.donutBlockClass}`);
40
+ this.renderNewArcItems(arcGenerator, pieGenerator, donutBlock, dataNewZeroRows, chart);
41
+ const path = this.getAllArcGroups(block).data(pieGenerator(dataExtraZeroRows)).select("path");
42
+ const items = this.getAllArcGroups(block).data(pieGenerator(data));
43
+ this.setElementsColor(this.getAllArcGroups(block), chart);
44
+ return new Promise((resolve) => {
45
+ this.raiseClonesG(block);
46
+ path.interrupt()
47
+ .transition()
48
+ .duration(block.transitionManager.durations.chartUpdate)
49
+ .on("end", () => {
50
+ items.exit().remove();
51
+ resolve("updated");
52
+ })
53
+ .attrTween("d", function (d) {
54
+ const interpolateFunc = interpolate(this._currentData, d);
55
+ return (t) => {
56
+ this._currentData = interpolateFunc(t); // _current - старые данные до обновления, задаются во время рендера
57
+ return arcGenerator(this._currentData);
58
+ };
59
+ });
60
+ });
61
+ }
62
+ static updateColors(block, chart) {
63
+ this.setElementsColor(this.getAllArcGroups(block), chart);
64
+ }
65
+ static getAllArcGroups(block) {
66
+ return block.getSvg().selectAll(`.${this.arcItemClass}`);
67
+ }
68
+ static getAllArcClones(block) {
69
+ return block.getSvg().selectAll(`.${Donut.arcCloneClass}`);
70
+ }
71
+ static getAllArcShadows(block) {
72
+ return block.getSvg().selectAll(`.${this.arcShadowClass}`);
73
+ }
74
+ static renderNewArcItems(arcGenerator, pieGenerator, donutBlock, data, chart) {
75
+ const items = donutBlock
76
+ .selectAll(`.${this.arcItemClass}`)
77
+ .data(pieGenerator(data))
78
+ .enter()
79
+ .append("g")
80
+ .attr("class", this.arcItemClass);
81
+ const arcs = items
82
+ .append("path")
83
+ .attr("d", arcGenerator)
84
+ .attr("class", this.arcPathClass)
85
+ .each(function (d) {
86
+ this._currentData = d;
87
+ }); // _currentData используется для получения текущих данных внутри функции обновления.
88
+ DomHelper.setCssClasses(arcs, chart.cssClasses);
89
+ this.setElementsColor(items, chart);
90
+ }
91
+ static setElementsColor(arcItems, chart) {
92
+ arcItems.select("path").style("fill", ({ data }, i) => ColorReader.getColorForArc(data, chart, i));
93
+ }
94
+ /**
95
+ * Рендер группы для клонов сегментов доната внутри donut-block. Объекдиняет в себе стили для клонов
96
+ */
97
+ static renderClonesG(donutBlock) {
98
+ const clonesShadowsG = donutBlock.append("g").attr("class", this.arcShadowsGroupClass).raise();
99
+ const clonesG = donutBlock.append("g").attr("class", this.arcClonesGroupClass).raise();
100
+ // ElementHighlighter.setShadowFilter(clonesG);
101
+ }
102
+ static raiseClonesG(block) {
103
+ block.getSvg().select(`.${this.donutBlockClass}`).select(`.${this.arcShadowsGroupClass}`).raise();
104
+ block.getSvg().select(`.${this.donutBlockClass}`).select(`.${this.arcClonesGroupClass}`).raise();
105
+ }
116
106
  }
117
107
  Donut.donutBlockClass = "donut-block";
118
108
  Donut.arcPathClass = "arc-path";
@@ -3,11 +3,11 @@ import { Block } from "../block/block";
3
3
  import { Engine } from "../engine";
4
4
  import { MdtChartsDataSource } from "../../config/config";
5
5
  import { ChartContentManager } from "../contentManager/contentManagerFactory";
6
- import { FilterEventManager } from "../filterManager/filterEventManager";
6
+ import { ChartClearSelectionOptions, FilterEventManager } from "../filterManager/filterEventManager";
7
7
  export declare class PolarManager implements ChartContentManager {
8
- render(engine: Engine, model: Model<PolarOptionsModel>): void;
9
- updateData(block: Block, model: Model<PolarOptionsModel>, data: MdtChartsDataSource): void;
10
- updateColors(block: Block, model: Model<PolarOptionsModel>): void;
11
- clearSelection(filterEventManager: FilterEventManager, model: Model<PolarOptionsModel>): void;
12
- private renderCharts;
8
+ render(engine: Engine, model: Model<PolarOptionsModel>): void;
9
+ updateData(block: Block, model: Model<PolarOptionsModel>, data: MdtChartsDataSource): void;
10
+ updateColors(block: Block, model: Model<PolarOptionsModel>): void;
11
+ clearSelection(filterEventManager: FilterEventManager, model: Model<PolarOptionsModel>, options?: ChartClearSelectionOptions): void;
12
+ private renderCharts;
13
13
  }
@@ -4,72 +4,52 @@ import { ElementHighlighter } from "../elementHighlighter/elementHighlighter";
4
4
  import { Tooltip } from "../features/tolltip/tooltip";
5
5
  import { Aggregator } from "../features/aggregator/aggregator";
6
6
  import { Donut } from "./donut/donut";
7
- import { PolarRecordOverflowAlert } from "./extenders/polarRecordOverflowAlert";
7
+ import { RecordOverflowAlertCore } from "../features/recordOverflowAlert/recordOverflowAlertCore";
8
8
  export class PolarManager {
9
- render(engine, model) {
10
- const options = model.options;
11
- engine.block.svg.render(model.blockCanvas.size);
12
- this.renderCharts(
13
- engine.block,
14
- options.charts,
15
- engine.data,
16
- options.data.dataSource,
17
- model.chartBlock.margin,
18
- model.blockCanvas.size,
19
- options.chartCanvas
20
- );
21
- Title.render(engine.block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
22
- Legend.get().render(engine.block, engine.data, options, model);
23
- Tooltip.render(engine.block, model, engine.data, model.otherComponents.tooltipBlock);
24
- engine.block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options);
25
- if (model.dataSettings.scope.hidedRecordsAmount !== 0)
26
- PolarRecordOverflowAlert.render(engine.block, {
27
- hidedRecordsAmount: model.dataSettings.scope.hidedRecordsAmount,
28
- legendPosition: model.options.legend.position
29
- });
30
- engine.block.getSvg().on("click", (e) => {
31
- if (e.target === engine.block.getSvg().node()) this.clearSelection(engine.block.filterEventManager, model);
32
- });
33
- }
34
- updateData(block, model, data) {
35
- block.transitionManager.interruptTransitions();
36
- block.removeMouseEvents();
37
- block.filterEventManager.updateData(data[model.options.data.dataSource]);
38
- Title.updateData(block, model.options.title);
39
- ElementHighlighter.removeDonutArcClones(block);
40
- ElementHighlighter.removeFilter(Donut.getAllArcGroups(block));
41
- ElementHighlighter.toggleActivityStyle(Donut.getAllArcGroups(block), true);
42
- Tooltip.hide(block);
43
- const options = model.options;
44
- Donut.update(
45
- block,
46
- data[options.data.dataSource],
47
- model.chartBlock.margin,
48
- options.charts[0],
49
- model.blockCanvas.size,
50
- options.chartCanvas,
51
- options.data.keyField.name
52
- ).then(() => {
53
- Tooltip.render(block, model, data, model.otherComponents.tooltipBlock);
54
- block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options);
55
- });
56
- Aggregator.update(block, options.charts[0].data.valueField, options.chartCanvas.aggregator);
57
- Legend.get().update(block, data, model);
58
- PolarRecordOverflowAlert.update(block, {
59
- hidedRecordsAmount: model.dataSettings.scope.hidedRecordsAmount,
60
- legendPosition: model.options.legend.position
61
- });
62
- }
63
- updateColors(block, model) {
64
- Legend.get().updateColors(block, model.options);
65
- Donut.updateColors(block, model.options.charts[0]);
66
- }
67
- clearSelection(filterEventManager, model) {
68
- filterEventManager.clearKeysForPolar(model.chartBlock.margin, model.blockCanvas.size, model.options);
69
- }
70
- renderCharts(block, charts, data, dataSource, margin, blockSize, donutSettings) {
71
- charts.forEach((chart) => {
72
- if (chart.type === "donut") Donut.render(block, data[dataSource], margin, chart, blockSize, donutSettings);
73
- });
74
- }
9
+ render(engine, model) {
10
+ const options = model.options;
11
+ engine.block.svg.render(model.blockCanvas.size);
12
+ this.renderCharts(engine.block, options.charts, engine.data, options.data.dataSource, model.chartBlock.margin, model.blockCanvas.size, options.chartCanvas);
13
+ Title.render(engine.block, options.title, model.otherComponents.titleBlock, model.blockCanvas.size);
14
+ Legend.get().render(engine.block, engine.data, options, model);
15
+ Tooltip.render(engine.block, model, engine.data, model.otherComponents.tooltipBlock);
16
+ engine.block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options);
17
+ if (model.dataSettings.scope.hidedRecordsAmount !== 0)
18
+ RecordOverflowAlertCore.render(engine.block, options.recordOverflowAlert);
19
+ engine.block.getSvg().on("click", (e) => {
20
+ if (e.target === engine.block.getSvg().node())
21
+ this.clearSelection(engine.block.filterEventManager, model);
22
+ });
23
+ }
24
+ updateData(block, model, data) {
25
+ block.transitionManager.interruptTransitions();
26
+ block.removeMouseEvents();
27
+ block.filterEventManager.updateData(data[model.options.data.dataSource]);
28
+ Title.updateData(block, model.options.title);
29
+ ElementHighlighter.removeDonutArcClones(block);
30
+ ElementHighlighter.removeFilter(Donut.getAllArcGroups(block));
31
+ ElementHighlighter.toggleActivityStyle(Donut.getAllArcGroups(block), true);
32
+ Tooltip.hide(block);
33
+ const options = model.options;
34
+ Donut.update(block, data[options.data.dataSource], model.chartBlock.margin, options.charts[0], model.blockCanvas.size, options.chartCanvas, options.data.keyField.name).then(() => {
35
+ Tooltip.render(block, model, data, model.otherComponents.tooltipBlock);
36
+ block.filterEventManager.setListenerPolar(model.chartBlock.margin, model.blockCanvas.size, options);
37
+ });
38
+ Aggregator.update(block, options.charts[0].data.valueField, options.chartCanvas.aggregator);
39
+ Legend.get().update(block, data, model);
40
+ RecordOverflowAlertCore.update(block, options.recordOverflowAlert);
41
+ }
42
+ updateColors(block, model) {
43
+ Legend.get().updateColors(block, model.options);
44
+ Donut.updateColors(block, model.options.charts[0]);
45
+ }
46
+ clearSelection(filterEventManager, model, options) {
47
+ filterEventManager.clearKeysForPolar(model.chartBlock.margin, model.blockCanvas.size, model.options, options);
48
+ }
49
+ renderCharts(block, charts, data, dataSource, margin, blockSize, donutSettings) {
50
+ charts.forEach((chart) => {
51
+ if (chart.type === "donut")
52
+ Donut.render(block, data[dataSource], margin, chart, blockSize, donutSettings);
53
+ });
54
+ }
75
55
  }
@@ -1,18 +1,19 @@
1
1
  import { Transitions } from "../designer/designerConfig";
2
2
  import { Block } from "./block/block";
3
- interface Durations extends Transitions {}
3
+ interface Durations extends Transitions {
4
+ }
4
5
  export declare class TransitionManager {
5
- /**
6
- * Анимации обновления в ms.
7
- */
8
- durations: Durations;
9
- private block;
10
- /**
11
- * Классы "подвижных" элементов
12
- */
13
- private transitionableElemClasses;
14
- constructor(block: Block, transitionsDurations?: Transitions);
15
- interruptTransitions(): void;
16
- private setDurations;
6
+ /**
7
+ * Анимации обновления в ms.
8
+ */
9
+ durations: Durations;
10
+ private block;
11
+ /**
12
+ * Классы "подвижных" элементов
13
+ */
14
+ private transitionableElemClasses;
15
+ constructor(block: Block, transitionsDurations?: Transitions);
16
+ interruptTransitions(): void;
17
+ private setDurations;
17
18
  }
18
19
  export {};